IoWMIQuerySingleInstanceMultiple 関数 (wdm.h)

IoWMIQuerySingleInstanceMultiple ルーチンは、指定したインスタンス名を持つ指定された WMI クラスを実装するすべての WMI データ ブロック インスタンスを返します。

構文

NTSTATUS IoWMIQuerySingleInstanceMultiple(
  [in]            PVOID           *DataBlockObjectList,
  [in]            PUNICODE_STRING InstanceNames,
  [in]            ULONG           ObjectCount,
  [in, out]       PULONG          InOutBufferSize,
  [out, optional] PVOID           OutBuffer
);

パラメーター

[in] DataBlockObjectList

WMI データ ブロック オブジェクトのポインターの配列へのポインター。 呼び出し元は、 IoWMIOpenBlock ルーチンを使用して WMI クラスごとにデータ ブロック オブジェクトを開きます。 各オブジェクトは、WMIGUID_QUERYアクセス権を使用して開く必要があります。

[in] InstanceNames

インスタンス名を含む UNICODE_STRING 構造体の配列へのポインター。 配列内の n番目のインスタンス名は、DataBlockObjectList パラメーターによって指される配列で指定された n番目の WMI クラスの InstanceName プロパティの値に対応します。

[in] ObjectCount

DataBlockObjectList パラメーターと InstanceNames パラメーターで渡される配列内のエントリの数を指定します。

[in, out] InOutBufferSize

OutBuffer パラメーターで渡されるバッファーのサイズを指定するメモリ位置へのポインター。 ルーチンが成功した場合は、メモリの場所を更新して、 OutBuffer に実際に格納されているバイト数を指定します。 ルーチンが STATUS_BUFFER_TOO_SMALL で失敗した場合、データを返すために必要なバイト数が返されます。

[out, optional] OutBuffer

ルーチンが WMI データを返すバッファーへのポインター。 ルーチンは、データ ブロック インスタンスごとに 1 つずつ、可変サイズの WNODE_SINGLE_INSTANCE 構造体のシーケンスを返します。 各WNODE_SINGLE_INSTANCE構造体の WnodeHeader.Linkage メンバーには、現在のWNODE_SINGLE_INSTANCEの先頭から次のWNODE_SINGLE_INSTANCEの先頭までのオフセットが含まれます。 チェーンの最後のブロックには 、WnodeHeader.Linkage が 0 に設定されています。 各個別のデータ ブロック インスタンスは、一致する 1 つの WMI クラスとインスタンス名に対応します。 OutBuffer は 、非ページ プールから割り当てられたバッファーを指す必要があります。

戻り値

ルーチンは NTSTATUS コードを返します。 可能な戻り値は次のとおりです。

リターン コード 説明
STATUS_SUCCESS
操作が成功しました。 ルーチンは、 OutBuffer パラメーターによって指されるバッファー内の WMI データを返します。 また、このルーチンは、 InOutBufferSize パラメーターが指すメモリ位置で返されたデータのサイズ (バイト単位) も返します。
STATUS_BUFFER_TOO_SMALL
OutBuffer パラメーターで呼び出し元によって渡されるバッファーが小さすぎます。 ルーチンは、 InOutBufferSize パラメーターが指すメモリ位置に必要なバッファー サイズを返します。

注釈

IoWMIQuerySingleInstanceMultiple は、指定された WMI クラスとインスタンス名をサポートする可能性のあるドライバーを決定し、そのような各ドライバーに IRP_MN_QUERY_SINGLE_INSTANCE 要求を発行します。 InstanceName プロパティが一致するデータ ブロック インスタンスをエクスポートする各ドライバーは、適切なデータを返します。

ドライバーが指定された WMI クラスとインスタンス名のいずれかを実装していない場合、ルーチンはSTATUS_SUCCESSを返します。 また、 InOutBufferSize パラメーターが指すメモリ位置に 0 の値を返します。

単一の WMI クラスとインスタンス名を照会するには、 IoWMIQuerySingleInstance ルーチンを 使用します。 ドライバーは、 IoWMISetSingleInstance ルーチンを 使用してクラス インスタンスを更新できます。

要件

要件
サポートされている最小のクライアント Windows XP 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

IRP_MN_QUERY_SINGLE_INSTANCE

IoWMIOpenBlock

IoWMIQuerySingleInstance

IoWMISetSingleInstance

UNICODE_STRING