[PATCH 2/4] ntdll: Implement LdrGetDllFullName
Alex Henrie
alexhenrie24 at gmail.com
Sun Jun 7 23:41:17 CDT 2020
Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
---
dlls/ntdll/loader.c | 25 +++++++++++++++++++++++++
dlls/ntdll/ntdll.spec | 1 +
dlls/ntdll/tests/rtl.c | 2 +-
3 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 45d32399ad..63972f360f 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -1713,6 +1713,31 @@ NTSTATUS WINAPI LdrEnumerateLoadedModules( void *unknown, LDRENUMPROC callback,
return STATUS_SUCCESS;
}
+/******************************************************************
+ * LdrGetDllFullName (NTDLL.@)
+ */
+NTSTATUS WINAPI LdrGetDllFullName(HMODULE module, UNICODE_STRING *name)
+{
+ WINE_MODREF *wm;
+
+ TRACE( "(%p, %p)\n", module, name );
+
+ if (!module) module = NtCurrentTeb()->Peb->ImageBaseAddress;
+
+ RtlEnterCriticalSection( &loader_section );
+ wm = get_modref( module );
+ RtlLeaveCriticalSection( &loader_section );
+
+ if (!wm) return STATUS_DLL_NOT_FOUND;
+
+ RtlCopyUnicodeString( name, &wm->ldr.FullDllName );
+
+ if (name->MaximumLength < wm->ldr.FullDllName.Length + sizeof(WCHAR))
+ return STATUS_BUFFER_TOO_SMALL;
+
+ return STATUS_SUCCESS;
+}
+
/******************************************************************
* LdrRegisterDllNotification (NTDLL.@)
*/
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 763d664a3b..ccdca4bd91 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -87,6 +87,7 @@
@ stdcall LdrFindResource_U(long ptr long ptr)
@ stub LdrFlushAlternateResourceModules
@ stdcall LdrGetDllDirectory(ptr)
+@ stdcall LdrGetDllFullName(long ptr)
@ stdcall LdrGetDllHandle(wstr long ptr ptr)
# @ stub LdrGetDllHandleEx
@ stdcall LdrGetDllPath(wstr long ptr ptr)
diff --git a/dlls/ntdll/tests/rtl.c b/dlls/ntdll/tests/rtl.c
index 3588e00681..f3ed4100c1 100644
--- a/dlls/ntdll/tests/rtl.c
+++ b/dlls/ntdll/tests/rtl.c
@@ -3499,7 +3499,7 @@ static void test_LdrGetDllFullName(void)
if (!pLdrGetDllFullName)
{
- skip("LdrGetDllFullName not available\n");
+ win_skip("LdrGetDllFullName not available\n");
return;
}
--
2.27.0
More information about the wine-devel
mailing list