From b8e97560fb01b3acfdaaa66ae3c4ae37be071c29 Mon Sep 17 00:00:00 2001
From: Huw Davies <huw@codeweavers.com>
Date: Mon, 3 Aug 2009 12:17:10 +0100
Subject: [PATCH] msdaps: Initial stub.

---
 .gitignore               |   3 +
 configure                |   9 ++
 configure.ac             |   1 +
 dlls/msdaps/Makefile.in  |  22 +++
 dlls/msdaps/msdaps.idl   |   1 +
 dlls/msdaps/msdaps.spec  |   4 +
 dlls/msdaps/usrmarshal.c | 296 +++++++++++++++++++++++++++++++++++++++
 7 files changed, 336 insertions(+)
 create mode 100644 dlls/msdaps/Makefile.in
 create mode 100644 dlls/msdaps/msdaps.idl
 create mode 100644 dlls/msdaps/msdaps.spec
 create mode 100644 dlls/msdaps/usrmarshal.c

diff --git a/.gitignore b/.gitignore
index d649370bdef..2ffd38ae813 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,6 +45,9 @@ dlls/libd3dx9.def
 dlls/libwinspool.def
 dlls/libxinput.def
 dlls/mmsystem.dll16
+dlls/msdaps/msdaps.h
+dlls/msdaps/msdaps_i.c
+dlls/msdaps/msdaps_p.c
 dlls/mshtml.tlb/mshtml_tlb.tlb
 dlls/mshtml/nsiface.h
 dlls/msi/cond.tab.c
diff --git a/configure b/configure
index 199187afefe..246ab2b6e0c 100755
--- a/configure
+++ b/configure
@@ -26328,6 +26328,14 @@ ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
 dlls/msctf/tests/Makefile: dlls/msctf/tests/Makefile.in dlls/Maketest.rules"
 ac_config_files="$ac_config_files dlls/msctf/tests/Makefile"
 
+ALL_MAKEFILES="$ALL_MAKEFILES \\
+	dlls/msdaps/Makefile"
+test "x$enable_msdaps" != xno && ALL_DLL_DIRS="$ALL_DLL_DIRS \\
+	msdaps"
+ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
+dlls/msdaps/Makefile: dlls/msdaps/Makefile.in dlls/Makedll.rules"
+ac_config_files="$ac_config_files dlls/msdaps/Makefile"
+
 ALL_MAKEFILES="$ALL_MAKEFILES \\
 	dlls/msdmo/Makefile"
 test "x$enable_msdmo" != xno && ALL_DLL_DIRS="$ALL_DLL_DIRS \\
@@ -29593,6 +29601,7 @@ do
     "dlls/mscoree/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/mscoree/Makefile" ;;
     "dlls/msctf/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/msctf/Makefile" ;;
     "dlls/msctf/tests/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/msctf/tests/Makefile" ;;
+    "dlls/msdaps/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/msdaps/Makefile" ;;
     "dlls/msdmo/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/msdmo/Makefile" ;;
     "dlls/msftedit/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/msftedit/Makefile" ;;
     "dlls/msg711.acm/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/msg711.acm/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index 17bfc664325..505c2cead81 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2222,6 +2222,7 @@ WINE_CONFIG_MAKEFILE([dlls/mscms/tests/Makefile],[dlls/Maketest.rules],[dlls],[A
 WINE_CONFIG_MAKEFILE([dlls/mscoree/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
 WINE_CONFIG_MAKEFILE([dlls/msctf/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
 WINE_CONFIG_MAKEFILE([dlls/msctf/tests/Makefile],[dlls/Maketest.rules],[dlls],[ALL_TEST_DIRS],[enable_tests])
+WINE_CONFIG_MAKEFILE([dlls/msdaps/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
 WINE_CONFIG_MAKEFILE([dlls/msdmo/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
 WINE_CONFIG_MAKEFILE([dlls/msftedit/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
 WINE_CONFIG_MAKEFILE([dlls/msg711.acm/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
diff --git a/dlls/msdaps/Makefile.in b/dlls/msdaps/Makefile.in
new file mode 100644
index 00000000000..d6f71a0fc7a
--- /dev/null
+++ b/dlls/msdaps/Makefile.in
@@ -0,0 +1,22 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = msdaps.dll
+IMPORTS   = oleaut32 rpcrt4 kernel32 ntdll
+EXTRADEFS = -DREGISTER_PROXY_DLL -DPROXY_CLSID_IS="{ 0x06210e88, 0x01f5, 0x11d1, { 0xb5, 0x12, 0x00, 0x80, 0xc7, 0x81, 0xc3, 0x84 } }"
+
+EXTRA_OBJS = dlldata.o
+
+C_SRCS = \
+	usrmarshal.c
+
+IDL_I_SRCS = \
+	msdaps.idl
+
+IDL_P_SRCS = \
+	msdaps.idl
+
+@MAKE_DLL_RULES@
+
+@DEPENDENCIES@  # everything below this line is overwritten by make depend
diff --git a/dlls/msdaps/msdaps.idl b/dlls/msdaps/msdaps.idl
new file mode 100644
index 00000000000..c0a8e11f8ad
--- /dev/null
+++ b/dlls/msdaps/msdaps.idl
@@ -0,0 +1 @@
+#include "oledb.idl"
diff --git a/dlls/msdaps/msdaps.spec b/dlls/msdaps/msdaps.spec
new file mode 100644
index 00000000000..b16365d0c9f
--- /dev/null
+++ b/dlls/msdaps/msdaps.spec
@@ -0,0 +1,4 @@
+@ stdcall -private DllCanUnloadNow()
+@ stdcall -private DllGetClassObject(ptr ptr ptr)
+@ stdcall -private DllRegisterServer()
+@ stdcall -private DllUnregisterServer()
diff --git a/dlls/msdaps/usrmarshal.c b/dlls/msdaps/usrmarshal.c
new file mode 100644
index 00000000000..281b1f709a9
--- /dev/null
+++ b/dlls/msdaps/usrmarshal.c
@@ -0,0 +1,296 @@
+/*
+ *    Misc marshaling routinues
+ *
+ * Copyright 2009 Huw Davies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#include <stdarg.h>
+#include <string.h>
+
+#define COBJMACROS
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winerror.h"
+#include "objbase.h"
+#include "oledb.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(oledb);
+
+HRESULT CALLBACK IDBCreateCommand_CreateCommand_Proxy(IDBCreateCommand* This, IUnknown *pUnkOuter,
+                                                      REFIID riid, IUnknown **ppCommand)
+{
+    FIXME("(%p, %p, %s, %p): stub\n", This, pUnkOuter, debugstr_guid(riid),
+          ppCommand);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IDBCreateCommand_CreateCommand_Stub(IDBCreateCommand* This, IUnknown *pUnkOuter,
+                                                       REFIID riid, IUnknown **ppCommand, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %p, %s, %p, %p): stub\n", This, pUnkOuter, debugstr_guid(riid),
+          ppCommand, ppErrorInfoRem);
+    return E_NOTIMPL;
+
+}
+
+HRESULT CALLBACK IDBCreateSession_CreateSession_Proxy(IDBCreateSession* This, IUnknown *pUnkOuter,
+                                                      REFIID riid, IUnknown **ppDBSession)
+{
+    FIXME("(%p, %p, %s, %p): stub\n", This, pUnkOuter, debugstr_guid(riid),
+          ppDBSession);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IDBCreateSession_CreateSession_Stub(IDBCreateSession* This, IUnknown *pUnkOuter,
+                                                       REFIID riid, IUnknown **ppDBSession, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %p, %s, %p, %p): stub\n", This, pUnkOuter, debugstr_guid(riid),
+          ppDBSession, ppErrorInfoRem);
+    return E_NOTIMPL;
+
+}
+
+HRESULT CALLBACK IDBProperties_GetProperties_Proxy(IDBProperties* This, ULONG cPropertyIDSets, const DBPROPIDSET rgPropertyIDSets[],
+                                                   ULONG *pcPropertySets, DBPROPSET **prgPropertySets)
+{
+    FIXME("(%p, %d, %p, %p, %p): stub\n", This, cPropertyIDSets, rgPropertyIDSets, pcPropertySets,
+          prgPropertySets);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IDBProperties_GetProperties_Stub(IDBProperties* This, ULONG cPropertyIDSets, const DBPROPIDSET *rgPropertyIDSets,
+                                                    ULONG *pcPropertySets, DBPROPSET **prgPropertySets, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %d, %p, %p, %p, %p): stub\n", This, cPropertyIDSets, rgPropertyIDSets, pcPropertySets,
+          prgPropertySets, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK IDBProperties_GetPropertyInfo_Proxy(IDBProperties* This, ULONG cPropertyIDSets, const DBPROPIDSET rgPropertyIDSets[],
+                                                     ULONG *pcPropertyInfoSets, DBPROPINFOSET **prgPropertyInfoSets,
+                                                     OLECHAR **ppDescBuffer)
+{
+    FIXME("(%p, %d, %p, %p, %p, %p): stub\n", This, cPropertyIDSets, rgPropertyIDSets, pcPropertyInfoSets,
+          prgPropertyInfoSets, ppDescBuffer);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IDBProperties_GetPropertyInfo_Stub(IDBProperties* This, ULONG cPropertyIDSets, const DBPROPIDSET *rgPropertyIDSets,
+                                                      ULONG *pcPropertyInfoSets, DBPROPINFOSET **prgPropertyInfoSets,
+                                                      ULONG *pcOffsets, DBBYTEOFFSET **prgDescOffsets, ULONG *pcbDescBuffer,
+                                                      OLECHAR **ppDescBuffer, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %d, %p, %p, %p, %p, %p, %p, %p, %p): stub\n", This, cPropertyIDSets, rgPropertyIDSets, pcPropertyInfoSets,
+          prgPropertyInfoSets, pcOffsets, prgDescOffsets, pcbDescBuffer, ppDescBuffer, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK IDBProperties_SetProperties_Proxy(IDBProperties* This, ULONG cPropertySets, DBPROPSET rgPropertySets[])
+{
+    FIXME("(%p, %d, %p): stub\n", This, cPropertySets, rgPropertySets);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IDBProperties_SetProperties_Stub(IDBProperties* This, ULONG cPropertySets, DBPROPSET *rgPropertySets,
+                                                    ULONG cTotalProps, DBPROPSTATUS *rgPropStatus, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %d, %p, %d, %p, %p): stub\n", This, cPropertySets, rgPropertySets, cTotalProps,
+          rgPropStatus, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK IDBInitialize_Initialize_Proxy(IDBInitialize* This)
+{
+    FIXME("(%p): stub\n", This);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IDBInitialize_Initialize_Stub(IDBInitialize* This, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %p): stub\n", This, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK IDBInitialize_Uninitialize_Proxy(IDBInitialize* This)
+{
+    FIXME("(%p): stub\n", This);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IDBInitialize_Uninitialize_Stub(IDBInitialize* This, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %p): stub\n", This, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK IDBDataSourceAdmin_CreateDataSource_Proxy(IDBDataSourceAdmin* This, ULONG cPropertySets,
+                                                           DBPROPSET rgPropertySets[], IUnknown *pUnkOuter,
+                                                           REFIID riid, IUnknown **ppDBSession)
+{
+    FIXME("(%p, %d, %p, %p, %s, %p): stub\n", This, cPropertySets, rgPropertySets, pUnkOuter,
+          debugstr_guid(riid), ppDBSession);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IDBDataSourceAdmin_CreateDataSource_Stub(IDBDataSourceAdmin* This, ULONG cPropertySets,
+                                                            DBPROPSET *rgPropertySets, IUnknown *pUnkOuter,
+                                                            REFIID riid, IUnknown **ppDBSession, ULONG cTotalProps,
+                                                            DBPROPSTATUS *rgPropStatus, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %d, %p, %p, %s, %p, %d, %p, %p): stub\n", This, cPropertySets, rgPropertySets, pUnkOuter,
+          debugstr_guid(riid), ppDBSession, cTotalProps, rgPropStatus, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK IDBDataSourceAdmin_DestroyDataSource_Proxy(IDBDataSourceAdmin* This)
+{
+    FIXME("(%p): stub\n", This);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IDBDataSourceAdmin_DestroyDataSource_Stub(IDBDataSourceAdmin* This, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %p): stub\n", This, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK IDBDataSourceAdmin_GetCreationProperties_Proxy(IDBDataSourceAdmin* This, ULONG cPropertyIDSets,
+                                                                const DBPROPIDSET rgPropertyIDSets[], ULONG *pcPropertyInfoSets,
+                                                                DBPROPINFOSET **prgPropertyInfoSets, OLECHAR **ppDescBuffer)
+{
+    FIXME("(%p, %d, %p, %p, %p, %p): stub\n", This, cPropertyIDSets, rgPropertyIDSets, pcPropertyInfoSets,
+          prgPropertyInfoSets, ppDescBuffer);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IDBDataSourceAdmin_GetCreationProperties_Stub(IDBDataSourceAdmin* This, ULONG cPropertyIDSets,
+                                                                 const DBPROPIDSET *rgPropertyIDSets, ULONG *pcPropertyInfoSets,
+                                                                 DBPROPINFOSET **prgPropertyInfoSets, DBCOUNTITEM *pcOffsets,
+                                                                 DBBYTEOFFSET **prgDescOffsets, ULONG *pcbDescBuffer,
+                                                                 OLECHAR **ppDescBuffer, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %d, %p, %p, %p, %p, %p, %p, %p, %p): stub\n", This, cPropertyIDSets, rgPropertyIDSets, pcPropertyInfoSets,
+          prgPropertyInfoSets, pcOffsets, prgDescOffsets, pcbDescBuffer, ppDescBuffer, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK IDBDataSourceAdmin_ModifyDataSource_Proxy(IDBDataSourceAdmin* This, ULONG cPropertySets, DBPROPSET rgPropertySets[])
+{
+    FIXME("(%p, %d, %p): stub\n", This, cPropertySets, rgPropertySets);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IDBDataSourceAdmin_ModifyDataSource_Stub(IDBDataSourceAdmin* This, ULONG cPropertySets,
+                                                            DBPROPSET *rgPropertySets, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %d, %p, %p): stub\n", This, cPropertySets, rgPropertySets, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK ISessionProperties_GetProperties_Proxy(ISessionProperties* This, ULONG cPropertyIDSets,
+                                                        const DBPROPIDSET rgPropertyIDSets[], ULONG *pcPropertySets,
+                                                        const DBPROPSET **prgPropertySets)
+{
+    FIXME("(%p, %d, %p, %p, %p): stub\n", This, cPropertyIDSets, rgPropertyIDSets,
+          pcPropertySets, prgPropertySets);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB ISessionProperties_GetProperties_Stub(ISessionProperties* This, ULONG cPropertyIDSets,
+                                                         const DBPROPIDSET *rgPropertyIDSets, ULONG *pcPropertySets,
+                                                         const DBPROPSET **prgPropertySets, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %d, %p, %p, %p, %p): stub\n", This, cPropertyIDSets, rgPropertyIDSets,
+          pcPropertySets, prgPropertySets, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK ISessionProperties_SetProperties_Proxy(ISessionProperties* This, ULONG cPropertySets, DBPROPSET rgPropertySets[])
+{
+    FIXME("(%p, %d, %p): stub\n", This, cPropertySets, rgPropertySets);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB ISessionProperties_SetProperties_Stub(ISessionProperties* This, ULONG cPropertySets, DBPROPSET *rgPropertySets,
+                                                         ULONG cTotalProps, DBPROPSTATUS *rgPropStatus, IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %d, %p, %d, %p, %p): stub\n", This, cPropertySets, rgPropertySets, cTotalProps,
+          rgPropStatus, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK IOpenRowset_OpenRowset_Proxy(IOpenRowset* This, IUnknown *pUnkOuter, DBID *pTableID, DBID *pIndexID,
+                                              REFIID riid, ULONG cPropertySets, DBPROPSET rgPropertySets[], IUnknown **ppRowset)
+{
+    FIXME("(%p, %p, %p, %p, %s, %d, %p, %p): stub\n", This, pUnkOuter, pTableID, pIndexID, debugstr_guid(riid),
+          cPropertySets, rgPropertySets, ppRowset);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IOpenRowset_OpenRowset_Stub(IOpenRowset* This, IUnknown *pUnkOuter, DBID *pTableID, DBID *pIndexID,
+                                               REFIID riid, ULONG cPropertySets, DBPROPSET *rgPropertySets,
+                                               IUnknown **ppRowset, ULONG cTotalProps, DBPROPSTATUS *rgPropStatus,
+                                               IErrorInfo **ppErrorInfoRem)
+{
+    FIXME("(%p, %p, %p, %p, %s, %d, %p, %p, %d, %p, %p): stub\n", This, pUnkOuter, pTableID, pIndexID, debugstr_guid(riid),
+          cPropertySets, rgPropertySets, ppRowset, cTotalProps, rgPropStatus, ppErrorInfoRem);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK IBindResource_Bind_Proxy(IBindResource* This, IUnknown *pUnkOuter, LPCOLESTR pwszURL, DBBINDURLFLAG dwBindURLFlags,
+                                          REFGUID rguid, REFIID riid, IAuthenticate *pAuthenticate, DBIMPLICITSESSION *pImplSession,
+                                          DBBINDURLSTATUS *pdwBindStatus, IUnknown **ppUnk)
+{
+    FIXME("(%p, %p, %s, %08x, %s, %s, %p, %p, %p, %p): stub\n", This, pUnkOuter, debugstr_w(pwszURL), dwBindURLFlags,
+          debugstr_guid(rguid), debugstr_guid(riid), pAuthenticate, pImplSession, pdwBindStatus, ppUnk);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB IBindResource_Bind_Stub(IBindResource* This, IUnknown *pUnkOuter, LPCOLESTR pwszURL, DBBINDURLFLAG dwBindURLFlags,
+                                           REFGUID rguid, REFIID riid, IAuthenticate *pAuthenticate, IUnknown *pSessionUnkOuter,
+                                           IID *piid, IUnknown **ppSession, DBBINDURLSTATUS *pdwBindStatus, IUnknown **ppUnk)
+{
+    FIXME("(%p, %p, %s, %08x, %s, %s, %p, %p, %p, %p, %p, %p): stub\n", This, pUnkOuter, debugstr_w(pwszURL), dwBindURLFlags,
+          debugstr_guid(rguid), debugstr_guid(riid), pAuthenticate, pSessionUnkOuter, piid, ppSession, pdwBindStatus, ppUnk);
+    return E_NOTIMPL;
+}
+
+HRESULT CALLBACK ICreateRow_CreateRow_Proxy(ICreateRow* This, IUnknown *pUnkOuter, LPCOLESTR pwszURL, DBBINDURLFLAG dwBindURLFlags,
+                                            REFGUID rguid, REFIID riid, IAuthenticate *pAuthenticate, DBIMPLICITSESSION *pImplSession,
+                                            DBBINDURLSTATUS *pdwBindStatus, LPOLESTR *ppwszNewURL, IUnknown **ppUnk)
+{
+    FIXME("(%p, %p, %s, %08x, %s, %s, %p, %p, %p, %p, %p): stub\n", This, pUnkOuter, debugstr_w(pwszURL), dwBindURLFlags,
+          debugstr_guid(rguid), debugstr_guid(riid), pAuthenticate, pImplSession, pdwBindStatus, ppwszNewURL, ppUnk);
+    return E_NOTIMPL;
+}
+
+HRESULT __RPC_STUB ICreateRow_CreateRow_Stub(ICreateRow* This, IUnknown *pUnkOuter, LPCOLESTR pwszURL, DBBINDURLFLAG dwBindURLFlags,
+                                             REFGUID rguid, REFIID riid, IAuthenticate *pAuthenticate, IUnknown *pSessionUnkOuter,
+                                             IID *piid, IUnknown **ppSession, DBBINDURLSTATUS *pdwBindStatus,
+                                             LPOLESTR *ppwszNewURL, IUnknown **ppUnk)
+{
+    FIXME("(%p, %p, %s, %08x, %s, %s, %p, %p, %p, %p, %p, %p, %p): stub\n", This, pUnkOuter, debugstr_w(pwszURL), dwBindURLFlags,
+          debugstr_guid(rguid), debugstr_guid(riid), pAuthenticate, pSessionUnkOuter, piid, ppSession, pdwBindStatus, ppwszNewURL,
+          ppUnk);
+    return E_NOTIMPL;
+}
-- 
GitLab