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 デバイスのプロパティを読み取るか設定する場合、デバイス ドライバーは次の手順を完了する必要があります。
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 に渡して、バス ドライバーに要求 を送信します。
プロパティ操作を実行するには、ドライバーが要求を送信する前に、SDBUS_REQUEST_PACKET構造体の GetSetProperty.Property、GetSetProperty.Buffer、および GetSetProperty.Length メンバーを初期化する必要があります。
コマンドを送信するには、ドライバーが要求を送信する前に、SDBUS_REQUEST_PACKET構造体の DeviceCommand.CmdDesc、DeviceCommand.Argument、DeviceCommand.Mdl、および DeviceCommand.Length メンバーを初期化する必要があります。
要件
要件 | 値 |
---|---|
Header | ntddsd.h (Ntddsd.h を含む) |