如何判断设备(比如USB端口)是否被启用 我拦截WM_DEVICECHANGE得到了设备停用启用的通知,但是无法得知具体是哪个设备状态改变了。想了个笨方法,先得到设备状态,发现变化再进行比较。请问如何判断设备(比如USB端口)是否被启用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 查查windows消息相关资料, 可能对你有帮助! BOOL IsDisabled( DWORD DevID, HDEVINFO hDevInfo ) // 该设备是否已被禁用{ SP_DEVINFO_DATA hDevInfoData = {sizeof(SP_DEVINFO_DATA)}; if ( !::SetupDiEnumDeviceInfo( hDevInfo, DevID, &hDevInfoData ) ) { return FALSE; } DWORD Status, Problem; if( ::CM_Get_DevNode_Status( &Status, &Problem, hDevInfoData.DevInst, 0 ) != CR_SUCCESS ) return FALSE; return ( (Status&DN_HAS_PROBLEM) && (Problem==CM_PROB_DISABLED) );}BOOL IsDisableable( DWORD DevID, HDEVINFO hDevInfo ) // 该设备是否可以被禁用{ SP_DEVINFO_DATA hDevInfoData = {sizeof(SP_DEVINFO_DATA)}; if ( !::SetupDiEnumDeviceInfo( hDevInfo, DevID, &hDevInfoData ) ) { return FALSE; } DWORD Status, Problem; if( ::CM_Get_DevNode_Status( &Status, &Problem, hDevInfoData.DevInst, 0 ) != CR_SUCCESS ) return FALSE; return ( (Status&DN_DISABLEABLE) && (Problem==CM_PROB_HARDWARE_DISABLED) );} 6楼的应该是正确的,return ( (Status&DN_HAS_PROBLEM) && (Problem==CM_PROB_DISABLED) ); 这句代表目标设备的状态:设备已经被禁用 改动例程,程序运行时候出错的问题 CTabCtrl 上的属性页之间共享控件 请教一个datagrid导出excel的问题 简直是个杯具。下了MD5的代码但不知怎么用 dll文件的生成问题 用VC打开文件 有什么软件能一次统计工程目录里所有源码文件的代码行数? 网吧游戏更新平台服务器端文件管理实现? 算法难题!在线等待? 我想通过电脑的并口向外传输信号,不知道怎么做啊! VS2005中MFC应用程序在添加了MSFlexGrid控件后如何在工具箱中显示该控件! 进程内DLL的二次封装问题
IsDisabled( DWORD DevID, HDEVINFO hDevInfo ) // 该设备是否已被禁用
{
SP_DEVINFO_DATA hDevInfoData = {sizeof(SP_DEVINFO_DATA)};
if ( !::SetupDiEnumDeviceInfo( hDevInfo, DevID, &hDevInfoData ) )
{
return FALSE;
}
DWORD Status, Problem;
if( ::CM_Get_DevNode_Status( &Status, &Problem, hDevInfoData.DevInst, 0 ) != CR_SUCCESS )
return FALSE;
return ( (Status&DN_HAS_PROBLEM) && (Problem==CM_PROB_DISABLED) );
}
BOOL
IsDisableable( DWORD DevID, HDEVINFO hDevInfo ) // 该设备是否可以被禁用
{
SP_DEVINFO_DATA hDevInfoData = {sizeof(SP_DEVINFO_DATA)};
if ( !::SetupDiEnumDeviceInfo( hDevInfo, DevID, &hDevInfoData ) )
{
return FALSE;
}
DWORD Status, Problem;
if( ::CM_Get_DevNode_Status( &Status, &Problem, hDevInfoData.DevInst, 0 ) != CR_SUCCESS )
return FALSE;
return ( (Status&DN_DISABLEABLE) && (Problem==CM_PROB_HARDWARE_DISABLED) );
}
这句代表目标设备的状态:设备已经被禁用