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
28 // Maximum Atom Length
30 #define RTL_MAXIMUM_ATOM_LENGTH 255
33 // Process Parameters Flags (FIXME: Rename)
35 #define PPF_NORMALIZED 0x01
36 #define PPF_PROFILE_USER 0x02
37 #define PPF_PROFILE_SERVER 0x04
38 #define PPF_PROFILE_KERNEL 0x08
39 #define PPF_UNKNOWN 0x10
40 #define PPF_RESERVE_1MB 0x20
41 #define PPF_DISABLE_HEAP_CHECKS 0x100
42 #define PPF_PROCESS_OR_1 0x200
43 #define PPF_PROCESS_OR_2 0x400
48 #define EXCEPTION_CHAIN_END ((PEXCEPTION_REGISTRATION_RECORD)-1)
49 #define EXCEPTION_UNWINDING 0x02
50 #define EXCEPTION_EXIT_UNWIND 0x04
51 #define EXCEPTION_STACK_INVALID 0x08
52 #define EXCEPTION_NESTED_CALL 0x10
53 #define EXCEPTION_TARGET_UNWIND 0x20
54 #define EXCEPTION_COLLIDED_UNWIND 0x20
57 // Range and Range List Flags
59 #define RTL_RANGE_LIST_ADD_IF_CONFLICT 0x00000001
60 #define RTL_RANGE_LIST_ADD_SHARED 0x00000002
62 #define RTL_RANGE_SHARED 0x01
63 #define RTL_RANGE_CONFLICT 0x02
68 #define RTL_REGISTRY_ABSOLUTE 0
69 #define RTL_REGISTRY_SERVICES 1
70 #define RTL_REGISTRY_CONTROL 2
71 #define RTL_REGISTRY_WINDOWS_NT 3
72 #define RTL_REGISTRY_DEVICEMAP 4
73 #define RTL_REGISTRY_USER 5
74 #define RTL_REGISTRY_MAXIMUM 6
75 #define RTL_REGISTRY_HANDLE 0x40000000
76 #define RTL_REGISTRY_OPTIONAL 0x80000000
77 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
78 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
79 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
80 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
81 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
82 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
83 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
88 #define VER_MINORVERSION 0x0000001
89 #define VER_MAJORVERSION 0x0000002
90 #define VER_BUILDNUMBER 0x0000004
91 #define VER_PLATFORMID 0x0000008
92 #define VER_SERVICEPACKMINOR 0x0000010
93 #define VER_SERVICEPACKMAJOR 0x0000020
94 #define VER_SUITENAME 0x0000040
95 #define VER_PRODUCT_TYPE 0x0000080
96 #define VER_PLATFORM_WIN32s 0
97 #define VER_PLATFORM_WIN32_WINDOWS 1
98 #define VER_PLATFORM_WIN32_NT 2
100 #define VER_GREATER 2
101 #define VER_GREATER_EQUAL 3
103 #define VER_LESS_EQUAL 5
106 #define VER_CONDITION_MASK 7
107 #define VER_NUM_BITS_PER_CONDITION_MASK 3
112 #define TIME_ZONE_ID_UNKNOWN 0
113 #define TIME_ZONE_ID_STANDARD 1
114 #define TIME_ZONE_ID_DAYLIGHT 2
117 // RTL Lock Type (Critical Section or Resource)
119 #define RTL_CRITSECT_TYPE 0
120 #define RTL_RESOURCE_TYPE 1
122 #ifdef NTOS_MODE_USER
125 // String Hash Algorithms
127 #define HASH_STRING_ALGORITHM_DEFAULT 0
128 #define HASH_STRING_ALGORITHM_X65599 1
129 #define HASH_STRING_ALGORITHM_INVALID 0xffffffff
132 // RtlDuplicateString Flags
134 #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
135 #define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
140 #define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
141 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
142 #define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
144 #define MAXIMUM_LEADBYTES 12
149 #define RTL_DEBUG_QUERY_MODULES 0x01
150 #define RTL_DEBUG_QUERY_BACKTRACES 0x02
151 #define RTL_DEBUG_QUERY_HEAPS 0x04
152 #define RTL_DEBUG_QUERY_HEAP_TAGS 0x08
153 #define RTL_DEBUG_QUERY_HEAP_BLOCKS 0x10
154 #define RTL_DEBUG_QUERY_LOCKS 0x20
159 #define RTL_HANDLE_VALID 0x1
164 #define RTL_ATOM_IS_PINNED 0x1
169 #ifdef NTOS_MODE_USER
170 extern BOOLEAN NTSYSAPI NLS_MB_CODE_PAGE_TAG
;
171 extern BOOLEAN NTSYSAPI NLS_MB_OEM_CODE_PAGE_TAG
;
174 // Constant String Macro
176 #define RTL_CONSTANT_STRING(__SOURCE_STRING__) \
178 sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \
179 sizeof(__SOURCE_STRING__), \
180 (__SOURCE_STRING__) \
185 #ifdef NTOS_MODE_USER
188 // Table and Compare result types
190 typedef enum _TABLE_SEARCH_RESULT
196 } TABLE_SEARCH_RESULT
;
198 typedef enum _RTL_GENERIC_COMPARE_RESULTS
203 } RTL_GENERIC_COMPARE_RESULTS
;
208 // ACL Query Information Classes
210 typedef enum _ACL_INFORMATION_CLASS
212 AclRevisionInformation
= 1,
214 } ACL_INFORMATION_CLASS
;
221 typedef enum _RTL_PATH_TYPE
225 ABSOLUTE_DRIVE_PATH
, // "c:/foo"
226 RELATIVE_DRIVE_PATH
, // "c:foo"
227 ABSOLUTE_PATH
, // "/foo"
228 RELATIVE_PATH
, // "foo"
229 DEVICE_PATH
, // "//./foo"
230 UNC_DOT_PATH
// "//."
233 #ifndef NTOS_MODE_USER
236 // Callback function for RTL Timers or Registered Waits
239 (NTAPI
*WAITORTIMERCALLBACKFUNC
)(
241 BOOLEAN fTimerOrWaitFired
245 // Handler during Vectored RTL Exceptions
248 (NTAPI
*PVECTORED_EXCEPTION_HANDLER
)(
249 PEXCEPTION_POINTERS ExceptionPointers
255 // Handler during regular RTL Exceptions
257 typedef EXCEPTION_DISPOSITION
258 (NTAPI
*PEXCEPTION_ROUTINE
)(
259 IN
struct _EXCEPTION_RECORD
*ExceptionRecord
,
260 IN PVOID EstablisherFrame
,
261 IN OUT
struct _CONTEXT
*ContextRecord
,
262 IN OUT PVOID DispatcherContext
268 // Callback for RTL Heap Enumeration
271 (*PHEAP_ENUMERATION_ROUTINE
)(
277 // Thread and Process Start Routines for RtlCreateUserThread/Process
279 typedef ULONG (NTAPI
*PTHREAD_START_ROUTINE
)(
284 (NTAPI
*PRTL_BASE_PROCESS_START_ROUTINE
)(
285 PTHREAD_START_ROUTINE StartAddress
,
290 // Declare empty structure definitions so that they may be referenced by
291 // routines before they are defined
293 struct _RTL_AVL_TABLE
;
294 struct _RTL_GENERIC_TABLE
;
296 typedef struct _COMPRESSED_DATA_INFO COMPRESSED_DATA_INFO
, *PCOMPRESSED_DATA_INFO
;
299 // Routines and callbacks for the RTL AVL/Generic Table package
302 (NTAPI
*PRTL_AVL_MATCH_FUNCTION
)(
303 struct _RTL_AVL_TABLE
*Table
,
308 typedef RTL_GENERIC_COMPARE_RESULTS
309 (NTAPI
*PRTL_AVL_COMPARE_ROUTINE
) (
310 struct _RTL_AVL_TABLE
*Table
,
315 typedef RTL_GENERIC_COMPARE_RESULTS
316 (NTAPI
*PRTL_GENERIC_COMPARE_ROUTINE
) (
317 struct _RTL_GENERIC_TABLE
*Table
,
323 (NTAPI
*PRTL_GENERIC_ALLOCATE_ROUTINE
) (
324 struct _RTL_GENERIC_TABLE
*Table
,
329 (NTAPI
*PRTL_GENERIC_FREE_ROUTINE
) (
330 struct _RTL_GENERIC_TABLE
*Table
,
335 (NTAPI
*PRTL_AVL_ALLOCATE_ROUTINE
) (
336 struct _RTL_AVL_TABLE
*Table
,
341 (NTAPI
*PRTL_AVL_FREE_ROUTINE
) (
342 struct _RTL_AVL_TABLE
*Table
,
347 // RTL Query Registry callback
350 (NTAPI
*PRTL_QUERY_REGISTRY_ROUTINE
)(
354 IN ULONG ValueLength
,
356 IN PVOID EntryContext
360 // RTL Range List callbacks
362 #ifdef NTOS_MODE_USER
364 (NTAPI
*PRTL_CONFLICT_RANGE_CALLBACK
)(
366 struct _RTL_RANGE
*Range
370 // Custom Heap Commit Routine for RtlCreateHeap
373 (NTAPI
* PRTL_HEAP_COMMIT_ROUTINE
)(
375 IN OUT PVOID
*CommitAddress
,
376 IN OUT PSIZE_T CommitSize
380 // Version Info redefinitions
382 typedef OSVERSIONINFOW RTL_OSVERSIONINFOW
;
383 typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW
;
384 typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW
;
385 typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW
;
388 // Simple pointer definitions
390 typedef ACL_REVISION_INFORMATION
*PACL_REVISION_INFORMATION
;
391 typedef ACL_SIZE_INFORMATION
*PACL_SIZE_INFORMATION
;
394 // Parameters for RtlCreateHeap
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
;
412 // RTL Bitmap structures
414 typedef struct _RTL_BITMAP
418 } RTL_BITMAP
, *PRTL_BITMAP
;
420 typedef struct _RTL_BITMAP_RUN
424 } RTL_BITMAP_RUN
, *PRTL_BITMAP_RUN
;
427 // RtlGenerateXxxName context
429 typedef struct _GENERATE_NAME_CONTEXT
432 BOOLEAN CheckSumInserted
;
435 ULONG ExtensionLength
;
436 WCHAR ExtensionBuffer
[4];
437 ULONG LastIndexValue
;
438 } GENERATE_NAME_CONTEXT
, *PGENERATE_NAME_CONTEXT
;
441 // RTL Splay and Balanced Links structures
443 typedef struct _RTL_SPLAY_LINKS
445 struct _RTL_SPLAY_LINKS
*Parent
;
446 struct _RTL_SPLAY_LINKS
*LeftChild
;
447 struct _RTL_SPLAY_LINKS
*RightChild
;
448 } RTL_SPLAY_LINKS
, *PRTL_SPLAY_LINKS
;
450 typedef struct _RTL_BALANCED_LINKS
452 struct _RTL_BALANCED_LINKS
*Parent
;
453 struct _RTL_BALANCED_LINKS
*LeftChild
;
454 struct _RTL_BALANCED_LINKS
*RightChild
;
457 } RTL_BALANCED_LINKS
, *PRTL_BALANCED_LINKS
;
460 // RTL Avl/Generic Tables
462 typedef struct _RTL_GENERIC_TABLE
464 PRTL_SPLAY_LINKS TableRoot
;
465 LIST_ENTRY InsertOrderList
;
466 PLIST_ENTRY OrderedPointer
;
467 ULONG WhichOrderedElement
;
468 ULONG NumberGenericTableElements
;
469 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
;
470 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
;
471 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
;
473 } RTL_GENERIC_TABLE
, *PRTL_GENERIC_TABLE
;
475 typedef struct _RTL_AVL_TABLE
477 RTL_BALANCED_LINKS BalancedRoot
;
478 PVOID OrderedPointer
;
479 ULONG WhichOrderedElement
;
480 ULONG NumberGenericTableElements
;
482 PRTL_BALANCED_LINKS RestartKey
;
484 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
;
485 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
;
486 PRTL_AVL_FREE_ROUTINE FreeRoutine
;
488 } RTL_AVL_TABLE
, *PRTL_AVL_TABLE
;
491 // RtlQueryRegistry Data
493 typedef struct _RTL_QUERY_REGISTRY_TABLE
495 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine
;
502 } RTL_QUERY_REGISTRY_TABLE
, *PRTL_QUERY_REGISTRY_TABLE
;
505 // RTL Unicode Table Structures
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
;
526 // Time Structure for RTL Time calls
528 typedef struct _TIME_FIELDS
538 } TIME_FIELDS
, *PTIME_FIELDS
;
547 ACCESS_MASK AccessMask
;
551 // Information Structures for RTL Debug Functions
553 typedef struct _RTL_PROCESS_MODULE_INFORMATION
562 USHORT ModuleNameOffset
;
564 } RTL_PROCESS_MODULE_INFORMATION
, *PRTL_PROCESS_MODULE_INFORMATION
;
566 typedef struct _RTL_PROCESS_MODULES
569 RTL_PROCESS_MODULE_INFORMATION ModuleEntry
[1];
570 } RTL_PROCESS_MODULES
, *PRTL_PROCESS_MODULES
;
572 typedef struct _RTL_PROCESS_HEAP_INFORMATION
585 } RTL_PROCESS_HEAP_INFORMATION
, *PRTL_PROCESS_HEAP_INFORMATION
;
587 typedef struct _RTL_PROCESS_HEAPS
590 RTL_PROCESS_HEAP_INFORMATION HeapEntry
[1];
591 } RTL_PROCESS_HEAPS
, *PRTL_PROCESS_HEAPS
;
593 typedef struct _RTL_PROCESS_LOCK_INFORMATION
597 USHORT CreatorBackTraceIndex
;
600 ULONG ContentionCount
;
602 ULONG RecursionCount
;
603 ULONG NumberOfSharedWaiters
;
604 ULONG NumberOfExclusiveWaiters
;
605 } RTL_PROCESS_LOCK_INFORMATION
, *PRTL_PROCESS_LOCK_INFORMATION
;
607 typedef struct _RTL_PROCESS_LOCKS
610 RTL_PROCESS_LOCK_INFORMATION LockEntry
[1];
611 } RTL_PROCESS_LOCKS
, *PRTL_PROCESS_LOCKS
;
613 typedef struct _RTL_PROCESS_BACKTRACE_INFORMATION
617 } RTL_PROCESS_BACKTRACE_INFORMATION
, *PRTL_PROCESS_BACKTRACE_INFORMATION
;
619 typedef struct _RTL_PROCESS_BACKTRACES
621 ULONG BackTraceCount
;
622 RTL_PROCESS_BACKTRACE_INFORMATION BackTraceEntry
[1];
623 } RTL_PROCESS_BACKTRACES
, *PRTL_PROCESS_BACKTRACES
;
625 typedef struct _RTL_DEBUG_BUFFER
627 HANDLE SectionHandle
;
629 PVOID RemoteSectionBase
;
630 ULONG SectionBaseDelta
;
631 HANDLE EventPairHandle
;
633 HANDLE RemoteThreadHandle
;
638 PRTL_PROCESS_MODULES ModuleInformation
;
639 PRTL_PROCESS_BACKTRACES BackTraceInformation
;
640 PRTL_PROCESS_HEAPS HeapInformation
;
641 PRTL_PROCESS_LOCKS LockInformation
;
643 } RTL_DEBUG_BUFFER
, *PRTL_DEBUG_BUFFER
;
646 // RTL Handle Structures
648 typedef struct _RTL_HANDLE_TABLE_ENTRY
651 struct _RTL_HANDLE_TABLE_ENTRY
*NextFree
;
652 } RTL_HANDLE_TABLE_ENTRY
, *PRTL_HANDLE_TABLE_ENTRY
;
654 typedef struct _RTL_HANDLE_TABLE
656 ULONG MaximumNumberOfHandles
;
657 ULONG SizeOfHandleTableEntry
;
659 PRTL_HANDLE_TABLE_ENTRY FreeHandles
;
660 PRTL_HANDLE_TABLE_ENTRY CommittedHandles
;
661 PRTL_HANDLE_TABLE_ENTRY UnCommittedHandles
;
662 PRTL_HANDLE_TABLE_ENTRY MaxReservedHandles
;
663 } RTL_HANDLE_TABLE
, *PRTL_HANDLE_TABLE
;
668 typedef struct _EXCEPTION_REGISTRATION_RECORD
670 struct _EXCEPTION_REGISTRATION_RECORD
*Next
;
671 PEXCEPTION_ROUTINE Handler
;
672 } EXCEPTION_REGISTRATION_RECORD
, *PEXCEPTION_REGISTRATION_RECORD
;
675 // Current Directory Structures
677 typedef struct _CURDIR
679 UNICODE_STRING DosPath
;
683 typedef struct RTL_DRIVE_LETTER_CURDIR
688 UNICODE_STRING DosPath
;
689 } RTL_DRIVE_LETTER_CURDIR
, *PRTL_DRIVE_LETTER_CURDIR
;
691 #ifndef NTOS_MODE_USER
694 // RTL Critical Section Structures
696 typedef struct _RTL_CRITICAL_SECTION_DEBUG
699 USHORT CreatorBackTraceIndex
;
700 struct _RTL_CRITICAL_SECTION
*CriticalSection
;
701 LIST_ENTRY ProcessLocksList
;
703 ULONG ContentionCount
;
705 } RTL_CRITICAL_SECTION_DEBUG
, *PRTL_CRITICAL_SECTION_DEBUG
, RTL_RESOURCE_DEBUG
, *PRTL_RESOURCE_DEBUG
;
707 typedef struct _RTL_CRITICAL_SECTION
709 PRTL_CRITICAL_SECTION_DEBUG DebugInfo
;
713 HANDLE LockSemaphore
;
715 } RTL_CRITICAL_SECTION
, *PRTL_CRITICAL_SECTION
;
720 // RTL Range List Structures
722 typedef struct _RTL_RANGE_LIST
728 } RTL_RANGE_LIST
, *PRTL_RANGE_LIST
;
730 typedef struct _RTL_RANGE
738 } RTL_RANGE
, *PRTL_RANGE
;
740 typedef struct _RANGE_LIST_ITERATOR
742 PLIST_ENTRY RangeListHead
;
743 PLIST_ENTRY MergedHead
;
746 } RTL_RANGE_LIST_ITERATOR
, *PRTL_RANGE_LIST_ITERATOR
;
753 typedef struct _RTL_RESOURCE
755 RTL_CRITICAL_SECTION Lock
;
756 HANDLE SharedSemaphore
;
758 HANDLE ExclusiveSemaphore
;
759 ULONG ExclusiveWaiters
;
764 } RTL_RESOURCE
, *PRTL_RESOURCE
;
767 // RTL Message Structures for PE Resources
769 typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
774 } RTL_MESSAGE_RESOURCE_ENTRY
, *PRTL_MESSAGE_RESOURCE_ENTRY
;
776 typedef struct _RTL_MESSAGE_RESOURCE_BLOCK
780 ULONG OffsetToEntries
;
781 } RTL_MESSAGE_RESOURCE_BLOCK
, *PRTL_MESSAGE_RESOURCE_BLOCK
;
783 typedef struct _RTL_MESSAGE_RESOURCE_DATA
785 ULONG NumberOfBlocks
;
786 RTL_MESSAGE_RESOURCE_BLOCK Blocks
[1];
787 } RTL_MESSAGE_RESOURCE_DATA
, *PRTL_MESSAGE_RESOURCE_DATA
;
790 // Structures for RtlCreateUserProcess
792 typedef struct _RTL_USER_PROCESS_PARAMETERS
798 HANDLE ConsoleHandle
;
800 HANDLE StandardInput
;
801 HANDLE StandardOutput
;
802 HANDLE StandardError
;
803 CURDIR CurrentDirectory
;
804 UNICODE_STRING DllPath
;
805 UNICODE_STRING ImagePathName
;
806 UNICODE_STRING CommandLine
;
816 ULONG ShowWindowFlags
;
817 UNICODE_STRING WindowTitle
;
818 UNICODE_STRING DesktopInfo
;
819 UNICODE_STRING ShellInfo
;
820 UNICODE_STRING RuntimeData
;
821 RTL_DRIVE_LETTER_CURDIR CurrentDirectories
[32];
822 } RTL_USER_PROCESS_PARAMETERS
, *PRTL_USER_PROCESS_PARAMETERS
;
824 typedef struct _RTL_USER_PROCESS_INFORMATION
827 HANDLE ProcessHandle
;
830 SECTION_IMAGE_INFORMATION ImageInformation
;
831 } RTL_USER_PROCESS_INFORMATION
, *PRTL_USER_PROCESS_INFORMATION
;
834 // RTL Atom Table Structures
836 typedef struct _RTL_ATOM_TABLE_ENTRY
838 struct _RTL_ATOM_TABLE_ENTRY
*HashLink
;
841 USHORT ReferenceCount
;
845 } RTL_ATOM_TABLE_ENTRY
, *PRTL_ATOM_TABLE_ENTRY
;
847 typedef struct _RTL_ATOM_TABLE
852 #ifdef NTOS_MODE_USER
853 RTL_CRITICAL_SECTION CriticalSection
;
855 FAST_MUTEX FastMutex
;
860 #ifdef NTOS_MODE_USER
861 RTL_HANDLE_TABLE RtlHandleTable
;
863 PHANDLE_TABLE ExHandleTable
;
866 ULONG NumberOfBuckets
;
867 PRTL_ATOM_TABLE_ENTRY Buckets
[1];
868 } RTL_ATOM_TABLE
, *PRTL_ATOM_TABLE
;
870 #ifndef NTOS_MODE_USER
873 // System Time and Timezone Structures
875 typedef struct _SYSTEMTIME
884 USHORT wMilliseconds
;
885 } SYSTEMTIME
, *PSYSTEMTIME
, *LPSYSTEMTIME
;
887 typedef struct _TIME_ZONE_INFORMATION
890 WCHAR StandardName
[32];
891 SYSTEMTIME StandardDate
;
893 WCHAR DaylightName
[32];
894 SYSTEMTIME DaylightDate
;
896 } TIME_ZONE_INFORMATION
, *PTIME_ZONE_INFORMATION
, *LPTIME_ZONE_INFORMATION
;
901 // Header for NLS Files
903 typedef struct _NLS_FILE_HEADER
907 USHORT MaximumCharacterSize
;
909 USHORT UniDefaultChar
;
910 USHORT TransDefaultChar
;
911 USHORT TransUniDefaultChar
;
913 UCHAR LeadByte
[MAXIMUM_LEADBYTES
];
914 } NLS_FILE_HEADER
, *PNLS_FILE_HEADER
;