[PATCH v2 5/9] kernel32: Implement OpenPrivateNamespaceA.

Mohamad Al-Jaf mohamadaljaf at gmail.com
Wed Feb 23 00:02:03 CST 2022


Signed-off-by: Mohamad Al-Jaf <mohamadaljaf at gmail.com>
---
 dlls/kernel32/kernel32.spec |  2 +-
 dlls/kernel32/security.c    | 17 +++++++++++++++++
 include/namespaceapi.h      |  2 ++
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index df340fa4d21..0bf462f1c30 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -1135,7 +1135,7 @@
 @ stdcall OpenJobObjectW(long long wstr)
 @ stdcall OpenMutexA(long long str)
 @ stdcall -import OpenMutexW(long long wstr)
-# @ stub OpenPrivateNamespaceA
+@ stdcall OpenPrivateNamespaceA(ptr str)
 @ stdcall -import OpenPrivateNamespaceW(ptr wstr)
 @ stdcall -import OpenProcess(long long long)
 @ stdcall -import OpenProcessToken(long long ptr)
diff --git a/dlls/kernel32/security.c b/dlls/kernel32/security.c
index a75d5c2b67a..8763398265c 100644
--- a/dlls/kernel32/security.c
+++ b/dlls/kernel32/security.c
@@ -57,3 +57,20 @@ HANDLE WINAPI CreatePrivateNamespaceA( LPSECURITY_ATTRIBUTES attr, LPVOID descr,
     }
     return CreatePrivateNamespaceW( attr, descr, buffer );
 }
+
+/******************************************************************************
+ *           OpenPrivateNamespaceA       (KERNEL32.@)
+ */
+HANDLE WINAPI OpenPrivateNamespaceA( LPVOID descr, LPCSTR prefix )
+{
+    WCHAR buffer[MAX_PATH];
+
+    if (!prefix) return OpenPrivateNamespaceW( descr, NULL );
+
+    if (!MultiByteToWideChar( CP_ACP, 0, prefix, -1, buffer, MAX_PATH ))
+    {
+        SetLastError( ERROR_FILENAME_EXCED_RANGE );
+        return 0;
+    }
+    return OpenPrivateNamespaceW( descr, NULL );
+}
diff --git a/include/namespaceapi.h b/include/namespaceapi.h
index 6b3198b67c6..2210edea17a 100644
--- a/include/namespaceapi.h
+++ b/include/namespaceapi.h
@@ -34,7 +34,9 @@ WINBASEAPI HANDLE  WINAPI CreatePrivateNamespaceA(LPSECURITY_ATTRIBUTES,LPVOID,L
 WINBASEAPI HANDLE  WINAPI CreatePrivateNamespaceW(LPSECURITY_ATTRIBUTES,LPVOID,LPCWSTR);
 #define                   CreatePrivateNamespace WINELIB_NAME_AW(CreatePrivateNamespace)
 WINBASEAPI void    WINAPI DeleteBoundaryDescriptor(HANDLE);
+WINBASEAPI HANDLE  WINAPI OpenPrivateNamespaceA(LPVOID,LPCSTR);
 WINBASEAPI HANDLE  WINAPI OpenPrivateNamespaceW(LPVOID,LPCWSTR);
+#define                   OpenPrivateNamespace WINELIB_NAME_AW(OpenPrivateNamespace)
 
 #ifdef __cplusplus
 }
-- 
2.35.1




More information about the wine-devel mailing list