Jacek Caban : kernel32: Moved GetModuleFileNameEx[AW] to kernel32.
Alexandre Julliard
julliard at winehq.org
Thu May 12 13:57:50 CDT 2011
Module: wine
Branch: master
Commit: 9bbf3f90752afe127f69bb89d62bd5849d2774d7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9bbf3f90752afe127f69bb89d62bd5849d2774d7
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu May 12 12:23:22 2011 +0000
kernel32: Moved GetModuleFileNameEx[AW] to kernel32.
---
dlls/kernel32/kernel32.spec | 2 +
dlls/kernel32/module.c | 55 ++++++++++++++++++++++++++++++++++++++++++
dlls/psapi/psapi.spec | 4 +-
dlls/psapi/psapi_main.c | 56 -------------------------------------------
4 files changed, 59 insertions(+), 58 deletions(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 4da6f06..3f85557 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -774,6 +774,8 @@
@ stdcall K32EnumProcesses(ptr long ptr)
@ stdcall K32GetModuleBaseNameA(long long ptr long)
@ stdcall K32GetModuleBaseNameW(long long ptr long)
+@ stdcall K32GetModuleFileNameExA(long long ptr long)
+@ stdcall K32GetModuleFileNameExW(long long ptr long)
@ stdcall K32GetProcessMemoryInfo(long ptr long)
@ stdcall K32QueryWorkingSet(long ptr long)
@ stdcall K32QueryWorkingSetEx(long ptr long)
diff --git a/dlls/kernel32/module.c b/dlls/kernel32/module.c
index 4e2c098..94d20c3 100644
--- a/dlls/kernel32/module.c
+++ b/dlls/kernel32/module.c
@@ -1228,6 +1228,61 @@ DWORD WINAPI K32GetModuleBaseNameA(HANDLE process, HMODULE module,
return ret;
}
+/***********************************************************************
+ * K32GetModuleFileNameExW (KERNEL32.@)
+ */
+DWORD WINAPI K32GetModuleFileNameExW(HANDLE process, HMODULE module,
+ LPWSTR file_name, DWORD size)
+{
+ LDR_MODULE ldr_module;
+
+ if(!get_ldr_module(process, module, &ldr_module))
+ return 0;
+
+ size = min(ldr_module.FullDllName.Length / sizeof(WCHAR), size);
+ if (!ReadProcessMemory(process, ldr_module.FullDllName.Buffer,
+ file_name, size * sizeof(WCHAR), NULL))
+ return 0;
+
+ file_name[size] = 0;
+ return size;
+}
+
+/***********************************************************************
+ * K32GetModuleFileNameExA (KERNEL32.@)
+ */
+DWORD WINAPI K32GetModuleFileNameExA(HANDLE process, HMODULE module,
+ LPSTR file_name, DWORD size)
+{
+ WCHAR *ptr;
+
+ TRACE("(hProcess=%p, hModule=%p, %p, %d)\n", process, module, file_name, size);
+
+ if (!file_name || !size) return 0;
+
+ if ( process == GetCurrentProcess() )
+ {
+ DWORD len = GetModuleFileNameA( module, file_name, size );
+ if (size) file_name[size - 1] = '\0';
+ return len;
+ }
+
+ if (!(ptr = HeapAlloc(GetProcessHeap(), 0, size * sizeof(WCHAR)))) return 0;
+
+ if (!K32GetModuleFileNameExW(process, module, ptr, size))
+ {
+ file_name[0] = '\0';
+ }
+ else
+ {
+ if (!WideCharToMultiByte( CP_ACP, 0, ptr, -1, file_name, size, NULL, NULL ))
+ file_name[size - 1] = 0;
+ }
+
+ HeapFree(GetProcessHeap(), 0, ptr);
+ return strlen(file_name);
+}
+
#ifdef __i386__
/***********************************************************************
diff --git a/dlls/psapi/psapi.spec b/dlls/psapi/psapi.spec
index 07e0cb5..0427891 100644
--- a/dlls/psapi/psapi.spec
+++ b/dlls/psapi/psapi.spec
@@ -12,8 +12,8 @@
@ stdcall GetMappedFileNameW(long ptr ptr long)
@ stdcall GetModuleBaseNameA(long long ptr long) kernel32.K32GetModuleBaseNameA
@ stdcall GetModuleBaseNameW(long long ptr long) kernel32.K32GetModuleBaseNameW
-@ stdcall GetModuleFileNameExA(long long ptr long)
-@ stdcall GetModuleFileNameExW(long long ptr long)
+@ stdcall GetModuleFileNameExA(long long ptr long) kernel32.K32GetModuleFileNameExA
+@ stdcall GetModuleFileNameExW(long long ptr long) kernel32.K32GetModuleFileNameExW
@ stdcall GetModuleInformation(long long ptr long)
@ stdcall GetPerformanceInfo(ptr long)
@ stdcall GetProcessImageFileNameA(long ptr long) kernel32.K32GetProcessImageFileNameA
diff --git a/dlls/psapi/psapi_main.c b/dlls/psapi/psapi_main.c
index a2d7ac4..b4cabca 100644
--- a/dlls/psapi/psapi_main.c
+++ b/dlls/psapi/psapi_main.c
@@ -263,62 +263,6 @@ DWORD WINAPI GetMappedFileNameW(HANDLE hProcess, LPVOID lpv, LPWSTR lpFilename,
}
/***********************************************************************
- * GetModuleFileNameExA (PSAPI.@)
- */
-DWORD WINAPI GetModuleFileNameExA(HANDLE hProcess, HMODULE hModule,
- LPSTR lpFileName, DWORD nSize)
-{
- WCHAR *ptr;
-
- TRACE("(hProcess=%p, hModule=%p, %p, %d)\n",
- hProcess, hModule, lpFileName, nSize);
-
- if (!lpFileName || !nSize) return 0;
-
- if ( hProcess == GetCurrentProcess() )
- {
- DWORD len = GetModuleFileNameA( hModule, lpFileName, nSize );
- if (nSize) lpFileName[nSize - 1] = '\0';
- return len;
- }
-
- if (!(ptr = HeapAlloc(GetProcessHeap(), 0, nSize * sizeof(WCHAR)))) return 0;
-
- if (!GetModuleFileNameExW(hProcess, hModule, ptr, nSize))
- {
- lpFileName[0] = '\0';
- }
- else
- {
- if (!WideCharToMultiByte( CP_ACP, 0, ptr, -1, lpFileName, nSize, NULL, NULL ))
- lpFileName[nSize - 1] = 0;
- }
-
- HeapFree(GetProcessHeap(), 0, ptr);
- return strlen(lpFileName);
-}
-
-/***********************************************************************
- * GetModuleFileNameExW (PSAPI.@)
- */
-DWORD WINAPI GetModuleFileNameExW(HANDLE hProcess, HMODULE hModule,
- LPWSTR lpFileName, DWORD nSize)
-{
- LDR_MODULE LdrModule;
-
- if(!PSAPI_GetLdrModule(hProcess, hModule, &LdrModule))
- return 0;
-
- nSize = min(LdrModule.FullDllName.Length / sizeof(WCHAR), nSize);
- if (!ReadProcessMemory(hProcess, LdrModule.FullDllName.Buffer,
- lpFileName, nSize * sizeof(WCHAR), NULL))
- return 0;
-
- lpFileName[nSize] = 0;
- return nSize;
-}
-
-/***********************************************************************
* GetModuleInformation (PSAPI.@)
*/
BOOL WINAPI GetModuleInformation(HANDLE hProcess, HMODULE hModule,
More information about the wine-cvs
mailing list