WINCE接收设备插入拔出消息
来源:互联网 发布:现在淘宝做什么产品好 编辑:程序博客网 时间:2024/05/16 06:47
http://blog.csdn.net/lqx4_3/article/details/6661649
在WINCE系统中,可以通过由窗口接收一个事件来判断有新设备插入。
窗口只需要接收该消息:WM_DEVICECHANGE。然后,通过判断设备类型和设备名称就可以判断具体的设备插入。
例如判断 SD卡的插入和拔出操作,其中SD卡的设备名为"DSK1:",那么可以在顶层窗口中接收并判断此消息:
case WM_DEVICECHANGE:
{
DEV_BROADCAST_HDR* dhr = (DEV_BROADCAST_HDR *)lParam;
PDEV_BROADCAST_PORT lpdbp = (PDEV_BROADCAST_PORT)dhr;
if( DBT_DEVTYP_PORT == lpdbp->dbcp_devicetype && !wcsicmp(lpdbp->dbcp_name, L"DSK1:")) {
switch(wParam) {
case DBT_DEVICEARRIVAL: //SD卡插入
m_Flag_SD_Detected = TRUE;
break;
case DBT_DEVICEREMOVECOMPLETE://SD卡拔出
m_Flag_SD_Detected = FALSE;
break;
}
}
}
当然了,这个消息的发送也是要驱动程序去实现的。一般在驱动程序中有对设备在线和离线状态的判断,一旦发现状态有变,就会广播一个消息,也可以只往某个窗口发送消息。以下是USB从机驱动判断插入和拔出的广播消息的实现:
static VOID BroadcastUSBINSERT(
LPTSTR DevName,
BOOL bNew
)
{
PDEV_BROADCAST_PORT pBCast;
DWORD len;
LPTSTR str;
static DWORD insert_times = 0; //记录USB插入的次数
if(bNew == TRUE){
insert_times++;
}else if(insert_times <= 0){
return;
}else{
insert_times = 0;
}
len = sizeof(DEV_BROADCAST_HDR) + (_tcslen(DevName) + 1)*sizeof(TCHAR);
pBCast = (PDEV_BROADCAST_PORT)LocalAlloc(LPTR, len);
if (pBCast == NULL) {
return;
}
pBCast->dbcp_devicetype = DBT_DEVTYP_PORT;
pBCast->dbcp_reserved = 0;
str = (LPTSTR)&(pBCast->dbcp_name[0]);
_tcscpy(str, DevName);
pBCast->dbcp_size = len;
DEBUGMSG(ZONE_PNP,
(TEXT("DEVICE!BroadcastDeviceChange Calling SendNotifyMessage for device %s\r\n"), DevName));
NKDbgPrintfW((TEXT("Sendmsg : %s\r\n")),(bNew)?TEXT("enter"):TEXT("exit"));
// Call the function
SendNotifyMessage(
HWND_BROADCAST,
WM_DEVICECHANGE,
(bNew) ? DBT_DEVICEARRIVAL : DBT_DEVICEREMOVECOMPLETE,
(LPARAM)pBCast);
LocalFree(pBCast);
}
这样,用刚开始的办法,在窗口中接收WM_DEVICECHANGE消息就可以进行异步判断USB设备插入和拔出的动作了。
- WINCE接收设备插入拔出消息
- WINCE接收设备插入拔出消息
- 【转】WINCE接收设备插入拔出消息
- 怎么捕获非标准usb设备插入或拔出消息?
- 驱动中识别Usb设备插入拔出消息
- USB设备插入/拔出时重要的windows消息值
- Windows中USB设备插入的拔出和所产生的消息值
- Windows中USB设备插入的拔出和所产生的消息值
- 如何让内置sdcard不弹出 存储设备插入拔出消息。
- USB设备插入与拔出的响应
- USB设备插入与拔出的响应
- QT 监听 USB 设备 插入、拔出动作
- 检测USB设备的插入和拔出
- 检测USB设备的插入和拔出
- USB设备插入和拔出的波形
- 检测USB设备插入和拔出
- 热插拔的设备的拔出与插入的响应
- 总线驱动程序如何捕获到相关设备插入拔出事件
- Android view 的cache
- Jquery]判断某个标签 Id是否存在
- Ubuntu安装graphviz
- 实现Engine示例
- Occlusion Culling in Unity 4.3
- WINCE接收设备插入拔出消息
- iOS7适配遇到的一些问题
- 【asp.net 小札记】小知识点
- c++时间类型详解time_t
- dlopen、dlsym和dlclose的使用和举例
- Notes on Convolutional Neural Networks
- 转载: SVG与JS的交互
- Android Fragment应用实战,使用碎片向ActivityGroup说再见
- linux下安装gcc-4.8.1