IEnumWbemClassObject::Next 方法 (wbemcli.h)

使用 IEnumWbemClassObject::Next 方法來取得從列舉中目前位置開始的一或多個物件。 此方法會將列舉中的目前位置前移 uCount 物件,以便後續呼叫傳回後續的物件。

語法

HRESULT Next(
  [in]  long             lTimeout,
  [in]  ULONG            uCount,
  [out] IWbemClassObject **apObjects,
  [out] ULONG            *puReturned
);

參數

[in] lTimeout

指定呼叫在傳回之前封鎖的最大時間量,以毫秒為單位。 如果您使用常數 WBEM_INFINITE (0xFFFFFFFF) ,則呼叫會封鎖直到物件可用為止。 如果您使用值 0 (WBEM_NO_WAIT) ,則呼叫會立即傳回,不論是否有任何物件可用。

[in] uCount

要求的物件數目。

[out] apObjects

足夠記憶體的指標,可保存 uCount 所指定的 IWbemClassObject 介面指標數目。 呼叫端必須提供此記憶體。 此參數不可為 NULL。 當不再需要時,呼叫端必須在每個收到的介面指標上呼叫 Release

[out] puReturned

ULONG 的指標,該 ULONG 會接收傳回的物件數目。 此數位可以小於 uCount 中所要求的數位。 此指標不可為 NULL

注意 當您到達列舉結尾時, Next 方法會 傳回WBEM_S_FALSE ,即使已成功傳回物件也一樣。 只有在傳回的物件數目符合 uCount 中要求的數目時,WBEM_S_NO_ERROR值才會傳回。 傳回的物件數目小於所要求的數目,但您不在列舉結尾時,會傳回 WBEM_S_TIMEDOUT 值。 因此,您應該使用迴圈終止邏輯來檢查 puReturned 值,以確保您已到達列舉的結尾。
 

傳回值

Next 方法會傳回 HRESULT,指出方法呼叫的狀態。 下列清單列出 HRESULT 中包含的值。

備註

如果網路問題造成您遺失與 Windows 管理的遠端連線,您可能會看到傳回 COM 特定的錯誤碼。 發生錯誤時,您可以呼叫 COM 函式 GetErrorInfo 以取得更多錯誤資訊。

如果要求多個物件,而且傳回要求的物件數目,函式會 傳回WBEM_S_NO_ERROR。 如果可用的物件數目小於所要求的物件數目,而且列舉已完成,則會傳回這些物件,而且函式會 傳回WBEM_S_FALSE

如果列舉尚未完成,則呼叫會等候物件可用到指定的逾時。如果列舉在物件可用之前逾時,函式會 傳回WBEM_S_TIMEDOUT

注意 由於對接收的回呼可能不會在用戶端所需的相同驗證層級傳回,因此建議您使用半同步而非異步通訊。 如需詳細資訊,請參閱 呼叫方法
 

範例

如需在 C++ 和 WMI 中進行查詢的擴充討論和範例,請參閱 在 CodeProject 上以 C++ 製作 WMI 查詢

在下列程式代碼中,要求多個物件:
HRESULT ProcessEnum( IEnumWbemClassObject*    pEnum )
{
    HRESULT    hRes = WBEM_S_NO_ERROR;

    // Final Next will return WBEM_S_FALSE
    while ( WBEM_S_NO_ERROR == hRes )
    {
        ULONG            uReturned;
        IWbemClassObject*    apObj[10];

        hRes = pEnum->Next( WBEM_INFINITE, 10, apObj, &uReturned );

        if ( SUCCEEDED( hRes ) )
        {
            // Do something with the objects.
            //ProcessObjects( uReturned,  apObj );

            for ( ULONG n = 0; n < uReturned; n++ )
            {
                apObj[n]->Release();
            }

        }    // If Enum succeeded...
    }    // While Enum is returning objects...

    return hRes;
}

規格需求

需求
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 wbemcli.h (包含 Wbemidl.h)
程式庫 Wbemuuid.lib
Dll Fastprox.dll

另請參閱

列舉 WMI

IEnumWbemClassObject