📄 scsi.h
字号:
} BYTE2;
struct
{
//richie switch order
UCHAR responseDataFormat:4;
UCHAR reserved:4;
} BYTE3;
UCHAR additionalLength; //0x1f
UCHAR reserved0[3];
UCHAR vendorInformation[8];
UCHAR productIdentification[16];
UCHAR productRevisionLevel[4];
} SCSIDATA_INQUIRY, *PSCSIDATA_INQUIRY;
//MODE SENSE 06
//MODE SELECT 06
//Mode Parameter Header
//patch4.5@richie@wp xp begin
#define SCSIDATA_MODE06_PARAMETER_HEADER_SIZE 0x04
typedef struct _SCSIDATA_MODE06_PARAMETER_HEADER
{
UCHAR modeDataLength;
UCHAR mediumTypeCode;
struct
{
//richie
UCHAR reserved1:4;
UCHAR DPOFUA:1;
UCHAR reserved0:2;
UCHAR WP:1;
} BYTE3;
UCHAR reserved;
} SCSIDATA_MODE06_PARAMETER_HEADER, *PSCSIDATA_MODE06_PARAMETER_HEADER;
//Mode Parameter Header
#define SCSIDATA_MODE10_PARAMETER_HEADER_SIZE 0x08
typedef struct _SCSIDATA_MODE10_PARAMETER_HEADER
{
USHORT modeDataLength;
UCHAR mediumTypeCode;
struct
{
//richie
UCHAR reserved1:4;
UCHAR DPOFUA:1;
UCHAR reserved0:2;
UCHAR WP:1;
} BYTE3;
UCHAR reserved[4];
} SCSIDATA_MODE10_PARAMETER_HEADER, *PSCSIDATA_MODE10_PARAMETER_HEADER;
//patch4.5@richie@wp xp end
//Read-Write Error Recovery Page (0x01)
#define SCSIDATA_MODE_RW_ERR_RECOVERY_PAGE_SIZE 0x0c
typedef struct _SCSIDATA_MODE_RW_ERR_RECOVERY_PAGE
{
struct
{
//richie switch order
UCHAR pageCode:6;
UCHAR reserved:1;
UCHAR PS:1;
} BYTE0;
UCHAR pageLength;
struct
{
//richie switch order
UCHAR DCR:1;
UCHAR reserved2:1;
UCHAR PER:1;
UCHAR reserved1:1;
UCHAR RC:1;
UCHAR reserved0:2;
UCHAR AWRE:1;
} BYTE2;
UCHAR readRetryCount;
UCHAR reserved0;
UCHAR writeRetryCount;
UCHAR reserved1;
} SCSIDATA_MODE_RW_ERR_RECOVERY_PAGE, *PSCSIDATA_MODE_RW_ERR_RECOVERY_PAGE;
//Flexible Disk Page (0x05)
#define SCSIDATA_MODE_FLEXIBLE_DISK_PAGE_SIZE 0x20
typedef struct _SCSIDATA_MODE_FLEXIBLE_DISK_PAGE
{
struct
{
//richie switch order
UCHAR pageCode:6;
UCHAR reserved:1;
UCHAR PS:1;
} BYTE0;
UCHAR pageLength;
USHORT transferRate;
UCHAR numberOfHeads;
UCHAR sectorsPerTrack;
USHORT dataBytesPerSector;
USHORT numberOfCylinders;
UCHAR reserved0[9];
UCHAR motorOnDelay;
UCHAR motorOffDelay;
UCHAR reserved1[7];
USHORT mediumRotationRate;
UCHAR reserved2[2];
} SCSIDATA_MODE_FLEXIBLE_DISK_PAGE, *PSCSIDATA_MODE_FLEXIBLE_DISK_PAGE;
//Removable Block Access Capabilities Page (0x1b)
#define SCSIDATA_MODE_REM_BLK_ACC_CAP_PAGE_SIZE 0x0c
typedef struct _SCSIDATA_MODE_REM_BLK_ACC_CAP_PAGE
{
struct
{
//richie switch order
UCHAR pageCode:6;
UCHAR reserved:1;
UCHAR PS:1;
} BYTE0;
UCHAR pageLength;
struct
{
//richie switch order
UCHAR reserved:6;
UCHAR SRFP:1;
UCHAR SFLP:1;
} BYTE2;
struct
{
//richie switch order
UCHAR TLUN:3;
UCHAR reserved:3;
UCHAR SML:1;
UCHAR NCD:1;
} BYTE3;
UCHAR reserved[8];
} SCSIDATA_MODE_REM_BLK_ACC_CAP_PAGE, *PSCSIDATA_MODE_REM_BLK_ACC_CAP_PAGE;
//Timer and Protect Page (0x1c)
#define SCSIDATA_MODE_TIMER_AND_PROTECT_PAGE_SIZE 0x08
typedef struct _SCSIDATA_MODE_TIMER_AND_PROTECT_PAGE
{
struct
{
//richie
UCHAR pageCode:6;
UCHAR reserved:1;
UCHAR PS:1;
} BYTE0;
UCHAR pageLength;
UCHAR reserved0;
struct
{
//richie
UCHAR inactivityTimeMultiplier:4;
UCHAR reserved:4;
} BYTE3;
struct
{
//richie
UCHAR SWPP:1;
UCHAR DISP:1;
UCHAR reserved:6;
} BYTE4;
UCHAR reserved1[3];
} SCSIDATA_MODE_TIMER_AND_PROTECT_PAGE, *PSCSIDATA_MODE_TIMER_AND_PROTECT_PAGE;
//READ CAPACITY
#define SCSIDATA_READ_CAPACITY_SIZE 0x08
typedef struct _SCSIDATA_READ_CAPACITY
{
ULONG lastLogicalBlockAddress;
ULONG blockLengthInBytes;
} SCSIDATA_READ_CAPACITY, *PSCSIDATA_READ_CAPACITY;
//------------------------------------------------------------------------------
//External Link
//------------------------------------------------------------------------------
extern code UCHAR K_VendorInformation[];
extern code UCHAR K_ProductIdentification[];
extern code UCHAR K_ProductRevisionLevel[];
//------------------------------------------------------------------------------
//Function Prototype
//------------------------------------------------------------------------------
UCHAR SCSICMD_TestUnitReady(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_RezeroUnit(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_RequestSense(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_FormatUnit(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Inquiry(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_ModeSelect06(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_ModeSense06(PUCHAR pSCSI, PULONG pSize);
ULONG SCSICMD_ModePage01(PUCHAR pPage);
ULONG SCSICMD_ModePage1b(PUCHAR pPage);
ULONG SCSICMD_ModePage1c(PUCHAR pPage);
//patch4.5@richie@wp xp begin
ULONG SCSICMD_Mode06ParameterHeader(PUCHAR pPage, ULONG size);
ULONG SCSICMD_Mode10ParameterHeader(PUCHAR pPage, ULONG size);
//patch4.5@richie@wp xp end
UCHAR SCSICMD_StartStopUnit(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_SendDiagnostic(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_PreventAllowMediumRemoval(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_ReadCapacity(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Read10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Write10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Seek10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_WriteAndVerify10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Verify10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_ModeSelect10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_ModeSense10(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Read12(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSICMD_Write12(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSIDATA_FormatUnit(PUCHAR pSCSI);
UCHAR SCSIDATA_ModeSelect06(PUCHAR pSCSI);
UCHAR SCSIDATA_ModeSelect10(PUCHAR pSCSI);
UCHAR SCSICMD_Read12(PUCHAR pSCSI, PULONG pSize);
UCHAR SCSIDATA_ReadFormatCapacities(PUCHAR pSCSI, PULONG pSize);
//richie@1129
//READ FORMAT CAPACITY
#define SCSIDATA_READ_FORMAT_CAPACITY_LIST_HEADER_SIZE 0x04
typedef struct _SCSIDATA_READ_CAPACITY_LIST_HEADER
{
UCHAR reserved0;
UCHAR reserved1;
UCHAR reserved2;
UCHAR capacityListLength;
} SCSIDATA_READ_CAPACITY_LIST_HEADER, *PSCSIDATA_READ_CAPACITY_LIST_HEADER;
#define SCSIDATA_READ_FORMAT_MAXIMUM_SIZE 0x08
typedef struct _SCSIDATA_READ_FORMAT_MAXIMUM
{
ULONG numberOfBlocks;
struct
{
//richie switch order
UCHAR descCode:2;
UCHAR reserved:6;
} BYTE4;
UCHAR blockLength[3];
} SCSIDATA_READ_FORMAT_MAXIMUM, *PSCSIDATA_READ_FORMAT_MAXIMUM;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -