PSCSIWMI_QUERY_DATABLOCK コールバック関数 (scsiwmi.h)
ミニポート ドライバーの HwScsiWmiQueryDataBlock ルーチンは、単一のインスタンスまたはデータ ブロックのすべてのインスタンスを取得するために呼び出されます。 このルーチンは必須です。
構文
PSCSIWMI_QUERY_DATABLOCK PscsiwmiQueryDatablock;
BOOLEAN PscsiwmiQueryDatablock(
[in] PVOID Context,
[in] PSCSIWMI_REQUEST_CONTEXT DispatchContext,
[in] ULONG GuidIndex,
[in] ULONG InstanceIndex,
[in] ULONG InstanceCount,
[in, out] PULONG InstanceLengthArray,
[in] ULONG BufferAvail,
[out] PUCHAR Buffer
)
{...}
パラメーター
[in] Context
ScsiPortWmiDispatchFunction に渡されるミニポート ドライバーで定義されたコンテキスト値を指します。
[in] DispatchContext
ミニポート ドライバーが ScsiPortWmiDispatchFunction に渡したSCSIWMI_REQUEST_CONTEXT構造体を指します。
[in] GuidIndex
ミニポート ドライバーが ScsiPortWmiDispatchFunction に渡したSCSI_WMILIB_CONTEXT構造内の GUID の一覧へのインデックスによってデータ ブロックを指定します。
[in] InstanceIndex
IRP_MN_QUERY_SINGLE_INSTANCE要求に応答して HwScsiWmiQueryDataBlock が呼び出された場合、 InstanceIndex はクエリを実行するインスタンスを指定します。 IRP_MN_QUERY_ALL_DATA REQUEST に応答して HwScsiWmiQueryDataBlock が呼び出された場合、 InstanceIndex は 0 になります。
[in] InstanceCount
IRP_MN_QUERY_SINGLE_INSTANCE要求に応答して HwScsiWmiQueryDataBlock が呼び出された場合、 InstanceCount は 1 になります。 IRP_MN_QUERY_ALL_DATA REQUEST に応答して HwScsiWmiQueryDataBlock が呼び出された場合、 InstanceCount は返されるインスタンスの数です。
[in, out] InstanceLengthArray
返されるデータ ブロックの各インスタンスの長さを示す ULONG の配列を指します。 この配列には InstanceCount 要素があります。 要求を満たすのに十分な領域が出力バッファーにない場合、この値は NULL になる可能性があります。
[in] BufferAvail
バッファーでバッファー内のデータを受信するために使用できる最大バイト数を指定 します。
[out] Buffer
インスタンス データを受信するバッファーを指します。 バッファーがすべてのデータを受信するのに十分な大きさの場合、ミニポート ドライバーは、各インスタンスが 8 バイト境界に配置された状態でインスタンス データをバッファーに書き込みます。 バッファーが小さすぎてすべてのデータを受信しない場合、ミニポート ドライバーは、SRB_STATUS_DATA_OVERRUNの状態で ScsiPortWmiPostProcess を 呼び出し、 BufferUsed を要求を満たすために必要な出力バッファーのサイズに設定します。
戻り値
HwScsiWmiQueryDataBlock は、要求が保留中の場合はSRB_STATUS_PENDING、要求が完了した場合は 0 以外の SRB 状態値を返します。 このルーチンによって返される SRB 状態値は、 ScsiPortWmiPostProcess に渡されたものと同じです。 戻り値のデータ型は BOOLEAN ですが、 HwScsiWmiQueryDataBlock ルーチンは実際には SRB 状態値を返します。
注釈
ミニポート ドライバーは、Function メンバーがSRB_FUNCTION_WMIに設定されている SRB を受信すると、初期化されたSCSI_WMILIB_CONTEXT構造体へのポインターを使用して ScsiPortWmiDispatchFunction を呼び出し、MinorFunction を Srb-WmiSubFunction> に設定します。 MinorFunction がデータ ブロックの単一インスタンスまたはすべてのインスタンスを取得する要求を示している場合、SCSI ポート ドライバーはミニポート ドライバーの HwScsiWmiQueryDataBlock ルーチンを呼び出します。
ミニポート ドライバーは、バッファーにインスタンス データを書き込みます。 ペンされていない要求の場合、ミニポート ドライバーは、HwScsiWmiQueryDataBlock から返される前に、適切な SrbStatus 値を使用して ScsiPortWmiPostProcess を呼び出します。 要求が処理された場合、ミニポート ドライバーは要求が完了したときに ScsiPortWmiPostProcess を呼び出します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | scsiwmi.h (Scsiwmi.h を含む) |