renyi533
驱动牛犊
驱动牛犊
  • 注册日期2005-05-18
  • 最后登录2005-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1615回复:1

求助,关于USBSTOR.sys的一个upper filer driver。100分

楼主#
更多 发布于:2005-06-08 14:59
我想开发一个USBSTOR.sys的一个upper filter driver用于向特定型号的U盘发送一些特殊的厂商请求。请问此功能应该如何实现?谢谢大家。
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-06-10 17:54
我想开发一个USBSTOR.sys的一个upper filter driver用于向特定型号的U盘发送一些特殊的厂商请求。请问此功能应该如何实现?谢谢大家。

可以通过SCSI的INQUIRY命令识别。
通过枚举磁盘设备
SetupDiEnumDeviceInterfaces
SetupDiGetInterfaceDeviceDetail

再判断是不是UPAN
    bResult = ::DeviceIoControl(hDevice, // 设备句柄
        IOCTL_STORAGE_QUERY_PROPERTY,    // 取设备属性信息
        &Query, sizeof(STORAGE_PROPERTY_QUERY),    // 输入数据缓冲区
        pDevDesc, pDevDesc->Size,        // 输出数据缓冲区
        &dwOutBytes,                     // 输出数据长度
        (LPOVERLAPPED)NULL);             // 用同步I/O    


再Ret=DeviceIoControl(
hDevice,
IOCTL_SCSI_PASS_THROUGH,
&sptwb,
sizeof(SCSI_PASS_THROUGH),
&sptwb,
length,
&returned,
NULL);
发送INQUIRY

如果是驱动中就更简单了,直接象被挂对象IOCONTROL 就行了
---内核开发合作或提供基础技术服务QQ:22863668 ---
游客

返回顶部