次の方法で共有


ScsiPortWmiPostProcess 関数 (scsiwmi.h)

ScsiPortWmiPostProcess ルーチンは、WMI SRB の要求コンテキストを更新します。

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

構文

void ScsiPortWmiPostProcess(
  [in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in] UCHAR                    SrbStatus,
  [in] ULONG                    BufferUsed
);

パラメーター

[in] RequestContext

この SRB の要求コンテキストへのポインター。

[in] SrbStatus

有効な SRB 状態を指定します。 ミニポート ドライバーに渡される出力バッファーが小さすぎて要求からのすべてのデータを格納できなかった場合、ミニポート ドライバーは SrbStatus をSRB_STATUS_DATA_OVERRUNに設定します。

[in] BufferUsed

SrbStatus が成功を示す場合、ミニポート ドライバーは BufferUsed をバッファーに書き込まれたデータのバイト数に設定します。 SrbStatus がSRB_STATUS_DATA_OVERRUNされている場合、ミニポート ドライバーは、SRB を正常に完了するために必要なバイト数に BufferUsed を設定します。

戻り値

なし

解説

ミニポート ドライバーは、WMI SRB 要求が処理され、完了する準備ができた後に ScsiPortWmiPostProcess を呼び出す必要があります。

同期 SRB の場合、 ScsiPortWmiPostProcess はコールバック ルーチンで呼び出されます。

保留中の SRB の場合、SRB が処理された後、および SRB が完了する前に ScsiPortWmiPostProcess が呼び出されます。

ミニポート ドライバーが SrbStatus をSRB_STATUS_DATA_OVERRUNに設定し、 BufferUsed を設定する場合は、割り当てられたバッファーが BufferUsed バイト以上の同一の WMI SRB が成功します。 これは、SrbStatus が SRB_STATUS_DATA_OVERRUN と等しい ScsiPortWmiPostProcess を呼び出すときに要求を完了するために必要な BufferUsed の正確な値をドライバーが設定した場合に実現する必要があります。 可変サイズの出力構造体の場合、SRB の入力データ バッファーには、正確な BufferUsed 値を決定するのに十分な情報が必要です。 入力データ バッファーに十分な情報が含まれていない場合、ドライバーは同じ SRB を 2 回失敗SRB_STATUS_DATA_OVERRUN。 代わりに、ドライバーはSRB_STATUS_DATA_OVERRUN設定し、最初に出力バッファーに必要な最小サイズを要求してから、SRB_STATUS_SUCCESSを設定し、出力バッファーの内容のエラーを示す必要があります。

要件

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

こちらもご覧ください

SCSIWMI_REQUEST_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus