上位机函数调用:
DeviceIoControl(hHandle,
IOCTL_SCSI_PASS_THROUGH_DIRECT,
&TransStruct, //定义见下
cbDataLen, //0x2e
&TransStruct, //定义见下
cbDataLen, //0x2e
&cbRetValSize,
FALSE)
其中:TransStruct定义如下:
SCSI_PASS_THROUGH_DIRECT TransStruct;
ZeroMemory(&TransStruct, sizeof(SCSI_PASS_THROUGH_DIRECT));
TransStruct.Length = sizeof(SCSI_PASS_THROUGH_DIRECT); //0x2C
TransStruct.PathId = 0;
TransStruct.TargetId = 1;
TransStruct.Lun = 0;
TransStruct.CdbLength = cCBDLen;//0x06
TransStruct.DataIn = SCSI_IOCTL_DATA_OUT;//0x00
TransStruct.DataTransferLength = ulDataTransferLength;//0x02
TransStruct.TimeOutValue = 3;
TransStruct.DataBuffer = abIOBuffer;
TransStruct.SenseInfoLength = 0;
TransStruct.SenseInfoOffset = sizeof(SCSI_PASS_THROUGH_DIRECT);//0x2C
memcpy(TransStruct.Cdb, pbCBD, cCBDLen);//0xff,0x54,0x59,0x43,0x4f,0x53
|