[PATCH v4 4/9] kernel32: Implement CreatePrivateNamespaceA.

Mohamad Al-Jaf mohamadaljaf at gmail.com
Mon Feb 28 01:47:58 CST 2022


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

diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 5fcd06fe802..0598a87933f 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -308,7 +308,7 @@
 @ stdcall -import CreateNamedPipeW(wstr long long long long long long ptr)
 # @ stub CreateNlsSecurityDescriptor
 @ stdcall -import CreatePipe(ptr ptr ptr long)
-# @ stub CreatePrivateNamespaceA
+@ stdcall CreatePrivateNamespaceA(ptr ptr str)
 @ stdcall -import CreatePrivateNamespaceW(ptr ptr wstr)
 @ stdcall -import CreateProcessA(str str ptr ptr long long ptr str ptr ptr)
 @ stdcall -import CreateProcessAsUserA(long str str ptr ptr long long ptr str ptr ptr)
diff --git a/dlls/kernel32/security.c b/dlls/kernel32/security.c
index dc8c8e58d7d..ad74cd61585 100644
--- a/dlls/kernel32/security.c
+++ b/dlls/kernel32/security.c
@@ -51,3 +51,27 @@ HANDLE WINAPI CreateBoundaryDescriptorA( LPCSTR name, ULONG flags )
     HeapFree( GetProcessHeap(), 0, str );
     return ret;
 }
+
+/******************************************************************************
+ *           CreatePrivateNamespaceA       (KERNEL32.@)
+ */
+HANDLE WINAPI CreatePrivateNamespaceA( LPSECURITY_ATTRIBUTES attr, LPVOID descr, LPCSTR prefix )
+{
+    DWORD len;
+    HANDLE ret;
+    LPWSTR str = NULL;
+
+    TRACE( "%p %p %s\n", attr, descr, debugstr_a(prefix) );
+
+    if(prefix)
+    {
+        len = MultiByteToWideChar( CP_ACP, 0, prefix, -1, NULL, 0 );
+        str = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) );
+        MultiByteToWideChar( CP_ACP, 0, prefix, -1, str, len );
+    }
+
+    ret = CreatePrivateNamespaceW( attr, descr, str );
+
+    HeapFree( GetProcessHeap(), 0, str );
+    return ret;
+}
diff --git a/include/namespaceapi.h b/include/namespaceapi.h
index f219a2a7488..6b3198b67c6 100644
--- a/include/namespaceapi.h
+++ b/include/namespaceapi.h
@@ -30,7 +30,9 @@ WINBASEAPI BOOLEAN WINAPI ClosePrivateNamespace(HANDLE,ULONG);
 WINBASEAPI HANDLE  WINAPI CreateBoundaryDescriptorA(LPCSTR,ULONG);
 WINBASEAPI HANDLE  WINAPI CreateBoundaryDescriptorW(LPCWSTR,ULONG);
 #define                   CreateBoundaryDescriptor WINELIB_NAME_AW(CreateBoundaryDescriptor)
+WINBASEAPI HANDLE  WINAPI CreatePrivateNamespaceA(LPSECURITY_ATTRIBUTES,LPVOID,LPCSTR);
 WINBASEAPI HANDLE  WINAPI CreatePrivateNamespaceW(LPSECURITY_ATTRIBUTES,LPVOID,LPCWSTR);
+#define                   CreatePrivateNamespace WINELIB_NAME_AW(CreatePrivateNamespace)
 WINBASEAPI void    WINAPI DeleteBoundaryDescriptor(HANDLE);
 WINBASEAPI HANDLE  WINAPI OpenPrivateNamespaceW(LPVOID,LPCWSTR);
 
-- 
2.35.1




More information about the wine-devel mailing list