/******************************************************************

   PrintJob.H -- WMI provider class definition

   Generated by Microsoft WBEM Code Generation Engine
 
   Description: 
   

*******************************************************************/

// Property set identification
//============================

#ifndef _PrintJob_H_
#define _PrintJob_H_

#define PROVIDER_NAME_PRINTJOB L"PCHAT_PrintJob"

// Property name externs -- defined in PrintJob.cpp
//=================================================

extern const WCHAR *c_szName;
extern const WCHAR *c_szPagesPrinted;
extern const WCHAR *c_szSize;
extern const WCHAR *c_szStatus;
extern const WCHAR *c_szTimeSubmitted;
extern const WCHAR *c_szUser;

class CPrintJob : public Provider 
{
private:
    // member data 
    CInstance   *m_pCurrent;
    CInstance   *m_pParamIn;
    CInstance   *m_pParamOut;
    LONG        m_lFlags;

    // member methods
    HRESULT     GetInstanceData(IWbemClassObjectPtr pObj, 
                                CInstance *pInstance);


public:
    // Constructor/destructor
    //=======================

    CPrintJob(LPCWSTR lpwszClassName, LPCWSTR lpwszNameSpace);
    virtual ~CPrintJob();

protected:
    // Reading Functions
    //============================
    virtual HRESULT EnumerateInstances(MethodContext *pMethodContext, 
                                       long lFlags = 0L);
    virtual HRESULT GetObject(CInstance* pInstance, long lFlags = 0L); 
    virtual HRESULT ExecQuery(MethodContext *pMethodContext, 
                              CFrameworkQuery& Query, long lFlags = 0L);

    // Writing Functions
    //============================
    virtual HRESULT PutInstance(const CInstance& Instance, long lFlags = 0L);
    virtual HRESULT DeleteInstance(const CInstance& Instance, long lFlags = 0L);

    // Other Functions
    virtual HRESULT ExecMethod(const CInstance& Instance, const BSTR bstrMethodName,
                               CInstance *pInParams, CInstance *pOutParams,
                               long lFlags = 0L);
};

#endif
