Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

81 lines
3.0 KiB

//=============================================================================
//
// Copyright (c) 1996-1999, Microsoft Corporation, All rights reserved
//
// STDCONS.H
//
// This file defines the class for permanent event consumer.
//
// Classes defined:
//
// CPermanentConsumer
//
// History:
//
// 11/27/96 a-levn Compiles.
//
//=============================================================================
#ifndef __PERM_EVENT_CONSUMER__H_
#define __PERM_EVENT_CONSUMER__H_
#include "binding.h"
#include "consprov.h"
#include "fastall.h"
class CPermanentConsumer : public CEventConsumer
{
protected:
IWbemUnboundObjectSink* m_pCachedSink;
DWORD m_dwLastDelivery;
IWbemClassObject* m_pLogicalConsumer;
static long mstatic_lMaxQueueSizeHandle;
static long mstatic_lSidHandle;
static bool mstatic_bHandlesInitialized;
static HRESULT InitializeHandles( _IWmiObject* pObject);
protected:
HRESULT RetrieveProviderRecord(
RELEASE_ME CConsumerProviderRecord** ppRecord,
RELEASE_ME IWbemClassObject** ppLogicalConsumer = NULL);
HRESULT RetrieveSink(RELEASE_ME IWbemUnboundObjectSink** ppSink,
RELEASE_ME IWbemClassObject** ppLogicalConsumer);
HRESULT ObtainSink(RELEASE_ME IWbemUnboundObjectSink** ppSink,
RELEASE_ME IWbemClassObject** ppLogicalConsumer);
HRESULT ClearCache();
HRESULT Indicate(IWbemUnboundObjectSink* pSink,
IWbemClassObject* pLogicalConsumer,
long lNumEvents, IWbemEvent** apEvents,
BOOL bSecure);
HRESULT ConstructErrorEvent(LPCWSTR wszEventClass,
IWbemEvent* pEvent, IWbemEvent** ppErrorEvent);
HRESULT ReportConsumerFailure(IWbemEvent* pEvent, HRESULT hresError,
_IWmiObject* pErrorObj);
HRESULT ReportQosFailure(IWbemEvent* pEvent, HRESULT hresError);
HRESULT ReportConsumerFailure(long lNumEvents,
IWbemEvent** apEvents, HRESULT hresError);
HRESULT Redeliver(long lNumEvents, IWbemEvent** apEvents, BOOL bSecure);
void FireSinkUnloadedEvent();
public:
CPermanentConsumer(CEssNamespace* pNamespace);
HRESULT Initialize(READ_ONLY IWbemClassObject* pActualConsumer);
virtual ~CPermanentConsumer();
BOOL UnloadIfUnusedFor(CWbemInterval Interval);
BOOL IsFullyUnloaded();
BOOL IsPermanent() const {return TRUE;}
HRESULT ResetProviderRecord(LPCWSTR wszProvider);
static SYSFREE_ME BSTR ComputeKeyFromObj(CEssNamespace* pNamespace,
IWbemClassObject* pConsumerObj);
virtual HRESULT ActuallyDeliver(long lNumEvents, IWbemEvent** apEvents,
BOOL bSecure, CEventContext* pContext);
HRESULT ReportQueueOverflow(IWbemEvent* pEvent, DWORD dwQueueSize);
HRESULT Validate(IWbemClassObject* pLogicalConsumer);
};
#endif