mirror of https://github.com/tongzx/nt5src
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
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
|