Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

113 lines
1.6 KiB

#ifndef __WMSG_HEAP_HXX__
#define __WMSG_HEAP_HXX__
LPVOID
WmsgHeapAlloc(
DWORD Size
);
VOID
WmsgHeapFree(
LPVOID Buffer
);
VOID
WmsgHeapDestroy(
);
class WMSG_HEAP_OBJECT {
public:
// It would be bad to add a virtual method to this class.
void *
operator new(size_t Size) { return WmsgHeapAlloc(Size); }
void
operator delete(void * Buffer) { WmsgHeapFree(Buffer); }
};
class WMSG_PROC;
class WMSG_SHARED_HEAP_OBJECT : public WMSG_HEAP_OBJECT {
public:
WMSG_SHARED_HEAP_OBJECT * Next;
WMSG_SHARED_HEAP_OBJECT * Prev;
enum OBJECT_TYPE {
WmsgSystemObjectType = 0xa1a12222,
WmsgProcObjectType = 0xa1a13333,
WmsgThrdObjectType = 0xa1a14444,
WmsgPortObjectType = 0xa1a15555
} ObjectType;
LONG OwnerReferenceCount;
LONG ReferenceCount;
DWORD ProcessId;
WIN32_CRITSEC CritSec;
WMSG_SHARED_HEAP_OBJECT(
);
virtual
~WMSG_SHARED_HEAP_OBJECT(
);
virtual VOID
Disconnect(
);
LONG
AddRef(
);
LONG
AddRefNotOwner(
);
LONG
Dereference(
);
};
class WMSG_HEAP_OBJECT_LIST {
public:
WMSG_SHARED_HEAP_OBJECT * Head;
WMSG_SHARED_HEAP_OBJECT * Tail;
WMSG_HEAP_OBJECT_LIST(
);
VOID
Insert(
WMSG_SHARED_HEAP_OBJECT * HeapObject
);
BOOL
Remove(
WMSG_SHARED_HEAP_OBJECT * HeapObject
);
BOOL
IsInList(
WMSG_SHARED_HEAP_OBJECT * SearchObject
);
VOID
DisconnectOrphans(
);
VOID
DereferenceOrphans(
);
};
#endif