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 **************************************************************/
14 /* CONSTANTS *****************************************************************/
15 #define MAXIMUM_LEADBYTES 12
17 #define PPF_NORMALIZED 0x01
18 #define PPF_PROFILE_USER 0x02
19 #define PPF_PROFILE_SERVER 0x04
20 #define PPF_PROFILE_KERNEL 0x08
22 #define PPF_RESERVE_1MB 0x20
23 #define PPF_DISABLE_HEAP_CHECKS 0x100
24 #define PPF_PROCESS_OR_1 0x200
25 #define PPF_PROCESS_OR_2 0x400
27 #define PEB_BASE (0x7FFDF000)
29 #define EXCEPTION_CHAIN_END ((PEXCEPTION_REGISTRATION_RECORD)-1)
30 #define EXCEPTION_CONTINUE_SEARCH 0
31 #define EXCEPTION_EXECUTE_HANDLER 1
33 #define EXCEPTION_UNWINDING 0x02
34 #define EXCEPTION_EXIT_UNWIND 0x04
35 #define EXCEPTION_STACK_INVALID 0x8
36 #define EXCEPTION_NESTED_CALL 0x10
37 #define EXCEPTION_TARGET_UNWIND 0x20
38 #define EXCEPTION_COLLIDED_UNWIND 0x20
40 #define EH_NONCONTINUABLE 0x01
41 #define EH_UNWINDING 0x02
42 #define EH_EXIT_UNWIND 0x04
43 #define EH_STACK_INVALID 0x08
44 #define EH_NESTED_CALL 0x10
46 #define RTL_RANGE_LIST_ADD_IF_CONFLICT 0x00000001
47 #define RTL_RANGE_LIST_ADD_SHARED 0x00000002
49 #define RTL_RANGE_SHARED 0x01
50 #define RTL_RANGE_CONFLICT 0x02
52 /* Run-Time Library (RTL) Registry Constants */
53 #define RTL_REGISTRY_ABSOLUTE 0
54 #define RTL_REGISTRY_SERVICES 1
55 #define RTL_REGISTRY_CONTROL 2
56 #define RTL_REGISTRY_WINDOWS_NT 3
57 #define RTL_REGISTRY_DEVICEMAP 4
58 #define RTL_REGISTRY_USER 5
59 #define RTL_REGISTRY_MAXIMUM 6
60 #define RTL_REGISTRY_HANDLE 0x40000000
61 #define RTL_REGISTRY_OPTIONAL 0x80000000
62 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
63 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
64 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
65 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
66 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
67 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
68 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
70 /* Version Constants */
71 #define VER_MINORVERSION 0x0000001
72 #define VER_MAJORVERSION 0x0000002
73 #define VER_BUILDNUMBER 0x0000004
74 #define VER_PLATFORMID 0x0000008
75 #define VER_SERVICEPACKMINOR 0x0000010
76 #define VER_SERVICEPACKMAJOR 0x0000020
77 #define VER_SUITENAME 0x0000040
78 #define VER_PRODUCT_TYPE 0x0000080
79 #define VER_PLATFORM_WIN32s 0
80 #define VER_PLATFORM_WIN32_WINDOWS 1
81 #define VER_PLATFORM_WIN32_NT 2
84 #define VER_GREATER_EQUAL 3
86 #define VER_LESS_EQUAL 5
89 #define VER_CONDITION_MASK 7
90 #define VER_NUM_BITS_PER_CONDITION_MASK 3
92 #define RTL_CRITSECT_TYPE 0
93 #define RTL_RESOURCE_TYPE 1
96 /* RTL String Hash Algorithms */
97 #define HASH_STRING_ALGORITHM_DEFAULT 0
98 #define HASH_STRING_ALGORITHM_X65599 1
99 #define HASH_STRING_ALGORITHM_INVALID 0xffffffff
101 /* RtlDuplicateString settings */
102 #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
103 #define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
105 /* For Size conversion macros */
106 #define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
107 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
108 #define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
110 #define MAX_ATOM_LEN 255 /* TCHARS not including nullterm */
116 IN PLIST_ENTRY ListHead
)
118 ListHead
->Flink
= ListHead
->Blink
= ListHead
;
124 IN PLIST_ENTRY ListHead
,
125 IN PLIST_ENTRY Entry
)
127 PLIST_ENTRY OldFlink
;
128 OldFlink
= ListHead
->Flink
;
129 Entry
->Flink
= OldFlink
;
130 Entry
->Blink
= ListHead
;
131 OldFlink
->Blink
= Entry
;
132 ListHead
->Flink
= Entry
;
138 IN PLIST_ENTRY ListHead
,
139 IN PLIST_ENTRY Entry
)
141 PLIST_ENTRY OldBlink
;
142 OldBlink
= ListHead
->Blink
;
143 Entry
->Flink
= ListHead
;
144 Entry
->Blink
= OldBlink
;
145 OldBlink
->Flink
= Entry
;
146 ListHead
->Blink
= Entry
;
149 #define IsListEmpty(ListHead) \
150 ((ListHead)->Flink == (ListHead))
152 #define PopEntryList(ListHead) \
155 PSINGLE_LIST_ENTRY _FirstEntry; \
156 _FirstEntry = (ListHead)->Next; \
157 if (_FirstEntry != NULL) \
158 (ListHead)->Next = _FirstEntry->Next; \
161 #define PushEntryList(_ListHead, _Entry) \
162 (_Entry)->Next = (_ListHead)->Next; \
163 (_ListHead)->Next = (_Entry); \
168 IN PLIST_ENTRY Entry
)
170 PLIST_ENTRY OldFlink
;
171 PLIST_ENTRY OldBlink
;
173 OldFlink
= Entry
->Flink
;
174 OldBlink
= Entry
->Blink
;
175 OldFlink
->Blink
= OldBlink
;
176 OldBlink
->Flink
= OldFlink
;
177 return (OldFlink
== OldBlink
);
183 IN PLIST_ENTRY ListHead
)
188 Entry
= ListHead
->Flink
;
189 Flink
= Entry
->Flink
;
190 ListHead
->Flink
= Flink
;
191 Flink
->Blink
= ListHead
;
198 IN PLIST_ENTRY ListHead
)
203 Entry
= ListHead
->Blink
;
204 Blink
= Entry
->Blink
;
205 ListHead
->Blink
= Blink
;
206 Blink
->Flink
= ListHead
;
210 #define IsFirstEntry(ListHead, Entry) \
211 ((ListHead)->Flink == Entry)
213 #define IsLastEntry(ListHead, Entry) \
214 ((ListHead)->Blink == Entry)
217 * Constant String Macro
219 #define RTL_CONSTANT_STRING(__SOURCE_STRING__) \
221 sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \
222 sizeof(__SOURCE_STRING__), \
223 (__SOURCE_STRING__) \
226 #define RtlEqualLuid(L1, L2) (((L1)->HighPart == (L2)->HighPart) && \
227 ((L1)->LowPart == (L2)->LowPart))
230 /* FIXME: Rename these */
231 #define PDI_MODULES 0x01 /* The loaded modules of the process */
232 #define PDI_BACKTRACE 0x02 /* The heap stack back traces */
233 #define PDI_HEAPS 0x04 /* The heaps of the process */
234 #define PDI_HEAP_TAGS 0x08 /* The heap tags */
235 #define PDI_HEAP_BLOCKS 0x10 /* The heap blocks */
236 #define PDI_LOCKS 0x20 /* The locks created by the process */
238 /* RTL Handle Flags */
239 #define RTL_HANDLE_VALID 0x1
242 #define RTL_ATOM_IS_PINNED 0x1
244 /* EXPORTED DATA *************************************************************/
245 #ifdef NTOS_MODE_USER
246 extern BOOLEAN NTSYSAPI NLS_MB_CODE_PAGE_TAG
;
247 extern BOOLEAN NTSYSAPI NLS_MB_OEM_CODE_PAGE_TAG
;
250 /* ENUMERATIONS **************************************************************/
252 #ifdef NTOS_MODE_USER
253 typedef enum _TABLE_SEARCH_RESULT
259 } TABLE_SEARCH_RESULT
;
261 typedef enum _RTL_GENERIC_COMPARE_RESULTS
266 } RTL_GENERIC_COMPARE_RESULTS
;
272 UNC_PATH
, /* "//foo" */
273 ABSOLUTE_DRIVE_PATH
, /* "c:/foo" */
274 RELATIVE_DRIVE_PATH
, /* "c:foo" */
275 ABSOLUTE_PATH
, /* "/foo" */
276 RELATIVE_PATH
, /* "foo" */
277 DEVICE_PATH
, /* "//./foo" */
278 UNC_DOT_PATH
/* "//." */
281 /* FUNCTION TYPES ************************************************************/
282 #ifndef NTOS_MODE_USER
283 typedef VOID (NTAPI
*WAITORTIMERCALLBACKFUNC
)(PVOID
, BOOLEAN
);
286 struct _RTL_AVL_TABLE
;
287 struct _RTL_GENERIC_TABLE
;
291 (*PHEAP_ENUMERATION_ROUTINE
)(
296 typedef EXCEPTION_DISPOSITION
297 (NTAPI
*PEXCEPTION_ROUTINE
)(
298 IN
struct _EXCEPTION_RECORD
*ExceptionRecord
,
299 IN PVOID EstablisherFrame
,
300 IN OUT
struct _CONTEXT
*ContextRecord
,
301 IN OUT PVOID DispatcherContext
304 typedef LONG (NTAPI
*PVECTORED_EXCEPTION_HANDLER
)(
305 PEXCEPTION_POINTERS ExceptionPointers
308 typedef ULONG (NTAPI
*PTHREAD_START_ROUTINE
)(
313 (NTAPI
*PRTL_BASE_PROCESS_START_ROUTINE
)(
314 PTHREAD_START_ROUTINE StartAddress
,
319 (NTAPI
*PRTL_AVL_MATCH_FUNCTION
)(
320 struct _RTL_AVL_TABLE
*Table
,
325 typedef RTL_GENERIC_COMPARE_RESULTS
326 (NTAPI
*PRTL_AVL_COMPARE_ROUTINE
) (
327 struct _RTL_AVL_TABLE
*Table
,
332 typedef RTL_GENERIC_COMPARE_RESULTS
333 (NTAPI
*PRTL_GENERIC_COMPARE_ROUTINE
) (
334 struct _RTL_GENERIC_TABLE
*Table
,
340 (NTAPI
*PRTL_GENERIC_ALLOCATE_ROUTINE
) (
341 struct _RTL_GENERIC_TABLE
*Table
,
346 (NTAPI
*PRTL_GENERIC_FREE_ROUTINE
) (
347 struct _RTL_GENERIC_TABLE
*Table
,
352 (NTAPI
*PRTL_AVL_ALLOCATE_ROUTINE
) (
353 struct _RTL_AVL_TABLE
*Table
,
358 (NTAPI
*PRTL_AVL_FREE_ROUTINE
) (
359 struct _RTL_AVL_TABLE
*Table
,
364 (NTAPI
*PRTL_QUERY_REGISTRY_ROUTINE
)(
368 IN ULONG ValueLength
,
370 IN PVOID EntryContext
374 (NTAPI
* PRTL_HEAP_COMMIT_ROUTINE
)(
376 IN OUT PVOID
*CommitAddress
,
377 IN OUT PSIZE_T CommitSize
380 #ifdef NTOS_MODE_USER
382 (NTAPI
*PRTL_CONFLICT_RANGE_CALLBACK
) (
384 struct _RTL_RANGE
*Range
388 /* TYPES *********************************************************************/
390 #ifdef NTOS_MODE_USER
391 typedef OSVERSIONINFOW RTL_OSVERSIONINFOW
;
392 typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW
;
393 typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW
;
394 typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW
;
396 typedef struct _RTL_HEAP_PARAMETERS
399 SIZE_T SegmentReserve
;
400 SIZE_T SegmentCommit
;
401 SIZE_T DeCommitFreeBlockThreshold
;
402 SIZE_T DeCommitTotalFreeThreshold
;
403 SIZE_T MaximumAllocationSize
;
404 SIZE_T VirtualMemoryThreshold
;
405 SIZE_T InitialCommit
;
406 SIZE_T InitialReserve
;
407 PRTL_HEAP_COMMIT_ROUTINE CommitRoutine
;
409 } RTL_HEAP_PARAMETERS
, *PRTL_HEAP_PARAMETERS
;
411 typedef struct _RTL_BITMAP
415 } RTL_BITMAP
, *PRTL_BITMAP
;
417 typedef struct _RTL_BITMAP_RUN
421 } RTL_BITMAP_RUN
, *PRTL_BITMAP_RUN
;
423 typedef struct _COMPRESSED_DATA_INFO
425 USHORT CompressionFormatAndEngine
;
426 UCHAR CompressionUnitShift
;
430 USHORT NumberOfChunks
;
431 ULONG CompressedChunkSizes
[ANYSIZE_ARRAY
];
432 } COMPRESSED_DATA_INFO
, *PCOMPRESSED_DATA_INFO
;
434 typedef struct _GENERATE_NAME_CONTEXT
437 BOOLEAN CheckSumInserted
;
440 ULONG ExtensionLength
;
441 WCHAR ExtensionBuffer
[4];
442 ULONG LastIndexValue
;
443 } GENERATE_NAME_CONTEXT
, *PGENERATE_NAME_CONTEXT
;
445 typedef struct _RTL_SPLAY_LINKS
447 struct _RTL_SPLAY_LINKS
*Parent
;
448 struct _RTL_SPLAY_LINKS
*LeftChild
;
449 struct _RTL_SPLAY_LINKS
*RightChild
;
450 } RTL_SPLAY_LINKS
, *PRTL_SPLAY_LINKS
;
452 typedef ACL_REVISION_INFORMATION
*PACL_REVISION_INFORMATION
;
453 typedef ACL_SIZE_INFORMATION
*PACL_SIZE_INFORMATION
;
455 typedef struct _RTL_GENERIC_TABLE
457 PRTL_SPLAY_LINKS TableRoot
;
458 LIST_ENTRY InsertOrderList
;
459 PLIST_ENTRY OrderedPointer
;
460 ULONG WhichOrderedElement
;
461 ULONG NumberGenericTableElements
;
462 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
;
463 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
;
464 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
;
466 } RTL_GENERIC_TABLE
, *PRTL_GENERIC_TABLE
;
468 typedef struct _RTL_BALANCED_LINKS
470 struct _RTL_BALANCED_LINKS
*Parent
;
471 struct _RTL_BALANCED_LINKS
*LeftChild
;
472 struct _RTL_BALANCED_LINKS
*RightChild
;
475 } RTL_BALANCED_LINKS
, *PRTL_BALANCED_LINKS
;
477 typedef struct _RTL_AVL_TABLE
479 RTL_BALANCED_LINKS BalancedRoot
;
480 PVOID OrderedPointer
;
481 ULONG WhichOrderedElement
;
482 ULONG NumberGenericTableElements
;
484 PRTL_BALANCED_LINKS RestartKey
;
486 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
;
487 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
;
488 PRTL_AVL_FREE_ROUTINE FreeRoutine
;
490 } RTL_AVL_TABLE
, *PRTL_AVL_TABLE
;
492 typedef struct _RTL_QUERY_REGISTRY_TABLE
494 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine
;
501 } RTL_QUERY_REGISTRY_TABLE
, *PRTL_QUERY_REGISTRY_TABLE
;
503 typedef struct _UNICODE_PREFIX_TABLE_ENTRY
507 struct _UNICODE_PREFIX_TABLE_ENTRY
*NextPrefixTree
;
508 struct _UNICODE_PREFIX_TABLE_ENTRY
*CaseMatch
;
509 RTL_SPLAY_LINKS Links
;
510 PUNICODE_STRING Prefix
;
511 } UNICODE_PREFIX_TABLE_ENTRY
, *PUNICODE_PREFIX_TABLE_ENTRY
;
513 typedef struct _UNICODE_PREFIX_TABLE
517 PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree
;
518 PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry
;
519 } UNICODE_PREFIX_TABLE
, *PUNICODE_PREFIX_TABLE
;
521 typedef struct _TIME_FIELDS
531 } TIME_FIELDS
, *PTIME_FIELDS
;
537 ACCESS_MASK AccessMask
;
540 /* FIXME: Review definitions and give these guys a better name */
541 typedef struct _DEBUG_BUFFER
543 HANDLE SectionHandle
;
545 PVOID RemoteSectionBase
;
546 ULONG SectionBaseDelta
;
547 HANDLE EventPairHandle
;
549 HANDLE RemoteThreadHandle
;
554 PVOID ModuleInformation
;
555 PVOID BackTraceInformation
;
556 PVOID HeapInformation
;
557 PVOID LockInformation
;
559 } DEBUG_BUFFER
, *PDEBUG_BUFFER
;
561 typedef struct _DEBUG_MODULE_INFORMATION
570 USHORT ModuleNameOffset
;
572 } DEBUG_MODULE_INFORMATION
, *PDEBUG_MODULE_INFORMATION
;
574 typedef struct _DEBUG_HEAP_INFORMATION
587 } DEBUG_HEAP_INFORMATION
, *PDEBUG_HEAP_INFORMATION
;
589 typedef struct _DEBUG_LOCK_INFORMATION
593 USHORT CreatorBackTraceIndex
;
596 ULONG ContentionCount
;
598 ULONG RecursionCount
;
599 ULONG NumberOfSharedWaiters
;
600 ULONG NumberOfExclusiveWaiters
;
601 } DEBUG_LOCK_INFORMATION
, *PDEBUG_LOCK_INFORMATION
;
603 typedef struct _RTL_HANDLE_TABLE_ENTRY
606 struct _RTL_HANDLE_TABLE_ENTRY
*NextFree
;
607 } RTL_HANDLE_TABLE_ENTRY
, *PRTL_HANDLE_TABLE_ENTRY
;
609 typedef struct _RTL_HANDLE_TABLE
611 ULONG MaximumNumberOfHandles
;
612 ULONG SizeOfHandleTableEntry
;
614 PRTL_HANDLE_TABLE_ENTRY FreeHandles
;
615 PRTL_HANDLE_TABLE_ENTRY CommittedHandles
;
616 PRTL_HANDLE_TABLE_ENTRY UnCommittedHandles
;
617 PRTL_HANDLE_TABLE_ENTRY MaxReservedHandles
;
618 } RTL_HANDLE_TABLE
, *PRTL_HANDLE_TABLE
;
620 typedef struct _LOCK_INFORMATION
623 DEBUG_LOCK_INFORMATION LockEntry
[1];
624 } LOCK_INFORMATION
, *PLOCK_INFORMATION
;
626 typedef struct _HEAP_INFORMATION
629 DEBUG_HEAP_INFORMATION HeapEntry
[1];
630 } HEAP_INFORMATION
, *PHEAP_INFORMATION
;
632 typedef struct _MODULE_INFORMATION
635 DEBUG_MODULE_INFORMATION ModuleEntry
[1];
636 } MODULE_INFORMATION
, *PMODULE_INFORMATION
;
637 /* END REVIEW AREA */
639 typedef struct _EXCEPTION_REGISTRATION_RECORD
641 struct _EXCEPTION_REGISTRATION_RECORD
*Next
;
642 PEXCEPTION_HANDLER Handler
;
643 } EXCEPTION_REGISTRATION_RECORD
, *PEXCEPTION_REGISTRATION_RECORD
;
645 typedef struct _CURDIR
647 UNICODE_STRING DosPath
;
651 typedef struct RTL_DRIVE_LETTER_CURDIR
656 UNICODE_STRING DosPath
;
657 } RTL_DRIVE_LETTER_CURDIR
, *PRTL_DRIVE_LETTER_CURDIR
;
659 #ifndef NTOS_MODE_USER
660 typedef struct _RTL_CRITICAL_SECTION_DEBUG
663 USHORT CreatorBackTraceIndex
;
664 struct _RTL_CRITICAL_SECTION
*CriticalSection
;
665 LIST_ENTRY ProcessLocksList
;
667 ULONG ContentionCount
;
669 } RTL_CRITICAL_SECTION_DEBUG
, *PRTL_CRITICAL_SECTION_DEBUG
, RTL_RESOURCE_DEBUG
, *PRTL_RESOURCE_DEBUG
;
671 typedef struct _RTL_CRITICAL_SECTION
673 PRTL_CRITICAL_SECTION_DEBUG DebugInfo
;
677 HANDLE LockSemaphore
;
679 } RTL_CRITICAL_SECTION
, *PRTL_CRITICAL_SECTION
;
682 #ifdef NTOS_MODE_USER
683 typedef struct _RTL_RANGE_LIST
686 ULONG Flags
; /* RTL_RANGE_LIST_... flags */
689 } RTL_RANGE_LIST
, *PRTL_RANGE_LIST
;
691 typedef struct _RTL_RANGE
698 UCHAR Flags
; /* RTL_RANGE_... flags */
699 } RTL_RANGE
, *PRTL_RANGE
;
701 typedef struct _RANGE_LIST_ITERATOR
703 PLIST_ENTRY RangeListHead
;
704 PLIST_ENTRY MergedHead
;
707 } RTL_RANGE_LIST_ITERATOR
, *PRTL_RANGE_LIST_ITERATOR
;
711 typedef struct _RTL_RESOURCE
713 RTL_CRITICAL_SECTION Lock
;
714 HANDLE SharedSemaphore
;
716 HANDLE ExclusiveSemaphore
;
717 ULONG ExclusiveWaiters
;
720 ULONG TimeoutBoost
; /* ?? */
721 PVOID DebugInfo
; /* ?? */
722 } RTL_RESOURCE
, *PRTL_RESOURCE
;
724 typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
729 } RTL_MESSAGE_RESOURCE_ENTRY
, *PRTL_MESSAGE_RESOURCE_ENTRY
;
731 typedef struct _RTL_MESSAGE_RESOURCE_BLOCK
735 ULONG OffsetToEntries
;
736 } RTL_MESSAGE_RESOURCE_BLOCK
, *PRTL_MESSAGE_RESOURCE_BLOCK
;
738 typedef struct _RTL_MESSAGE_RESOURCE_DATA
740 ULONG NumberOfBlocks
;
741 RTL_MESSAGE_RESOURCE_BLOCK Blocks
[1];
742 } RTL_MESSAGE_RESOURCE_DATA
, *PRTL_MESSAGE_RESOURCE_DATA
;
744 typedef struct _NLS_FILE_HEADER
748 USHORT MaximumCharacterSize
; /* SBCS = 1, DBCS = 2 */
750 USHORT UniDefaultChar
;
751 USHORT TransDefaultChar
;
752 USHORT TransUniDefaultChar
;
754 UCHAR LeadByte
[MAXIMUM_LEADBYTES
];
755 } NLS_FILE_HEADER
, *PNLS_FILE_HEADER
;
757 typedef struct _RTL_USER_PROCESS_PARAMETERS
763 HANDLE ConsoleHandle
;
765 HANDLE StandardInput
;
766 HANDLE StandardOutput
;
767 HANDLE StandardError
;
768 CURDIR CurrentDirectory
;
769 UNICODE_STRING DllPath
;
770 UNICODE_STRING ImagePathName
;
771 UNICODE_STRING CommandLine
;
781 ULONG ShowWindowFlags
;
782 UNICODE_STRING WindowTitle
;
783 UNICODE_STRING DesktopInfo
;
784 UNICODE_STRING ShellInfo
;
785 UNICODE_STRING RuntimeData
;
786 RTL_DRIVE_LETTER_CURDIR CurrentDirectories
[32];
787 } RTL_USER_PROCESS_PARAMETERS
, *PRTL_USER_PROCESS_PARAMETERS
;
789 typedef struct _RTL_USER_PROCESS_INFORMATION
792 HANDLE ProcessHandle
;
795 SECTION_IMAGE_INFORMATION ImageInformation
;
796 } RTL_USER_PROCESS_INFORMATION
, *PRTL_USER_PROCESS_INFORMATION
;
798 typedef struct _RTL_ATOM_TABLE_ENTRY
800 struct _RTL_ATOM_TABLE_ENTRY
*HashLink
;
803 USHORT ReferenceCount
;
807 } RTL_ATOM_TABLE_ENTRY
, *PRTL_ATOM_TABLE_ENTRY
;
809 #ifdef NTOS_MODE_USER
810 typedef RTL_CRITICAL_SECTION FAST_MUTEX
;
811 typedef RTL_HANDLE_TABLE HANDLE_TABLE
, *PHANDLE_TABLE
;
813 typedef struct _RTL_ATOM_TABLE
818 RTL_CRITICAL_SECTION CriticalSection
;
819 FAST_MUTEX FastMutex
;
823 RTL_HANDLE_TABLE RtlHandleTable
;
824 PHANDLE_TABLE ExHandleTable
;
826 ULONG NumberOfBuckets
;
827 PRTL_ATOM_TABLE_ENTRY Buckets
[1];
828 } RTL_ATOM_TABLE
, *PRTL_ATOM_TABLE
;
830 #ifndef NTOS_MODE_USER
832 typedef struct _SYSTEMTIME
841 USHORT wMilliseconds
;
842 } SYSTEMTIME
, *PSYSTEMTIME
, *LPSYSTEMTIME
;
844 typedef struct _TIME_ZONE_INFORMATION
847 WCHAR StandardName
[32];
848 SYSTEMTIME StandardDate
;
850 WCHAR DaylightName
[32];
851 SYSTEMTIME DaylightDate
;
853 } TIME_ZONE_INFORMATION
, *PTIME_ZONE_INFORMATION
, *LPTIME_ZONE_INFORMATION
;
855 typedef enum _ACL_INFORMATION_CLASS
857 AclRevisionInformation
= 1,
859 } ACL_INFORMATION_CLASS
;
861 #define TIME_ZONE_ID_UNKNOWN 0
862 #define TIME_ZONE_ID_STANDARD 1
863 #define TIME_ZONE_ID_DAYLIGHT 2
864 #define TIME_ZONE_ID_INVALID 0xFFFFFFFF