ScsiPortWmiDispatchFunction 関数 (scsiwmi.h)
ScsiPortWmiDispatchFunction ルーチンは、WMI をサポートするミニポート ドライバーのディスパッチ ルーチンです。
構文
BOOLEAN ScsiPortWmiDispatchFunction(
[in] PSCSI_WMILIB_CONTEXT WmiLibInfo,
[in] UCHAR MinorFunction,
[in] PVOID DeviceContext,
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] PVOID DataPath,
[in] ULONG BufferSize,
[in] PVOID Buffer
);
パラメーター
[in] WmiLibInfo
ミニポート ドライバー の データ ブロックとイベント ブロックの登録情報を含み、ミニポート ドライバーの WMI ライブラリ コールバック ルーチンのエントリ ポイントを定義するSCSI_WMILIB_CONTEXT構造体へのポインター。
[in] MinorFunction
実行する WMI アクションを示します。 ミニポート ドライバーは、入力 SRB から Srb-WmiSubFunction> に MinorFunction を設定します。
[in] DeviceContext
ミニポート ドライバーで定義されたコンテキスト値へのポインター。 ポート ドライバーは、ミニポート ドライバーの HwScsiWmiXxx コールバック ルーチンに DeviceContext を渡します。 この値は通常、HW_DEVICE_EXTENSION構造体を指します。
[in] RequestContext
WMI SRB のコンテキスト情報を含むSCSIWMI_REQUEST_CONTEXT構造体へのポインター。 SRB にペンを設定できる場合、要求コンテキストは ScsiPortWmiPostProcess が最終的な SRB の戻り状態とバッファー サイズを返すまで有効なままにする必要があるため、ミニポート ドライバーは SRB 拡張機能からこの構造体を割り当てる必要があります。 ScsiPortWmiDispatchFunction は、この要求を処理するミニポート ドライバーのコールバック ルーチンに RequestContext を渡します。
[in] DataPath
要求に関連付けられているデータ ブロックを表す GUID へのポインター。 ミニポート ドライバーは、 入力 SRB から Srb-DataPath> に DataPath を設定します。
[in] BufferSize
データ バッファーのサイズをバイト単位で指定します。 ミニポート ドライバーは、入力 SRB から Srb-DataTransferLength> に BufferSize を設定します。
[in] Buffer
データ バッファーへのポインター。 ミニポート ドライバーは、入力 SRB から Srb-DataBuffer> にバッファーを設定します。
戻り値
ScsiPortWmiDispatchFunction は、要求が保留中の場合は TRUE 、要求が完了した場合は FALSE を 返します。
注釈
ミニポート ドライバーは、 関数 メンバーがSRB_FUNCTION_WMIに設定されている SRB を受信すると、初期化されたSCSI_WMILIB_CONTEXT構造体へのポインターを含む要求パラメーターを使用して ScsiPortWmiDispatchFunction を呼び出します。 この構造体には、ミニポート ドライバーのデータ ブロックとイベント ブロックに関する情報が含まれており、ミニポート ドライバーの HwScsiWmiXxx コールバック ルーチンのエントリ ポイントを定義します。
ScsiPortWmiDispatchFunction は、SRB が WMI 要求であることを確認し、要求で指定されたブロックがミニポート ドライバーに対して有効かどうかを判断します。 これらの条件が満たされた場合、 ScsiPortWmiDispatchFunction は、ミニポート ドライバーのSCSI_WMILIB_CONTEXT構造体の適切な HwScsiWmiXxx エントリ ポイントを呼び出すことによって SRB を処理します。 ミニポート ドライバーがオプションの HwScsiWmiXxx ルーチンのエントリ ポイントを定義していない場合、ポート ドライバーは要求を処理します。
どちらの場合も、 ScsiPortWmiDispatchFunction が返された後、ミニポート ドライバーは、ペンドされていない要求に対して次の操作を行う必要があります。
- Srb->DataTransferLength を ScsiPortWmiGetReturnSize によって返される値に設定します
- Srb->SrbStatus を ScsiPortWmiGetReturnStatus によって返される値に設定します
- RequestComplete を使用して ScsiPortNotification を呼び出し、NextRequest でもう一度呼び出す
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | scsiwmi.h (Miniport.h、Scsi.h を含む) |