次の方法で共有


ScsiPortWmiDispatchFunction 関数 (scsiwmi.h)

ScsiPortWmiDispatchFunction ルーチンは、WMI をサポートするミニポート ドライバーのディスパッチ ルーチンです。

メモ SCSI ポート ドライバーと SCSI ミニポート ドライバー モデルは、今後変更または使用できない可能性があります。 代わりに、 Storport ドライバー モデルと Storport ミニポート ドライバー モデルを使用することをお勧めします。
 

構文

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->DataTransferLengthScsiPortWmiGetReturnSize によって返される値に設定します
  • Srb->SrbStatusScsiPortWmiGetReturnStatus によって返される値に設定します
  • RequestComplete を使用して ScsiPortNotification を呼び出し、NextRequest でもう一度呼び出す

要件

要件
対象プラットフォーム デスクトップ
Header scsiwmi.h (Miniport.h、Scsi.h を含む)

こちらもご覧ください

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortNotification

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus

ScsiPortWmiPostProcess