Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (C) 1996-2001 Microsoft Corporation
Module Name:
REGEPROV.H
Abstract:
History:
--*/
#ifndef __WBEM_REG_EVENT_PROVIDER__H_
#define __WBEM_REG_EVENT_PROVIDER__H_
#include <windows.h>
#include <wbemidl.h>
#include <stdio.h>
#include "regereq.h"
#include <ql.h>
#include "cfdyn.h"
class CRegEventProvider : public IWbemEventProvider, public IWbemEventProviderQuerySink, public IWbemEventProviderSecurity, public IWbemProviderInit { public: STDMETHOD(QueryInterface)(REFIID riid, void** ppv); STDMETHOD_(ULONG, AddRef)(); STDMETHOD_(ULONG, Release)();
STDMETHOD(Initialize)(LPWSTR wszUser, long lFlags, LPWSTR wszNamespace, LPWSTR wszLocale, IWbemServices* pNamespace, IWbemContext* pCtx, IWbemProviderInitSink* pSink); STDMETHOD(ProvideEvents)(IWbemObjectSink* pSink, long lFlags);
STDMETHOD(NewQuery)(DWORD dwId, WBEM_WSTR wszLanguage, WBEM_WSTR wszQuery); STDMETHOD(CancelQuery)(DWORD dwId); STDMETHOD(AccessCheck)(WBEM_CWSTR wszLanguage, WBEM_CWSTR wszQuery, long lSidLength, const BYTE* aSid);
static VOID CALLBACK EnqueueEvent(PVOID lpParameter, BOOLEAN TimerOrWaitFired);
void EnqueueEvent(CRegistryEventRequest *pReq);
protected: long m_lRef;
IWbemClassObject* m_pKeyClass; IWbemClassObject* m_pValueClass; IWbemClassObject* m_pTreeClass;
DWORD m_dwId; HANDLE m_hThread; IWbemObjectSink* m_pSink;
CRefedPointerArray<CRegistryEventRequest> m_apRequests; CCritSec m_cs;
HANDLE m_hQueueSemaphore; CCritSec m_csQueueLock; CRefedPointerQueue<CRegistryEventRequest> m_qEventQueue;
protected: static DWORD Worker(void* p);
HRESULT GetValuesForProp(QL_LEVEL_1_RPN_EXPRESSION* pExpr, CPropertyName& PropName, CWStringArray& awsVals); HKEY TranslateHiveName(LPCWSTR wszName); HRESULT AddRequest(CRegistryEventRequest* pNewReq); void KillWorker(); void CreateWorker();
friend class CRegistryEventRequest; friend class CRegistryKeyEventRequest; friend class CRegistryValueEventRequest; friend class CRegistryTreeEventRequest; public: CRegEventProvider(); ~CRegEventProvider();
void* GetInterface(REFIID riid);
HRESULT RaiseEvent(IWbemClassObject* pEvent); };
extern const CLSID CLSID_RegistryEventProvider;
class CRegEventProviderFactory : public CCFDyn { public: IUnknown* CreateImpObj(); };
#endif
|