3 Copyright (c) Alex Ionescu. All rights reserved.
11 Type definitions for the Run-Time Library
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
29 // Maximum Atom Length
31 #define RTL_MAXIMUM_ATOM_LENGTH 255
34 // Process Parameters Flags
36 #define RTL_USER_PROCESS_PARAMETERS_NORMALIZED 0x01
37 #define RTL_USER_PROCESS_PARAMETERS_PROFILE_USER 0x02
38 #define RTL_USER_PROCESS_PARAMETERS_PROFILE_SERVER 0x04
39 #define RTL_USER_PROCESS_PARAMETERS_PROFILE_KERNEL 0x08
40 #define RTL_USER_PROCESS_PARAMETERS_UNKNOWN 0x10
41 #define RTL_USER_PROCESS_PARAMETERS_RESERVE_1MB 0x20
42 #define RTL_USER_PROCESS_PARAMETERS_DISABLE_HEAP_CHECKS 0x100
43 #define RTL_USER_PROCESS_PARAMETERS_PROCESS_OR_1 0x200
44 #define RTL_USER_PROCESS_PARAMETERS_PROCESS_OR_2 0x400
49 #define EXCEPTION_CHAIN_END ((PEXCEPTION_REGISTRATION_RECORD)-1)
50 #define EXCEPTION_UNWINDING 0x02
51 #define EXCEPTION_EXIT_UNWIND 0x04
52 #define EXCEPTION_STACK_INVALID 0x08
53 #define EXCEPTION_NESTED_CALL 0x10
54 #define EXCEPTION_TARGET_UNWIND 0x20
55 #define EXCEPTION_COLLIDED_UNWIND 0x20
58 // Range and Range List Flags
60 #define RTL_RANGE_LIST_ADD_IF_CONFLICT 0x00000001
61 #define RTL_RANGE_LIST_ADD_SHARED 0x00000002
63 #define RTL_RANGE_SHARED 0x01
64 #define RTL_RANGE_CONFLICT 0x02
69 #define RTL_REGISTRY_ABSOLUTE 0
70 #define RTL_REGISTRY_SERVICES 1
71 #define RTL_REGISTRY_CONTROL 2
72 #define RTL_REGISTRY_WINDOWS_NT 3
73 #define RTL_REGISTRY_DEVICEMAP 4
74 #define RTL_REGISTRY_USER 5
75 #define RTL_REGISTRY_MAXIMUM 6
76 #define RTL_REGISTRY_HANDLE 0x40000000
77 #define RTL_REGISTRY_OPTIONAL 0x80000000
78 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
79 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
80 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
81 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
82 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
83 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
84 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
89 #define VER_MINORVERSION 0x0000001
90 #define VER_MAJORVERSION 0x0000002
91 #define VER_BUILDNUMBER 0x0000004
92 #define VER_PLATFORMID 0x0000008
93 #define VER_SERVICEPACKMINOR 0x0000010
94 #define VER_SERVICEPACKMAJOR 0x0000020
95 #define VER_SUITENAME 0x0000040
96 #define VER_PRODUCT_TYPE 0x0000080
97 #define VER_PLATFORM_WIN32s 0
98 #define VER_PLATFORM_WIN32_WINDOWS 1
99 #define VER_PLATFORM_WIN32_NT 2
101 #define VER_GREATER 2
102 #define VER_GREATER_EQUAL 3
104 #define VER_LESS_EQUAL 5
107 #define VER_CONDITION_MASK 7
108 #define VER_NUM_BITS_PER_CONDITION_MASK 3
113 #define TIME_ZONE_ID_UNKNOWN 0
114 #define TIME_ZONE_ID_STANDARD 1
115 #define TIME_ZONE_ID_DAYLIGHT 2
118 // RTL Lock Type (Critical Section or Resource)
120 #define RTL_CRITSECT_TYPE 0
121 #define RTL_RESOURCE_TYPE 1
123 #ifdef NTOS_MODE_USER
126 // String Hash Algorithms
128 #define HASH_STRING_ALGORITHM_DEFAULT 0
129 #define HASH_STRING_ALGORITHM_X65599 1
130 #define HASH_STRING_ALGORITHM_INVALID 0xffffffff
133 // RtlDuplicateString Flags
135 #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
136 #define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
141 #define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
142 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
143 #define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
145 #define MAXIMUM_LEADBYTES 12
150 #define RTL_DEBUG_QUERY_MODULES 0x01
151 #define RTL_DEBUG_QUERY_BACKTRACES 0x02
152 #define RTL_DEBUG_QUERY_HEAPS 0x04
153 #define RTL_DEBUG_QUERY_HEAP_TAGS 0x08
154 #define RTL_DEBUG_QUERY_HEAP_BLOCKS 0x10
155 #define RTL_DEBUG_QUERY_LOCKS 0x20
160 #define RTL_HANDLE_VALID 0x1
165 #define RTL_ATOM_IS_PINNED 0x1
170 #ifdef NTOS_MODE_USER
171 extern BOOLEAN NTSYSAPI NLS_MB_CODE_PAGE_TAG
;
172 extern BOOLEAN NTSYSAPI NLS_MB_OEM_CODE_PAGE_TAG
;
175 // Constant String Macro
177 #define RTL_CONSTANT_STRING(__SOURCE_STRING__) \
179 sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \
180 sizeof(__SOURCE_STRING__), \
181 (__SOURCE_STRING__) \
186 #ifdef NTOS_MODE_USER
189 // Table and Compare result types
191 typedef enum _TABLE_SEARCH_RESULT
197 } TABLE_SEARCH_RESULT
;
199 typedef enum _RTL_GENERIC_COMPARE_RESULTS
204 } RTL_GENERIC_COMPARE_RESULTS
;
209 // ACL Query Information Classes
211 typedef enum _ACL_INFORMATION_CLASS
213 AclRevisionInformation
= 1,
215 } ACL_INFORMATION_CLASS
;
222 typedef enum _RTL_PATH_TYPE
226 ABSOLUTE_DRIVE_PATH
, // "c:/foo"
227 RELATIVE_DRIVE_PATH
, // "c:foo"
228 ABSOLUTE_PATH
, // "/foo"
229 RELATIVE_PATH
, // "foo"
230 DEVICE_PATH
, // "//./foo"
231 UNC_DOT_PATH
// "//."
234 #ifndef NTOS_MODE_USER
237 // Callback function for RTL Timers or Registered Waits
240 (NTAPI
*WAITORTIMERCALLBACKFUNC
)(
242 BOOLEAN fTimerOrWaitFired
246 // Handler during Vectored RTL Exceptions
249 (NTAPI
*PVECTORED_EXCEPTION_HANDLER
)(
250 PEXCEPTION_POINTERS ExceptionPointers
256 // Handler during regular RTL Exceptions
258 typedef EXCEPTION_DISPOSITION
259 (NTAPI
*PEXCEPTION_ROUTINE
)(
260 IN
struct _EXCEPTION_RECORD
*ExceptionRecord
,
261 IN PVOID EstablisherFrame
,
262 IN OUT
struct _CONTEXT
*ContextRecord
,
263 IN OUT PVOID DispatcherContext
269 // Callback for RTL Heap Enumeration
272 (*PHEAP_ENUMERATION_ROUTINE
)(
278 // Thread and Process Start Routines for RtlCreateUserThread/Process
280 typedef ULONG (NTAPI
*PTHREAD_START_ROUTINE
)(
285 (NTAPI
*PRTL_BASE_PROCESS_START_ROUTINE
)(
286 PTHREAD_START_ROUTINE StartAddress
,
291 // Declare empty structure definitions so that they may be referenced by
292 // routines before they are defined
294 struct _RTL_AVL_TABLE
;
295 struct _RTL_GENERIC_TABLE
;
297 typedef struct _COMPRESSED_DATA_INFO COMPRESSED_DATA_INFO
, *PCOMPRESSED_DATA_INFO
;
300 // Routines and callbacks for the RTL AVL/Generic Table package
303 (NTAPI
*PRTL_AVL_MATCH_FUNCTION
)(
304 struct _RTL_AVL_TABLE
*Table
,
309 typedef RTL_GENERIC_COMPARE_RESULTS
310 (NTAPI
*PRTL_AVL_COMPARE_ROUTINE
) (
311 struct _RTL_AVL_TABLE
*Table
,
316 typedef RTL_GENERIC_COMPARE_RESULTS
317 (NTAPI
*PRTL_GENERIC_COMPARE_ROUTINE
) (
318 struct _RTL_GENERIC_TABLE
*Table
,
324 (NTAPI
*PRTL_GENERIC_ALLOCATE_ROUTINE
) (
325 struct _RTL_GENERIC_TABLE
*Table
,
330 (NTAPI
*PRTL_GENERIC_FREE_ROUTINE
) (
331 struct _RTL_GENERIC_TABLE
*Table
,
336 (NTAPI
*PRTL_AVL_ALLOCATE_ROUTINE
) (
337 struct _RTL_AVL_TABLE
*Table
,
342 (NTAPI
*PRTL_AVL_FREE_ROUTINE
) (
343 struct _RTL_AVL_TABLE
*Table
,
348 // RTL Query Registry callback
351 (NTAPI
*PRTL_QUERY_REGISTRY_ROUTINE
)(
355 IN ULONG ValueLength
,
357 IN PVOID EntryContext
361 // RTL Range List callbacks
363 #ifdef NTOS_MODE_USER
365 (NTAPI
*PRTL_CONFLICT_RANGE_CALLBACK
)(
367 struct _RTL_RANGE
*Range
371 // Custom Heap Commit Routine for RtlCreateHeap
374 (NTAPI
* PRTL_HEAP_COMMIT_ROUTINE
)(
376 IN OUT PVOID
*CommitAddress
,
377 IN OUT PSIZE_T CommitSize
381 // Version Info redefinitions
383 typedef OSVERSIONINFOW RTL_OSVERSIONINFOW
;
384 typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW
;
385 typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW
;
386 typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW
;
389 // Simple pointer definitions
391 typedef ACL_REVISION_INFORMATION
*PACL_REVISION_INFORMATION
;
392 typedef ACL_SIZE_INFORMATION
*PACL_SIZE_INFORMATION
;
395 // Parameters for RtlCreateHeap
397 typedef struct _RTL_HEAP_PARAMETERS
400 SIZE_T SegmentReserve
;
401 SIZE_T SegmentCommit
;
402 SIZE_T DeCommitFreeBlockThreshold
;
403 SIZE_T DeCommitTotalFreeThreshold
;
404 SIZE_T MaximumAllocationSize
;
405 SIZE_T VirtualMemoryThreshold
;
406 SIZE_T InitialCommit
;
407 SIZE_T InitialReserve
;
408 PRTL_HEAP_COMMIT_ROUTINE CommitRoutine
;
410 } RTL_HEAP_PARAMETERS
, *PRTL_HEAP_PARAMETERS
;
413 // RTL Bitmap structures
415 typedef struct _RTL_BITMAP
419 } RTL_BITMAP
, *PRTL_BITMAP
;
421 typedef struct _RTL_BITMAP_RUN
425 } RTL_BITMAP_RUN
, *PRTL_BITMAP_RUN
;
428 // RtlGenerateXxxName context
430 typedef struct _GENERATE_NAME_CONTEXT
433 BOOLEAN CheckSumInserted
;
436 ULONG ExtensionLength
;
437 WCHAR ExtensionBuffer
[4];
438 ULONG LastIndexValue
;
439 } GENERATE_NAME_CONTEXT
, *PGENERATE_NAME_CONTEXT
;
442 // RTL Splay and Balanced Links structures
444 typedef struct _RTL_SPLAY_LINKS
446 struct _RTL_SPLAY_LINKS
*Parent
;
447 struct _RTL_SPLAY_LINKS
*LeftChild
;
448 struct _RTL_SPLAY_LINKS
*RightChild
;
449 } RTL_SPLAY_LINKS
, *PRTL_SPLAY_LINKS
;
451 typedef struct _RTL_BALANCED_LINKS
453 struct _RTL_BALANCED_LINKS
*Parent
;
454 struct _RTL_BALANCED_LINKS
*LeftChild
;
455 struct _RTL_BALANCED_LINKS
*RightChild
;
458 } RTL_BALANCED_LINKS
, *PRTL_BALANCED_LINKS
;
461 // RTL Avl/Generic Tables
463 typedef struct _RTL_GENERIC_TABLE
465 PRTL_SPLAY_LINKS TableRoot
;
466 LIST_ENTRY InsertOrderList
;
467 PLIST_ENTRY OrderedPointer
;
468 ULONG WhichOrderedElement
;
469 ULONG NumberGenericTableElements
;
470 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
;
471 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
;
472 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
;
474 } RTL_GENERIC_TABLE
, *PRTL_GENERIC_TABLE
;
476 typedef struct _RTL_AVL_TABLE
478 RTL_BALANCED_LINKS BalancedRoot
;
479 PVOID OrderedPointer
;
480 ULONG WhichOrderedElement
;
481 ULONG NumberGenericTableElements
;
483 PRTL_BALANCED_LINKS RestartKey
;
485 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
;
486 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
;
487 PRTL_AVL_FREE_ROUTINE FreeRoutine
;
489 } RTL_AVL_TABLE
, *PRTL_AVL_TABLE
;
492 // RtlQueryRegistry Data
494 typedef struct _RTL_QUERY_REGISTRY_TABLE
496 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine
;
503 } RTL_QUERY_REGISTRY_TABLE
, *PRTL_QUERY_REGISTRY_TABLE
;
506 // RTL Unicode Table Structures
508 typedef struct _UNICODE_PREFIX_TABLE_ENTRY
512 struct _UNICODE_PREFIX_TABLE_ENTRY
*NextPrefixTree
;
513 struct _UNICODE_PREFIX_TABLE_ENTRY
*CaseMatch
;
514 RTL_SPLAY_LINKS Links
;
515 PUNICODE_STRING Prefix
;
516 } UNICODE_PREFIX_TABLE_ENTRY
, *PUNICODE_PREFIX_TABLE_ENTRY
;
518 typedef struct _UNICODE_PREFIX_TABLE
522 PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree
;
523 PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry
;
524 } UNICODE_PREFIX_TABLE
, *PUNICODE_PREFIX_TABLE
;
527 // Time Structure for RTL Time calls
529 typedef struct _TIME_FIELDS
539 } TIME_FIELDS
, *PTIME_FIELDS
;
545 ACCESS_MASK AccessMask
;
549 // Information Structures for RTL Debug Functions
551 typedef struct _RTL_PROCESS_MODULE_INFORMATION
560 USHORT ModuleNameOffset
;
562 } RTL_PROCESS_MODULE_INFORMATION
, *PRTL_PROCESS_MODULE_INFORMATION
;
564 typedef struct _RTL_PROCESS_MODULES
567 RTL_PROCESS_MODULE_INFORMATION ModuleEntry
[1];
568 } RTL_PROCESS_MODULES
, *PRTL_PROCESS_MODULES
;
570 typedef struct _RTL_PROCESS_HEAP_INFORMATION
583 } RTL_PROCESS_HEAP_INFORMATION
, *PRTL_PROCESS_HEAP_INFORMATION
;
585 typedef struct _RTL_PROCESS_HEAPS
588 RTL_PROCESS_HEAP_INFORMATION HeapEntry
[1];
589 } RTL_PROCESS_HEAPS
, *PRTL_PROCESS_HEAPS
;
591 typedef struct _RTL_PROCESS_LOCK_INFORMATION
595 USHORT CreatorBackTraceIndex
;
598 ULONG ContentionCount
;
600 ULONG RecursionCount
;
601 ULONG NumberOfSharedWaiters
;
602 ULONG NumberOfExclusiveWaiters
;
603 } RTL_PROCESS_LOCK_INFORMATION
, *PRTL_PROCESS_LOCK_INFORMATION
;
605 typedef struct _RTL_PROCESS_LOCKS
608 RTL_PROCESS_LOCK_INFORMATION LockEntry
[1];
609 } RTL_PROCESS_LOCKS
, *PRTL_PROCESS_LOCKS
;
611 typedef struct _RTL_PROCESS_BACKTRACE_INFORMATION
613 PVOID SymbolicBackTrace
;
618 } RTL_PROCESS_BACKTRACE_INFORMATION
, *PRTL_PROCESS_BACKTRACE_INFORMATION
;
620 typedef struct _RTL_PROCESS_BACKTRACES
622 ULONG CommittedMemory
;
623 ULONG ReservedMemory
;
624 ULONG NumberOfBackTraceLookups
;
625 ULONG NumberOfBackTraces
;
626 RTL_PROCESS_BACKTRACE_INFORMATION BackTraces
[1];
627 } RTL_PROCESS_BACKTRACES
, *PRTL_PROCESS_BACKTRACES
;
629 typedef struct _RTL_DEBUG_BUFFER
631 HANDLE SectionHandle
;
633 PVOID RemoteSectionBase
;
634 ULONG SectionBaseDelta
;
635 HANDLE EventPairHandle
;
637 HANDLE RemoteThreadHandle
;
642 PRTL_PROCESS_MODULES ModuleInformation
;
643 PRTL_PROCESS_BACKTRACES BackTraceInformation
;
644 PRTL_PROCESS_HEAPS HeapInformation
;
645 PRTL_PROCESS_LOCKS LockInformation
;
647 } RTL_DEBUG_BUFFER
, *PRTL_DEBUG_BUFFER
;
650 // RTL Handle Structures
652 typedef struct _RTL_HANDLE_TABLE_ENTRY
655 struct _RTL_HANDLE_TABLE_ENTRY
*NextFree
;
656 } RTL_HANDLE_TABLE_ENTRY
, *PRTL_HANDLE_TABLE_ENTRY
;
658 typedef struct _RTL_HANDLE_TABLE
660 ULONG MaximumNumberOfHandles
;
661 ULONG SizeOfHandleTableEntry
;
663 PRTL_HANDLE_TABLE_ENTRY FreeHandles
;
664 PRTL_HANDLE_TABLE_ENTRY CommittedHandles
;
665 PRTL_HANDLE_TABLE_ENTRY UnCommittedHandles
;
666 PRTL_HANDLE_TABLE_ENTRY MaxReservedHandles
;
667 } RTL_HANDLE_TABLE
, *PRTL_HANDLE_TABLE
;
672 typedef struct _EXCEPTION_REGISTRATION_RECORD
674 struct _EXCEPTION_REGISTRATION_RECORD
*Next
;
675 PEXCEPTION_ROUTINE Handler
;
676 } EXCEPTION_REGISTRATION_RECORD
, *PEXCEPTION_REGISTRATION_RECORD
;
679 // Current Directory Structures
681 typedef struct _CURDIR
683 UNICODE_STRING DosPath
;
687 typedef struct RTL_DRIVE_LETTER_CURDIR
692 UNICODE_STRING DosPath
;
693 } RTL_DRIVE_LETTER_CURDIR
, *PRTL_DRIVE_LETTER_CURDIR
;
695 #ifndef NTOS_MODE_USER
698 // RTL Critical Section Structures
700 typedef struct _RTL_CRITICAL_SECTION_DEBUG
703 USHORT CreatorBackTraceIndex
;
704 struct _RTL_CRITICAL_SECTION
*CriticalSection
;
705 LIST_ENTRY ProcessLocksList
;
707 ULONG ContentionCount
;
709 } RTL_CRITICAL_SECTION_DEBUG
, *PRTL_CRITICAL_SECTION_DEBUG
, RTL_RESOURCE_DEBUG
, *PRTL_RESOURCE_DEBUG
;
711 typedef struct _RTL_CRITICAL_SECTION
713 PRTL_CRITICAL_SECTION_DEBUG DebugInfo
;
717 HANDLE LockSemaphore
;
719 } RTL_CRITICAL_SECTION
, *PRTL_CRITICAL_SECTION
;
724 // RTL Range List Structures
726 typedef struct _RTL_RANGE_LIST
732 } RTL_RANGE_LIST
, *PRTL_RANGE_LIST
;
734 typedef struct _RTL_RANGE
742 } RTL_RANGE
, *PRTL_RANGE
;
744 typedef struct _RANGE_LIST_ITERATOR
746 PLIST_ENTRY RangeListHead
;
747 PLIST_ENTRY MergedHead
;
750 } RTL_RANGE_LIST_ITERATOR
, *PRTL_RANGE_LIST_ITERATOR
;
757 typedef struct _RTL_RESOURCE
759 RTL_CRITICAL_SECTION Lock
;
760 HANDLE SharedSemaphore
;
762 HANDLE ExclusiveSemaphore
;
763 ULONG ExclusiveWaiters
;
768 } RTL_RESOURCE
, *PRTL_RESOURCE
;
771 // RTL Message Structures for PE Resources
773 typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
778 } RTL_MESSAGE_RESOURCE_ENTRY
, *PRTL_MESSAGE_RESOURCE_ENTRY
;
780 typedef struct _RTL_MESSAGE_RESOURCE_BLOCK
784 ULONG OffsetToEntries
;
785 } RTL_MESSAGE_RESOURCE_BLOCK
, *PRTL_MESSAGE_RESOURCE_BLOCK
;
787 typedef struct _RTL_MESSAGE_RESOURCE_DATA
789 ULONG NumberOfBlocks
;
790 RTL_MESSAGE_RESOURCE_BLOCK Blocks
[1];
791 } RTL_MESSAGE_RESOURCE_DATA
, *PRTL_MESSAGE_RESOURCE_DATA
;
794 // Structures for RtlCreateUserProcess
796 typedef struct _RTL_USER_PROCESS_PARAMETERS
802 HANDLE ConsoleHandle
;
804 HANDLE StandardInput
;
805 HANDLE StandardOutput
;
806 HANDLE StandardError
;
807 CURDIR CurrentDirectory
;
808 UNICODE_STRING DllPath
;
809 UNICODE_STRING ImagePathName
;
810 UNICODE_STRING CommandLine
;
820 ULONG ShowWindowFlags
;
821 UNICODE_STRING WindowTitle
;
822 UNICODE_STRING DesktopInfo
;
823 UNICODE_STRING ShellInfo
;
824 UNICODE_STRING RuntimeData
;
825 RTL_DRIVE_LETTER_CURDIR CurrentDirectories
[32];
826 } RTL_USER_PROCESS_PARAMETERS
, *PRTL_USER_PROCESS_PARAMETERS
;
828 typedef struct _RTL_USER_PROCESS_INFORMATION
831 HANDLE ProcessHandle
;
834 SECTION_IMAGE_INFORMATION ImageInformation
;
835 } RTL_USER_PROCESS_INFORMATION
, *PRTL_USER_PROCESS_INFORMATION
;
838 // RTL Atom Table Structures
840 typedef struct _RTL_ATOM_TABLE_ENTRY
842 struct _RTL_ATOM_TABLE_ENTRY
*HashLink
;
845 USHORT ReferenceCount
;
849 } RTL_ATOM_TABLE_ENTRY
, *PRTL_ATOM_TABLE_ENTRY
;
851 typedef struct _RTL_ATOM_TABLE
856 #ifdef NTOS_MODE_USER
857 RTL_CRITICAL_SECTION CriticalSection
;
859 FAST_MUTEX FastMutex
;
864 #ifdef NTOS_MODE_USER
865 RTL_HANDLE_TABLE RtlHandleTable
;
867 PHANDLE_TABLE ExHandleTable
;
870 ULONG NumberOfBuckets
;
871 PRTL_ATOM_TABLE_ENTRY Buckets
[1];
872 } RTL_ATOM_TABLE
, *PRTL_ATOM_TABLE
;
874 #ifndef NTOS_MODE_USER
877 // System Time and Timezone Structures
879 typedef struct _SYSTEMTIME
888 USHORT wMilliseconds
;
889 } SYSTEMTIME
, *PSYSTEMTIME
, *LPSYSTEMTIME
;
891 typedef struct _TIME_ZONE_INFORMATION
894 WCHAR StandardName
[32];
895 SYSTEMTIME StandardDate
;
897 WCHAR DaylightName
[32];
898 SYSTEMTIME DaylightDate
;
900 } TIME_ZONE_INFORMATION
, *PTIME_ZONE_INFORMATION
, *LPTIME_ZONE_INFORMATION
;
905 // Header for NLS Files
907 typedef struct _NLS_FILE_HEADER
911 USHORT MaximumCharacterSize
;
913 USHORT UniDefaultChar
;
914 USHORT TransDefaultChar
;
915 USHORT TransUniDefaultChar
;
917 UCHAR LeadByte
[MAXIMUM_LEADBYTES
];
918 } NLS_FILE_HEADER
, *PNLS_FILE_HEADER
;