Daniel Scharrer : kernel32: Add stub implementation for EnumResourceLanguagesEx.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jan 27 16:23:59 CST 2015


Module: wine
Branch: master
Commit: 4d05cfe57700dd87cae58d9b7d0a4839bb92e042
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4d05cfe57700dd87cae58d9b7d0a4839bb92e042

Author: Daniel Scharrer <daniel at constexpr.org>
Date:   Fri Jan 23 14:58:30 2015 +0100

kernel32: Add stub implementation for EnumResourceLanguagesEx.

---

 .../api-ms-win-core-libraryloader-l1-1-1.spec      |  4 +-
 dlls/kernel32/kernel32.spec                        |  2 +
 dlls/kernel32/resource.c                           | 54 ++++++++++++++++++----
 include/winbase.h                                  |  8 ++++
 4 files changed, 58 insertions(+), 10 deletions(-)

diff --git a/dlls/api-ms-win-core-libraryloader-l1-1-1/api-ms-win-core-libraryloader-l1-1-1.spec b/dlls/api-ms-win-core-libraryloader-l1-1-1/api-ms-win-core-libraryloader-l1-1-1.spec
index 3a8e3d9..afd1407 100644
--- a/dlls/api-ms-win-core-libraryloader-l1-1-1/api-ms-win-core-libraryloader-l1-1-1.spec
+++ b/dlls/api-ms-win-core-libraryloader-l1-1-1/api-ms-win-core-libraryloader-l1-1-1.spec
@@ -1,7 +1,7 @@
 @ stub AddDllDirectory
 @ stdcall DisableThreadLibraryCalls(long) kernel32.DisableThreadLibraryCalls
-@ stub EnumResourceLanguagesExA
-@ stub EnumResourceLanguagesExW
+@ stdcall EnumResourceLanguagesExA(long str str ptr long long long) kernel32.EnumResourceLanguagesExA
+@ stdcall EnumResourceLanguagesExW(long wstr wstr ptr long long long) kernel32.EnumResourceLanguagesExW
 @ stub EnumResourceNamesExA
 @ stub EnumResourceNamesExW
 @ stub EnumResourceTypesExA
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 71478dc..0c2d0c1 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -323,6 +323,8 @@
 @ stdcall EnumLanguageGroupLocalesA(ptr long long ptr)
 @ stdcall EnumLanguageGroupLocalesW(ptr long long ptr)
 @ stdcall EnumResourceLanguagesA(long str str ptr long)
+@ stdcall EnumResourceLanguagesExA(long str str ptr long long long)
+@ stdcall EnumResourceLanguagesExW(long wstr wstr ptr long long long)
 @ stdcall EnumResourceLanguagesW(long wstr wstr ptr long)
 @ stdcall EnumResourceNamesA(long str ptr long)
 @ stdcall EnumResourceNamesW(long wstr ptr long)
diff --git a/dlls/kernel32/resource.c b/dlls/kernel32/resource.c
index 06b93db..8d9009c 100644
--- a/dlls/kernel32/resource.c
+++ b/dlls/kernel32/resource.c
@@ -437,10 +437,11 @@ done:
 
 
 /**********************************************************************
- *	EnumResourceLanguagesA	(KERNEL32.@)
+ *	EnumResourceLanguagesExA	(KERNEL32.@)
  */
-BOOL WINAPI EnumResourceLanguagesA( HMODULE hmod, LPCSTR type, LPCSTR name,
-                                    ENUMRESLANGPROCA lpfun, LONG_PTR lparam )
+BOOL WINAPI EnumResourceLanguagesExA( HMODULE hmod, LPCSTR type, LPCSTR name,
+                                      ENUMRESLANGPROCA lpfun, LONG_PTR lparam,
+                                      DWORD flags, LANGID lang )
 {
     int i;
     BOOL ret = FALSE;
@@ -450,7 +451,15 @@ BOOL WINAPI EnumResourceLanguagesA( HMODULE hmod, LPCSTR type, LPCSTR name,
     const IMAGE_RESOURCE_DIRECTORY *basedir, *resdir;
     const IMAGE_RESOURCE_DIRECTORY_ENTRY *et;
 
-    TRACE( "%p %s %s %p %lx\n", hmod, debugstr_a(type), debugstr_a(name), lpfun, lparam );
+    TRACE( "%p %s %s %p %lx %x %d\n", hmod, debugstr_a(type), debugstr_a(name),
+           lpfun, lparam, flags, lang );
+
+    if (flags & (RESOURCE_ENUM_MUI | RESOURCE_ENUM_MUI_SYSTEM | RESOURCE_ENUM_VALIDATE))
+        FIXME( "unimplemented flags: %x\n", flags );
+
+    if (!flags) flags = RESOURCE_ENUM_LN | RESOURCE_ENUM_MUI;
+
+    if (!(flags & RESOURCE_ENUM_LN)) return ret;
 
     if (!hmod) hmod = GetModuleHandleA( NULL );
     typeW.Buffer = nameW.Buffer = NULL;
@@ -489,10 +498,21 @@ done:
 
 
 /**********************************************************************
- *	EnumResourceLanguagesW	(KERNEL32.@)
+ *	EnumResourceLanguagesA	(KERNEL32.@)
  */
-BOOL WINAPI EnumResourceLanguagesW( HMODULE hmod, LPCWSTR type, LPCWSTR name,
-                                    ENUMRESLANGPROCW lpfun, LONG_PTR lparam )
+BOOL WINAPI EnumResourceLanguagesA( HMODULE hmod, LPCSTR type, LPCSTR name,
+                                    ENUMRESLANGPROCA lpfun, LONG_PTR lparam )
+{
+    return EnumResourceLanguagesExA( hmod, type, name, lpfun, lparam, 0, 0 );
+}
+
+
+/**********************************************************************
+ *	EnumResourceLanguagesExW	(KERNEL32.@)
+ */
+BOOL WINAPI EnumResourceLanguagesExW( HMODULE hmod, LPCWSTR type, LPCWSTR name,
+                                      ENUMRESLANGPROCW lpfun, LONG_PTR lparam,
+                                      DWORD flags, LANGID lang )
 {
     int i;
     BOOL ret = FALSE;
@@ -502,7 +522,15 @@ BOOL WINAPI EnumResourceLanguagesW( HMODULE hmod, LPCWSTR type, LPCWSTR name,
     const IMAGE_RESOURCE_DIRECTORY *basedir, *resdir;
     const IMAGE_RESOURCE_DIRECTORY_ENTRY *et;
 
-    TRACE( "%p %s %s %p %lx\n", hmod, debugstr_w(type), debugstr_w(name), lpfun, lparam );
+    TRACE( "%p %s %s %p %lx %x %d\n", hmod, debugstr_w(type), debugstr_w(name),
+           lpfun, lparam, flags, lang );
+
+    if (flags & (RESOURCE_ENUM_MUI | RESOURCE_ENUM_MUI_SYSTEM | RESOURCE_ENUM_VALIDATE))
+        FIXME( "unimplemented flags: %x\n", flags );
+
+    if (!flags) flags = RESOURCE_ENUM_LN | RESOURCE_ENUM_MUI;
+
+    if (!(flags & RESOURCE_ENUM_LN)) return ret;
 
     if (!hmod) hmod = GetModuleHandleW( NULL );
     typeW.Buffer = nameW.Buffer = NULL;
@@ -541,6 +569,16 @@ done:
 
 
 /**********************************************************************
+ *	EnumResourceLanguagesW	(KERNEL32.@)
+ */
+BOOL WINAPI EnumResourceLanguagesW( HMODULE hmod, LPCWSTR type, LPCWSTR name,
+                                    ENUMRESLANGPROCW lpfun, LONG_PTR lparam )
+{
+    return EnumResourceLanguagesExW( hmod, type, name, lpfun, lparam, 0, 0 );
+}
+
+
+/**********************************************************************
  *	    LoadResource     (KERNEL32.@)
  */
 HGLOBAL WINAPI LoadResource( HINSTANCE hModule, HRSRC hRsrc )
diff --git a/include/winbase.h b/include/winbase.h
index 561819d..0d8cede 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -1542,6 +1542,11 @@ typedef struct _REASON_CONTEXT
     } Reason;
 } REASON_CONTEXT, *PREASON_CONTEXT;
 
+#define RESOURCE_ENUM_LN          0x0001
+#define RESOURCE_ENUM_MUI         0x0002
+#define RESOURCE_ENUM_MUI_SYSTEM  0x0004
+#define RESOURCE_ENUM_VALIDATE    0x0008
+
 WINBASEAPI BOOL        WINAPI ActivateActCtx(HANDLE,ULONG_PTR *);
 WINADVAPI  BOOL        WINAPI AddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
 WINADVAPI  BOOL        WINAPI AddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
@@ -1749,6 +1754,9 @@ WINBASEAPI void        WINAPI EnterCriticalSection(CRITICAL_SECTION *lpCrit);
 WINBASEAPI BOOL        WINAPI EnumResourceLanguagesA(HMODULE,LPCSTR,LPCSTR,ENUMRESLANGPROCA,LONG_PTR);
 WINBASEAPI BOOL        WINAPI EnumResourceLanguagesW(HMODULE,LPCWSTR,LPCWSTR,ENUMRESLANGPROCW,LONG_PTR);
 #define                       EnumResourceLanguages WINELIB_NAME_AW(EnumResourceLanguages)
+WINBASEAPI BOOL        WINAPI EnumResourceLanguagesExA(HMODULE,LPCSTR,LPCSTR,ENUMRESLANGPROCA,LONG_PTR,DWORD,LANGID);
+WINBASEAPI BOOL        WINAPI EnumResourceLanguagesExW(HMODULE,LPCWSTR,LPCWSTR,ENUMRESLANGPROCW,LONG_PTR,DWORD,LANGID);
+#define                       EnumResourceLanguagesEx WINELIB_NAME_AW(EnumResourceLanguagesEx)
 WINBASEAPI BOOL        WINAPI EnumResourceNamesA(HMODULE,LPCSTR,ENUMRESNAMEPROCA,LONG_PTR);
 WINBASEAPI BOOL        WINAPI EnumResourceNamesW(HMODULE,LPCWSTR,ENUMRESNAMEPROCW,LONG_PTR);
 #define                       EnumResourceNames WINELIB_NAME_AW(EnumResourceNames)




More information about the wine-cvs mailing list