向USB设备发送SCSI命令
http://bbs3.driverdevelop.com/simple/?t84347.html
- {
- BOOL status = ;
- DWORD accessMode = , shareMode = ;
- HANDLE fileHandle = NULL;
- //PUCHAR dataBuffer = NULL;
- SCSI_PASS_THROUGH_WITH_BUFFERS sptwb;
- SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER sptdwb;
- UCHAR buffer[ ];
- UCHAR string[ ];
- ULONG length = , errorCode = ;
- DWORD returned = ;
- strcpy(string, "\\\\.\\");
- strcat(string, "I:");
- shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;//default
- accessMode = GENERIC_WRITE | GENERIC_READ;//default
- fileHandle = CreateFile( string, accessMode, shareMode, NULL, OPEN_EXISTING, ,
- NULL );
- if (fileHandle == INVALID_HANDLE_VALUE)
- {
- MessageBox(NULL, "Create file fail", "tester", MB_OK);
- return false;
- }
- ZeroMemory(&sptwb, sizeof(SCSI_PASS_THROUGH_WITH_BUFFERS));
- sptwb.spt.Length = sizeof(SCSI_PASS_THROUGH);
- sptwb.spt.PathId = ;
- sptwb.spt.TargetId = ;
- sptwb.spt.Lun = ;
- sptwb.spt.CdbLength = CDB6GENERIC_LENGTH;
- sptwb.spt.SenseInfoLength = ;
- sptwb.spt.DataIn = SCSI_IOCTL_DATA_IN;
- sptwb.spt.DataTransferLength = ;
- sptwb.spt.TimeOutValue = ;
- sptwb.spt.DataBufferOffset =
- offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS,ucDataBuf);
- sptwb.spt.SenseInfoOffset =
- offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS,ucSenseBuf);
- sptwb.spt.Cdb[] = SCSI_OPCODE_HWTEST_COMMAND; //SCSI_OPCODE_SIGMATEL_WRITE_COMMAND;//
- sptwb.spt.Cdb[] = HWTEST_DISPLAY_ID;//ALLOCATE_MEDIA;
- sptwb.spt.Cdb[] = ;
- length = offsetof( SCSI_PASS_THROUGH_WITH_BUFFERS, ucDataBuf )
- + sptwb.spt.DataTransferLength;
- status = DeviceIoControl( fileHandle, IOCTL_SCSI_PASS_THROUGH, &sptwb,
- sizeof(SCSI_PASS_THROUGH), &sptwb, length, &returned, FALSE );
- if (!status)
- {
- MessageBox(NULL, "Device I/0 control fail!", "tester", MB_OK);
- errorCode = GetLastError();
- ShowMessage(IntToStr(errorCode));
- PrintError(errorCode);
- CloseHandle(fileHandle);
- return false;
- }
- CloseHandle( fileHandle );
- return true;
- }
向USB设备发送SCSI命令的更多相关文章
- C# 如何捕获一个USB设备发送到PC的数据
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- 利用mass storage class 做免驱动usb设备.
当需要使用usb bulk传输,想让设备像串口通讯那样和PC主机通信, 通常需要自己做一个PC端的驱动,比较麻烦. 为避免在pc上编写usb设备驱动的麻烦,可以将设备做成mass storage 类的 ...
- Linux USB驱动学习总结(二)---- USB设备驱动
USB 设备驱动: 一.USB 描述符:(存在于USB 的E2PROM里面) 1. 设备描述符:struct usb_device_descriptor 2. 配置描述符:struct usb_c ...
- USB设备驱动模型
嵌入式设备驱动的编写,基本上都要按照一定的驱动模型编写.不这么做的话,一旦设备发生了更新和改变,大部分的驱动代码都要推倒重来,代码的重用率低,不具备移植性.所以在新版linux2.6.22以后的内核版 ...
- Java访问USB设备
最近在用Java访问RDing设备,使用的是Java HID API.使用过程中发现一个问题,由于是嵌入式小白,不知道如何向USB设备发送report.于是想到可以看看自带的软件如何访问USB的.找到 ...
- KVM客户机使用主机USB设备
有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持 -usbdevice devname 为客户机增加usb设备,devn ...
- kvm云主机使用宿主机usb设备
有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持-usbdevice devname 为客户机增加usb设备,devna ...
- USB设备---URB请求块
1.urb 结构体 USB 请求块(USB request block,urb)是USB 设备驱动中用来描述与USB 设备通信所用的基本载体和核心数据结构,非常类似于网络设备驱动中的sk_buff 结 ...
- USB系列之八:透过ASPI执行SCSI命令
在<USB系列之七>里我们介绍了ASPI的规范,并对一系列ASPI的命令做了测试,其中的02号命令是执行SCSI命令,我们专门在这篇文章中介绍,在<USB系列七>中,我们已经了 ...
随机推荐
- java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理
一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...
- python之assert断言
assert只是一个检查,为真不做任何事,不为真时,抛出异常,并包含错误信息 1.根据布尔值判断 2.判断是否相等 3.返回值是否为空 4.是否包含某值 x in y 其他方法,可以参考http:// ...
- No.9 selenium学习之路之CSS定位
CSS定位方式: 元素中间加“.”表示是class 1.通过ID定位 driver.find_element_by_css_selector("#ID值") 2.通过class定位 ...
- UFLDL(五)自编码算法与稀疏性
新教程内容太繁复,有空再看看,这节看的还是老教程: http://ufldl.stanford.edu/wiki/index.php/%E8%87%AA%E7%BC%96%E7%A0%81%E7%AE ...
- thinkphp框架if标签条件表达式
eq 等于neq 不等于gt 大于egt 大于等于lt 小于elt 小于等于
- POJ 3376 Finding Palindromes(manacher求前后缀回文串+trie)
题目链接:http://poj.org/problem?id=3376 题目大意:给你n个字符串,这n个字符串可以两两组合形成n*n个字符串,求这些字符串中有几个是回文串. 解题思路:思路参考了这里: ...
- C实现线程池
简介:这里使用linux下的互斥锁和条件变量实现了一个线程池.代码由一个未知作者完成,第二任作者补充优化. 本人仅仅是做了一些注释工作. 代码如下: /*! .h */ #include <st ...
- CVE-2013-2729 Adobe Reader和Acrobat 数字错误漏洞
这个洞是在论坛里看到的,感觉很有意思,来学习一下.个人感觉IE或者说是浏览器的洞和Adobe洞都是比较难调的,主要是有大量的类难以摸清之间的关系. 这个洞是一个整数溢出的洞,这个不是重点.重点是利用的 ...
- day1作业登录接口总结
作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 上面作业,用了几种思路来解决问题:但是本质上其实都是一样的:核心都是对文件的操作,文件的增删改查:并且这些操 ...
- linux 101 hacks 第一章cd命令
本系列来源于<linux 101 hacks>,作者还写了其他101 hacks教程,读了几章,觉得技巧都还不错,很实用,做个总结收藏. cdpath 设置基目录 [ramesh@dev- ...