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