阅读:2851回复:8
读取PS/2键盘/鼠标的输入的问题
我只是想得到键盘设备的路径,然后打开设备读取键盘的所有输入,但是总是在SetupDiEnumDeviceInterfaces失败,
返回错误259(没有可用的数据了) !!! 请问问题出在那里??? 难道是SetupDiClassGuidsFromName得到的GUID是错误的??? // 代码如下: GUID hidGuid; HANDLE hidHandle = INVALID_HANDLE_VALUE; DWORD dwi=sizeof(GUID); SetupDiClassGuidsFromName("Keyboard",&hidGuid,dwi,&dwi);//得到设备的GUID //char szGUID[] = "4D36E96B-E325-11CE-BFC1-08002BE10318"; //从注册表中得到. //UuidFromString((unsigned char *)szGUID, &hidGuid); HDEVINFO hDevInfo = SetupDiGetClassDevs( &hidGuid,NULL,NULL,DIGCF_PRESENT ¦ DIGCF_DEVICEINTERFACE ); if( hDevInfo == NULL ) return 0; SP_DEVICE_INTERFACE_DATA devInfoData; ::ZeroMemory( &devInfoData,sizeof(devInfoData) ); devInfoData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA); int nDevCount = 0; BOOL bResult = FALSE; SetLastError(NO_ERROR); while( GetLastError()!=ERROR_NO_MORE_ITEMS ) { bResult = SetupDiEnumDeviceInterfaces( hDevInfo,0,&hidGuid,nDevCount++,&devInfoData ); DWORD dwError = GetLastError();//总是返回错误259(没有可用的数据了。) // 请问为什么啊! 如何解决啊, if ( !bResult ) continue; ULONG reqLength = 0; SetupDiGetInterfaceDeviceDetail( hDevInfo,&devInfoData,NULL,0,&reqLength,NULL ); PSP_INTERFACE_DEVICE_DETAIL_DATA devDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA) new BYTE[reqLength]; devDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); bResult = SetupDiGetInterfaceDeviceDetail (hDevInfo,&devInfoData,devDetail,reqLength,NULL,NULL ); if ( !bResult ) { delete devDetail; devDetail = NULL; continue; } TRACE("-- %s\n",devDetail->DevicePath); delete devDetail; devDetail = NULL; } // while SetupDiDestroyDeviceInfoList (hDevInfo); |
|
沙发#
发布于:2008-07-14 09:28
怎么就没有人做过吗??
|
|