根據上面的介紹,定義相應命令的數據結構如下: 查詢Inquiry)
/**
* Inquiry命令數據結構
*/
typedefstruct _INQUIRY_SPC
{
UINT8OperationCode; //!< 操作碼,應為0x12
UINT8Lun; //!< 邏輯單元號,應為0
UINT8PageCode; //!< 頁代碼,應為0
UINT8Reserved1; //!< 保留,應為0
UINT8AllocationLen; //!< 存儲空間長度,常為0x24
UINT8Reserved[7]; //!< 保留,應為0
} INQUIRY_SPC, *PINQUIRY_SPC;
讀容量ReadCapacity)/**
* 讀容量命令
*/
typedefstruct _READ_CAPACITY
{
UINT8OperationCode; //!< 操作碼,應為0x25
UINT8Reserved[15]; //!< 保留,應為0
}READ_CAPACITY;
讀扇區Read10)/**
* 讀命令
*/
typedefstruct _READ_10
{
UINT8OperationCode; //!< 操作碼,應為0x28
UINT8Reserved1; //!< 保留,應為0
UINT8LBA_3; //!< 邏輯塊地址3
UINT8LBA_2; //!< 邏輯塊地址2
UINT8LBA_1; //!< 邏輯塊地址1
UINT8LBA_0; //!< 邏輯塊地址0
UINT8Reserved2; //!< 保留,應為0
UINT8XferLen_1; //!< 傳輸扇區數,高字節
UINT8XferLen_0; //!< 傳輸扇區數,低字節
UINT8Reserved3[4]; //!< 保留,應為0
}READ_10;
寫扇區Write10)/**
* 寫命令
*/
typedefstruct _WRITE_10
{
UINT8OperationCode; //!< 操作碼,應為0x2A
UINT8Reserved1; //!< 保留,應為0
UINT8LBA_3; //!< 邏輯塊地址3
UINT8LBA_2; //!< 邏輯塊地址2
UINT8LBA_1; //!< 邏輯塊地址1
UINT8LBA_0; //!< 邏輯塊地址0
UINT8Reserved2; //!< 保留,應為0
UINT8XferLen_1; //!< 傳輸扇區數,高字節
UINT8XferLen_0; //!< 傳輸扇區數,低字節
UINT8Reserved3[4]; //!< 保留,應為0
}WRITE_10;
本文出自 “rainman” 博客,請務必保留此出處http://lancelot.blog.51cto.com/393579/310335