/************************************************************************\ * The enclosed files, "the software," is provided by * Microsoft Corporation "as is" without warranty of any kind. * MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. You assume all risks of * using the software. * * The software is Copyright (c) 1992 Microsoft Corporation. * Original Author: John M. Hall, Microsoft SDE 9/1/92 * * You are granted the right to freely distribute this software. * You are granted the right to make changes provided this comment block * is retained without modification and you acknowledge the changes. * \************************************************************************/ /************************************************************************\ * * SHRMEM.H * \************************************************************************/ #ifndef SHRMEM_DLL_H #define SHRMEM_DLL_H /************************************************************************\ * SYMBOLIC CONSTANTS \************************************************************************/ #define FREE 0x00 #define EXCLUSIVE 0x01 #define SHARED 0x02 #define HEAD 0xF0 #ifdef SHRMEM_DLL_C #define ALLFFS 0xFFFFFFFF #define SZ_MEMORY (1024 * 1024) #define SZ_CONTROL (1024 * 64) #define NUMBER_ELEM 256 #define MUNGE 37 /************************************************************************\ * GLOBAL SHARED VARIABLES \************************************************************************/ DWORD dwPageSize; DWORD dwProcesses; int iiUnused; LPVOID lpTryBase; DWORD dwBase; DWORD dwLength; /************************************************************************\ * GLOBAL NON-Shared VARIABLES \************************************************************************/ HANDLE hMod = NULL; HANDLE hSemaphore = NULL; HANDLE hMemory = NULL; LPVOID lpMemBase = NULL; HANDLE hControl = NULL; LPVOID lpCtrlBase = NULL; DWORD dwProcessID = 0; FILE *fp_log = NULL; /************************************************************************\ * MACROS \************************************************************************/ #define MAKE_PTR(a,b) ((LPVOID)((DWORD)(a) + (b))) #define MUNGEIT(a) ( ((a)+1)* MUNGE) #define UNMUNGE(a) ( ((a)/MUNGE)-1) // turn the wOffset (in pages) into a LPVOID #define MAKE_LPV(a) ((LPVOID) ((DWORD)lpMemBase + (dwPageSize * (a)))) #ifdef DEBUG #define AssertBox(a,b) if (!(a)) MyAssertBox((b), #a, __FILE__, __LINE__) #else #define AssertBox(a,b) #endif /************************************************************************\ * STRUCTURES \************************************************************************/ typedef struct { DWORD dwProcessID; WORD wOffset; WORD wLength; SHORT sNext; SHORT sPrior; ATOM aName; UCHAR uchLock; UCHAR uchFlags; } FREE_ELEMENT; typedef FREE_ELEMENT *FEP; #endif /************************************************************************\ * FLAGS \************************************************************************/ #define SHR_MEM_FREE 0x00 #define SHR_MEM_ALLOC 0x01 #define SHR_MEM_INVALID 0x02 /************************************************************************\ * FUNCTION PROTOTYPES \************************************************************************/ VOID MyAssertBox( const char *, const char *, const char *, int); DWORD ShrAlloc(DWORD dwSize, UCHAR uchFlags); LPVOID ShrLock( DWORD hShr); DWORD ShrUnlock( DWORD hShr); DWORD ShrFree( DWORD hShr); BOOL DLLEntryPoint (HANDLE hDLL, DWORD dwReason, LPVOID lpReserved); BOOL attach_memory(LPTSTR lptstr); BOOL ShrName(DWORD hShr, LPCTSTR lpsz); DWORD ShrGet(LPCTSTR lpsz); VOID ShrDump(void); #endif // SHRMEM_DLL_H