阅读:1865回复:5
请教斑竹关于deviceiocontrol的问题
我在打开设备之后,用deviceiocontrol()试图得到配置描述符等,但是总是返回0,不知道是为什么?还请斑竹赐教。
下面是我的deviceiocontrol()函数的定义及使用。(我的getdevicebyinterface()在头文件中定义,而且肯定正确,确实打开了设备。) ****************************************************** #include <windows.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <time.h> #include <winbase.h> #include "devioctl.h" #include <setupapi.h> #include <basetyps.h> #include "IsoUsb.h" #include "guidiso.h" #include "opendevice.h" #include "usbdi.h" void get_descriptor( HANDLE hDEV ) { ULONG success; DWORD siz, nBytes; char buf[256]; siz = sizeof(buf); if(hDEV = INVALID_HANDLE_VALUE){ printf("\nDEV not open.\n"); return; } success = DeviceIoControl(hDEV, IOCTL_ISOUSB_GET_CONFIG_DESCRIPTOR, buf, siz, buf, siz, &nBytes, NULL); printf("\nrequest complete, success = %d nBytes = %d\n", success, nBytes); return; } int _cdecl main( int argc, char *argv[]) /*++ Routine Description: Entry point to RwIso.exe Parses cmdline, performs user-requested tests Arguments: argc, argv standard console 'c' app arguments Return Value: Zero --*/ { HANDLE IsoUsb = GetDeviceViaInterface((LPGUID)&GUID_CLASS_USBN9603_ISO,0); get_descriptor(IsoUsb); CloseHandle(IsoUsb); printf("\nPress enter please"); char line[80]; gets(line); return 0; } |
|
|
沙发#
发布于:2001-10-23 14:56
你仔细检查检查,看看你的代码中是不是有的地方缺点儿什么?
|
|
|
板凳#
发布于:2001-10-23 16:51
我改动了一些地方,还是不行,请再看我的测试程序,附件中是我的
win32 console app运行结果显示 **************************************************** void get_descriptor( HANDLE hDEV ) { ULONG success; DWORD nBytes; char inbuf[256]; char outbuf[256]; if(hDEV == INVALID_HANDLE_VALUE){ printf("\nDEV not open.\n"); return; } success = DeviceIoControl(hDEV, IOCTL_ISOUSB_GET_CONFIG_DESCRIPTOR, inbuf, sizeof(inbuf), outbuf, sizeof(outbuf), &nBytes, NULL); printf("\nrequest complete, success = %d nBytes = %d\n", success, nBytes); return; } int _cdecl main( int argc, char *argv[]) { HANDLE IsoUsb = GetDeviceViaInterface((LPGUID)&GUID_CLASS_USBN9603_ISO,0); get_descriptor( IsoUsb ); CloseHandle(IsoUsb); printf("\nPress enter please"); char line[80]; gets(line); return 0; } |
|
|
地板#
发布于:2001-10-25 11:58
斑竹还没回答我的问题呢?哪里有问题啊?还请斑竹指正!
谢谢!bow n 次!! |
|
|
地下室#
发布于:2001-10-25 12:00
**********************************************************
usb11 :你仔细检查检查,看看你的代码中是不是有的地方缺点儿什么? ************************************************************ 斑竹还没回答我的问题呢?哪里有问题啊?还请斑竹指正! 谢谢!bow n 次!! |
|
|
5楼#
发布于:2001-10-25 19:25
真抱歉,这段代码我看不出有什么毛病来
|
|
|