SDBUS_REQUEST_PACKET 結構 (ntddsd.h)
SDBUS_REQUEST_PACKET 結構會指定 SdBusSubmitRequest 例程傳送至總線驅動程式之個別要求和命令的參數。
語法
typedef struct _SDBUS_REQUEST_PACKET {
SD_REQUEST_FUNCTION RequestFunction;
PVOID UserContext[3];
ULONG_PTR Information;
union {
UCHAR AsUCHAR[16];
ULONG AsULONG[4];
SDRESP_TYPE3 Type3;
} ResponseData;
UCHAR ResponseLength;
UCHAR Reserved;
USHORT Flags;
union {
struct {
SDBUS_PROPERTY Property;
PVOID Buffer;
ULONG Length;
} GetSetProperty;
struct {
SDCMD_DESCRIPTOR CmdDesc;
ULONG Argument;
PMDL Mdl;
ULONG Length;
} DeviceCommand;
struct {
SDBUS_ERASE_TYPE EraseType;
ULONG StartBlock;
ULONG EndBlock;
} EraseCommand;
struct {
ULONG Frequency;
} MmcSoftReset;
struct {
PIRP IrpToHpi;
} MmcHpi;
} Parameters;
} SDBUS_REQUEST_PACKET, *PSDBUS_REQUEST_PACKET;
成員
RequestFunction
包含類型 為 SD_REQUEST_FUNCTION 的列舉值,指定作業的參數及其解譯方式。
UserContext[3]
包含可供呼叫端選擇性使用的緩衝區區域。 總線驅動程式不會使用此成員。
Information
包含輸出要求的狀態。
ResponseData
定義 ResponseData 等位。
ResponseData.AsUCHAR[16]
在輸出上包含最多 16 個字節的響應數據。 如需響應數據的詳細資訊,請參閱 Secure Digital (SD) 規格。
ResponseData.AsULONG[4]
在輸出上包含最多 16 個字節的響應數據。 如需響應數據的詳細資訊,請參閱 Secure Digital (SD) 規格。
ResponseData.Type3
定義 SDRESP_TYPE3 成員 Type3。
ResponseLength
指出回應數據的長度,以位元組為單位。
Reserved
保留,設定為 0。
Flags
SDRP 的旗標欄位。
Parameters
個別函式的參數。
Parameters.GetSetProperty
屬性函式可讓呼叫端控制總線驅動程式作業的各個層面。
Parameters.GetSetProperty.Property
包含型 別SDBUS_PROPERTY 的列舉值,指定要讀取或變更的屬性。
Parameters.GetSetProperty.Buffer
包含屬性數據,以在設定屬性的作業中寫入。 包含從作業中從 屬性讀取的數據,這些數據會擷取與屬性相關聯的數據。
Parameters.GetSetProperty.Length
指出回應數據的長度,以位元組為單位。
Parameters.DeviceCommand
DeviceCommand 是允許執行 SD 裝置代碼和自變數的 'pipe'。 這些程式代碼定義於 Secure Digital (SD) 規格中、可以依據每個裝置類別,也可以是專屬的。
Parameters.DeviceCommand.CmdDesc
包含定義 SD 記憶卡命令之類型 SDCMD_DESCRIPTOR 結構。
Parameters.DeviceCommand.Argument
包含命令隨附的 4 個字節自變數資訊。
Parameters.DeviceCommand.Mdl
保存命令數據的 MDL 指標。
Parameters.DeviceCommand.Length
指出回應數據的長度,以位元組為單位。
Parameters.EraseCommand
EraseCommand 可讓 MMC 裝置以不可部分完成的順序將 Erase 命令傳送至指定的裝置,因為三個裝置命令必須傳送至清除指定的 LBA 範圍或群組。
Parameters.EraseCommand.EraseType
定義 SDBUS_ERASE_TYPE 成員 EraseType。
Parameters.EraseCommand.StartBlock
定義 ULONG 成員 StartBlock。
Parameters.EraseCommand.EndBlock
定義 ULONG 成員 EndBlock。
Parameters.MmcSoftReset
MmcSoftReset 可讓 eMMC 裝置成為 SanDisk 專屬韌體更新的軟重設,以將裝置重設為其製造狀態。
Parameters.MmcSoftReset.Frequency
定義 ULONG 成員 頻率。
Parameters.MmcHpi
MmcHpi 允許將 HPI 傳送至 eMMC 裝置,這會導致 sdbus 停止目前執行中的 SDRP 與 STATUS_SDBUS_IO_INTERRUPTED。 已停止 SDRP 的資訊欄位將會填入已停止作業的進度,因此稍後可能會在正確的位移中繼續。
Parameters.MmcHpi.IrpToHpi
這是 HPI 的 IRP。 SDBUS 會檢查這一點,以確保其會進入 HPI 正確的 IRP。
備註
如果要求讀取或設定 SD 裝置上的屬性,裝置驅動程式必須完成下列步驟:
將 SDBUS_REQUEST_PACKET的 RequestFunction 成員設定為 SDRF_GET_PROPERTY 或 SDRF_SET_PROPERTY 的SD_REQUEST_FUNCTION列舉值。
將 SDBUS_REQUEST_PACKET 的 Property 成員設定為SDBUS_PROPERTY列舉值,指定要讀取或變更的屬性。
將初始化 的 SDBUS_REQUEST_PACKET 結構傳遞至 SdBusSubmitRequest 或 SdBusSubmitRequestAsync,將要求傳送至總線驅動程式。
如果要求將命令傳送至 SD 裝置,裝置驅動程式必須完成下列步驟:
將 SDBUS_REQUEST_PACKET的 RequestFunction 成員設定為 SDRF_DEVICE_COMMAND 的SD_REQUEST_FUNCTION列舉值。
初始化 SDBUS_REQUEST_PACKET 的 CmdDesc 成員,以定義命令。
將初始化 的 SDBUS_REQUEST_PACKET 結構傳遞至 SdBusSubmitRequest 或 SdBusSubmitRequestAsync,將要求傳送至總線驅動程式。
若要執行屬性作業,驅動程式必須先初始化 getSetProperty.Property、GetSetProperty.Buffer 和 SDBUS_REQUEST_PACKET 結構的 GetSetProperty.Length 成員,再提交要求。
若要傳送命令,驅動程式必須先初始化 deviceCommand.CmdDesc、DeviceCommand.Argument、DeviceCommand.Mdl 和 SDBUS_REQUEST_PACKET 結構的 DeviceCommand.Length 成員,再提交要求。
規格需求
需求 | 值 |
---|---|
標頭 | ntddsd.h (包含 Ntddsd.h) |