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.
91 lines
2.4 KiB
91 lines
2.4 KiB
/*++
|
|
|
|
Copyright (C) 1996-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
WBEMQ.H
|
|
|
|
Abstract:
|
|
|
|
History:
|
|
|
|
--*/
|
|
|
|
#ifndef __WBEM_QUEUE__H_
|
|
#define __WBEM_QUEUE__H_
|
|
|
|
class CWbemQueue;
|
|
|
|
class CWbemRequest : public CCoreExecReq
|
|
{
|
|
protected:
|
|
IWbemContext* m_pContext;
|
|
IWbemCausalityAccess* m_pCA;
|
|
IWbemCallSecurity *m_pCallSec;
|
|
|
|
//
|
|
// This flag was added to allow requests to be run immediately rather than being
|
|
// enqueued and serviced at a later point. This is done
|
|
// by bumping the priority of the request up.
|
|
//
|
|
// CAUTION!!!IF THIS FLAG IS SET TO > 0 THE REQUEST WILL RUN NO MATTER WHAT!
|
|
// IF WE'RE OUT OF THREADS ANOTHER THREAD WILL BE CREATED TO HANDLE
|
|
// THE REQUEST! ****** USE CAUTION ******
|
|
//
|
|
// By default this flag is 0.
|
|
//
|
|
ULONG m_ulForceRun;
|
|
|
|
|
|
public:
|
|
CWbemRequest(IWbemContext* pContext, BOOL bInternallyIssued);
|
|
~CWbemRequest();
|
|
|
|
BOOL IsChildOf(CWbemRequest* pOther);
|
|
BOOL IsChildOf(IWbemContext* pOther);
|
|
|
|
public:
|
|
virtual CWbemQueue* GetQueue() {return NULL;}
|
|
INTERNAL IWbemContext* GetContext() {return m_pContext;}
|
|
void GetHistoryInfo(long* plNumParents, long* plNumSiblings);
|
|
|
|
INTERNAL IWbemCallSecurity *GetCallSecurity() { return m_pCallSec; }
|
|
BOOL IsSpecial();
|
|
BOOL IsCritical();
|
|
BOOL IsDependee();
|
|
BOOL IsAcceptableByParent();
|
|
BOOL IsIssuedByProvider();
|
|
VOID SetForceRun ( ULONG ulForce ) { m_ulForceRun = ulForce; }
|
|
ULONG GetForceRun ( ) { return m_ulForceRun; }
|
|
virtual BOOL IsLongRunning() {return FALSE;}
|
|
virtual BOOL IsInternal() = 0;
|
|
virtual void TerminateRequest(HRESULT hRes){return;};
|
|
};
|
|
|
|
class CWbemQueue : public CCoreQueue
|
|
{
|
|
protected:
|
|
long m_lChildPenalty;
|
|
long m_lSiblingPenalty;
|
|
long m_lPassingPenalty;
|
|
|
|
public:
|
|
CWbemQueue();
|
|
|
|
virtual BOOL IsSuitableThread(CThreadRecord* pRecord, CCoreExecReq* pReq);
|
|
virtual LPCWSTR GetType() {return L"WBEMQ";}
|
|
virtual void AdjustPriorityForPassing(CCoreExecReq* pReq);
|
|
virtual void AdjustInitialPriority(CCoreExecReq* pReq);
|
|
|
|
static CWbemRequest* GetCurrentRequest();
|
|
|
|
void SetRequestPenalties(long lChildPenalty, long lSiblingPenalty,
|
|
long lPassingPenalty);
|
|
|
|
virtual BOOL Execute(CThreadRecord* pRecord);
|
|
virtual BOOL DoesNeedNewThread(CCoreExecReq* pReq, bool bIgnoreNumRequests = false );
|
|
};
|
|
|
|
#endif
|
|
|