PSCSIWMI_FUNCTION_CONTROL コールバック関数 (scsiwmi.h)
ミニポート ドライバーの HwScsiWmiFunctionControl ルーチンは、イベントの通知を有効または無効にするために呼び出されます。 また、ミニポート ドライバーが収集にコストがかかると指定されたデータ ブロックのデータ収集を有効または無効にするために呼び出されます。 このルーチンは省略可能です。
構文
PSCSIWMI_FUNCTION_CONTROL PscsiwmiFunctionControl;
BOOLEAN PscsiwmiFunctionControl(
[in] PVOID DeviceContext,
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] ULONG GuidIndex,
[in] SCSIWMI_ENABLE_DISABLE_CONTROL Function,
[in] BOOLEAN Enable
)
{...}
パラメーター
[in] DeviceContext
ScsiPortWmiDispatchFunction に渡されるミニポート ドライバーで定義されたコンテキスト値を指します。
[in] RequestContext
ミニポート ドライバーが ScsiPortWmiDispatchFunction に渡したSCSIWMI_REQUEST_CONTEXT型の列挙子値を含む値を指します。
[in] GuidIndex
ミニポート ドライバーが ScsiPortWmiDispatchFunction に渡したSCSI_WMILIB_CONTEXT構造内の GUID の一覧にそのインデックスでブロックを指定します。
[in] Function
イベントを有効または無効にする ScsiWmiEventControl 、または ScsiWmiDataBlockControl を指定して、収集コストの高いブロック (つまり、ミニポート ドライバーがブロックの登録に使用される SCSIWMIGUIDREGINFO 構造体の フラグ でWMIREG_FLAG_EXPENSIVEを設定するブロック) のデータ収集を有効または無効にします。
[in] Enable
イベントまたはデータ収集を有効にする 場合は TRUE 、無効にするには FALSE を指定します 。
戻り値
HwScsiWmiFunctionControl は、要求が保留中の場合はSRB_STATUS_PENDINGを返し、要求が完了した場合は 0 以外の SRB 状態値を返します。 このルーチンによって返される SRB 状態値は、 ScsiPortWmiPostProcess に渡されたものと同じです。 戻り値のデータ型は BOOLEAN ですが、 HwScsiWmiFunctionControl ルーチンは実際には SRB 状態値を返します。
注釈
ミニポート ドライバーは、Function メンバーがSRB_FUNCTION_WMIに設定されている SRB を受信すると、初期化されたSCSI_WMILIB_CONTEXT構造体へのポインターを使用して ScsiPortWmiDispatchFunction を呼び出し、MinorFunction を Srb-WmiSubFunction> に設定します。 Scsi ポート ドライバーは、ミニポート ドライバーの HwScsiWmiFunctionControl ルーチンを呼び出します 。MinorFunction がイベントを有効または無効にする要求を示す場合、またはミニポート ドライバーが収集にコストがかかるとして登録されているデータ ブロックの収集を有効または無効にする要求を示している場合です。
ミニポート ドライバーが HwScsiWmiFunctionControl ルーチンを実装していない場合は、ミニポート ドライバーが ScsiPortWmiDispatchFunction に渡すSCSI_WMILIB_CONTEXTで WmiFunctionControl を NULL に設定する必要があります。 ポート ドライバーは、呼び出し元にSRB_STATUS_SUCCESSを返します。
ミニポート ドライバーがブロックに対してイベントまたはデータ収集が既に有効になっているかどうかをチェックする必要があります。これは、ポート ドライバーは、最初のデータ コンシューマーがブロックを有効にしたときに 1 つの有効化要求を送信し、最後のデータ コンシューマーがブロックを無効にしたときに 1 つの無効化要求を送信するためです。 ポート ドライバーは HwScsiWmiFunctionControl を複数回呼び出してブロックを無効にする間の呼び出しなしでブロックを有効にしません。
HwScsiWmiFunctionControl コールバックで SRB が完了した場合、ミニポート ドライバーは、適切な SrbStatus を使用して ScsiPortWmiPostProcess を呼び出します。 ミニポート ドライバーがこの SRB をペンドする場合は、SRB が完了したときに、SRB を完了する前に ScsiPortWmiPostProcess を呼び出す必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | scsiwmi.h (Scsiwmi.h を含む) |