Windows2003-3790/inetcore/setup/iexpress/cabpack/basertl.h
2020-09-30 16:53:55 +02:00

249 lines
6.9 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
basertl.h
Abstract:
This is the main include file for the runtime routines that are shared
by the client and server sides of the Windows Base API implementation.
Author:
Steve Wood (stevewo) 25-Oct-1990
Revision History:
--*/
#if DBG
#undef RTLHEAP_TRACE_CALLS
#else
#undef RTLHEAP_TRACE_CALLS
#endif
NTSTATUS
BaseRtlCreateAtomTable(
IN ULONG NumberOfBuckets,
IN ULONG MaxAtomTableSize,
OUT PVOID *AtomTableHandle
);
NTSTATUS
BaseRtlDestroyAtomTable(
IN PVOID AtomTableHandle
);
NTSTATUS
BaseRtlAddAtomToAtomTable(
IN PVOID AtomTableHandle,
IN PUNICODE_STRING AtomName,
IN PULONG AtomValue OPTIONAL,
OUT PULONG Atom OPTIONAL
);
NTSTATUS
BaseRtlLookupAtomInAtomTable(
IN PVOID AtomTableHandle,
IN PUNICODE_STRING AtomName,
OUT PULONG AtomValue OPTIONAL,
OUT PULONG Atom OPTIONAL
);
NTSTATUS
BaseRtlSetAtomValueInAtomTable(
IN PVOID AtomTableHandle,
IN PUNICODE_STRING AtomName,
IN ULONG AtomValue
);
NTSTATUS
BaseRtlDeleteAtomFromAtomTable(
IN PVOID AtomTableHandle,
IN ULONG Atom
);
NTSTATUS
BaseRtlQueryAtomInAtomTable(
IN PVOID AtomTableHandle,
IN ULONG Atom,
IN OUT PUNICODE_STRING AtomName OPTIONAL,
OUT PULONG AtomValue OPTIONAL,
OUT PULONG AtomUsage OPTIONAL
);
typedef struct _BASE_HANDLE_TABLE_ENTRY {
USHORT LockCount;
USHORT Flags;
union {
struct _BASE_HANDLE_TABLE_ENTRY *Next; // Free handle
PVOID Object; // Allocated handle
ULONG Size; // Handle to discarded obj.
} u;
} BASE_HANDLE_TABLE_ENTRY, *PBASE_HANDLE_TABLE_ENTRY;
#define BASE_HANDLE_FREE (USHORT)0x0001
#define BASE_HANDLE_MOVEABLE (USHORT)0x0002
#define BASE_HANDLE_DISCARDABLE (USHORT)0x0004
#define BASE_HANDLE_DISCARDED (USHORT)0x0008
#define BASE_HANDLE_SHARED (USHORT)0x8000
//
// Handles are 32-bit pointers to the u.Object field of a
// BASE_HANDLE_TABLE_ENTRY. Since this field is 4 bytes into the
// structure and the structures are always on 8 byte boundaries, we can
// test the 0x4 bit to see if it is a handle.
//
#define BASE_HANDLE_MARK_BIT (ULONG)0x00000004
#define BASE_HEAP_FLAG_MOVEABLE HEAP_SETTABLE_USER_FLAG1
#define BASE_HEAP_FLAG_DDESHARE HEAP_SETTABLE_USER_FLAG2
typedef struct _BASE_HANDLE_TABLE {
ULONG MaximumNumberOfHandles;
PBASE_HANDLE_TABLE_ENTRY FreeHandles;
PBASE_HANDLE_TABLE_ENTRY CommittedHandles;
PBASE_HANDLE_TABLE_ENTRY UnusedCommittedHandles;
PBASE_HANDLE_TABLE_ENTRY UnCommittedHandles;
PBASE_HANDLE_TABLE_ENTRY MaxReservedHandles;
} BASE_HANDLE_TABLE, *PBASE_HANDLE_TABLE;
NTSTATUS
BaseRtlInitializeHandleTable(
IN ULONG MaximumNumberOfHandles,
OUT PBASE_HANDLE_TABLE HandleTable
);
NTSTATUS
BaseRtlDestroyHandleTable(
IN OUT PBASE_HANDLE_TABLE HandleTable
);
PBASE_HANDLE_TABLE_ENTRY
BaseRtlAllocateHandle(
IN PBASE_HANDLE_TABLE HandleTable
);
BOOLEAN
BaseRtlFreeHandle(
IN PBASE_HANDLE_TABLE HandleTable,
IN PBASE_HANDLE_TABLE_ENTRY Handle
);
//
// These structures are kept in the global shared memory section created
// in the server and mapped readonly into each client address space when
// they connect to the server.
//
typedef struct _INIFILE_MAPPING_TARGET {
struct _INIFILE_MAPPING_TARGET *Next;
UNICODE_STRING RegistryPath;
} INIFILE_MAPPING_TARGET, *PINIFILE_MAPPING_TARGET;
typedef struct _INIFILE_MAPPING_VARNAME {
struct _INIFILE_MAPPING_VARNAME *Next;
UNICODE_STRING Name;
ULONG MappingFlags;
PINIFILE_MAPPING_TARGET MappingTarget;
} INIFILE_MAPPING_VARNAME, *PINIFILE_MAPPING_VARNAME;
#define INIFILE_MAPPING_WRITE_TO_INIFILE_TOO 0x00000001
#define INIFILE_MAPPING_INIT_FROM_INIFILE 0x00000002
#define INIFILE_MAPPING_READ_FROM_REGISTRY_ONLY 0x00000004
#define INIFILE_MAPPING_APPEND_BASE_NAME 0x10000000
#define INIFILE_MAPPING_APPEND_APPLICATION_NAME 0x20000000
#define INIFILE_MAPPING_SOFTWARE_RELATIVE 0x40000000
#define INIFILE_MAPPING_USER_RELATIVE 0x80000000
typedef struct _INIFILE_MAPPING_APPNAME {
struct _INIFILE_MAPPING_APPNAME *Next;
UNICODE_STRING Name;
PINIFILE_MAPPING_VARNAME VariableNames;
PINIFILE_MAPPING_VARNAME DefaultVarNameMapping;
} INIFILE_MAPPING_APPNAME, *PINIFILE_MAPPING_APPNAME;
typedef struct _INIFILE_MAPPING_FILENAME {
struct _INIFILE_MAPPING_FILENAME *Next;
UNICODE_STRING Name;
PINIFILE_MAPPING_APPNAME ApplicationNames;
PINIFILE_MAPPING_APPNAME DefaultAppNameMapping;
} INIFILE_MAPPING_FILENAME, *PINIFILE_MAPPING_FILENAME;
typedef struct _INIFILE_MAPPING {
PINIFILE_MAPPING_FILENAME FileNames;
PINIFILE_MAPPING_FILENAME DefaultFileNameMapping;
PINIFILE_MAPPING_FILENAME WinIniFileMapping;
ULONG Reserved;
} INIFILE_MAPPING, *PINIFILE_MAPPING;
//
// NLS Information.
//
#define NLS_INVALID_INFO_CHAR 0xffff /* marks cache string as invalid */
#define MAX_REG_VAL_SIZE 80 /* max size of registry value */
typedef struct _NLS_USER_INFO {
WCHAR sAbbrevLangName[MAX_REG_VAL_SIZE];
WCHAR iCountry[MAX_REG_VAL_SIZE];
WCHAR sCountry[MAX_REG_VAL_SIZE];
WCHAR sList[MAX_REG_VAL_SIZE];
WCHAR iMeasure[MAX_REG_VAL_SIZE];
WCHAR sDecimal[MAX_REG_VAL_SIZE];
WCHAR sThousand[MAX_REG_VAL_SIZE];
WCHAR sGrouping[MAX_REG_VAL_SIZE];
WCHAR iDigits[MAX_REG_VAL_SIZE];
WCHAR iLZero[MAX_REG_VAL_SIZE];
WCHAR iNegNumber[MAX_REG_VAL_SIZE];
WCHAR sCurrency[MAX_REG_VAL_SIZE];
WCHAR sMonDecSep[MAX_REG_VAL_SIZE];
WCHAR sMonThouSep[MAX_REG_VAL_SIZE];
WCHAR sMonGrouping[MAX_REG_VAL_SIZE];
WCHAR iCurrDigits[MAX_REG_VAL_SIZE];
WCHAR iCurrency[MAX_REG_VAL_SIZE];
WCHAR iNegCurr[MAX_REG_VAL_SIZE];
WCHAR sPosSign[MAX_REG_VAL_SIZE];
WCHAR sNegSign[MAX_REG_VAL_SIZE];
WCHAR sTimeFormat[MAX_REG_VAL_SIZE];
WCHAR sTime[MAX_REG_VAL_SIZE];
WCHAR iTime[MAX_REG_VAL_SIZE];
WCHAR iTLZero[MAX_REG_VAL_SIZE];
WCHAR iTimeMarkPosn[MAX_REG_VAL_SIZE];
WCHAR s1159[MAX_REG_VAL_SIZE];
WCHAR s2359[MAX_REG_VAL_SIZE];
WCHAR sShortDate[MAX_REG_VAL_SIZE];
WCHAR sDate[MAX_REG_VAL_SIZE];
WCHAR iDate[MAX_REG_VAL_SIZE];
WCHAR sLongDate[MAX_REG_VAL_SIZE];
WCHAR iCalType[MAX_REG_VAL_SIZE];
WCHAR iFirstDay[MAX_REG_VAL_SIZE];
WCHAR iFirstWeek[MAX_REG_VAL_SIZE];
WCHAR sLocale[MAX_REG_VAL_SIZE];
LCID UserLocaleId;
BOOL fCacheValid;
} NLS_USER_INFO, *PNLS_USER_INFO;
BOOLEAN
BaseRtlInitialize(
PVOID DllHandle,
PVOID Heap,
ULONG TagBase
);
ULONG BaseRtlTag;
PVOID BaseRtlHeap;
#define MAKE_RTL_TAG( t ) (RTL_HEAP_MAKE_TAG( BaseRtlTag, t ))
#define ATOM_TAG 0