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.
 
 
 
 
 
 

50 lines
1.5 KiB

#if !defined(CTRL__OldExtension_h__INCLUDED)
#define CTRL__OldExtension_h__INCLUDED
#pragma once
class OldExtension
{
// Construction
public:
inline OldExtension();
virtual ~OldExtension();
enum EOptions
{
oUseExisting = 0x00000001, // Use existing Extension if already attached
oAsyncDestroy = 0x00000002, // Use asynchronous destruction
};
HRESULT Create(HGADGET hgadChange, const GUID * pguid, PRID * pprid, UINT nOptions);
void Destroy();
void DeleteHandle();
// Implementation
protected:
virtual void OnRemoveExisting();
virtual void OnDestroySubject();
virtual void OnDestroyListener();
virtual void OnAsyncDestroy();
void PostAsyncDestroy();
static OldExtension * GetExtension(HGADGET hgadSubject, PRID prid);
private:
static HRESULT CALLBACK
ListenProc(HGADGET hgadCur, void * pvCur, EventMsg * pmsg);
// Data
protected:
HGADGET m_hgadSubject; // Gadget being "extended"
HGADGET m_hgadListen; // Listener for destruction
PRID m_pridListen; // PRID for Extension
BOOL m_fAsyncDestroy:1;
// Need to destroy asynchronously
static MSGID s_msgidAsyncDestroy;
};
#include "OldExtension.inl"
#endif // CTRL__OldExtension_h__INCLUDED