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.
 
 
 
 
 
 

94 lines
2.7 KiB

/***************************************************************************
*
* Copyright (C) 2001 Microsoft Corporation. All Rights Reserved.
*
* File: spcallbackobj.h
*
* Content: Header for DP8SIM callback interface object class.
*
* History:
* Date By Reason
* ======== ======== =========
* 04/23/01 VanceO Created.
*
***************************************************************************/
//=============================================================================
// Macros
//=============================================================================
#define ENUMQUERYEVENTWRAPPER_FROM_SPIEQUERY(p) (CONTAINING_OBJECT(p, ENUMQUERYDATAWRAPPER, QueryForUser))
//=============================================================================
// Structures
//=============================================================================
typedef struct _ENUMQUERYEVENTWRAPPER
{
BYTE m_Sig[4]; // debugging signature ('EQEW')
SPIE_QUERY QueryForUser; // new event indication structure to be passed up to user
SPIE_QUERY * pOriginalQuery; // pointer to real SP's original event indication structure
} ENUMQUERYDATAWRAPPER, * PENUMQUERYDATAWRAPPER;
//=============================================================================
// Callback interface object class
//=============================================================================
class CDP8SimCB : public IDP8SPCallback
{
public:
CDP8SimCB(CDP8SimSP * pOwningDP8SimSP, IDP8SPCallback * pDP8SPCB); // constructor
~CDP8SimCB(void); // destructor
STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP IndicateEvent(SP_EVENT_TYPE EventType, PVOID pvMessage);
STDMETHODIMP CommandComplete(HANDLE hCommand, HRESULT hrResult, PVOID pvContext);
HRESULT InitializeObject(void);
void UninitializeObject(void);
inline IDP8SPCallback * GetRealCallbackInterface(void) { return this->m_pDP8SPCB; };
private:
BYTE m_Sig[4]; // debugging signature ('SPCB')
LONG m_lRefCount; // reference count for this object
DNCRITICAL_SECTION m_csLock; // lock preventing simultaneous usage of globals
CDP8SimSP * m_pOwningDP8SimSP; // pointer to owing DP8SimSP object
IDP8SPCallback * m_pDP8SPCB; // pointer to real DPlay callback interface
inline BOOL IsValidObject(void)
{
if ((this == NULL) || (IsBadWritePtr(this, sizeof(CDP8SimCB))))
{
return FALSE;
}
if (*((DWORD*) (&this->m_Sig)) != 0x42435053) // 0x42 0x43 0x50 0x53 = 'BCPS' = 'SPCB' in Intel order
{
return FALSE;
}
return TRUE;
};
};