阅读:1604回复:2
如何在应用程序中找到USB设备的路径?
已经郁闷好几天了,一直没有搞定。
使用了从网上找到的无数的例子,都不行。 请问在知道你的USB的GUID的情况下,如何获得改设备的路径, 恳请大侠们不吝赐教。 万分感谢。 |
|
最新喜欢:![]() |
沙发#
发布于:2004-05-14 12:21
这是个在命令提示符下的程序。
工程里应link setupapi.lib 主程序: #include \"windows.h\" #include \"setupapi.h\" #include \"stdio.h\" #include \"initguid.h\" #include \"GUID.h\" //此处为你定义GUID的头文件 #include \"winioctl.h\" HANDLE GetDeviceViaInterface( GUID* pGuid, DWORD instance); void main(int argc, char* argv[]) { HANDLE hWdm1 = GetDeviceViaInterface((LPGUID)&MY_GUID,0); } 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; } :D |
|
|
板凳#
发布于:2004-05-14 15:59
多谢回复,我按照你的提示来试试。
|
|