2025-04-27 07:49:33 -04:00

116 lines
3.6 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1997.
//
// File: globals.hxx
//
// Contents: Class used to encapsulate shared global data structures for DCOM95.
//
// Functions:
//
// History: 13-Feb-96 SatishT Created
//
//--------------------------------------------------------------------------
#ifndef __GLOBALS_HXX__
#define __GLOBALS_HXX__
//+-------------------------------------------------------------------
//
// Macro: ASSIGN_PAGE_ALLOCATOR
//
// Synopsis: Initialize a page allocator for a specific type
// in shared memory
//
//--------------------------------------------------------------------
#define ASSIGN_PAGE_ALLOCATOR(TYPE) \
TYPE##::_pAlloc = &_aPageAllocators[TYPE##_ALLOCATOR_INDEX]; \
TYPE##::_fPageAllocatorInitialized = TRUE;
//+-------------------------------------------------------------------
//
// Macro: GLOBALS_TABLE_SIZE
//
// Synopsis: size of the shared file mapping that holds the
// roots of resolver data structures in shared memory
//
//--------------------------------------------------------------------
#define GLOBALS_TABLE_SIZE \
( \
4 * sizeof(USHORT) + \
sizeof(HWND) + \
sizeof(LONG) + \
2 * sizeof(DWORD) + \
9 * sizeof(void *) + \
sizeof(SharedSecVals) + \
NUM_PAGE_ALLOCATORS * sizeof(CPageAllocator) \
)
//+-------------------------------------------------------------------------
//
// Class: CSharedGlobals
//
// Purpose: Initializing access to shared global data
//
// History: 13-Feb-96 SatishT Created
//
// Notes: The constructor for this class uses the shared allocator. Objects of this
// class should not be created before the shared allocator is initialized.
//
//
//--------------------------------------------------------------------------
class CSharedGlobals
{
public:
CSharedGlobals(WCHAR *pwszName, ORSTATUS &status);
void ResetGlobals();
ORSTATUS InitGlobals(BOOL fCreated, BOOL fRpcssReinit = FALSE);
HWND GetRpcssWindow();
~CSharedGlobals();
private:
HANDLE _hSm;
BYTE * _pb;
CPageAllocator * _aPageAllocators;
};
//+-------------------------------------------------------------------------
//
// Member: CSharedGlobals::~CSharedGlobals
//
// Synopsis: Clean up hint table object
//
// History: 20-Jan-96 SatishT Created
//
//--------------------------------------------------------------------------
inline CSharedGlobals::~CSharedGlobals(void)
{
CloseSharedFileMapping(_hSm, _pb);
}
//+-------------------------------------------------------------------------
//
// Member: CSharedGlobals::GetRpcssWindow
//
// Synopsis: Pick up the RPCSS window handle from shred memory
//
// History: 25-July-97 SatishT Created
//
//--------------------------------------------------------------------------
inline HWND CSharedGlobals::GetRpcssWindow(void)
{
// We ensure that the RPCSS window is the first thing in the shared memory block
HWND *phRpcssWnd = (HWND *) _pb;
return *phRpcssWnd;
}
#endif // __GLOBALS_HXX__