共用方式為


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 裝置上的屬性,裝置驅動程式必須完成下列步驟:

  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. 初始化 SDBUS_REQUEST_PACKETCmdDesc 成員,以定義命令。

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

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

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

規格需求

需求
標頭 ntddsd.h (包含 Ntddsd.h)

另請參閱

SD_REQUEST_FUNCTION

SDBUS_PROPERTY

SdBusSubmitRequest

SdBusSubmitRequestAsync

SDCMD_DESCRIPTOR