163 lines
3.6 KiB
C
163 lines
3.6 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1991 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
lsasrvmm.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Local Security Authority - Main Include File for Lsa Server Memory
|
||
|
Management Routines.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Scott Birrell (ScottBi) February 29, 1992
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Free List Routines and Definitions //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#define LSAP_MM_MIDL ((ULONG) 0x00000001L)
|
||
|
#define LSAP_MM_HEAP ((ULONG) 0x00000002L)
|
||
|
|
||
|
//
|
||
|
// Options from LsapMmCleanupFreeList
|
||
|
//
|
||
|
|
||
|
#define LSAP_MM_FREE_BUFFERS ((ULONG) 0x00000001L)
|
||
|
|
||
|
typedef struct _LSAP_MM_FREE_LIST_ENTRY {
|
||
|
|
||
|
PVOID Buffer;
|
||
|
ULONG Options;
|
||
|
|
||
|
} LSAP_MM_FREE_LIST_ENTRY, *PLSAP_MM_FREE_LIST_ENTRY;
|
||
|
|
||
|
typedef struct _LSAP_MM_FREE_LIST {
|
||
|
|
||
|
ULONG UsedCount;
|
||
|
ULONG MaxCount;
|
||
|
PLSAP_MM_FREE_LIST_ENTRY Buffers;
|
||
|
|
||
|
} LSAP_MM_FREE_LIST, *PLSAP_MM_FREE_LIST;
|
||
|
|
||
|
#define LsapMmInitializeFreeListStatic( _list_, _buffer_ ) \
|
||
|
(_list_)->UsedCount = 0; \
|
||
|
(_list_)->MaxCount = sizeof( _buffer_ ) / sizeof( LSAP_MM_FREE_LIST_ENTRY );\
|
||
|
(_list_)->Buffers = _buffer_;
|
||
|
|
||
|
NTSTATUS
|
||
|
LsapMmCreateFreeList(
|
||
|
OUT PLSAP_MM_FREE_LIST FreeList,
|
||
|
IN ULONG MaxEntries
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
LsapMmAllocateMidl(
|
||
|
IN PLSAP_MM_FREE_LIST FreeList,
|
||
|
OUT PVOID *OutputBuffer,
|
||
|
IN ULONG BufferLength
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
LsapMmFreeLastEntry(
|
||
|
IN PLSAP_MM_FREE_LIST FreeList
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
LsapMmCleanupFreeList(
|
||
|
IN PLSAP_MM_FREE_LIST FreeList,
|
||
|
IN ULONG Options
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
LsapRpcCopyUnicodeString(
|
||
|
IN OPTIONAL PLSAP_MM_FREE_LIST FreeList,
|
||
|
OUT PUNICODE_STRING DestinationString,
|
||
|
IN PUNICODE_STRING SourceString
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
LsapRpcCopyUnicodeStrings(
|
||
|
IN OPTIONAL PLSAP_MM_FREE_LIST FreeList,
|
||
|
IN ULONG Count,
|
||
|
OUT PUNICODE_STRING *DestinationStrings,
|
||
|
IN PUNICODE_STRING SourceStrings
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
LsapRpcCopySid(
|
||
|
IN OPTIONAL PLSAP_MM_FREE_LIST FreeList,
|
||
|
OUT PSID *DestinationSid,
|
||
|
IN PSID SourceSid
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
LsapRpcCopyTrustInformation(
|
||
|
IN OPTIONAL PLSAP_MM_FREE_LIST FreeList,
|
||
|
OUT PLSAPR_TRUST_INFORMATION OutputTrustInformation,
|
||
|
IN PLSAPR_TRUST_INFORMATION InputTrustInformation
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
LsapRpcCopyTrustInformationEx(
|
||
|
IN OPTIONAL PLSAP_MM_FREE_LIST FreeList,
|
||
|
OUT PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX OutputTrustInformation,
|
||
|
IN PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX InputTrustInformation
|
||
|
);
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Heap Routines //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
BOOLEAN
|
||
|
LsapHeapInitialize(
|
||
|
IN BOOLEAN Server
|
||
|
);
|
||
|
|
||
|
PVOID
|
||
|
LsapAllocateLsaHeap (
|
||
|
IN ULONG Length
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
LsapFreeLsaHeap (
|
||
|
IN PVOID Base
|
||
|
);
|
||
|
|
||
|
PVOID
|
||
|
NTAPI
|
||
|
LsapAllocatePrivateHeap (
|
||
|
IN SIZE_T Length
|
||
|
);
|
||
|
|
||
|
PVOID
|
||
|
NTAPI
|
||
|
LsapAllocatePrivateHeapNoZero(
|
||
|
IN SIZE_T cbMemory
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
NTAPI
|
||
|
LsapFreePrivateHeap (
|
||
|
IN PVOID Base
|
||
|
);
|
||
|
|
||
|
#define LsapGetCurrentHeap() ((HANDLE) TlsGetValue( dwThreadHeap ))
|
||
|
#define LsapSetCurrentHeap(x) TlsSetValue( dwThreadHeap, x )
|
||
|
|
||
|
|