windows-nt/Source/XPSP1/NT/com/rpc/ndr20/rpcssm.hxx
2020-09-26 16:20:57 +08:00

101 lines
2.3 KiB
C++

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Copyright (c) 1993-2000 Microsoft Corporation
Module Name:
rpcssm.hxx
Abstract:
Private definitions for the rpcssm memory package
Author:
Ryszard K. Kott (ryszardk) created June 29, 1994.
Revision History:
-------------------------------------------------------------------*/
#ifndef __RPCSSM_HXX__
#define __RPCSSM_HXX__
#define ALIGN_TO_8(x) (size_t)(((x)+7) & 0xfffffff8)
#define DESCR_ARRAY_SIZE 1024
#define DESCR_ARRAY_INCR 1024
#define ENABLE_STACK_SIZE 16
#define ENABLE_STACK_INCR 16
// Enable stack keeps longs.
// Descr block stack keeps descr blocks.
typedef struct _ALLOC_BLOCK_DESCR
{
char * AllocationBlock;
char * FirstFree;
unsigned long SizeLeft;
#if defined( DEBUGRPC )
unsigned long Counter;
#endif
} ALLOC_BLOCK_DESCR, * PALLOC_BLOCK_DESCR;
// Initial boundle of Win32 stacks: we save an allocation at the expense
// of keeping initial block around.
// Of course we hope that initial block is good enough for most apps.
typedef struct _INIT_STACKS_BLOCK
{
unsigned long EnableStack[ ENABLE_STACK_SIZE ];
ALLOC_BLOCK_DESCR DescrStack[ DESCR_ARRAY_SIZE ];
} INIT_STACKS_BLOCK;
typedef struct _ALLOCATION_CONTEXT
{
RPC_CLIENT_ALLOC * ClientAlloc;
RPC_CLIENT_FREE * ClientFree;
unsigned int EnableCount;
CRITICAL_SECTION CriticalSection;
unsigned long ThreadCount;
INIT_STACKS_BLOCK * pInitialStacks;
unsigned long * pEnableStack;
unsigned long StackMax;
unsigned long StackTop;
PALLOC_BLOCK_DESCR pBlockDescr;
unsigned long DescrSize;
unsigned long FFIndex;
DWORD PageSize;
DWORD Granularity;
} ALLOCATION_CONTEXT, * PALLOCATION_CONTEXT;
#ifdef NEWNDR_INTERNAL
#undef RequestGlobalMutex
#undef ClearGlobalMutex
#define RequestGlobalMutex()
#define ClearGlobalMutex()
#endif // NEWNDR_INTERNAL
PALLOCATION_CONTEXT GetAllocContext ();
void SetAllocContext ( IN PALLOCATION_CONTEXT AllocContext );
#endif // __RPCSSM_HXX__