[PATCH v4 5/9] kernel32: Implement OpenPrivateNamespaceA.
Mohamad Al-Jaf
mohamadaljaf at gmail.com
Mon Feb 28 01:47:59 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 0598a87933f..ed5a7edfd6c 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 ad74cd61585..39a54677154 100644
--- a/dlls/kernel32/security.c
+++ b/dlls/kernel32/security.c
@@ -75,3 +75,27 @@ HANDLE WINAPI CreatePrivateNamespaceA( LPSECURITY_ATTRIBUTES attr, LPVOID descr,
HeapFree( GetProcessHeap(), 0, str );
return ret;
}
+
+/******************************************************************************
+ * OpenPrivateNamespaceA (KERNEL32.@)
+ */
+HANDLE WINAPI OpenPrivateNamespaceA( LPVOID descr, LPCSTR prefix )
+{
+ DWORD len;
+ HANDLE ret;
+ LPWSTR str = NULL;
+
+ TRACE( "%p %s\n", 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 = OpenPrivateNamespaceW( descr, str );
+
+ HeapFree( GetProcessHeap(), 0, str );
+ return ret;
+}
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