ScsiPortWmiSetInstanceName 関数 (scsiwmi.h)
ScsiPortWmiSetInstanceName ルーチンは、インスタンス名の位置と長さを指定するために、要求コンテキスト内の WNODE_ALL_DATA 構造体を更新します。
構文
PWCHAR ScsiPortWmiSetInstanceName(
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] ULONG InstanceIndex,
[in] ULONG InstanceNameLength,
[out] PULONG BufferAvail,
[in, out] PULONG SizeNeeded
);
パラメーター
[in] RequestContext
WMI SRB の要求コンテキストを含む SCSIWMI_REQUEST_CONTEXT 型の構造体へのポインター。
[in] InstanceIndex
インスタンス名の位置と長さを指定するインスタンスを示すインデックスを格納します。
[in] InstanceNameLength
インスタンス名のサイズをバイト単位で指定します。
[out] BufferAvail
入力時に、インスタンス名とデータの記述に使用できる WNODE_ALL_DATA 構造体内のバッファー領域のバイト数を含める必要があります。 戻り値の場合、このメンバーには、残っているバッファー・スペースのバイト数が含まれます。
BufferAvail パラメーターで使用可能なバッファー サイズの値を返す 3 つの SCSI ポート WMI ルーチンがあります。
ScsiPortWmiSetInstanceCount を する
ScsiPortWmiSetInstanceName
ミニポート ドライバーは、最初 ScsiPortWmiSetInstanceCount を呼び出す必要がありますが、ScsiPortWmiSetInstanceCount 呼び出された後、ミニドライバーが ScsiPortWmiSetData と ScsiPortWmiSetInstanceName 呼び出す順序は関係ありません。 ScsiPortWmiSetData または ScsiPortWmiSetInstanceName を呼び出す場合、BufferAvail パラメーターでルーチンに渡される値は、最近呼び出された SCSI ポート WMI ルーチンによって BufferAvail パラメーターで返される値と同じである必要があります。 たとえば、ミニドライバーが最初 ScsiPortWmiSetInstanceCount 呼び出しを行い、このルーチンは BufferAvail パラメーターに 1,000 の値を返したとします。 次に、ミニドライバーは ScsiPortWmiSetData 呼び出し、BufferAvail パラメーターで 500 の値を返します。 最後に、ミニドライバー ScsiPortWmiSetInstanceName を呼び出します。これは、BufferAvail パラメーターで 200 の値を返します。 1,000 の初期値は、BufferAvail内の ScsiPortWmiSetData に渡す必要があり、値 500 ScsiPortWmiSetInstanceNameに渡す必要があります。
InstanceNameLength 長さのインスタンス名を追加するのに十分なメモリがない場合は、BufferAvail メンバーに 0 が返されます。
[in, out] SizeNeeded
入力時に、InstanceIndexで指定されたインスタンスの説明データを追加 前に WNODE を記述するために必要なバイト数を示します。 返されると、このメンバーには、新しいインスタンスのデータを含む WNODE 全体のサイズが含まれます。
戻り値
ScsiPortWmiSetInstanceCount ルーチンは、呼び出し元が InstanceIndex で指定されたインスタンスの名前格納できるバッファーへのポインターを返します。 ScsiPortWmiSetInstanceCount インスタンス名に十分なメモリを割り当てることができない場合、または要求コンテキストに含まれる WNODE の型が WNODE_ALL_DATAでない場合、ScsiPortWmiSetData は NULL 返します。
備考
ミニドライバーは、ScsiPortWmiSetInstanceName 呼び出す前に、ScsiPortWmiSetInstanceCount 呼び出す必要があります。
RequestContext パラメーターは、Windows Management Instrumentation (WMI) SCSI 要求ブロック (SRB) に関連付けられた情報を含む要求コンテキスト構造 (SCSIWMI_REQUEST_CONTEXT) を指します。 要求コンテキスト構造には、ユーザー モードのデータ コンシューマーとカーネル モード のデータ プロバイダー (ドライバーなど) の間でデータを渡すために WMI システムによって使用 WMI WNODE_XXX構造体のいずれかが含まれます。
ScsiPortWmiSetInstanceName ルーチン には、要求コンテキスト内で定義されている WNODE 構造体が WNODE_ALL_DATA型である必要があります。 これは、ScsiPortWmiSetInstanceName WMI データ ブロックに関連付けられているインスタンスのインスタンス名領域を確保できるためです。 1 つのインスタンスに関する情報を含む WNODE_SINGLE_INSTANCE 構造体とは異なり、WNODE_ALL_DATA構造体にはさまざまなインスタンスのバッファー領域へのポインターの配列が含まれ、ScsiPortWmiSetInstanceCount は、インスタンス データの各バッファーに個別にアクセスできるように、この配列を初期化。
要求コンテキストに割り当てられたメモリは、ミニポート ドライバーが ScsiPortWmiPostProcess を呼び出し、最終的な SRB 状態とバッファー サイズを返 ScsiPortWmiPostProcess するまで有効なままである必要があります。 SRB がペンドできる場合は、要求コンテキストのメモリを SRB 拡張機能から割り当てる必要があります。 SRB がペンできない場合は、スコープ外に出ないスタック フレームからメモリを割り当てることができます。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | scsiwmi.h (ミニポート h、Scsi.h を含む) |