次の方法で共有


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 デバイス コードと引数を実行できる "パイプ" です。 これらのコードは、 Secure Digital (SD) 仕様で定義されているか、デバイス クラスごとにベースにすることも、独自のコードにすることもできます。

Parameters.DeviceCommand.CmdDesc

SD カード コマンドを定義する SDCMD_DESCRIPTOR 型の構造体を格納します。

Parameters.DeviceCommand.Argument

コマンドに付随する 4 バイトの引数情報が含まれます。

Parameters.DeviceCommand.Mdl

コマンド データを保持する MDL へのポインター。

Parameters.DeviceCommand.Length

応答データの長さをバイト単位で示します。

Parameters.EraseCommand

EraseCommand を使用すると、MMC デバイスは、特定の LBA 範囲またはグループを消去するために 3 つのデバイス コマンドを送信する必要がある場合に、特定のデバイスにアトミック シーケンスで Erase コマンドを送信できます。

Parameters.EraseCommand.EraseType

SDBUS_ERASE_TYPE メンバー EraseType を定義します。

Parameters.EraseCommand.StartBlock

ULONG メンバーの StartBlock を定義します

Parameters.EraseCommand.EndBlock

ULONG メンバー EndBlock を定義します。

Parameters.MmcSoftReset

MmcSoftReset を使用すると、デバイスを製造状態にリセットする SanDisk 独自のファームウェア更新プログラムに対して、eMMC デバイスをソフト リセットできます。

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 構造体を SdBusSubmitRequest または SdBusSubmitRequestAsync に渡して、バス ドライバーに要求 送信します。

要求が SD デバイスにコマンドを送信する場合、デバイス ドライバーは次の手順を完了する必要があります。

  1. SDBUS_REQUEST_PACKETRequestFunction メンバーを、SDRF_DEVICE_COMMANDのSD_REQUEST_FUNCTION列挙値に設定します。

  2. コマンドを定義するには、SDBUS_REQUEST_PACKETCmdDesc メンバーを初期化します。

  3. 初期化された SDBUS_REQUEST_PACKET 構造体を SdBusSubmitRequest または SdBusSubmitRequestAsync に渡して、バス ドライバーに要求 送信します。

プロパティ操作を実行するには、ドライバーが要求を送信する前に、SDBUS_REQUEST_PACKET構造体の GetSetProperty.PropertyGetSetProperty.Bufferおよび GetSetProperty.Length メンバーを初期化する必要があります。

コマンドを送信するには、ドライバーが要求を送信する前に、SDBUS_REQUEST_PACKET構造体の DeviceCommand.CmdDescDeviceCommand.ArgumentDeviceCommand.Mdlおよび DeviceCommand.Length メンバーを初期化する必要があります。

要件

要件
Header ntddsd.h (Ntddsd.h を含む)

こちらもご覧ください

SD_REQUEST_FUNCTION

SDBUS_PROPERTY

SdBusSubmitRequest

SdBusSubmitRequestAsync

SDCMD_DESCRIPTOR