https://git.reactos.org/?p=reactos.git;a=commitdiff;h=bd0a5498b04cf77e611cb6526fd88459be2a7b19

commit bd0a5498b04cf77e611cb6526fd88459be2a7b19
Author:     Ratin Gao <[email protected]>
AuthorDate: Thu Nov 16 03:59:32 2023 +0800
Commit:     GitHub <[email protected]>
CommitDate: Wed Nov 15 20:59:32 2023 +0100

    [NTDLL:LDR] Little fixes about SAL annotation and behavior (#5793)
    
    - Uniform function declarations in .c and .h with fixes and SAL2 
improvements.
    - Use LDR_[UN]LOCK_LOADER_LOCK_FLAG_XXX correctly.
    - Fix incorrect UsedSize calculation in LdrQueryProcessModuleInformationEx 
(caught by ThFabba).
    - Whatever the callback request stop the enumeration or not in 
LdrEnumerateLoadedModules, the following operations should be the same.
    - Fix 2 incorrect DPRINT1 that printed incorrect parameter.
    - Return error if RtlAllocateHeap failed in LdrpGetProcedureAddress, and 
add comments about NT6.2 new changes.
---
 dll/ntdll/ldr/ldrapi.c             | 103 ++++++++++++++++++++-----------------
 dll/ntdll/ldr/ldrinit.c            |  54 ++++++++++---------
 dll/ntdll/ldr/ldrutils.c           |   7 ++-
 dll/win32/kernel32/client/loader.c |   2 +-
 sdk/include/ndk/ldrfuncs.h         |   8 +--
 sdk/include/ndk/ldrtypes.h         |   2 +-
 sdk/include/ndk/rtlfuncs.h         |   5 +-
 sdk/include/ndk/umfuncs.h          |  18 +++----
 sdk/lib/rtl/image.c                |  24 +++++----
 9 files changed, 120 insertions(+), 103 deletions(-)

diff --git a/dll/ntdll/ldr/ldrapi.c b/dll/ntdll/ldr/ldrapi.c
index f850ce6ddca..34517b1a251 100644
--- a/dll/ntdll/ldr/ldrapi.c
+++ b/dll/ntdll/ldr/ldrapi.c
@@ -309,10 +309,11 @@ LdrLockLoaderLock(
 NTSTATUS
 NTAPI
 DECLSPEC_HOTPATCH
-LdrLoadDll(IN PWSTR SearchPath OPTIONAL,
-           IN PULONG DllCharacteristics OPTIONAL,
-           IN PUNICODE_STRING DllName,
-           OUT PVOID *BaseAddress)
+LdrLoadDll(
+    _In_opt_ PWSTR SearchPath,
+    _In_opt_ PULONG DllCharacteristics,
+    _In_ PUNICODE_STRING DllName,
+    _Out_ PVOID *BaseAddress)
 {
     WCHAR StringBuffer[MAX_PATH];
     UNICODE_STRING DllString1, DllString2;
@@ -426,7 +427,7 @@ LdrLoadDll(IN PWSTR SearchPath OPTIONAL,
         LdrpTopLevelDllBeingLoaded = OldTldDll;
 
         /* Release the lock */
-        LdrUnlockLoaderLock(LDR_LOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS, Cookie);
+        LdrUnlockLoaderLock(LDR_UNLOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS, 
Cookie);
     }
     _SEH2_END;
 
@@ -793,7 +794,7 @@ Quickie:
     /* Release lock */
     if (Locked)
     {
-        LdrUnlockLoaderLock(LDR_LOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS,
+        LdrUnlockLoaderLock(LDR_UNLOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS,
                             Cookie);
     }
 
@@ -840,10 +841,11 @@ LdrGetProcedureAddress(
  */
 NTSTATUS
 NTAPI
-LdrVerifyImageMatchesChecksum(IN HANDLE FileHandle,
-                              IN PLDR_CALLBACK Callback,
-                              IN PVOID CallbackContext,
-                              OUT PUSHORT ImageCharacteristics)
+LdrVerifyImageMatchesChecksum(
+    _In_ HANDLE FileHandle,
+    _In_ PLDR_CALLBACK Callback,
+    _In_ PVOID CallbackContext,
+    _Out_ PUSHORT ImageCharacteristics)
 {
     FILE_STANDARD_INFORMATION FileStandardInfo;
     PIMAGE_IMPORT_DESCRIPTOR ImportData;
@@ -982,18 +984,19 @@ LdrVerifyImageMatchesChecksum(IN HANDLE FileHandle,
 
 NTSTATUS
 NTAPI
-LdrQueryProcessModuleInformationEx(IN ULONG ProcessId,
-                                   IN ULONG Reserved,
-                                   OUT PRTL_PROCESS_MODULES ModuleInformation,
-                                   IN ULONG Size,
-                                   OUT PULONG ReturnedSize OPTIONAL)
+LdrQueryProcessModuleInformationEx(
+    _In_opt_ ULONG ProcessId,
+    _Reserved_ ULONG Reserved,
+    _Out_writes_bytes_to_(Size, *ReturnedSize) PRTL_PROCESS_MODULES 
ModuleInformation,
+    _In_ ULONG Size,
+    _Out_opt_ PULONG ReturnedSize)
 {
     PLIST_ENTRY ModuleListHead, InitListHead;
     PLIST_ENTRY Entry, InitEntry;
     PLDR_DATA_TABLE_ENTRY Module, InitModule;
     PRTL_PROCESS_MODULE_INFORMATION ModulePtr = NULL;
     NTSTATUS Status = STATUS_SUCCESS;
-    ULONG UsedSize = sizeof(ULONG);
+    ULONG UsedSize = FIELD_OFFSET(RTL_PROCESS_MODULES, Modules);
     ANSI_STRING AnsiString;
     PCHAR p;
 
@@ -1110,9 +1113,10 @@ LdrQueryProcessModuleInformationEx(IN ULONG ProcessId,
  */
 NTSTATUS
 NTAPI
-LdrQueryProcessModuleInformation(IN PRTL_PROCESS_MODULES ModuleInformation,
-                                 IN ULONG Size,
-                                 OUT PULONG ReturnedSize OPTIONAL)
+LdrQueryProcessModuleInformation(
+    _Out_writes_bytes_to_(Size, *ReturnedSize) PRTL_PROCESS_MODULES 
ModuleInformation,
+    _In_ ULONG Size,
+    _Out_opt_ PULONG ReturnedSize)
 {
     /* Call Ex version of the API */
     return LdrQueryProcessModuleInformationEx(0, 0, ModuleInformation, Size, 
ReturnedSize);
@@ -1123,9 +1127,10 @@ LdrQueryProcessModuleInformation(IN PRTL_PROCESS_MODULES 
ModuleInformation,
  */
 NTSTATUS
 NTAPI
-LdrEnumerateLoadedModules(IN BOOLEAN ReservedFlag,
-                          IN PLDR_ENUM_CALLBACK EnumProc,
-                          IN PVOID Context)
+LdrEnumerateLoadedModules(
+    _Reserved_ ULONG ReservedFlag,
+    _In_ PLDR_ENUM_CALLBACK EnumProc,
+    _In_opt_ PVOID Context)
 {
     PLIST_ENTRY ListHead, ListEntry;
     PLDR_DATA_TABLE_ENTRY LdrEntry;
@@ -1161,28 +1166,24 @@ LdrEnumerateLoadedModules(IN BOOLEAN ReservedFlag,
         /* Break if we were asked to stop enumeration */
         if (Stop)
         {
-            /* Release loader lock */
-            Status = LdrUnlockLoaderLock(0, Cookie);
-
-            /* Reset any successful status to STATUS_SUCCESS, but leave
-               failure to the caller */
-            if (NT_SUCCESS(Status))
-                Status = STATUS_SUCCESS;
-
-            /* Return any possible failure status */
-            return Status;
+            break;
         }
 
         /* Advance to the next module */
         ListEntry = ListEntry->Flink;
     }
 
-    /* Release loader lock, it must succeed this time */
+    /* Release loader lock */
     Status = LdrUnlockLoaderLock(0, Cookie);
     ASSERT(NT_SUCCESS(Status));
 
-    /* Return success */
-    return STATUS_SUCCESS;
+    /* Reset any successful status to STATUS_SUCCESS,
+     * but leave failure to the caller */
+    if (NT_SUCCESS(Status))
+        Status = STATUS_SUCCESS;
+
+    /* Return any possible failure status */
+    return Status;
 }
 
 /*
@@ -1190,7 +1191,8 @@ LdrEnumerateLoadedModules(IN BOOLEAN ReservedFlag,
  */
 NTSTATUS
 NTAPI
-LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress)
+LdrDisableThreadCalloutsForDll(
+    _In_ PVOID BaseAddress)
 {
     PLDR_DATA_TABLE_ENTRY LdrEntry;
     NTSTATUS Status;
@@ -1240,8 +1242,9 @@ LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress)
  */
 NTSTATUS
 NTAPI
-LdrAddRefDll(IN ULONG Flags,
-             IN PVOID BaseAddress)
+LdrAddRefDll(
+    _In_ ULONG Flags,
+    _In_ PVOID BaseAddress)
 {
     PLDR_DATA_TABLE_ENTRY LdrEntry;
     NTSTATUS Status = STATUS_SUCCESS;
@@ -1316,7 +1319,7 @@ quickie:
     }
 
     /* Release the lock if needed */
-    if (Locked) LdrUnlockLoaderLock(LDR_LOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS, 
Cookie);
+    if (Locked) 
LdrUnlockLoaderLock(LDR_UNLOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS, Cookie);
     return Status;
 }
 
@@ -1325,7 +1328,8 @@ quickie:
  */
 NTSTATUS
 NTAPI
-LdrUnloadDll(IN PVOID BaseAddress)
+LdrUnloadDll(
+    _In_ PVOID BaseAddress)
 {
     NTSTATUS Status = STATUS_SUCCESS;
     PPEB Peb = NtCurrentPeb();
@@ -1601,10 +1605,11 @@ RtlDllShutdownInProgress(VOID)
  */
 PIMAGE_BASE_RELOCATION
 NTAPI
-LdrProcessRelocationBlock(IN ULONG_PTR Address,
-                          IN ULONG Count,
-                          IN PUSHORT TypeOffset,
-                          IN LONG_PTR Delta)
+LdrProcessRelocationBlock(
+    _In_ ULONG_PTR Address,
+    _In_ ULONG Count,
+    _In_ PUSHORT TypeOffset,
+    _In_ LONG_PTR Delta)
 {
     return LdrProcessRelocationBlockLongLong(Address, Count, TypeOffset, 
Delta);
 }
@@ -1617,8 +1622,9 @@ LdrProcessRelocationBlock(IN ULONG_PTR Address,
  */
 NTSTATUS
 NTAPI
-LdrLoadAlternateResourceModule(IN PVOID Module,
-                               IN PWSTR Buffer)
+LdrLoadAlternateResourceModule(
+    _In_ PVOID Module,
+    _In_ PWSTR Buffer)
 {
     /* Is MUI Support enabled? */
     if (!LdrAlternateResourcesEnabled()) return STATUS_SUCCESS;
@@ -1632,7 +1638,8 @@ LdrLoadAlternateResourceModule(IN PVOID Module,
  */
 BOOLEAN
 NTAPI
-LdrUnloadAlternateResourceModule(IN PVOID BaseAddress)
+LdrUnloadAlternateResourceModule(
+    _In_ PVOID BaseAddress)
 {
     ULONG_PTR Cookie;
 
@@ -1646,7 +1653,7 @@ LdrUnloadAlternateResourceModule(IN PVOID BaseAddress)
     }
 
     /* Release the loader lock */
-    LdrUnlockLoaderLock(1, Cookie);
+    LdrUnlockLoaderLock(LDR_UNLOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS, Cookie);
 
     /* All done */
     return TRUE;
diff --git a/dll/ntdll/ldr/ldrinit.c b/dll/ntdll/ldr/ldrinit.c
index 2dc616a4afd..03e80968f3d 100644
--- a/dll/ntdll/ldr/ldrinit.c
+++ b/dll/ntdll/ldr/ldrinit.c
@@ -109,9 +109,10 @@ extern BOOLEAN RtlpUse16ByteSLists;
  */
 NTSTATUS
 NTAPI
-LdrOpenImageFileOptionsKey(IN PUNICODE_STRING SubKey,
-                           IN BOOLEAN Wow64,
-                           OUT PHANDLE NewKeyHandle)
+LdrOpenImageFileOptionsKey(
+    _In_ PUNICODE_STRING SubKey,
+    _In_ BOOLEAN Wow64,
+    _Out_ PHANDLE NewKeyHandle)
 {
     PHANDLE RootKeyLocation;
     HANDLE RootKey;
@@ -181,12 +182,13 @@ LdrOpenImageFileOptionsKey(IN PUNICODE_STRING SubKey,
  */
 NTSTATUS
 NTAPI
-LdrQueryImageFileKeyOption(IN HANDLE KeyHandle,
-                           IN PCWSTR ValueName,
-                           IN ULONG Type,
-                           OUT PVOID Buffer,
-                           IN ULONG BufferSize,
-                           OUT PULONG ReturnedLength OPTIONAL)
+LdrQueryImageFileKeyOption(
+    _In_ HANDLE KeyHandle,
+    _In_ PCWSTR ValueName,
+    _In_ ULONG Type,
+    _Out_ PVOID Buffer,
+    _In_ ULONG BufferSize,
+    _Out_opt_ PULONG ReturnedLength)
 {
     ULONG KeyInfo[256];
     UNICODE_STRING ValueNameString, IntegerString;
@@ -345,13 +347,14 @@ LdrQueryImageFileKeyOption(IN HANDLE KeyHandle,
  */
 NTSTATUS
 NTAPI
-LdrQueryImageFileExecutionOptionsEx(IN PUNICODE_STRING SubKey,
-                                    IN PCWSTR ValueName,
-                                    IN ULONG Type,
-                                    OUT PVOID Buffer,
-                                    IN ULONG BufferSize,
-                                    OUT PULONG ReturnedLength OPTIONAL,
-                                    IN BOOLEAN Wow64)
+LdrQueryImageFileExecutionOptionsEx(
+    _In_ PUNICODE_STRING SubKey,
+    _In_ PCWSTR ValueName,
+    _In_ ULONG Type,
+    _Out_ PVOID Buffer,
+    _In_ ULONG BufferSize,
+    _Out_opt_ PULONG ReturnedLength,
+    _In_ BOOLEAN Wow64)
 {
     NTSTATUS Status;
     HANDLE KeyHandle;
@@ -383,12 +386,13 @@ LdrQueryImageFileExecutionOptionsEx(IN PUNICODE_STRING 
SubKey,
  */
 NTSTATUS
 NTAPI
-LdrQueryImageFileExecutionOptions(IN PUNICODE_STRING SubKey,
-                                  IN PCWSTR ValueName,
-                                  IN ULONG Type,
-                                  OUT PVOID Buffer,
-                                  IN ULONG BufferSize,
-                                  OUT PULONG ReturnedLength OPTIONAL)
+LdrQueryImageFileExecutionOptions(
+    _In_ PUNICODE_STRING SubKey,
+    _In_ PCWSTR ValueName,
+    _In_ ULONG Type,
+    _Out_ PVOID Buffer,
+    _In_ ULONG BufferSize,
+    _Out_opt_ PULONG ReturnedLength)
 {
     /* Call the newer function */
     return LdrQueryImageFileExecutionOptionsEx(SubKey,
@@ -1879,7 +1883,7 @@ LdrpInitializeProcess(IN PCONTEXT Context,
     HeapParameters.Length = sizeof(HeapParameters);
 
     /* Check if we have Configuration Data */
-#define VALID_CONFIG_FIELD(Name) (ConfigSize >= 
(FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, Name) + sizeof(LoadConfig->Name)))
+#define VALID_CONFIG_FIELD(Name) (ConfigSize >= 
RTL_SIZEOF_THROUGH_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, Name))
     /* The 'original' load config ends after SecurityCookie */
     if ((LoadConfig) && ConfigSize && (VALID_CONFIG_FIELD(SecurityCookie) || 
ConfigSize == LoadConfig->Size))
     {
@@ -2327,7 +2331,7 @@ LdrpInitializeProcess(IN PCONTEXT Context,
         if (!NT_SUCCESS(Status))
         {
             if (ShowSnaps)
-                DPRINT1("LDR: Unable to find post-import process init 
function, Status=0x%08lx\n", &Kernel32String, Status);
+                DPRINT1("LDR: Unable to find post-import process init 
function, Status=0x%08lx\n", Status);
             return Status;
         }
         Kernel32ProcessInitPostImportFunction = FunctionAddress;
@@ -2340,7 +2344,7 @@ LdrpInitializeProcess(IN PCONTEXT Context,
         if (!NT_SUCCESS(Status))
         {
             if (ShowSnaps)
-                DPRINT1("LDR: Unable to find BaseQueryModuleData, 
Status=0x%08lx\n", &Kernel32String, Status);
+                DPRINT1("LDR: Unable to find BaseQueryModuleData, 
Status=0x%08lx\n", Status);
             return Status;
         }
         Kernel32BaseQueryModuleData = FunctionAddress;
diff --git a/dll/ntdll/ldr/ldrutils.c b/dll/ntdll/ldr/ldrutils.c
index 632aa83df04..69e2f8c152e 100644
--- a/dll/ntdll/ldr/ldrutils.c
+++ b/dll/ntdll/ldr/ldrutils.c
@@ -2257,7 +2257,7 @@ LdrpGetProcedureAddress(
     _In_ BOOLEAN ExecuteInit)
 {
     NTSTATUS Status = STATUS_SUCCESS;
-    UCHAR ImportBuffer[64];
+    UCHAR ImportBuffer[64]; // 128 since NT6.2
     PLDR_DATA_TABLE_ENTRY LdrEntry;
     IMAGE_THUNK_DATA Thunk;
     PVOID ImageBase;
@@ -2292,6 +2292,11 @@ LdrpGetProcedureAddress(
             ImportName = RtlAllocateHeap(RtlGetProcessHeap(),
                                          0,
                                          Length);
+            if (!ImportName)
+            {
+                /* Return STATUS_INSUFFICIENT_RESOURCES since NT6.2 */
+                return STATUS_INVALID_PARAMETER;
+            }
         }
         else
         {
diff --git a/dll/win32/kernel32/client/loader.c 
b/dll/win32/kernel32/client/loader.c
index 2934b528699..c3a53eec0bc 100644
--- a/dll/win32/kernel32/client/loader.c
+++ b/dll/win32/kernel32/client/loader.c
@@ -657,7 +657,7 @@ GetModuleFileNameW(HINSTANCE hModule,
     } _SEH2_END
 
     /* Release the loader lock */
-    LdrUnlockLoaderLock(LDR_LOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS, Cookie);
+    LdrUnlockLoaderLock(LDR_UNLOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS, Cookie);
 
     return Length / sizeof(WCHAR);
 }
diff --git a/sdk/include/ndk/ldrfuncs.h b/sdk/include/ndk/ldrfuncs.h
index 9eb891928ca..52e682b57fb 100644
--- a/sdk/include/ndk/ldrfuncs.h
+++ b/sdk/include/ndk/ldrfuncs.h
@@ -97,8 +97,8 @@ LdrGetProcedureAddress(
 ULONG
 NTAPI
 LdrRelocateImage(
-    _In_ PVOID NewBase,
-    _In_ PCCH LoaderName,
+    _In_ PVOID BaseAddress,
+    _In_opt_ PCSTR LoaderName,
     _In_ ULONG Success,
     _In_ ULONG Conflict,
     _In_ ULONG Invalid
@@ -139,9 +139,9 @@ LdrProcessRelocationBlockLongLong(
 NTSTATUS
 NTAPI
 LdrEnumerateLoadedModules(
-    _In_ BOOLEAN ReservedFlag,
+    _Reserved_ ULONG ReservedFlag,
     _In_ PLDR_ENUM_CALLBACK EnumProc,
-    _In_ PVOID Context
+    _In_opt_ PVOID Context
 );
 
 #endif
diff --git a/sdk/include/ndk/ldrtypes.h b/sdk/include/ndk/ldrtypes.h
index fcc76cac8dc..3b71d022887 100644
--- a/sdk/include/ndk/ldrtypes.h
+++ b/sdk/include/ndk/ldrtypes.h
@@ -238,7 +238,7 @@ typedef struct _ALT_RESOURCE_MODULE
 //
 // Callback function for LdrEnumerateLoadedModules
 //
-typedef VOID (NTAPI LDR_ENUM_CALLBACK)(_In_ PLDR_DATA_TABLE_ENTRY 
ModuleInformation, _In_ PVOID Parameter, _Out_ BOOLEAN *Stop);
+typedef VOID (NTAPI LDR_ENUM_CALLBACK)(_In_ PLDR_DATA_TABLE_ENTRY 
ModuleInformation, _In_opt_ PVOID Context, _Out_ BOOLEAN *Stop);
 typedef LDR_ENUM_CALLBACK *PLDR_ENUM_CALLBACK;
 
 //
diff --git a/sdk/include/ndk/rtlfuncs.h b/sdk/include/ndk/rtlfuncs.h
index 41aedeb7e2d..29ab006cf25 100644
--- a/sdk/include/ndk/rtlfuncs.h
+++ b/sdk/include/ndk/rtlfuncs.h
@@ -3975,13 +3975,12 @@ RtlImageRvaToSection(
     _In_ ULONG Rva
 );
 
-NTSYSAPI
 ULONG
 NTAPI
 LdrRelocateImageWithBias(
-    _In_ PVOID NewAddress,
+    _In_ PVOID BaseAddress,
     _In_ LONGLONG AdditionalBias,
-    _In_ PCCH LoaderName,
+    _In_opt_ PCSTR LoaderName,
     _In_ ULONG Success,
     _In_ ULONG Conflict,
     _In_ ULONG Invalid
diff --git a/sdk/include/ndk/umfuncs.h b/sdk/include/ndk/umfuncs.h
index 5fa85a1e978..7c6618c45bf 100644
--- a/sdk/include/ndk/umfuncs.h
+++ b/sdk/include/ndk/umfuncs.h
@@ -158,9 +158,9 @@ NTSTATUS
 NTAPI
 LdrLoadDll(
     _In_opt_ PWSTR SearchPath,
-    _In_opt_ PULONG LoadFlags,
-    _In_ PUNICODE_STRING Name,
-    _Out_opt_ PVOID *BaseAddress
+    _In_opt_ PULONG DllCharacteristics,
+    _In_ PUNICODE_STRING DllName,
+    _Out_ PVOID *BaseAddress
 );
 
 PIMAGE_BASE_RELOCATION
@@ -177,18 +177,18 @@ NTAPI
 LdrQueryImageFileExecutionOptions(
     _In_ PUNICODE_STRING SubKey,
     _In_ PCWSTR ValueName,
-    _In_ ULONG ValueSize,
+    _In_ ULONG Type,
     _Out_ PVOID Buffer,
     _In_ ULONG BufferSize,
-    _Out_opt_ PULONG RetunedLength
+    _Out_opt_ PULONG ReturnedLength
 );
 
 NTSTATUS
 NTAPI
 LdrQueryProcessModuleInformation(
-    _In_opt_ PRTL_PROCESS_MODULES ModuleInformation,
-    _In_opt_ ULONG Size,
-    _Out_ PULONG ReturnedSize
+    _Out_writes_bytes_to_(Size, *ReturnedSize) PRTL_PROCESS_MODULES 
ModuleInformation,
+    _In_ ULONG Size,
+    _Out_opt_ PULONG ReturnedSize
 );
 
 VOID
@@ -221,7 +221,7 @@ LdrVerifyImageMatchesChecksum(
     _In_ HANDLE FileHandle,
     _In_ PLDR_CALLBACK Callback,
     _In_ PVOID CallbackContext,
-    _Out_ PUSHORT ImageCharacterstics
+    _Out_ PUSHORT ImageCharacteristics
 );
 
 NTSTATUS
diff --git a/sdk/lib/rtl/image.c b/sdk/lib/rtl/image.c
index 9efb3d19744..334839d0732 100644
--- a/sdk/lib/rtl/image.c
+++ b/sdk/lib/rtl/image.c
@@ -460,11 +460,11 @@ LdrProcessRelocationBlockLongLong(
 ULONG
 NTAPI
 LdrRelocateImage(
-    IN PVOID BaseAddress,
-    IN PCCH  LoaderName,
-    IN ULONG Success,
-    IN ULONG Conflict,
-    IN ULONG Invalid)
+    _In_ PVOID BaseAddress,
+    _In_opt_ PCSTR LoaderName,
+    _In_ ULONG Success,
+    _In_ ULONG Conflict,
+    _In_ ULONG Invalid)
 {
     return LdrRelocateImageWithBias(BaseAddress, 0, LoaderName, Success, 
Conflict, Invalid);
 }
@@ -472,12 +472,12 @@ LdrRelocateImage(
 ULONG
 NTAPI
 LdrRelocateImageWithBias(
-    IN PVOID BaseAddress,
-    IN LONGLONG AdditionalBias,
-    IN PCCH  LoaderName,
-    IN ULONG Success,
-    IN ULONG Conflict,
-    IN ULONG Invalid)
+    _In_ PVOID BaseAddress,
+    _In_ LONGLONG AdditionalBias,
+    _In_opt_ PCSTR LoaderName,
+    _In_ ULONG Success,
+    _In_ ULONG Conflict,
+    _In_ ULONG Invalid)
 {
     PIMAGE_NT_HEADERS NtHeaders;
     PIMAGE_DATA_DIRECTORY RelocationDDir;
@@ -487,6 +487,8 @@ LdrRelocateImageWithBias(
     PUSHORT TypeOffset;
     LONGLONG Delta;
 
+    UNREFERENCED_PARAMETER(LoaderName);
+
     NtHeaders = RtlImageNtHeader(BaseAddress);
 
     if (NtHeaders == NULL)

Reply via email to