阅读:3333回复:4
找到了GUID,成功得到设备句柄。还无法访问u盘??斑竹救命
在一个简单c++程序main里面用4个SetupDi*****得到了设备路径。
DevicePath. h = SetupDiGetClassDevs(&my_guid,// LPGUID ClassGuid, NULL, // PCTSTR Enumerator, NULL, // HWND hwndParent, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT // DWORD Flags ); SetupDiEnumDeviceInterfaces(h, NULL, &my_guid, 0, &DevData ); SetupDiGetDeviceInterfaceDetail(h, &DevData, NULL, 0, &ReqLen, NULL); SetupDiGetDeviceInterfaceDetail(h, &DevData, mDevDetail, ReqLen, &ReqLen, NULL); Name = mDevDetail->DevicePath; fprintf(stdout,\"\\nmDevDetail->DevicePath:\\n%s\",Name); 再用下面函数成功找到了设备句柄 hf = ::CreateFile( Name, GENERIC_READ | GENERIC_WRITE, // access mode FILE_SHARE_WRITE | FILE_SHARE_READ, // share mode NULL, // security desc. OPEN_EXISTING, // how to create FILE_FLAG_OVERLAPPED, // file attributes NULL // template file ); 但是用下面这个函数进行设备访问的时候,只有IOCTL_STORAGE_MEDIA_REMOVAL这个控制码能成功返回。 其他标准控制码IOCTL_STORAGE_****都返回错误。system code error.这是怎么回事??救命呀!! succ = DeviceIoControl( hf, // driver handle IOCTL_STORAGE_MEDIA_REMOVAL, // IOCTL code &mdia,//input buffer sizeof(mdia),//sizeof(req), // input buffer size NULL, // output buffer 0, &BytesRet, // number of bytes returned fault ); |
|
最新喜欢:![]()
|
沙发#
发布于:2003-03-02 04:00
没有用过这些IOCTLS
|
|
|
板凳#
发布于:2003-03-02 20:02
那请问什么控制码曾经成功获取设备信息。
我发现我现在找不到合适的控制码了。 IOCTL_SCSI_****....还是别的? |
|
|
地板#
发布于:2009-03-29 21:17
myguid是什么呢
|
|
地下室#
发布于:2009-04-02 16:04
我找到了GUID和设备句柄,访问别人的设备,有的输入读到了,有的没读到,什么原因啊?
|
|