IEnumWbemClassObject インターフェイス (wbemcli.h)

IEnumWbemClassObject インターフェイスは、共通情報モデル (CIM) オブジェクトを列挙するために使用され、標準の COM 列挙子に似ています。

IEnumWbemClassObject 型のオブジェクトは、次のメソッドの呼び出しから受信されます。

CIM オブジェクトは、Next メソッドを呼び出すことによって、列挙型から IWbemClassObject 型のオブジェクトとして取得されます。 Reset メソッドを呼び出すことで、列挙体を先頭に すことができます。

継承

IEnumWbemClassObject インターフェイスは、IUnknown インターフェイスから継承されます。 IEnumWbemClassObject には、次の種類のメンバーもあります。

メソッド

IEnumWbemClassObject インターフェイスには、これらのメソッドがあります。

 
IEnumWbemClassObject::Clone

IEnumWbemClassObject::Clone メソッドは列挙子全体の論理コピーを作成し、列挙体の現在位置を保持します。
IEnumWbemClassObject::Next

列挙体の現在の位置から 1 つ以上のオブジェクトを取得するには、IEnumWbemClassObject::Next メソッドを使用します。
IEnumWbemClassObject::NextAsync

シンクへのオブジェクトの制御された非同期取得が必要な場合は、NextAsync メソッドを使用します。
IEnumWbemClassObject::Reset

IEnumWbemClassObject::Reset メソッドは列挙シーケンスを先頭にリセットします。 CIM オブジェクトは動的であるため、このメソッドを呼び出すと、前に取得したオブジェクトの同じリストが必ずしも返されるとは限りません。
IEnumWbemClassObject::Skip

IEnumWbemClassObject::Skip メソッドを使用すると、列挙体の現在位置を指定した数のオブジェクトの前に移動できます。 また、これは NextAsync への後続の呼び出しに影響しますが、NextAsync で開始された保留中の配信には影響しません。

解説

IEnumWbemClassObject は WMI クエリから返されるオブジェクトであり、返された値を列挙するために使用されます。 このクラスの使用方法の詳細については、「 WMI のクエリ 」および「WMI の列挙」を参照してください。

次の C++ コード サンプルでは、 IEnumWbemClassObject を取得する方法について説明します。

void ExecQuerySync(IWbemServices *pSvc)
{
    // Query for all users and groups.

    BSTR Language = SysAllocString(L"WQL");
    BSTR Query = SysAllocString(L"SELECT * FROM __Namespace");

    // Initialize the IEnumWbemClassObject pointer.
    IEnumWbemClassObject *pEnum = 0;

    // Issue the query.
    HRESULT hRes = pSvc->ExecQuery(
        Language,
        Query,
        WBEM_FLAG_FORWARD_ONLY,         // Flags
        0,                              // Context
        &pEnum
        );

    SysFreeString(Query);
    SysFreeString(Language);

    if (hRes != 0)
    {
        printf("Error\n");
        return;
    }
    
    ULONG uTotal = 0;

    // Retrieve the objects in the result set.
    for (;;)
    {
        IWbemClassObject *pObj = 0;
        ULONG uReturned = 0;

        hRes = pEnum->Next(
            0,                  // Time out
            1,                  // One object
            &pObj,
            &uReturned
            );

        uTotal += uReturned;

        if (uReturned == 0)
            break;

        // Use the object.
        
        // ...
        
        // Release it.
        // ===========
        
        pObj->Release();    // Release objects not owned.            
    }

    // All done.
    pEnum->Release();
}

要件

   
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
対象プラットフォーム Windows
ヘッダー wbemcli.h (Wbemidl.h を含む)

関連項目

WMI 用 COM API

WMI の列挙