首页
社区
课程
招聘
[求助]关于CD-ROM
2006-6-15 17:37 3714

[求助]关于CD-ROM

2006-6-15 17:37
3714
收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
0cat0 2006-6-15 17:55
2
0
// 函数作用:控制所有光驱开关仓门的线程过程函数
// 函数参数:
// lpParam:自定义的可扩充的通用结构[MYGENERAL]
// 实例:创建一个根据不同的[lpParam]参数控制所有光驱开关仓门的线程
// CloseHandle(CreateThread(NULL, 0, &MyThread_CDROMCtrl, &g_stMyGeneral, 0, &dwThreadId));
DWORD WINAPI MyThread_CDROMCtrl(LPVOID lpParam)
{
        CHAR szDriveOne[4], szDriveAll[105];
        UINT uDriveStrLen, uIndex;
        MCI_OPEN_PARMS stOpenParam;

        // 将[操作标记]用[MYWM_OPERATE]消息传给[指定的窗口]
        SendMessage(((LPMYGENERAL)lpParam)->hWnd, MYWM_OPERATE, 0, OPERATE_CDROM);
        // 初始化取得每个驱动器盘符字串数组的索引
        uIndex = 0;
        // 取得所有驱动器盘符字串(含终止符)及字串长度(不含终止符)
        uDriveStrLen = GetLogicalDriveStrings(104, &szDriveAll[0]);
        // 用迭代的方法取得每个驱动器盘符字串(含终止符),并判断是否为光驱
        while(uDriveStrLen != 0)
        {
                lstrcpyn(&szDriveOne[0], &szDriveAll[uIndex++ << 2], 4);
                switch(GetDriveType(&szDriveOne[0]))
                {
                case DRIVE_CDROM:
                        stOpenParam.lpstrDeviceType = (LPCSTR)MCI_DEVTYPE_CD_AUDIO;
                        stOpenParam.lpstrElementName = &szDriveOne[0];
                        stOpenParam.wDeviceID = mciGetDeviceID(stOpenParam.lpstrElementName);
                        // 对光驱操作前,必须用[MCI_OPEN]命令初始化设备
                        mciSendCommand(0, MCI_OPEN, FLAG_MCIOPEN, (DWORD_PTR)&stOpenParam);
                        switch(((LPMYGENERAL)lpParam)->uFlag)
                        {
                        // 打开所有光驱仓门
                        case 0:
                                mciSendCommand(stOpenParam.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, NULL);
                                break;
                        // 关闭所有光驱仓门
                        case 1:
                                mciSendCommand(stOpenParam.wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, NULL);
                                break;
                        }
                        // 对光驱操作后,必须用[MCI_CLOSE]命令释放设备
                        mciSendCommand(stOpenParam.wDeviceID, MCI_CLOSE, 0, NULL);
                        break;
                }
                uDriveStrLen -= 4;
        }
        // 将[操作标记]用[MYWM_OPERATE]消息传给[指定的窗口]
        SendMessage(((LPMYGENERAL)lpParam)->hWnd, MYWM_OPERATE, 0, OPERATE_CDROM);
        return(0);
}
雪    币: 268
活跃值: (10)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
三根火柴 4 2006-6-15 18:49
3
0
收到,感谢
游客
登录 | 注册 方可回帖
返回