/*++ Copyright (c) 1992 Microsoft Corporation Module Name: suballoc.h Abstract: This is the public include file for the suballocation package. Author: Dave Hastings (daveh) creation-date 25-Jan-1994 Revision History: --*/ // // Constants // // // Minimum granularity for the commit routine // this is done as a constant rather than a parameter // to make defining data structures easier // #ifdef i386 #define COMMIT_GRANULARITY 4096 #else #define COMMIT_GRANULARITY 65536 #endif // // Types // // // Routine for committing a specific region of of the address // space. Although the return type is NTSTATUS, the only value // that is checked is 0 (for STATUS_SUCCESS). If STATUS_SUCCESS // is returned, it is assumed that the function worked. If not, // it is assumed that it failed. No special meaning is attached to // particular non-zero values. // typedef NTSTATUS (*PSACOMMITROUTINE)( ULONG BaseAddress, ULONG Size ); // // Routine for moving memory around in the address space. // Note: This routine MUST correctly handle overlapping // source and destination // typedef VOID (*PSAMEMORYMOVEROUTINE)( ULONG Destination, ULONG Source, ULONG Size ); // // Public prototypes // PVOID SAInitialize( ULONG BaseAddress, ULONG Size, PSACOMMITROUTINE CommitRoutine, PSACOMMITROUTINE DecommitRoutine, PSAMEMORYMOVEROUTINE MemoryMoveRoutine ); BOOL SAQueryFree( PVOID SubAllocation, PULONG FreeBytes, PULONG LargestFreeBlock ); BOOL SAAllocate( PVOID SubAllocation, ULONG Size, PULONG Address ); BOOL SAFree( PVOID SubAllocation, ULONG Size, ULONG Address ); BOOL SAReallocate( PVOID SubAllocation, ULONG OriginalSize, ULONG OriginalAddress, ULONG NewSize, PULONG NewAddress );