阅读:1571回复:5
如何使用Createfile函数得到设备句柄
请教各位大侠!
如何得到usb设备的句柄(handle)? 我的设备信息如下: Signature="$CHICAGO$" Class=USB ClassGUID={36fc9e60-c465-11cf-8056-444553540000} provider=%Anchor% DriverVer= 05/17/2002,3.0.0.0 %EzUsb_Desc%=EZUSB_Inst, USB\VID_0547&PID_1002 %EzLoader_Desc%=EZLOADER_Inst, USB\VID_0547&PID_2131 Anchor="AnchorChips" EzUsb_Desc="Anchor Chips EZ-USB Generic Device" EzLoader_Desc="Anchor Chips EZ-USB Loader(2131Q/2131S/2135S) - EEPROM missing" 各位老大帮帮忙啊! 焦急等待中! |
|
最新喜欢:![]() |
沙发#
发布于:2005-01-13 19:21
guidUsbPrt=ClassGUID={0x36fc9e60,0xc465,0x11cf,0x80,0x56,0x44,0x45,0x53,0x54,0x00,0x00};
typedef struct _SP_DEVICE_INTERFACE_DATA { DWORD cbSize; GUID InterfaceClassGuid; DWORD Flags; DWORD Reserved; } SP_DEVICE_INTERFACE_DATA; typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A { DWORD cbSize; CHAR DevicePath[ANYSIZE_ARRAY]; } SP_DEVICE_INTERFACE_DETAIL_DATA; SP_DEVICE_INTERFACE_DATA devIntData; SP_DEVICE_INTERFACE_DETAIL_DATA *devIntDetail; 备注: devIntData是一个OUTPUT的参数,不用指定值,只要求开辟一个存储空间就可以了! |
|
板凳#
发布于:2005-01-13 14:12
To:hero_xue
非常感谢你的回复,但是在SetupDiEnumDeviceInterfaces 函数中guidUsbPrt,devIntData这些参数如何指定?恳请大侠再指导指导!!!! |
|
地板#
发布于:2005-01-12 19:44
我觉得2楼说得不对!
要取得指定GUID设备的句柄,可以通下以下方法: 1)根据GUID取得这类设备接口句柄 // setup api, get class devices: list all devices belonging to the uuid of the usbprt interface that are present hDev = SetupDiGetClassDevs( ClassGUID, NULL, NULL, DIGCF_PRESENT|DIGCF_INTERFACEDEVICE ); 2)如果这类接口下的设备有多个,枚举此类下的各个设备 // enumerate the device interfaces in the set created above rv = SetupDiEnumDeviceInterfaces(hDev, NULL, guidUsbPrt, index, &devIntData); 3)获得各子项具体设备的详细信息. rv = SetupDiGetDeviceInterfaceDetail(hDev, &devIntData, devIntDetail, sizeof(ditBuf), &cbNeeded, NULL); 4)上项中的devIntDetail->DevicePath即为你所要的所需的设备句柄 hior = CreateFile( devIntDetail->DevicePath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, (LPSECURITY_ATTRIBUTES)NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL ); 上面用到的各函数API均可在MSDN上查出其具体参数应用方法,不再细述. |
|
地下室#
发布于:2005-01-12 14:53
谢谢楼上的回复!IRP_MJ_CREATE是什么?
我对硬件也不是太了解,现在要调用厂商提供的dll中的函数, 但是函数中都有一个设备句柄参数,这个句柄如何得到?需要哪些信息呢?紧急求救啊!!! |
|
驱动老牛
![]() |
5楼#
发布于:2005-01-12 14:29
那得支持IRP_MJ_CREATE才行
|
|