#include <windows.h>
#include <Setupapi.h>
#include <string.h>
#include <stddef.h>
#include <ntddscsi.h>
#include <winioctl.h>
#include "usbhead.h"
typedef struct
{
SCSI_PASS_THROUGH Spt;
BYTE Sense[18];
BYTE Data[36];
} SISC_CMD;
BOOL bSuccess ;
DWORD nBytes = 0 ;
SISC_CMD cmd ;
cmd.Spt.Length = sizeof(cmd.Spt);
cmd.Spt.SenseInfoLength = sizeof(cmd.Sense);
cmd.Spt.DataTransferLength = sizeof(cmd.Data);
cmd.Spt.SenseInfoOffset = sizeof( SCSI_PASS_THROUGH ) ;//offsetof(cmd, Sense);
cmd.Spt.DataBufferOffset = sizeof( SCSI_PASS_THROUGH ) + 18 ;//offsetof(cmd, Data);
cmd.Spt.TimeOutValue = 30;
cmd.Spt.DataIn = SCSI_IOCTL_DATA_IN;
cmd.Spt.CdbLength = 6;
cmd.Spt.Cdb[0] = 0x12; // inquiry opcode
cmd.Spt.Cdb[1] = 0x00;
cmd.Spt.Cdb[2] = 0x00;
cmd.Spt.Cdb[3] = 0x00;
cmd.Spt.Cdb[4] = sizeof(cmd.Data);
cmd.Spt.Cdb[5] = 0x00;
bSuccess = ::DeviceIoControl(hDevice,
IOCTL_SCSI_PASS_THROUGH,
&cmd,
sizeof(cmd),
&cmd,
sizeof(cmd),
&nBytes,
(LPOVERLAPPED)NULL);
return false ;
本文发送的 inquiry 命令 其他命令换掉0x12就可以了