- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
windows 是否有特定的接口(interface),我可以通过它发送特定的 scsi 命令,如查询到 scsi 设备?我在网上搜索,找到了对 SCSI Pass Through 接口(interface)的传递引用。但它非常模糊。
该 API 是否有关于如何使用它的文档?
最佳答案
#include <iostream>
#include <windows.h>
#include <winioctl.h>
#define ULONG_PTR ULONG
#include <ntddscsi.h> //from SDK
#include <spti.h> //from DDK
using namespace std;
int demo()
{
HANDLE hDisk;
SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER sptdwb;
ULONG length = 0;
DWORD bytesReturn;
BYTE bufDataRead[64*1024+10];
int iRet;
hDisk = CreateFile(path,GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,OPEN_EXISTING,0,NULL
);
if (hDisk ==INVALID_HANDLE_VALUE) {
return 0;
}
ZeroMemory(&sptdwb, sizeof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER));
sptdwb.sptd.Length = sizeof(SCSI_PASS_THROUGH_DIRECT);
sptdwb.sptd.PathId = 0;
sptdwb.sptd.TargetId = 1;
sptdwb.sptd.Lun = 0;
sptdwb.sptd.CdbLength = 6;
sptdwb.sptd.DataIn = SCSI_IOCTL_DATA_IN;
sptdwb.sptd.SenseInfoLength = 24;
sptdwb.sptd.DataTransferLength = 8;
sptdwb.sptd.TimeOutValue = 2;
sptdwb.sptd.DataBuffer = bufDataRead;
sptdwb.sptd.SenseInfoOffset = offsetof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER,ucSenseBuf);
sptdwb.sptd.Cdb[0] = 0x12;
sptdwb.sptd.Cdb[1] = 0x00;
sptdwb.sptd.Cdb[2] = 0x00;
sptdwb.sptd.Cdb[3] = 0x00;
sptdwb.sptd.Cdb[4] = 0xFF;
sptdwb.sptd.Cdb[5] = 0x00;
length = sizeof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER);
iRet = DeviceIoControl(hDisk,
IOCTL_SCSI_PASS_THROUGH_DIRECT,
&sptdwb,
length,
&sptdwb,
length,
&bytesReturn,
NULL);
if (0 == iRet) {
printf("inquiry fail");
return 0;
} else {
//Check returned data in sptdwb.sptd.DataBuffer.
}
return 0;
关于windows - 在 Windows 中向 SCSI 设备发送特定的 SCSI 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3316284/
我正在寻找特定于供应商的 SCSI 命令的引用。我主要关心以下几点: 0xD4 0xD5 0xD8 据我所知,这些命令是一些“特殊”的读取命令,用在某些 Plextor 驱动器上。但是,我无法在任何地
windows 是否有特定的接口(interface),我可以通过它发送特定的 scsi 命令,如查询到 scsi 设备?我在网上搜索,找到了对 SCSI Pass Through 接口(interf
我尝试发出 scsi read(10)和 write(10)到 SSD。我用 this example code作为引用/基本代码。 这是我的 scsi 读取: #define READ_REPLY_
我想知道将错误代码映射到字符串的最佳方法是什么,例如在 SCSI 协议(protocol)中,错误总是以数字形式返回。像这样: 00h GOOD 02h CHECK CONDITION 04h CON
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
有两个服务器:导出 5TB 磁盘的 Openfiler(v. 2.99) 和通过 iscsi 协议(protocol)使用该磁盘的 Proxmox(v. 3.4)。 使用此磁盘时,我在/var/log
我一直在使用 scsi 命令,我可以发送一些基本命令,例如不同的查询等。 我一直在使用这个示例来生成我的查询。我正在努力使这个示例能够使用不同的 scsi 命令。 http://www.tldp.or
我用了libaums访问我的自定义 USB 的私有(private)分区。现在我想知道如何读取 USB 的隐藏区域。为了访问隐藏区域,我知道 USB 隐藏地址的扇区范围,以及用于读取和写入隐藏区域的供
我有一个程序,其中未安装或以任何其他方式使用的驱动器需要降速。 我注意到在我关闭文件描述符后驱动器会自动加速。 我还没有找到任何信息,这是为什么,有什么办法可以禁用它吗? 这里有一个小程序可以自己测试
给定一个 SCSI 设备作为输入,我正在尝试实现一个内核模块,它可以: 获取发送到该特定设备的 SCSI 命令列表并计算该命令的发出次数。 我该如何实现? 我是内核模块编程的初学者,事实上我到目前为止
如何在 linux & c 上获取 SCSI 设备的供应商名称? 最佳答案 如果您知道设备/总线 ID,您可以阅读/sys 文件,同时检查 lsscsi . -> cat /sys/bus/scs
我正在尝试编写一个程序来阻止使用 SCSI 2 保留的 LUN。 在 SCSI 2 预留中,LUN 可以由具有不同路径的同一主机预留,还是 I-T-L 联结只有一条路径。 例如:假设主机尝试从同一目标
我在 Mac 上,正在尝试导入虚拟机镜像(.ova 文件)。我尝试在 VM 上导入文件并收到以下错误。 找不到名为“SCSI Controller ”的存储 Controller 任何已经存在的针对此
SCSI 是标准电子接口(interface),允许个人计算机与磁盘驱动器、磁带驱动器等外围硬件进行通信。 外围组件互连(PCI),顾名思义,是一种描述如何以结构化和受控方式将系统的外围组件连接在一起
SCSI 是标准的电子接口(interface),允许个人计算机与外围硬件(如磁盘驱动器、磁带驱动器等)进行通信。 外围组件互连 (PCI),顾名思义,是一种标准,描述了如何以结构化和受控的方式将系统
我正在使用 C/C++ 在 Windows 中进行开发,我想知道是否有可能获得适当的 \\.\SCSI设备名称 \\.\PhysicalDrive ?.. 例如,很高兴知道如何获得 \\.\Physi
我有一个应用程序可以同时执行 SCSI READ10 和 WRITE10 操作。当他们到达我的代码的较低级别时,他们调用 write(),然后调用/dev/sgXX 上的 read()。不过,我在接收
我是 SCSI CDB 编程的新手。我有一些使用 6byte CDB 为写命令编写的代码 ccb = (Exec_IO_CCB *)(buffer + header_size); ccb->ccb
我已经阅读了phison的源代码(关于badusb,python文件)。但我无法理解程序向 SCSI 设备发送什么命令。在阅读了有关 SCSI 命令的内容后,我仍然找不到以“06h”开头的操作码(存在
我正在使用 Linux LIO 包为后台存储创建环回设备。我正在使用“targetcli”实用程序来发出站点中提到的以下命令 - http://linux-iscsi.org/wiki/Loopbac
我是一名优秀的程序员,十分优秀!