[PATCH v3 4/9] kernel32: Implement CreatePrivateNamespaceA.
Mohamad Al-Jaf
mohamadaljaf at gmail.com
Wed Feb 23 00:14:02 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 c108272f1b1..df340fa4d21 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 ec8a348e1a2..a75d5c2b67a 100644
--- a/dlls/kernel32/security.c
+++ b/dlls/kernel32/security.c
@@ -40,3 +40,20 @@ HANDLE WINAPI CreateBoundaryDescriptorA( LPCSTR name, ULONG flags )
}
return CreateBoundaryDescriptorW( buffer, flags );
}
+
+/******************************************************************************
+ * CreatePrivateNamespaceA (KERNEL32.@)
+ */
+HANDLE WINAPI CreatePrivateNamespaceA( LPSECURITY_ATTRIBUTES attr, LPVOID descr, LPCSTR prefix )
+{
+ WCHAR buffer[MAX_PATH];
+
+ if (!prefix) return CreatePrivateNamespaceW( attr, descr, NULL );
+
+ if (!MultiByteToWideChar( CP_ACP, 0, prefix, -1, buffer, MAX_PATH ))
+ {
+ SetLastError( ERROR_FILENAME_EXCED_RANGE );
+ return 0;
+ }
+ return CreatePrivateNamespaceW( attr, descr, buffer );
+}
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