如果一个外部设备(比如我自己做的一个USB接口的设备)在我的应用程序运行中被拔下,那我显然要对此做处理,但是在这种情况下,系统发送的是什么消息呢??重新插上的时候又会发送什么消息呢?谢谢!!
解决方案 »
- 急啊急啊急啊急啊,等答案到明早!!
- 有语句return #msgname;,其中msgname是一个标量 请问#代表什么意思呢?
- 界面反转的问题(英文和沙特界面)
- 在对话框中如何显示jpg图像
- Hook钩到某消息后,能否知道该消息是“发给谁的”
- 调试时说有内存泄露,下面是信息,该如何查?
- 如何得到一个工程中特定类型的变量的使用情况?
- 如何从基类如CObject,CControlBar中派生新类?
- 欢迎加入VC++数据库+ADO QQ群
- vc active控件时参数传递
- 请问在发送方发过来的数据长度大于,我缓冲区一次能读取的数据量,是不是可以循环读取?
- 若dll中用到了MFC类(该DLL不是MFC extension dll), 该DLL可以被其他语言调用吗?
Because universal serial bus (USB) devices can be added to and removed from the system without rebooting, you might want your application to be able to respond to a new configuration of input devices. For example, you might allow a new player to join a game in progress by plugging in another controller. To receive a message when a device is changed, you must first register for notification, as in the following code example:PVOID hNotifyDevNode;
void RegisterForDevChange(HWND hDlg, PVOID *hNotifyDevNode)
{
DEV_BROADCAST_DEVICEINTERFACE *pFilterData =
(DEV_BROADCAST_DEVICEINTERFACE*)
_alloca(sizeof(DEV_BROADCAST_DEVICEINTERFACE));
ASSERT (pFilterData);
ZeroMemory(pFilterData, sizeof(DEV_BROADCAST_DEVICEINTERFACE));
pFilterData->dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
pFilterData->dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
pFilterData->dbcc_classguid = GUID_CLASS_INPUT;
*hNotifyDevNode = RegisterDeviceNotification(hDlg, pFilterData,
DEVICE_NOTIFY_WINDOW_HANDLE);
}
Then, in your main window procedure, check for messages announcing that a device has been attached, is about to be removed, or has been removed, as follows:MyWindowProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
switch (nMsg)
{
case WM_DEVICECHANGE:
{
switch (wParam)
{
case DBT_DEVICEARRIVAL:
// Handle device arrival
break; case DBT_DEVICEQUERYREMOVE:
// Handle device removal request
break;
case DBT_DEVICEREMOVECOMPLETE:
// Handle device removal
break;
}
}
.
.
.
}
}
HostControllerHandle = CreateFile( "\\\\.\\HCD1",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_WRITE|FILE_SHARE_READ, 0,OPEN_EXISTING,0,0);Success = DeviceIoControl(HostControllerHandle, IOCTL_GET_HCD_DRIVERKEY_NAME, &UnicodeName,sizeof(UnicodeName),&UnicodeName, sizeof(UnicodeName), &BytesReturned, NULL);
Success决定成功与否对于发送什么消息楼上的代码就是了