Author: tkreuzer Date: Tue Jan 24 21:15:55 2012 New Revision: 55151
URL: http://svn.reactos.org/svn/reactos?rev=55151&view=rev Log: [NDK/DDK] - Improve/fix/update/add several function declarations and structures Patch by Samuel Serapion
Modified: trunk/reactos/include/ddk/ntifs.h trunk/reactos/include/ndk/cmtypes.h trunk/reactos/include/ndk/extypes.h trunk/reactos/include/ndk/ldrtypes.h trunk/reactos/include/ndk/peb_teb.h trunk/reactos/include/ndk/pstypes.h trunk/reactos/include/ndk/rtlfuncs.h trunk/reactos/include/ndk/rtltypes.h trunk/reactos/include/xdk/rtlfuncs.h
Modified: trunk/reactos/include/ddk/ntifs.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/ntifs.h?rev=551... ============================================================================== --- trunk/reactos/include/ddk/ntifs.h [iso-8859-1] (original) +++ trunk/reactos/include/ddk/ntifs.h [iso-8859-1] Tue Jan 24 21:15:55 2012 @@ -1156,7 +1156,7 @@ _Out_writes_bytes_to_(MaxBytesInMultiByteString, *BytesInMultiByteString) PCHAR MultiByteString, _In_ ULONG MaxBytesInMultiByteString, _Out_opt_ PULONG BytesInMultiByteString, - _In_reads_bytes_(BytesInUnicodeString) PWCH UnicodeString, + _In_reads_bytes_(BytesInUnicodeString) PCWCH UnicodeString, _In_ ULONG BytesInUnicodeString);
_IRQL_requires_max_(PASSIVE_LEVEL)
Modified: trunk/reactos/include/ndk/cmtypes.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/cmtypes.h?rev=5... ============================================================================== --- trunk/reactos/include/ndk/cmtypes.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/cmtypes.h [iso-8859-1] Tue Jan 24 21:15:55 2012 @@ -115,6 +115,8 @@ // #define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000 #define CM_RESOURCE_INTERRUPT_LATCHED 0x0001 +#define CM_RESOURCE_INTERRUPT_MESSAGE 0x0002 +#define CM_RESOURCE_INTERRUPT_POLICY_INCLUDED 0x0004
// // NtInitializeRegistry Flags @@ -136,7 +138,10 @@ KeyFullInformation, KeyNameInformation, KeyCachedInformation, - KeyFlagsInformation + KeyFlagsInformation, + KeyVirtualizationInformation, + KeyHandleTagsInformation, + MaxKeyInfoClass } KEY_INFORMATION_CLASS;
typedef enum _KEY_VALUE_INFORMATION_CLASS @@ -145,7 +150,8 @@ KeyValueFullInformation, KeyValuePartialInformation, KeyValueFullInformationAlign64, - KeyValuePartialInformationAlign64 + KeyValuePartialInformationAlign64, + MaxKeyValueInfoClass } KEY_VALUE_INFORMATION_CLASS;
typedef enum _KEY_SET_INFORMATION_CLASS { @@ -216,10 +222,44 @@ LARGE_INTEGER LastWriteTime; } KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
+typedef struct _KEY_WOW64_FLAGS_INFORMATION +{ + ULONG UserFlags; +} KEY_WOW64_FLAGS_INFORMATION, *PKEY_WOW64_FLAGS_INFORMATION; + typedef struct _KEY_USER_FLAGS_INFORMATION { ULONG UserFlags; } KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION; + +typedef struct _KEY_HANDLE_TAGS_INFORMATION +{ + ULONG HandleTags; +} KEY_HANDLE_TAGS_INFORMATION, *PKEY_HANDLE_TAGS_INFORMATION; + +typedef struct _KEY_CONTROL_FLAGS_INFORMATION +{ + ULONG ControlFlags; +} KEY_CONTROL_FLAGS_INFORMATION, *PKEY_CONTROL_FLAGS_INFORMATION; + +typedef struct _KEY_VIRTUALIZATION_INFORMATION +{ + ULONG VirtualizationCandidate:1; + ULONG VirtualizationEnabled:1; + ULONG VirtualTarget:1; + ULONG VirtualStore:1; + ULONG VirtualSource:1; + ULONG Reserved:27; +} KEY_VIRTUALIZATION_INFORMATION, *PKEY_VIRTUALIZATION_INFORMATION; + +typedef struct _KEY_SET_VIRTUALIZATION_INFORMATION +{ + ULONG VirtualTarget:1; + ULONG VirtualStore:1; + ULONG VirtualSource:1; + ULONG Reserved:29; +} KEY_SET_VIRTUALIZATION_INFORMATION, *PKEY_SET_VIRTUALIZATION_INFORMATION; +
typedef struct _KEY_FULL_INFORMATION { @@ -267,6 +307,13 @@ ULONG DataLength; UCHAR Data[1]; } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; + +typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 +{ + ULONG Type; + ULONG DataLength; + UCHAR Data[1]; +} KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64;
typedef struct _KEY_VALUE_BASIC_INFORMATION {
Modified: trunk/reactos/include/ndk/extypes.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/extypes.h?rev=5... ============================================================================== --- trunk/reactos/include/ndk/extypes.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/extypes.h [iso-8859-1] Tue Jan 24 21:15:55 2012 @@ -772,7 +772,7 @@ ULONG TotalSystemCodePages; ULONG NonPagedPoolLookasideHits; ULONG PagedPoolLookasideHits; - ULONG Spare3Count; + ULONG AvailablePagedPoolPages; ULONG ResidentSystemCachePage; ULONG ResidentPagedPoolPage; ULONG ResidentSystemDriverPage; @@ -849,9 +849,10 @@ { ULONG NextEntryOffset; ULONG NumberOfThreads; - LARGE_INTEGER SpareLi1; - LARGE_INTEGER SpareLi2; - LARGE_INTEGER SpareLi3; + LARGE_INTEGER WorkingSetPrivateSize; //VISTA + ULONG HardFaultCount; //WIN7 + ULONG NumberOfThreadsHighWatermark; //WIN7 + ULONGLONG CycleTime; //WIN7 LARGE_INTEGER CreateTime; LARGE_INTEGER UserTime; LARGE_INTEGER KernelTime; @@ -868,8 +869,8 @@ // NOTE: *NOT* THE SAME AS VM_COUNTERS! // SIZE_T PeakVirtualSize; - ULONG VirtualSize; - SIZE_T PageFaultCount; + SIZE_T VirtualSize; + ULONG PageFaultCount; SIZE_T PeakWorkingSetSize; SIZE_T WorkingSetSize; SIZE_T QuotaPeakPagedPoolUsage; @@ -890,7 +891,7 @@ LARGE_INTEGER WriteTransferCount; LARGE_INTEGER OtherTransferCount;
- //SYSTEM_THREAD_INFORMATION TH[1]; + SYSTEM_THREAD_INFORMATION TH[1]; } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
// Class 6 @@ -959,7 +960,7 @@
typedef struct _SYSTEM_POOL_INFORMATION { - ULONG TotalSize; + SIZE_T TotalSize; PVOID FirstEntry; USHORT EntryOverhead; BOOLEAN PoolTagPresent; @@ -1072,13 +1073,13 @@ // Class 21 typedef struct _SYSTEM_FILECACHE_INFORMATION { - ULONG CurrentSize; - ULONG PeakSize; + SIZE_T CurrentSize; + SIZE_T PeakSize; ULONG PageFaultCount; - ULONG MinimumWorkingSet; - ULONG MaximumWorkingSet; - ULONG CurrentSizeIncludingTransitionInPages; - ULONG PeakSizeIncludingTransitionInPages; + SIZE_T MinimumWorkingSet; + SIZE_T MaximumWorkingSet; + SIZE_T CurrentSizeIncludingTransitionInPages; + SIZE_T PeakSizeIncludingTransitionInPages; ULONG TransitionRePurposeCount; ULONG Flags; } SYSTEM_FILECACHE_INFORMATION, *PSYSTEM_FILECACHE_INFORMATION; @@ -1098,6 +1099,7 @@ ULONG NonPagedFrees; SIZE_T NonPagedUsed; } SYSTEM_POOLTAG, *PSYSTEM_POOLTAG; + typedef struct _SYSTEM_POOLTAG_INFORMATION { ULONG Count; @@ -1229,7 +1231,7 @@ { ULONG RegistryQuotaAllowed; ULONG RegistryQuotaUsed; - ULONG PagedPoolSize; + SIZE_T PagedPoolSize; } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
// Class 38 @@ -1274,7 +1276,6 @@ { PNP_VETO_TYPE VetoType; UNICODE_STRING VetoDriver; - // CHAR Buffer[0]; } SYSTEM_LEGACY_DRIVER_INFORMATION, *PSYSTEM_LEGACY_DRIVER_INFORMATION;
// Class 44 @@ -1451,6 +1452,7 @@ SIZE_T BadPageCount; SIZE_T PageCountByPriority[8]; SIZE_T RepurposedPagesByPriority[8]; + SIZE_T ModifiedPageCountPageFile; } SYSTEM_MEMORY_LIST_INFORMATION, *PSYSTEM_MEMORY_LIST_INFORMATION;
#endif
Modified: trunk/reactos/include/ndk/ldrtypes.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/ldrtypes.h?rev=... ============================================================================== --- trunk/reactos/include/ndk/ldrtypes.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/ldrtypes.h [iso-8859-1] Tue Jan 24 21:15:55 2012 @@ -114,6 +114,10 @@ LIST_ENTRY InMemoryOrderModuleList; LIST_ENTRY InInitializationOrderModuleList; PVOID EntryInProgress; +#if (NTDDI_VERSION >= NTDDI_WIN7) + UCHAR ShutdownInProgress; + PVOID ShutdownThreadId; +#endif } PEB_LDR_DATA, *PPEB_LDR_DATA;
//
Modified: trunk/reactos/include/ndk/peb_teb.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/peb_teb.h?rev=5... ============================================================================== --- trunk/reactos/include/ndk/peb_teb.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/peb_teb.h [iso-8859-1] Tue Jan 24 21:15:55 2012 @@ -146,7 +146,7 @@ PTR(PVOID*) FlsCallback; STRUCT(LIST_ENTRY) FlsListHead; PTR(PVOID) FlsBitmap; - ULONG FlsBitmapBits[4]; + ULONG FlsBitmapBits[FLS_MAXIMUM_AVAILABLE/(sizeof(ULONG)*8)]; ULONG FlsHighIndex; #endif #if (NTDDI_VERSION >= NTDDI_LONGHORN) @@ -189,6 +189,7 @@ #endif #endif
+#define GDI_BATCH_BUFFER_SIZE 0x136 // // GDI Batch Descriptor // @@ -196,7 +197,7 @@ { ULONG Offset; PTR(HANDLE) HDC; - ULONG Buffer[0x136]; + ULONG Buffer[GDI_BATCH_BUFFER_SIZE]; } STRUCT(GDI_TEB_BATCH), *STRUCT(PGDI_TEB_BATCH);
//
Modified: trunk/reactos/include/ndk/pstypes.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/pstypes.h?rev=5... ============================================================================== --- trunk/reactos/include/ndk/pstypes.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/pstypes.h [iso-8859-1] Tue Jan 24 21:15:55 2012 @@ -764,6 +764,19 @@ LARGE_INTEGER UserTime; } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
+typedef struct _POOLED_USAGE_AND_LIMITS +{ + SIZE_T PeakPagedPoolUsage; + SIZE_T PagedPoolUsage; + SIZE_T PagedPoolLimit; + SIZE_T PeakNonPagedPoolUsage; + SIZE_T NonPagedPoolUsage; + SIZE_T NonPagedPoolLimit; + SIZE_T PeakPagefileUsage; + SIZE_T PagefileUsage; + SIZE_T PagefileLimit; +} POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS; + typedef struct _PROCESS_SESSION_INFORMATION { ULONG SessionId;
Modified: trunk/reactos/include/ndk/rtlfuncs.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/rtlfuncs.h?rev=... ============================================================================== --- trunk/reactos/include/ndk/rtlfuncs.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/rtlfuncs.h [iso-8859-1] Tue Jan 24 21:15:55 2012 @@ -964,7 +964,7 @@ NTAPI RtlWalkHeap( IN HANDLE HeapHandle, - IN PVOID HeapEntry + IN OUT PRTL_HEAP_WALK_ENTRY HeapEntry );
#define RtlGetProcessHeap() (NtCurrentPeb()->ProcessHeap) @@ -1818,7 +1818,7 @@ PCHAR MbString, ULONG MbSize, PULONG ResultSize, - PWCHAR UnicodeString, + PCWCH UnicodeString, ULONG UnicodeSize );
@@ -1998,6 +1998,16 @@ );
NTSYSAPI +VOID +NTAPI +RtlFillMemoryUlonglong( + OUT PVOID Destination, + IN SIZE_T Length, + IN ULONGLONG Pattern +); + + +NTSYSAPI SIZE_T NTAPI RtlCompareMemoryUlong( @@ -2079,6 +2089,25 @@ PCANSI_STRING String2, BOOLEAN CaseInsensitive ); + +#ifdef _M_X64 +NTSYSAPI +NTSTATUS +NTAPI +RtlWow64GetThreadContext( + IN HANDLE ThreadHandle, + IN OUT PWOW64_CONTEXT ThreadContext +); + + +NTSYSAPI +NTSTATUS +NTAPI +RtlWow64SetThreadContext( + IN HANDLE ThreadHandle, + IN PWOW64_CONTEXT ThreadContext +); +#endif
NTSYSAPI BOOLEAN @@ -2321,6 +2350,25 @@ IN PINITIAL_TEB InitialTeb );
+#ifdef _M_AMD64 +NTSYSAPI +NTSTATUS +NTAPI +RtlWow64GetThreadContext( + IN HANDLE ThreadHandle, + IN OUT PWOW64_CONTEXT ThreadContext +); + + +NTSYSAPI +NTSTATUS +NTAPI +RtlWow64SetThreadContext( + IN HANDLE ThreadHandle, + IN PWOW64_CONTEXT ThreadContext +); +#endif + NTSYSAPI BOOLEAN NTAPI @@ -2545,6 +2593,19 @@ OUT PWSTR *ShortName );
+#if (NTDDI_VERSION >= NTDDI_WIN7) +NTSYSAPI +NTSTATUS +NTAPI +RtlGetFullPathName_UEx( + IN PWSTR FileName, + IN ULONG BufferLength, + OUT PWSTR Buffer, + OUT OPTIONAL PWSTR *FilePart, + OUT OPTIONAL RTL_PATH_TYPE *InputPathType + ); +#endif + ULONG NTAPI RtlGetFullPathName_UstrEx( @@ -2586,9 +2647,9 @@ NTSTATUS NTAPI RtlQueryEnvironmentVariable_U( - PWSTR Environment, - PUNICODE_STRING Name, - PUNICODE_STRING Value + IN OPTIONAL PWSTR Environment, + IN PUNICODE_STRING Name, + OUT PUNICODE_STRING Value );
VOID @@ -2602,6 +2663,14 @@ NTAPI RtlSetCurrentDirectory_U( IN PUNICODE_STRING name +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlSetCurrentEnvironment( + IN PVOID Environment, + OUT OPTIONAL PVOID *PreviousEnvironment );
NTSYSAPI
Modified: trunk/reactos/include/ndk/rtltypes.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/rtltypes.h?rev=... ============================================================================== --- trunk/reactos/include/ndk/rtltypes.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/rtltypes.h [iso-8859-1] Tue Jan 24 21:15:55 2012 @@ -36,17 +36,22 @@ // #define RTL_USER_PROCESS_PARAMETERS_NORMALIZED 0x01 #define RTL_USER_PROCESS_PARAMETERS_PROFILE_USER 0x02 -#define RTL_USER_PROCESS_PARAMETERS_PROFILE_SERVER 0x04 -#define RTL_USER_PROCESS_PARAMETERS_PROFILE_KERNEL 0x08 +#define RTL_USER_PROCESS_PARAMETERS_PROFILE_KERNEL 0x04 +#define RTL_USER_PROCESS_PARAMETERS_PROFILE_SERVER 0x08 #define RTL_USER_PROCESS_PARAMETERS_UNKNOWN 0x10 #define RTL_USER_PROCESS_PARAMETERS_RESERVE_1MB 0x20 #define RTL_USER_PROCESS_PARAMETERS_RESERVE_16MB 0x40 +#define RTL_USER_PROCESS_PARAMETERS_CASE_SENSITIVE 0x80 #define RTL_USER_PROCESS_PARAMETERS_DISABLE_HEAP_CHECKS 0x100 #define RTL_USER_PROCESS_PARAMETERS_PROCESS_OR_1 0x200 #define RTL_USER_PROCESS_PARAMETERS_PROCESS_OR_2 0x400 #define RTL_USER_PROCESS_PARAMETERS_PRIVATE_DLL_PATH 0x1000 -#define RTL_USER_PROCESS_PARAMETERS_LOCAL_DLL_PATH 0x2000 +#define RTL_USER_PROCESS_PARAMETERS_APP_MANIFEST_PRESENT 0x2000 +#define RTL_USER_PROCESS_PARAMETERS_IMAGE_KEY_MISSING 0x4000 #define RTL_USER_PROCESS_PARAMETERS_NX 0x20000 + +#define RTL_MAX_DRIVE_LETTERS 32 +#define RTL_DRIVE_LETTER_VALID (USHORT)0x0001
// // Exception Flags @@ -901,28 +906,78 @@
typedef struct _RTL_HEAP_TAG_INFO { - ULONG NumberOfAllocations; - ULONG NumberOfFrees; - ULONG BytesAllocated; + ULONG NumberOfAllocations; + ULONG NumberOfFrees; + SIZE_T BytesAllocated; } RTL_HEAP_TAG_INFO, *PRTL_HEAP_TAG_INFO;
typedef struct _RTL_HEAP_USAGE_ENTRY { struct _RTL_HEAP_USAGE_ENTRY *Next; + PVOID Address; + SIZE_T Size; + USHORT AllocatorBackTraceIndex; + USHORT TagIndex; } RTL_HEAP_USAGE_ENTRY, *PRTL_HEAP_USAGE_ENTRY;
typedef struct _RTL_HEAP_USAGE { ULONG Length; - ULONG BytesAllocated; - ULONG BytesCommitted; - ULONG BytesReserved; - ULONG BytesReservedMaximum; + SIZE_T BytesAllocated; + SIZE_T BytesCommitted; + SIZE_T BytesReserved; + SIZE_T BytesReservedMaximum; PRTL_HEAP_USAGE_ENTRY Entries; PRTL_HEAP_USAGE_ENTRY AddedEntries; PRTL_HEAP_USAGE_ENTRY RemovedEntries; - UCHAR Reserved[32]; + ULONG_PTR Reserved[8]; } RTL_HEAP_USAGE, *PRTL_HEAP_USAGE; + +typedef struct _RTL_HEAP_WALK_ENTRY +{ + PVOID DataAddress; + SIZE_T DataSize; + UCHAR OverheadBytes; + UCHAR SegmentIndex; + USHORT Flags; + union + { + struct + { + SIZE_T Settable; + USHORT TagIndex; + USHORT AllocatorBackTraceIndex; + ULONG Reserved[2]; + } Block; + struct + { + ULONG_PTR CommittedSize; + ULONG_PTR UnCommittedSize; + PVOID FirstEntry; + PVOID LastEntry; + } Segment; + }; +} RTL_HEAP_WALK_ENTRY, *PRTL_HEAP_WALK_ENTRY; + +typedef struct _RTL_HEAP_ENTRY +{ + SIZE_T Size; + USHORT Flags; + USHORT AllocatorBackTraceIndex; + union + { + struct + { + SIZE_T Settable; + ULONG Tag; + } s1; + struct + { + SIZE_T CommittedSize; + PVOID FirstBlock; + } s2; + } u; +} RTL_HEAP_ENTRY, *PRTL_HEAP_ENTRY;
typedef struct _RTL_HEAP_INFORMATION { @@ -930,15 +985,15 @@ ULONG Flags; USHORT EntryOverhead; USHORT CreatorBackTraceIndex; - ULONG BytesAllocated; - ULONG BytesCommitted; + SIZE_T BytesAllocated; + SIZE_T BytesCommitted; ULONG NumberOfTags; ULONG NumberOfEntries; ULONG NumberOfPseudoTags; ULONG PseudoTagGranularity; ULONG Reserved[4]; - PVOID Tags; - PVOID Entries; + PRTL_HEAP_TAG Tags; + PRTL_HEAP_ENTRY Entries; } RTL_HEAP_INFORMATION, *PRTL_HEAP_INFORMATION;
typedef struct _RTL_PROCESS_HEAPS @@ -1196,6 +1251,8 @@ // // RTL Resource // +#define RTL_RESOURCE_FLAG_LONG_TERM ((ULONG)0x00000001) + typedef struct _RTL_RESOURCE { RTL_CRITICAL_SECTION Lock; @@ -1205,8 +1262,8 @@ ULONG ExclusiveWaiters; LONG NumberActive; HANDLE OwningThread; - ULONG TimeoutBoost; - PVOID DebugInfo; + ULONG Flags; + PRTL_RESOURCE_DEBUG DebugInfo; } RTL_RESOURCE, *PRTL_RESOURCE;
// @@ -1241,7 +1298,13 @@ UNICODE_STRING DesktopInfo; UNICODE_STRING ShellInfo; UNICODE_STRING RuntimeData; - RTL_DRIVE_LETTER_CURDIR CurrentDirectories[32]; + RTL_DRIVE_LETTER_CURDIR CurrentDirectories[RTL_MAX_DRIVE_LETTERS]; +#if (NTDDI_VERSION >= NTDDI_LONGHORN) + SIZE_T EnvironmentSize; +#endif +#if (NTDDI_VERSION >= NTDDI_WIN7) + SIZE_T EnvironmentVersion; +#endif } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
typedef struct _RTL_USER_PROCESS_INFORMATION
Modified: trunk/reactos/include/xdk/rtlfuncs.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/rtlfuncs.h?rev=... ============================================================================== --- trunk/reactos/include/xdk/rtlfuncs.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/rtlfuncs.h [iso-8859-1] Tue Jan 24 21:15:55 2012 @@ -1369,7 +1369,7 @@ _Out_writes_bytes_to_(MaxBytesInMultiByteString, *BytesInMultiByteString) PCHAR MultiByteString, _In_ ULONG MaxBytesInMultiByteString, _Out_opt_ PULONG BytesInMultiByteString, - _In_reads_bytes_(BytesInUnicodeString) PWCH UnicodeString, + _In_reads_bytes_(BytesInUnicodeString) PCWCH UnicodeString, _In_ ULONG BytesInUnicodeString);
_IRQL_requires_max_(PASSIVE_LEVEL)