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 에 대한 포인터입니다. 이 숫자는 uCount에서 요청된 수보다 작을 수 있습니다. 이 포인터는 NULL일 수 없습니다.

참고Next 메서드는 개체가 성공적으로 반환된 경우에도 열거형의 끝에 도달하면 WBEM_S_FALSE 반환합니다. WBEM_S_NO_ERROR 값은 반환되는 개체 수가 uCount에서 요청된 수와 일치하는 경우에만 반환됩니다. 반환된 개체 수가 요청된 수보다 작지만 열거형의 끝에 있지 않으면 WBEM_S_TIMEDOUT 값이 반환됩니다. 따라서 puReturned 값을 검사하는 루프 종료 논리를 사용하여 열거형의 끝에 도달했는지 확인해야 합니다.
 

반환 값

Next 메서드는 메서드 호출의 상태 나타내는 HRESULT를 반환합니다. 다음 목록에는 HRESULT 내에 포함된 값이 나열되어 있습니다.

설명

네트워크 문제로 인해 Windows Management에 대한 원격 연결이 끊어지는 경우 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