Signed-off-by: Mohamad Al-Jaf mohamadaljaf@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 }