Alfred
驱动牛犊
驱动牛犊
  • 注册日期2001-07-12
  • 最后登录2002-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1865回复:5

请教斑竹关于deviceiocontrol的问题

楼主#
更多 发布于:2001-10-23 12:53
我在打开设备之后,用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;
}

尽管我不喜欢做驱动程序,但是我还是不得不做,既然做了,就要做好!
usb11
驱动小牛
驱动小牛
  • 注册日期2001-09-17
  • 最后登录2009-04-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-10-23 14:56
你仔细检查检查,看看你的代码中是不是有的地方缺点儿什么?
助人乃快乐之本! 共同进步是我的本意!
Alfred
驱动牛犊
驱动牛犊
  • 注册日期2001-07-12
  • 最后登录2002-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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;
}

尽管我不喜欢做驱动程序,但是我还是不得不做,既然做了,就要做好!
Alfred
驱动牛犊
驱动牛犊
  • 注册日期2001-07-12
  • 最后登录2002-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-10-25 11:58
斑竹还没回答我的问题呢?哪里有问题啊?还请斑竹指正!

谢谢!bow n 次!!
尽管我不喜欢做驱动程序,但是我还是不得不做,既然做了,就要做好!
Alfred
驱动牛犊
驱动牛犊
  • 注册日期2001-07-12
  • 最后登录2002-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-10-25 12:00
**********************************************************
usb11 :你仔细检查检查,看看你的代码中是不是有的地方缺点儿什么?
************************************************************

斑竹还没回答我的问题呢?哪里有问题啊?还请斑竹指正!

谢谢!bow n 次!!
尽管我不喜欢做驱动程序,但是我还是不得不做,既然做了,就要做好!
usb11
驱动小牛
驱动小牛
  • 注册日期2001-09-17
  • 最后登录2009-04-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-10-25 19:25
真抱歉,这段代码我看不出有什么毛病来
助人乃快乐之本! 共同进步是我的本意!
游客

返回顶部