次の方法で共有


ScsiPortWmiSetInstanceCount 関数 (scsiwmi.h)

ScsiPortWmiSetInstanceCount は、要求コンテキストのWNODE_ALL_DATA構造体内でデータ バッファーを確保する必要があるインスタンスの数を指定します。

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

構文

BOOLEAN ScsiPortWmiSetInstanceCount(
  [in]  PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in]  ULONG                    InstanceCount,
  [out] PULONG                   BufferAvail,
  [out] PULONG                   SizeNeeded
);

パラメーター

[in] RequestContext

WMI SRB の要求コンテキスト 含むSCSIWMI_REQUEST_CONTEXT型の構造体へのポインター。

[in] InstanceCount

ミニドライバーがデータを提供するインスタンスの数を格納します。

[out] BufferAvail

インスタンス名とデータを記述するために使用できるバッファー領域のバイト数が返された場合に含まれます。 このメンバーで返される値は、これらのルーチンの BufferAvail パラメーター内のルーチン ScsiPortWmiSetData および ScsiPortWmiSetInstanceName に渡すことができます。

ScsiPortWmiSetInstanceCount ルーチンは、各インスタンスに対して 1 つの配列要素を使用して、データ バッファーへのポインターの配列を初期化します。 サイズ InstanceCount の配列を初期化するために WNODE で使用できるメモリが不足している場合は、このメンバーに 0 が返されます。

[out] SizeNeeded

入力時に、WNODE 内の内部配列を構成する に WNODE 全体を記述するために必要なバイト数を示します。 返されると、このメンバーには、WNODE 内の新しく初期化された配列を含む WNODE 全体のサイズが含まれます。

戻り値

ScsiPortWmiSetInstanceCount ルーチンは、操作が成功した場合は TRUE を返し、要求コンテキストに含まれる WNODE の型がWNODE_ALL_DATAでない場合は FALSE を返します。

注釈

ミニドライバーは、ScsiPortWmiSetData または ScsiPortWmiSetInstanceName を呼び出す前に ScsiPortWmiSetInstanceCount を呼び出す必要があります。 ミニドライバーは ScsiPortWmiSetInstanceCount を 1 回だけ呼び出す必要があります。

パラメーター RequestContext は、Windows Management Instrumentation (WMI) SCSI 要求ブロック (SRB) に関連付けられた情報を含む要求コンテキスト構造 (SCSIWMI_REQUEST_CONTEXT) を指します。 要求コンテキスト構造には、ユーザー モードのデータ コンシューマーとドライバーなどのカーネル モード データ プロバイダーの間でデータを渡すために WMI システムによって使用される WMI WNODE_XXX構造体 のいずれかが含まれます。

ScsiPortWmiSetInstanceCount ルーチンでは、要求コンテキスト内で定義されている WNODE 構造体が型WNODE_ALL_DATAである必要があります。 これは、 ScsiPortWmiSetInstanceCount が、WMI データ ブロックに関連付けられている複数のインスタンスの情報を保持するデータ領域を確保するためです。 1 つのインスタンスに関する情報を含む WNODE_SINGLE_INSTANCE 構造体とは異なり、WNODE_ALL_DATA 構造体にはさまざまなインスタンスのバッファー領域へのポインターの配列が含まれており、 ScsiPortWmiSetInstanceCount はこの配列を初期化して、インスタンス インデックスを使用してインスタンス データの各バッファーに個別にアクセスできるようにします。

要求コンテキストに割り当てられたメモリは、ミニポート ドライバーが ScsiPortWmiPostProcess を呼び出し、 ScsiPortWmiPostProcess が最終的な SRB 状態とバッファー サイズを返すまで有効なままである必要があります。 SRB をペンドできる場合は、要求コンテキストのメモリを SRB 拡張機能から割り当てる必要があります。 SRB がペンドできない場合は、スコープ外に出ないスタック フレームからメモリを割り当てることができます。

要件

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

こちらもご覧ください

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE