windows-nt/Source/XPSP1/NT/ds/security/services/scerpc/client/cgenericlogger.h
2020-09-26 16:20:57 +08:00

167 lines
4.8 KiB
C++

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
cgenericlogger.h
Abstract:
This file contains base class prototypes for logging RSOP security extension data to WMI.
Author:
Vishnu Patankar (VishnuP) 7-April-2000
Environment:
User Mode - Win32
Revision History:
--*/
///////////////////////////////////////////////////////////////////////////////
// //
// Includes //
// //
///////////////////////////////////////////////////////////////////////////////
#if !defined _generic_logger_
#define _generic_logger_
#include "headers.h"
#include "smartptr.h"
#include <cfgmgr32.h>
#include <ole2.h>
#include <wininet.h>
#include <wbemidl.h>
#ifndef Thread
#define Thread __declspec( thread )
#endif
extern IWbemServices *tg_pWbemServices;
///////////////////////////////////////////////////////////////////////////////
// //
// Private defines //
// //
///////////////////////////////////////////////////////////////////////////////
#define SCEP_GUID_TO_STRING(guid, szValue )\
wsprintf( szValue,\
TEXT("{%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}"),\
guid.Data1,\
guid.Data2,\
guid.Data3,\
guid.Data4[0], guid.Data4[1],\
guid.Data4[2], guid.Data4[3],\
guid.Data4[4], guid.Data4[5],\
guid.Data4[6], guid.Data4[7] )
#define SCEP_NULL_GUID(guid)\
((guid.Data1 == 0) &&\
(guid.Data2 == 0) &&\
(guid.Data3 == 0) &&\
(guid.Data4[0] == 0) &&\
(guid.Data4[1] == 0) &&\
(guid.Data4[2] == 0) &&\
(guid.Data4[3] == 0) &&\
(guid.Data4[4] == 0) &&\
(guid.Data4[5] == 0) &&\
(guid.Data4[6] == 0) &&\
(guid.Data4[7] == 0) )
/////////////////////////////////////////////////////////////////////
// Base logger class prototype
//////////////////////////////////////////////////////////////////////
class CGenericLogger
{
public:
CGenericLogger(IWbemServices *pNamespace, PWSTR pwszGPOName, const PWSTR pwszSOMID);
virtual ~CGenericLogger();
IWbemClassObject *m_pObj;
IEnumWbemClassObject * m_pEnum;
//protected:
HRESULT PutGenericProperties();
HRESULT PutInstAndFreeObj();
// Overloaded put methods
HRESULT PutProperty(IWbemClassObject *pObj, const WCHAR *wcProperty, WCHAR *wcValue);
HRESULT PutProperty(IWbemClassObject *pObj, const WCHAR *wcProperty, int iValue);
HRESULT PutProperty(IWbemClassObject *pObj, const WCHAR *wcProperty, bool bValue);
HRESULT PutProperty(IWbemClassObject *pObj, const WCHAR *wcProperty, PSCE_NAME_LIST strList);
HRESULT PutProperty(IWbemClassObject *pObj, const WCHAR *wcProperty, WCHAR *mszValue, CIMTYPE cimtype);
// Overloaded get methods
HRESULT GetProperty(IWbemClassObject *pObj, const WCHAR *wcProperty, int *piValue);
// Method to get an instance to populate
HRESULT SpawnAnInstance(IWbemClassObject **pObj);
// Method to set/get error code
void SetError(HRESULT hr);
HRESULT GetError();
// Data members unique to logger instance
IWbemServices *m_pNamespace;
IWbemClassObject *m_pClassForSpawning;
// Generic schema property name placeholders
// Use smart ptrs for implicit memory mgmt (even if exceptions thrown)
XBStr m_xbstrClassName;
XBStr m_xbstrId;
XBStr m_xbstrPrecedence;
XBStr m_xbstrGPO;
XBStr m_xbstrSOM;
XBStr m_xbstrStatus;
XBStr m_xbstrErrorCode;
// Value placeholders for generic schema properties
XBStr m_xbstrCanonicalGPOName;
XBStr m_xbstrSOMID;
XBStr m_xbstrIdValue;
// set to TRUE by highest derived class if all constructors completely constructed
BOOL m_bInitialized;
// error code used to communicate out of memory errors etc.
HRESULT m_pHr;
};
// Method to clear all instances of a particular class in the namespace
HRESULT DeleteInstances(
WCHAR *pwszClass,
IWbemServices *pWbemServices
);
/////////////////////////////////////////////////////////////////////
// Error code conversion routines
//////////////////////////////////////////////////////////////////////
DWORD
ScepSceStatusToDosError(
IN SCESTATUS SceStatus
);
HRESULT
ScepDosErrorToWbemError(
IN DWORD rc
);
DWORD
ScepWbemErrorToDosError(
IN HRESULT hr
);
#endif