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

   PrintSys.H -- WMI provider class definition

   Generated by Microsoft WBEM Code Generation Engine
 
   Description: 
   

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

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

#ifndef _PrintSys_H_
#define _PrintSys_H_

#define PROVIDER_NAME_PRINTSYS L"PCHAT_PrintSystem"

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

extern const WCHAR *c_wszGenDrv;
extern const WCHAR *c_wszName;
extern const WCHAR *c_wszPath;
extern const WCHAR *c_wszUniDrv;
extern const WCHAR *c_wszUsePrintMgrSpooling;

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

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

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

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
