SOL9 2.0 Class: WbemClassObjectEnumerator

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * WbemClassObjectEnumerator.h 
 * Copyright (c) 2012 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


//2010/02/14
//
//2010/05/10 Modified getEnumerator() method

#pragma once

#include <sol/com/ComIUnknown.h>
#include <objbase.h>

#include <sol/COMTypeConverter.h>

#include <sol/Writer.h>
#include <sol/FileWriter.h>
#include <sol/ConsoleWriter.h>

#include <sol/LocalDateTime.h>
#include <sol/HTMLEncoder.h>

#pragma comment(lib, "oleaut32.lib")


namespace SOL {

class WbemClassObjectEnumerator :public ComIUnknown {

public:
    WbemClassObjectEnumerator(IUnknown* enumerator=NULL)
    :ComIUnknown(enumerator)
    {

    }

public:
    ~WbemClassObjectEnumerator () 
    {
    }

public:
    IEnumWbemClassObject* getEnumerator()
    {
        //2010/05/10
        return (IEnumWbemClassObject*)getIUnknown();
    }

public:
    HRESULT reset()
    {
        HRESULT hr = S_OK;

        IEnumWbemClassObject* enumerator = getEnumerator();
        if (FAILED(hr = enumerator -> Reset() )) {
            throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);
        }
        else {
            return hr;
        }
    }

public:
    IWbemClassObject* next( 
                __in long lTimeout,
                __in ULONG uCount,
                __out ULONG *puReturned)
    {
        HRESULT hr = S_OK;
        IWbemClassObject *apObjects = NULL;
        IEnumWbemClassObject* enumerator = getEnumerator();
        if (FAILED(hr = enumerator -> Next( 
                    lTimeout,
                    uCount,
                    &apObjects,
                    puReturned) )) {
            throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);
        }
        else {
            return apObjects;
        }
    }

public:
    HRESULT next( 
                __in long lTimeout,
                __in ULONG uCount,
                __out IWbemClassObject **apObjects,
                __out ULONG *puReturned)
    {
        HRESULT hr = S_OK;
        IEnumWbemClassObject* enumerator = getEnumerator();
        if (FAILED(hr = enumerator -> Next( 
                    lTimeout,
                    uCount,
                    apObjects,
                    puReturned) )) {
            throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);
        }
        else {
            return hr;
        }
    }

public:        
    HRESULT nextAsync( 
                __in ULONG uCount,
               __in IWbemObjectSink *pSink)
    {        
        HRESULT hr = S_OK;

        IEnumWbemClassObject* enumerator = getEnumerator();
        if (FAILED(hr = enumerator -> NextAsync( 
            uCount,
            pSink) )) {
            throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);
        }
        else {
            return hr;
        }
    }

public:
    IEnumWbemClassObject* clone() 
    {
        HRESULT hr = S_OK;

        IEnumWbemClassObject *pEnum = NULL;
        IEnumWbemClassObject* enumerator = getEnumerator();
        if (FAILED(hr = enumerator -> Clone( 
            &pEnum) )) {
            throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);
        }
        else {
            return pEnum;
        }
    }        

public:
    HRESULT skip( 
            __in long lTimeout,
            __in ULONG nCount)
    {
        HRESULT hr = S_OK;

        IEnumWbemClassObject* enumerator = getEnumerator();
        if (FAILED(hr = enumerator ->Skip( 
            lTimeout,
            nCount)  )) {
            throw Exception(E_FAIL, "%s: %s", "E_FAIL",__FUNCTION__);
        }
        else {
            return hr;
        }
    }        
    
public:
    virtual void display()
    {
    }
};


}

Last modified: 1 Apr 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.