2 * PROJECT: ReactOS Native Headers
3 * FILE: include/ndk/rtltypes.h
4 * PURPOSE: Defintions for Runtime Library Types not defined in DDK/IFS
5 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
12 /* DEPENDENCIES **************************************************************/
15 /* CONSTANTS *****************************************************************/
16 #define MAXIMUM_LEADBYTES 12
18 #define PPF_NORMALIZED 0x01
19 #define PPF_PROFILE_USER 0x02
20 #define PPF_PROFILE_SERVER 0x04
21 #define PPF_PROFILE_KERNEL 0x08
23 #define PPF_RESERVE_1MB 0x20
24 #define PPF_DISABLE_HEAP_CHECKS 0x100
25 #define PPF_PROCESS_OR_1 0x200
26 #define PPF_PROCESS_OR_2 0x400
28 #define PEB_BASE (0x7FFDF000)
30 #define EXCEPTION_CHAIN_END ((PEXCEPTION_REGISTRATION_RECORD)-1)
31 #define EXCEPTION_CONTINUE_SEARCH 0
32 #define EXCEPTION_EXECUTE_HANDLER 1
34 #define EXCEPTION_UNWINDING 0x02
35 #define EXCEPTION_EXIT_UNWIND 0x04
36 #define EXCEPTION_STACK_INVALID 0x8
37 #define EXCEPTION_NESTED_CALL 0x10
38 #define EXCEPTION_TARGET_UNWIND 0x20
39 #define EXCEPTION_COLLIDED_UNWIND 0x20
41 #define EH_NONCONTINUABLE 0x01
42 #define EH_UNWINDING 0x02
43 #define EH_EXIT_UNWIND 0x04
44 #define EH_STACK_INVALID 0x08
45 #define EH_NESTED_CALL 0x10
47 #define RTL_RANGE_LIST_ADD_IF_CONFLICT 0x00000001
48 #define RTL_RANGE_LIST_ADD_SHARED 0x00000002
50 #define RTL_RANGE_SHARED 0x01
51 #define RTL_RANGE_CONFLICT 0x02
53 /* Run-Time Library (RTL) Registry Constants */
54 #define RTL_REGISTRY_ABSOLUTE 0
55 #define RTL_REGISTRY_SERVICES 1
56 #define RTL_REGISTRY_CONTROL 2
57 #define RTL_REGISTRY_WINDOWS_NT 3
58 #define RTL_REGISTRY_DEVICEMAP 4
59 #define RTL_REGISTRY_USER 5
60 #define RTL_REGISTRY_MAXIMUM 6
61 #define RTL_REGISTRY_HANDLE 0x40000000
62 #define RTL_REGISTRY_OPTIONAL 0x80000000
63 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
64 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
65 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
66 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
67 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
68 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
69 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
71 /* Version Constants */
72 #define VER_MINORVERSION 0x0000001
73 #define VER_MAJORVERSION 0x0000002
74 #define VER_BUILDNUMBER 0x0000004
75 #define VER_PLATFORMID 0x0000008
76 #define VER_SERVICEPACKMINOR 0x0000010
77 #define VER_SERVICEPACKMAJOR 0x0000020
78 #define VER_SUITENAME 0x0000040
79 #define VER_PRODUCT_TYPE 0x0000080
80 #define VER_PLATFORM_WIN32s 0
81 #define VER_PLATFORM_WIN32_WINDOWS 1
82 #define VER_PLATFORM_WIN32_NT 2
85 #define VER_GREATER_EQUAL 3
87 #define VER_LESS_EQUAL 5
90 #define VER_CONDITION_MASK 7
91 #define VER_NUM_BITS_PER_CONDITION_MASK 3
93 #define RTL_CRITSECT_TYPE 0
94 #define RTL_RESOURCE_TYPE 1
97 /* RTL String Hash Algorithms */
98 #define HASH_STRING_ALGORITHM_DEFAULT 0
99 #define HASH_STRING_ALGORITHM_X65599 1
100 #define HASH_STRING_ALGORITHM_INVALID 0xffffffff
102 /* RtlDuplicateString settings */
103 #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
104 #define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
106 /* For Size conversion macros */
107 #define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
108 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
109 #define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
111 #define MAX_ATOM_LEN 255 /* TCHARS not including nullterm */
117 IN PLIST_ENTRY ListHead
)
119 ListHead
->Flink
= ListHead
->Blink
= ListHead
;
125 IN PLIST_ENTRY ListHead
,
126 IN PLIST_ENTRY Entry
)
128 PLIST_ENTRY OldFlink
;
129 OldFlink
= ListHead
->Flink
;
130 Entry
->Flink
= OldFlink
;
131 Entry
->Blink
= ListHead
;
132 OldFlink
->Blink
= Entry
;
133 ListHead
->Flink
= Entry
;
139 IN PLIST_ENTRY ListHead
,
140 IN PLIST_ENTRY Entry
)
142 PLIST_ENTRY OldBlink
;
143 OldBlink
= ListHead
->Blink
;
144 Entry
->Flink
= ListHead
;
145 Entry
->Blink
= OldBlink
;
146 OldBlink
->Flink
= Entry
;
147 ListHead
->Blink
= Entry
;
150 #define IsListEmpty(ListHead) \
151 ((ListHead)->Flink == (ListHead))
153 #define PopEntryList(ListHead) \
156 PSINGLE_LIST_ENTRY _FirstEntry; \
157 _FirstEntry = (ListHead)->Next; \
158 if (_FirstEntry != NULL) \
159 (ListHead)->Next = _FirstEntry->Next; \
162 #define PushEntryList(_ListHead, _Entry) \
163 (_Entry)->Next = (_ListHead)->Next; \
164 (_ListHead)->Next = (_Entry); \
169 IN PLIST_ENTRY Entry
)
171 PLIST_ENTRY OldFlink
;
172 PLIST_ENTRY OldBlink
;
174 OldFlink
= Entry
->Flink
;
175 OldBlink
= Entry
->Blink
;
176 OldFlink
->Blink
= OldBlink
;
177 OldBlink
->Flink
= OldFlink
;
178 return (OldFlink
== OldBlink
);
184 IN PLIST_ENTRY ListHead
)
189 Entry
= ListHead
->Flink
;
190 Flink
= Entry
->Flink
;
191 ListHead
->Flink
= Flink
;
192 Flink
->Blink
= ListHead
;
199 IN PLIST_ENTRY ListHead
)
204 Entry
= ListHead
->Blink
;
205 Blink
= Entry
->Blink
;
206 ListHead
->Blink
= Blink
;
207 Blink
->Flink
= ListHead
;
211 #define IsFirstEntry(ListHead, Entry) \
212 ((ListHead)->Flink == Entry)
214 #define IsLastEntry(ListHead, Entry) \
215 ((ListHead)->Blink == Entry)
218 * Constant String Macro
220 #define RTL_CONSTANT_STRING(__SOURCE_STRING__) \
222 sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \
223 sizeof(__SOURCE_STRING__), \
224 (__SOURCE_STRING__) \
227 #define RtlEqualLuid(L1, L2) (((L1)->HighPart == (L2)->HighPart) && \
228 ((L1)->LowPart == (L2)->LowPart))
231 /* FIXME: Rename these */
232 #define PDI_MODULES 0x01 /* The loaded modules of the process */
233 #define PDI_BACKTRACE 0x02 /* The heap stack back traces */
234 #define PDI_HEAPS 0x04 /* The heaps of the process */
235 #define PDI_HEAP_TAGS 0x08 /* The heap tags */
236 #define PDI_HEAP_BLOCKS 0x10 /* The heap blocks */
237 #define PDI_LOCKS 0x20 /* The locks created by the process */
239 /* RTL Handle Flags */
240 #define RTL_HANDLE_VALID 0x1
243 #define RTL_ATOM_IS_PINNED 0x1
245 /* EXPORTED DATA *************************************************************/
246 #ifdef NTOS_MODE_USER
247 extern BOOLEAN NTSYSAPI NLS_MB_CODE_PAGE_TAG
;
248 extern BOOLEAN NTSYSAPI NLS_MB_OEM_CODE_PAGE_TAG
;
251 /* ENUMERATIONS **************************************************************/
253 #ifdef NTOS_MODE_USER
254 typedef enum _TABLE_SEARCH_RESULT
260 } TABLE_SEARCH_RESULT
;
262 typedef enum _RTL_GENERIC_COMPARE_RESULTS
267 } RTL_GENERIC_COMPARE_RESULTS
;
273 UNC_PATH
, /* "//foo" */
274 ABSOLUTE_DRIVE_PATH
, /* "c:/foo" */
275 RELATIVE_DRIVE_PATH
, /* "c:foo" */
276 ABSOLUTE_PATH
, /* "/foo" */
277 RELATIVE_PATH
, /* "foo" */
278 DEVICE_PATH
, /* "//./foo" */
279 UNC_DOT_PATH
/* "//." */
282 /* FUNCTION TYPES ************************************************************/
283 #ifndef NTOS_MODE_USER
284 typedef VOID (NTAPI
*WAITORTIMERCALLBACKFUNC
)(PVOID
, BOOLEAN
);
288 typedef EXCEPTION_DISPOSITION
289 (NTAPI
*PEXCEPTION_ROUTINE
)(
290 IN
struct _EXCEPTION_RECORD
*ExceptionRecord
,
291 IN PVOID EstablisherFrame
,
292 IN OUT
struct _CONTEXT
*ContextRecord
,
293 IN OUT PVOID DispatcherContext
298 struct _RTL_AVL_TABLE
;
299 struct _RTL_GENERIC_TABLE
;
303 (*PHEAP_ENUMERATION_ROUTINE
)(
308 typedef LONG (NTAPI
*PVECTORED_EXCEPTION_HANDLER
)(
309 PEXCEPTION_POINTERS ExceptionPointers
312 typedef ULONG (NTAPI
*PTHREAD_START_ROUTINE
)(
317 (NTAPI
*PRTL_BASE_PROCESS_START_ROUTINE
)(
318 PTHREAD_START_ROUTINE StartAddress
,
323 (NTAPI
*PRTL_AVL_MATCH_FUNCTION
)(
324 struct _RTL_AVL_TABLE
*Table
,
329 typedef RTL_GENERIC_COMPARE_RESULTS
330 (NTAPI
*PRTL_AVL_COMPARE_ROUTINE
) (
331 struct _RTL_AVL_TABLE
*Table
,
336 typedef RTL_GENERIC_COMPARE_RESULTS
337 (NTAPI
*PRTL_GENERIC_COMPARE_ROUTINE
) (
338 struct _RTL_GENERIC_TABLE
*Table
,
344 (NTAPI
*PRTL_GENERIC_ALLOCATE_ROUTINE
) (
345 struct _RTL_GENERIC_TABLE
*Table
,
350 (NTAPI
*PRTL_GENERIC_FREE_ROUTINE
) (
351 struct _RTL_GENERIC_TABLE
*Table
,
356 (NTAPI
*PRTL_AVL_ALLOCATE_ROUTINE
) (
357 struct _RTL_AVL_TABLE
*Table
,
362 (NTAPI
*PRTL_AVL_FREE_ROUTINE
) (
363 struct _RTL_AVL_TABLE
*Table
,
368 (NTAPI
*PRTL_QUERY_REGISTRY_ROUTINE
)(
372 IN ULONG ValueLength
,
374 IN PVOID EntryContext
378 (NTAPI
* PRTL_HEAP_COMMIT_ROUTINE
)(
380 IN OUT PVOID
*CommitAddress
,
381 IN OUT PSIZE_T CommitSize
384 #ifdef NTOS_MODE_USER
386 (NTAPI
*PRTL_CONFLICT_RANGE_CALLBACK
) (
388 struct _RTL_RANGE
*Range
392 /* TYPES *********************************************************************/
394 #ifdef NTOS_MODE_USER
395 typedef OSVERSIONINFOW RTL_OSVERSIONINFOW
;
396 typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW
;
397 typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW
;
398 typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW
;
400 typedef struct _RTL_HEAP_PARAMETERS
403 SIZE_T SegmentReserve
;
404 SIZE_T SegmentCommit
;
405 SIZE_T DeCommitFreeBlockThreshold
;
406 SIZE_T DeCommitTotalFreeThreshold
;
407 SIZE_T MaximumAllocationSize
;
408 SIZE_T VirtualMemoryThreshold
;
409 SIZE_T InitialCommit
;
410 SIZE_T InitialReserve
;
411 PRTL_HEAP_COMMIT_ROUTINE CommitRoutine
;
413 } RTL_HEAP_PARAMETERS
, *PRTL_HEAP_PARAMETERS
;
415 typedef struct _RTL_BITMAP
419 } RTL_BITMAP
, *PRTL_BITMAP
;
421 typedef struct _RTL_BITMAP_RUN
425 } RTL_BITMAP_RUN
, *PRTL_BITMAP_RUN
;
427 typedef struct _COMPRESSED_DATA_INFO
429 USHORT CompressionFormatAndEngine
;
430 UCHAR CompressionUnitShift
;
434 USHORT NumberOfChunks
;
435 ULONG CompressedChunkSizes
[ANYSIZE_ARRAY
];
436 } COMPRESSED_DATA_INFO
, *PCOMPRESSED_DATA_INFO
;
438 typedef struct _GENERATE_NAME_CONTEXT
441 BOOLEAN CheckSumInserted
;
444 ULONG ExtensionLength
;
445 WCHAR ExtensionBuffer
[4];
446 ULONG LastIndexValue
;
447 } GENERATE_NAME_CONTEXT
, *PGENERATE_NAME_CONTEXT
;
449 typedef struct _RTL_SPLAY_LINKS
451 struct _RTL_SPLAY_LINKS
*Parent
;
452 struct _RTL_SPLAY_LINKS
*LeftChild
;
453 struct _RTL_SPLAY_LINKS
*RightChild
;
454 } RTL_SPLAY_LINKS
, *PRTL_SPLAY_LINKS
;
456 typedef ACL_REVISION_INFORMATION
*PACL_REVISION_INFORMATION
;
457 typedef ACL_SIZE_INFORMATION
*PACL_SIZE_INFORMATION
;
459 typedef struct _RTL_GENERIC_TABLE
461 PRTL_SPLAY_LINKS TableRoot
;
462 LIST_ENTRY InsertOrderList
;
463 PLIST_ENTRY OrderedPointer
;
464 ULONG WhichOrderedElement
;
465 ULONG NumberGenericTableElements
;
466 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
;
467 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
;
468 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
;
470 } RTL_GENERIC_TABLE
, *PRTL_GENERIC_TABLE
;
472 typedef struct _RTL_BALANCED_LINKS
474 struct _RTL_BALANCED_LINKS
*Parent
;
475 struct _RTL_BALANCED_LINKS
*LeftChild
;
476 struct _RTL_BALANCED_LINKS
*RightChild
;
479 } RTL_BALANCED_LINKS
, *PRTL_BALANCED_LINKS
;
481 typedef struct _RTL_AVL_TABLE
483 RTL_BALANCED_LINKS BalancedRoot
;
484 PVOID OrderedPointer
;
485 ULONG WhichOrderedElement
;
486 ULONG NumberGenericTableElements
;
488 PRTL_BALANCED_LINKS RestartKey
;
490 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
;
491 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
;
492 PRTL_AVL_FREE_ROUTINE FreeRoutine
;
494 } RTL_AVL_TABLE
, *PRTL_AVL_TABLE
;
496 typedef struct _RTL_QUERY_REGISTRY_TABLE
498 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine
;
505 } RTL_QUERY_REGISTRY_TABLE
, *PRTL_QUERY_REGISTRY_TABLE
;
507 typedef struct _UNICODE_PREFIX_TABLE_ENTRY
511 struct _UNICODE_PREFIX_TABLE_ENTRY
*NextPrefixTree
;
512 struct _UNICODE_PREFIX_TABLE_ENTRY
*CaseMatch
;
513 RTL_SPLAY_LINKS Links
;
514 PUNICODE_STRING Prefix
;
515 } UNICODE_PREFIX_TABLE_ENTRY
, *PUNICODE_PREFIX_TABLE_ENTRY
;
517 typedef struct _UNICODE_PREFIX_TABLE
521 PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree
;
522 PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry
;
523 } UNICODE_PREFIX_TABLE
, *PUNICODE_PREFIX_TABLE
;
525 typedef struct _TIME_FIELDS
535 } TIME_FIELDS
, *PTIME_FIELDS
;
538 typedef EXCEPTION_DISPOSITION
539 (*PEXCEPTION_HANDLER
)(
540 struct _EXCEPTION_RECORD
*,
549 ACCESS_MASK AccessMask
;
552 /* FIXME: Review definitions and give these guys a better name */
553 typedef struct _DEBUG_BUFFER
555 HANDLE SectionHandle
;
557 PVOID RemoteSectionBase
;
558 ULONG SectionBaseDelta
;
559 HANDLE EventPairHandle
;
561 HANDLE RemoteThreadHandle
;
566 PVOID ModuleInformation
;
567 PVOID BackTraceInformation
;
568 PVOID HeapInformation
;
569 PVOID LockInformation
;
571 } DEBUG_BUFFER
, *PDEBUG_BUFFER
;
573 typedef struct _DEBUG_MODULE_INFORMATION
582 USHORT ModuleNameOffset
;
584 } DEBUG_MODULE_INFORMATION
, *PDEBUG_MODULE_INFORMATION
;
586 typedef struct _DEBUG_HEAP_INFORMATION
599 } DEBUG_HEAP_INFORMATION
, *PDEBUG_HEAP_INFORMATION
;
601 typedef struct _DEBUG_LOCK_INFORMATION
605 USHORT CreatorBackTraceIndex
;
608 ULONG ContentionCount
;
610 ULONG RecursionCount
;
611 ULONG NumberOfSharedWaiters
;
612 ULONG NumberOfExclusiveWaiters
;
613 } DEBUG_LOCK_INFORMATION
, *PDEBUG_LOCK_INFORMATION
;
615 typedef struct _RTL_HANDLE_TABLE_ENTRY
618 struct _RTL_HANDLE_TABLE_ENTRY
*NextFree
;
619 } RTL_HANDLE_TABLE_ENTRY
, *PRTL_HANDLE_TABLE_ENTRY
;
621 typedef struct _RTL_HANDLE_TABLE
623 ULONG MaximumNumberOfHandles
;
624 ULONG SizeOfHandleTableEntry
;
626 PRTL_HANDLE_TABLE_ENTRY FreeHandles
;
627 PRTL_HANDLE_TABLE_ENTRY CommittedHandles
;
628 PRTL_HANDLE_TABLE_ENTRY UnCommittedHandles
;
629 PRTL_HANDLE_TABLE_ENTRY MaxReservedHandles
;
630 } RTL_HANDLE_TABLE
, *PRTL_HANDLE_TABLE
;
632 typedef struct _LOCK_INFORMATION
635 DEBUG_LOCK_INFORMATION LockEntry
[1];
636 } LOCK_INFORMATION
, *PLOCK_INFORMATION
;
638 typedef struct _HEAP_INFORMATION
641 DEBUG_HEAP_INFORMATION HeapEntry
[1];
642 } HEAP_INFORMATION
, *PHEAP_INFORMATION
;
644 typedef struct _MODULE_INFORMATION
647 DEBUG_MODULE_INFORMATION ModuleEntry
[1];
648 } MODULE_INFORMATION
, *PMODULE_INFORMATION
;
649 /* END REVIEW AREA */
651 typedef struct _EXCEPTION_REGISTRATION_RECORD
653 struct _EXCEPTION_REGISTRATION_RECORD
*Next
;
654 PEXCEPTION_HANDLER Handler
;
655 } EXCEPTION_REGISTRATION_RECORD
, *PEXCEPTION_REGISTRATION_RECORD
;
657 typedef struct _CURDIR
659 UNICODE_STRING DosPath
;
663 typedef struct RTL_DRIVE_LETTER_CURDIR
668 UNICODE_STRING DosPath
;
669 } RTL_DRIVE_LETTER_CURDIR
, *PRTL_DRIVE_LETTER_CURDIR
;
671 #ifndef NTOS_MODE_USER
672 typedef struct _RTL_CRITICAL_SECTION_DEBUG
675 USHORT CreatorBackTraceIndex
;
676 struct _RTL_CRITICAL_SECTION
*CriticalSection
;
677 LIST_ENTRY ProcessLocksList
;
679 ULONG ContentionCount
;
681 } RTL_CRITICAL_SECTION_DEBUG
, *PRTL_CRITICAL_SECTION_DEBUG
, RTL_RESOURCE_DEBUG
, *PRTL_RESOURCE_DEBUG
;
683 typedef struct _RTL_CRITICAL_SECTION
685 PRTL_CRITICAL_SECTION_DEBUG DebugInfo
;
689 HANDLE LockSemaphore
;
691 } RTL_CRITICAL_SECTION
, *PRTL_CRITICAL_SECTION
;
694 #ifdef NTOS_MODE_USER
695 typedef struct _RTL_RANGE_LIST
698 ULONG Flags
; /* RTL_RANGE_LIST_... flags */
701 } RTL_RANGE_LIST
, *PRTL_RANGE_LIST
;
703 typedef struct _RTL_RANGE
710 UCHAR Flags
; /* RTL_RANGE_... flags */
711 } RTL_RANGE
, *PRTL_RANGE
;
713 typedef struct _RANGE_LIST_ITERATOR
715 PLIST_ENTRY RangeListHead
;
716 PLIST_ENTRY MergedHead
;
719 } RTL_RANGE_LIST_ITERATOR
, *PRTL_RANGE_LIST_ITERATOR
;
723 typedef struct _RTL_RESOURCE
725 RTL_CRITICAL_SECTION Lock
;
726 HANDLE SharedSemaphore
;
728 HANDLE ExclusiveSemaphore
;
729 ULONG ExclusiveWaiters
;
732 ULONG TimeoutBoost
; /* ?? */
733 PVOID DebugInfo
; /* ?? */
734 } RTL_RESOURCE
, *PRTL_RESOURCE
;
736 typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
741 } RTL_MESSAGE_RESOURCE_ENTRY
, *PRTL_MESSAGE_RESOURCE_ENTRY
;
743 typedef struct _RTL_MESSAGE_RESOURCE_BLOCK
747 ULONG OffsetToEntries
;
748 } RTL_MESSAGE_RESOURCE_BLOCK
, *PRTL_MESSAGE_RESOURCE_BLOCK
;
750 typedef struct _RTL_MESSAGE_RESOURCE_DATA
752 ULONG NumberOfBlocks
;
753 RTL_MESSAGE_RESOURCE_BLOCK Blocks
[1];
754 } RTL_MESSAGE_RESOURCE_DATA
, *PRTL_MESSAGE_RESOURCE_DATA
;
756 typedef struct _NLS_FILE_HEADER
760 USHORT MaximumCharacterSize
; /* SBCS = 1, DBCS = 2 */
762 USHORT UniDefaultChar
;
763 USHORT TransDefaultChar
;
764 USHORT TransUniDefaultChar
;
766 UCHAR LeadByte
[MAXIMUM_LEADBYTES
];
767 } NLS_FILE_HEADER
, *PNLS_FILE_HEADER
;
769 typedef struct _RTL_USER_PROCESS_PARAMETERS
775 HANDLE ConsoleHandle
;
777 HANDLE StandardInput
;
778 HANDLE StandardOutput
;
779 HANDLE StandardError
;
780 CURDIR CurrentDirectory
;
781 UNICODE_STRING DllPath
;
782 UNICODE_STRING ImagePathName
;
783 UNICODE_STRING CommandLine
;
793 ULONG ShowWindowFlags
;
794 UNICODE_STRING WindowTitle
;
795 UNICODE_STRING DesktopInfo
;
796 UNICODE_STRING ShellInfo
;
797 UNICODE_STRING RuntimeData
;
798 RTL_DRIVE_LETTER_CURDIR CurrentDirectories
[32];
799 } RTL_USER_PROCESS_PARAMETERS
, *PRTL_USER_PROCESS_PARAMETERS
;
801 typedef struct _RTL_USER_PROCESS_INFORMATION
804 HANDLE ProcessHandle
;
807 SECTION_IMAGE_INFORMATION ImageInformation
;
808 } RTL_USER_PROCESS_INFORMATION
, *PRTL_USER_PROCESS_INFORMATION
;
810 typedef struct _RTL_ATOM_TABLE_ENTRY
812 struct _RTL_ATOM_TABLE_ENTRY
*HashLink
;
815 USHORT ReferenceCount
;
819 } RTL_ATOM_TABLE_ENTRY
, *PRTL_ATOM_TABLE_ENTRY
;
821 #ifdef NTOS_MODE_USER
822 typedef RTL_CRITICAL_SECTION FAST_MUTEX
;
823 typedef RTL_HANDLE_TABLE HANDLE_TABLE
, *PHANDLE_TABLE
;
825 typedef struct _RTL_ATOM_TABLE
830 RTL_CRITICAL_SECTION CriticalSection
;
831 FAST_MUTEX FastMutex
;
835 RTL_HANDLE_TABLE RtlHandleTable
;
836 PHANDLE_TABLE ExHandleTable
;
838 ULONG NumberOfBuckets
;
839 PRTL_ATOM_TABLE_ENTRY Buckets
[1];
840 } RTL_ATOM_TABLE
, *PRTL_ATOM_TABLE
;
842 #ifndef NTOS_MODE_USER
844 typedef struct _SYSTEMTIME
853 USHORT wMilliseconds
;
854 } SYSTEMTIME
, *PSYSTEMTIME
, *LPSYSTEMTIME
;
856 typedef struct _TIME_ZONE_INFORMATION
859 WCHAR StandardName
[32];
860 SYSTEMTIME StandardDate
;
862 WCHAR DaylightName
[32];
863 SYSTEMTIME DaylightDate
;
865 } TIME_ZONE_INFORMATION
, *PTIME_ZONE_INFORMATION
, *LPTIME_ZONE_INFORMATION
;
867 typedef enum _ACL_INFORMATION_CLASS
869 AclRevisionInformation
= 1,
871 } ACL_INFORMATION_CLASS
;
873 #define TIME_ZONE_ID_UNKNOWN 0
874 #define TIME_ZONE_ID_STANDARD 1
875 #define TIME_ZONE_ID_DAYLIGHT 2
876 #define TIME_ZONE_ID_INVALID 0xFFFFFFFF