[PATCH 1/2] kernel32: Add CreateBoundaryDescriptorA semi-stub.

Mohamad Al-Jaf mohamadaljaf at gmail.com
Wed Feb 16 02:00:59 CST 2022


Needed for IE11.

Signed-off-by: Mohamad Al-Jaf <mohamadaljaf at gmail.com>
---
Documentation written in my own words.
---
 dlls/kernel32/kernel32.spec |  2 +-
 dlls/kernel32/sync.c        | 35 +++++++++++++++++++++++++++++++++++
 include/namespaceapi.h      |  2 ++
 3 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 7db82db375d..e040fedab08 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -266,7 +266,7 @@
 @ stdcall CopyLZFile(long long) LZCopy
 @ stdcall CreateActCtxA(ptr)
 @ stdcall -import CreateActCtxW(ptr)
-# @ stub CreateBoundaryDescriptorA
+@ stdcall CreateBoundaryDescriptorA(str long)
 @ stdcall -import CreateBoundaryDescriptorW(wstr long)
 @ stdcall -import CreateConsoleScreenBuffer(long long ptr long ptr)
 @ stdcall -import CreateDirectoryA(str ptr)
diff --git a/dlls/kernel32/sync.c b/dlls/kernel32/sync.c
index 219800a46e5..27a1ab86d8a 100644
--- a/dlls/kernel32/sync.c
+++ b/dlls/kernel32/sync.c
@@ -190,6 +190,41 @@ HANDLE WINAPI DECLSPEC_HOTPATCH OpenMutexA( DWORD access, BOOL inherit, LPCSTR n
 }
 
 
+/******************************************************************************
+ *           CreateBoundaryDescriptorA       (KERNEL32.@)
+ *
+ * Creates and returns a handle to a boundary descriptor.
+ *
+ * PARAMS
+ *    name        [I] Boundary descriptor name
+ *    flags       [I] Flags for the descriptor
+ *
+ * RETURNS
+ *    Success: Handle to boundary descriptor
+ *    Failure: NULL
+ */
+HANDLE WINAPI CreateBoundaryDescriptorA( LPCSTR name, ULONG flags )
+{
+    DWORD len;
+    HANDLE ret;
+    LPWSTR str = NULL;
+
+    FIXME("%s %u - semi-stub\n", debugstr_a(name), flags);
+
+    if(name)
+    {
+        len = MultiByteToWideChar( CP_ACP, 0, name, -1, NULL, 0 );
+        str = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) );
+        MultiByteToWideChar( CP_ACP, 0, name, -1, str, len );
+    }
+
+    ret = CreateBoundaryDescriptorW( str, flags );
+
+    HeapFree( GetProcessHeap(), 0, str );
+    return ret;
+}
+
+
 
 
 /*
diff --git a/include/namespaceapi.h b/include/namespaceapi.h
index 9446806f82e..f219a2a7488 100644
--- a/include/namespaceapi.h
+++ b/include/namespaceapi.h
@@ -27,7 +27,9 @@ extern "C" {
 
 WINBASEAPI BOOL    WINAPI AddSIDToBoundaryDescriptor(HANDLE*,PSID);
 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 CreatePrivateNamespaceW(LPSECURITY_ATTRIBUTES,LPVOID,LPCWSTR);
 WINBASEAPI void    WINAPI DeleteBoundaryDescriptor(HANDLE);
 WINBASEAPI HANDLE  WINAPI OpenPrivateNamespaceW(LPVOID,LPCWSTR);
-- 
2.35.1




More information about the wine-devel mailing list