jickknight
驱动牛犊
驱动牛犊
  • 注册日期2004-05-03
  • 最后登录2005-12-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1566回复:1

usb driver中NTSTATUS SetInterface(...)中的 (PUSBD_INTERFACE_INFORMATION*) ->Pipes[i].MaximumTransfer

楼主#
更多 发布于:2004-12-07 11:08
想修改驱动读写函数的 最大读写值

是通过deviceiocontrol来读的那个,定义如下:

#define IOCTL_EZUSB_BULK_READ             CTL_CODE (FILE_DEVICE_UNKNOWN,  \
  Ezusb_IOCTL_INDEX+19,\
  METHOD_OUT_DIRECT,  \
  FILE_ANY_ACCESS)

  
里面涉及一个
(PUSBD_INTERFACE_INFORMATION*) ->Pipes.MaximumTransferSize 量,应该是usb的缓冲大小,

我这里设置成  interfaceInformation->Pipes.MaximumTransferSize =   (64*1024) -1;
在下面这个函数里设的
NTSTATUS
SetInterface(
   IN PDEVICE_OBJECT fdo,
   IN UCHAR InterfaceNumber,
   IN UCHAR AlternateSetting
   )

但是我不清楚这个量可以有多大改动, 这个驱动是在windows下运行的,应该可以改得大点,对吗?  想请假大侠们,可以设得大点嘛!?有极限值嘛!?

PS: 我得这个USB是2.0的,呵呵,采用的读是High Speed的。
在线等
Chasing my dreams!
jickknight
驱动牛犊
驱动牛犊
  • 注册日期2004-05-03
  • 最后登录2005-12-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-07 11:19
还想请假的是,应用程序通过BOOL DeviceIoControl(
HANDLE hDevice,
DWORD dwIoControlCode,
LPVOID lpInBuffer,
DWORD nInBufferSize,
LPVOID lpOutBuffer,
DWORD nOutBufferSize,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped);
里来用METHOD_OUT_DIRECT方式 读的时候,之前分配的一个lpOutBuffer以及她的大小,

这个和驱动里面实现的
  UsbBuildGetInterruptOrBulkTransferRequest(
    IN OUT PURB Urb,
    IN USHORT Length,
    IN USBD_PIPE_HANDLE PipeHandle,
    IN PVOID TransferBuffer    OPTIONAL,
    IN PMDL TransferBufferMDL    OPTIONAL,
    IN ULONG TransferBufferLength,
    IN ULONG TransferFlags,
    IN PURB Link
    );
里的 TransferBufferMDL    指针地址一致嘛!?

呵呵,请大侠不吝赐教。我知道有资料讲的,但是找不到,一时!
不好意思!
谢谢了
Chasing my dreams!
游客

返回顶部