共用方式為


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

定義 Type3 Type3SDRESP_TYPE3 成員。

ResponseLength

指出回應數據的長度,以位元組為單位。

Reserved

保留,設定為 0。

Flags

SDRP 的旗標欄位。

Parameters

個別函式的參數。

Parameters.GetSetProperty

屬性函式可讓呼叫端控制總線驅動程式作業的各個層面。

Parameters.GetSetProperty.Property

包含型別為 SDBUS_PROPERTY 的列舉值,指定要讀取或變更的屬性。

Parameters.GetSetProperty.Buffer

包含屬性數據,以在設定屬性的作業中寫入。 包含從作業中從 屬性讀取的數據,這些數據會擷取與屬性相關聯的數據。

Parameters.GetSetProperty.Length

指出回應數據的長度,以位元組為單位。

Parameters.DeviceCommand

DeviceCommand 是允許執行 SD 裝置程式代碼和自變數的「管道」。 這些程式代碼定義於 Secure Digital (SD) 規格中、可以依據每個裝置類別,也可以是專屬的。

Parameters.DeviceCommand.CmdDesc

包含類型為 SDCMD_DESCRIPTOR 的結構,可定義 SD 記憶卡命令。

Parameters.DeviceCommand.Argument

包含命令隨附的 4 個字節自變數資訊。

Parameters.DeviceCommand.Mdl

保存命令數據的 MDL 指標。

Parameters.DeviceCommand.Length

指出回應數據的長度,以位元組為單位。

Parameters.EraseCommand

EraseCommand 可讓 MMC 裝置以不可部分完成的順序將 Erase 命令傳送至指定的裝置,因為必須傳送三個裝置命令以清除指定的 LBA 範圍或群組。

Parameters.EraseCommand.EraseType

定義 EraseType SDBUS_ERASE_TYPE 成員。

Parameters.EraseCommand.StartBlock

定義 ULONG 成員 StartBlock

Parameters.EraseCommand.EndBlock

定義 ULONG 成員 EndBlock

Parameters.MmcSoftReset

MmcSoftReset 可讓 eMMC 裝置對 SanDisk 專屬韌體更新進行軟式重設,以將裝置重設為其製造狀態。

Parameters.MmcSoftReset.Frequency

定義 ULONG 成員 Frequency

Parameters.MmcHpi

MmcHpi 可讓 HPI 傳送至 eMMC 裝置,這會導致 sdbus 停止目前執行中的 SDRP 與 STATUS_SDBUS_IO_INTERRUPTED。 已停止 SDRP 的資訊欄位會填入已停止作業的進度,因此稍後可能會在正確的位移繼續。

Parameters.MmcHpi.IrpToHpi

這是 HPI 的 IRP。 SDBUS 會檢查此專案,以確保其會以正確的 IRP 進行 HPI。

言論

如果要求讀取或設定 SD 裝置上的屬性,裝置驅動程式必須完成下列步驟:

  1. SDBUS_REQUEST_PACKETRequestFunction 成員設定為 SDRF_GET_PROPERTY 或 SDRF_SET_PROPERTY 的 SD_REQUEST_FUNCTION 列舉值。

  2. SDBUS_REQUEST_PACKETProperty 成員設定為指定要讀取或變更之屬性的 SDBUS_PROPERTY 列舉值。

  3. 將初始化 SDBUS_REQUEST_PACKET 結構傳遞至 SdBusSubmitRequestSdBusSubmitRequestAsync,將要求傳送至總線驅動程式。

如果要求將命令傳送至 SD 裝置,裝置驅動程式必須完成下列步驟:

  1. SDBUS_REQUEST_PACKETRequestFunction 成員設定為 SDRF_DEVICE_COMMAND 的 SD_REQUEST_FUNCTION 列舉值。

  2. 初始化 CmdDescSDBUS_REQUEST_PACKET 的成員來定義命令。

  3. 將初始化 SDBUS_REQUEST_PACKET 結構傳遞至 SdBusSubmitRequestSdBusSubmitRequestAsync,將要求傳送至總線驅動程式。

若要執行屬性作業,驅動程式必須先初始化 GetSetProperty.PropertyGetSetProperty.Buffer,以及 GetSetProperty.LengthSDBUS_REQUEST_PACKET 結構的成員,再提交要求。

若要傳送命令,驅動程式必須先初始化 DeviceCommand.CmdDescDeviceCommand.ArgumentDeviceCommand.Mdl,以及 DeviceCommand.LengthSDBUS_REQUEST_PACKET 結構的成員,再提交要求。

要求

要求 價值
標頭 ntddsd.h (包括 Ntddsd.h)

另請參閱

SD_REQUEST_FUNCTION

SDBUS_PROPERTY

SdBusSubmitRequest

SdBusSubmitRequestAsync

SDCMD_DESCRIPTOR