阅读:1732回复:6
设备安装问题?
怎么从程序里用SETUPAPI来判断我的设备是否已经接入计算机了?
|
|
最新喜欢:![]()
|
沙发#
发布于:2001-09-14 10:50
能说详细点吗,最好给个例子...
|
|
|
板凳#
发布于:2001-09-14 10:58
HANDLE GetDeviceViaInterface( GUID* pGuid, DWORD instance)
{ // Get handle to relevant device information set HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); if(info==INVALID_HANDLE_VALUE) { printf("No HDEVINFO available for this GUID\n"); return NULL; } // Get interface data for the requested instance SP_INTERFACE_DEVICE_DATA ifdata; ifdata.cbSize = sizeof(ifdata); if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, instance, &ifdata)) { printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance\n"); SetupDiDestroyDeviceInfoList(info); return NULL; } // Get size of symbolic link name DWORD ReqLen; SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL); PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]); if( ifDetail==NULL) { SetupDiDestroyDeviceInfoList(info); return NULL; } // Get symbolic link name ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL)) { SetupDiDestroyDeviceInfoList(info); delete ifDetail; return NULL; } printf("Symbolic link is %s\n",ifDetail->DevicePath); // Open file HANDLE rv = CreateFile( ifDetail->DevicePath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if( rv==INVALID_HANDLE_VALUE) rv = NULL; delete ifDetail; SetupDiDestroyDeviceInfoList(info); return rv; } --------------------- 用以上的代码,只要代入你的GUID就可以知道是否有设备接入了! |
|
|
地板#
发布于:2001-09-14 11:04
请问两个参数的意思?
|
|
|
地下室#
发布于:2001-09-14 11:33
我只知道设备类,和设备的ID,它不提供INTERFACE,怎么找?
|
|
|
5楼#
发布于:2001-09-14 11:41
设备ID是指什么???
|
|
|
6楼#
发布于:2001-09-14 12:23
就是VERDOR_ID和PRODUCT_ID, 这个设备没有接口...
|
|
|