[ooo-build-commit] 3 commits - bin/applyflags distro-configs/CrossWin32.conf.in patches/dev300

Jan Holesovsky kendy at kemper.freedesktop.org
Mon Jul 27 05:48:45 PDT 2009


 bin/applyflags                                    |    7 
 distro-configs/CrossWin32.conf.in                 |    1 
 patches/dev300/apply                              |    2 
 patches/dev300/crosswin32-desktop-mingw.diff      |   77 
 patches/dev300/crosswin32-extensions-mingw.diff   |   26 
 patches/dev300/crosswin32-helpcontent2-mingw.diff |    2 
 patches/dev300/crosswin32-pyuno-mingw.diff        |   11 
 patches/dev300/crosswin32-sccomp-mingw.diff       |   11 
 patches/dev300/crosswin32-shell-mingw.diff        |   25 
 patches/dev300/crosswin32-tools-mingw.diff        |   22 
 patches/dev300/crosswin32-ugly-hacks.diff         |18337 +++++++++++++++++++++-
 patches/dev300/vcl-menu-fixes.diff                |   41 
 12 files changed, 18332 insertions(+), 230 deletions(-)

New commits:
commit eaebe1c5cd4d689345c4c404a44cda7796f09c0f
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Mon Jul 27 14:45:29 2009 +0200

    Fix a corner case in the rendering the checboxen in the menu, n#523852.
    
    * patches/dev300/apply: Add the bug number.
    * patches/dev300/vcl-menu-fixes.diff: When we don't render the checkboxes in
      menus using NWF, and there is no icon in the menu, we have add some extra
      space for the checkbox itself.

diff --git a/patches/dev300/apply b/patches/dev300/apply
index 83ba82c..ffe5ed9 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -344,7 +344,7 @@ debug-bits.diff, i#35336, jholesov
 gui-sw-scroll.diff, i#20826, michael
 
 # make menu layout prettier
-vcl-menu-fixes.diff, i#67123, michael
+vcl-menu-fixes.diff, i#67123, n#523852, michael/jholesov
 
 # Tell the desktop we support the VFS
 uses-vfs.diff, i#43504, michael
diff --git a/patches/dev300/vcl-menu-fixes.diff b/patches/dev300/vcl-menu-fixes.diff
index 1bdde52..4a72232 100644
--- a/patches/dev300/vcl-menu-fixes.diff
+++ b/patches/dev300/vcl-menu-fixes.diff
@@ -1,6 +1,6 @@
 --- vcl/source/window/menu.cxx	19 Jul 2006 14:59:50 -0000	1.139
 +++ vcl/source/window/menu.cxx	31 Jul 2006 15:20:05 -0000
-@@ -958,7 +958,7 @@ void Menu::ImplInit()
+@@ -957,7 +957,7 @@ void Menu::ImplInit()
  {
      mnHighlightedItemPos = ITEMPOS_INVALID;
      mpSalMenu       = NULL;
@@ -9,3 +9,42 @@
      nDefaultItem    = 0;
      //bIsMenuBar      = FALSE;  // this is now set in the ctor, must not be changed here!!!
      nSelectedId     = 0;
+@@ -2278,6 +2277,10 @@ Size Menu::ImplCalcSize( Window* pWin )
+     if( nMax > nMinMenuItemHeight )
+         nMinMenuItemHeight = nMax;
+ 
++    // When no native rendering of the checkbox & no image in the menu, we
++    // have to add some extra space even in the MENU_FLAG_SHOWCHECKIMAGES case
++    bool bSpaceForCheckbox = ( nMax == 0 );
++
+     const StyleSettings& rSettings = pWin->GetSettings().GetStyleSettings();
+     if ( rSettings.GetUseImagesInMenus() )
+     {
+@@ -2287,6 +2290,9 @@ Size Menu::ImplCalcSize( Window* pWin )
+             MenuItemData* pData = pItemList->GetDataFromPos( --i );
+             if ( ImplIsVisible( i ) && (( pData->eType == MENUITEM_IMAGE ) || ( pData->eType == MENUITEM_STRINGIMAGE )))
+             {
++                // we have an icon, don't add the extra space
++                bSpaceForCheckbox = false;
++
+                 Size aImgSz = pData->aImage.GetSizePixel();
+                 if ( aImgSz.Height() > aMaxImgSz.Height() )
+                     aMaxImgSz.Height() = aImgSz.Height();
+@@ -2331,7 +2337,7 @@ Size Menu::ImplCalcSize( Window* pWin )
+             if ( !bIsMenuBar && pData->HasCheck() )
+             {
+                 nCheckWidth = nMaxCheckWidth;
+-                if (nMenuFlags & MENU_FLAG_SHOWCHECKIMAGES) 
++                if ( ( nMenuFlags & MENU_FLAG_SHOWCHECKIMAGES ) || bSpaceForCheckbox )
+                     nWidth += nCheckWidth + nExtra * 2;
+             }
+ 
+@@ -2391,7 +2397,7 @@ Size Menu::ImplCalcSize( Window* pWin )
+     {
+         USHORT gfxExtra = (USHORT) Max( nExtra, 7L ); // #107710# increase space between checkmarks/images/text
+         nCheckPos = (USHORT)nExtra;
+-        if (nMenuFlags & MENU_FLAG_SHOWCHECKIMAGES)
++        if ( ( nMenuFlags & MENU_FLAG_SHOWCHECKIMAGES ) || bSpaceForCheckbox )
+         {
+             // non-NWF case has an implicit little extra space around
+             // the symbol; NWF case has not, so image pos needs to
commit 242acb651fb9f276c0c906d8380d0fdc3e52361b
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Mon Jul 27 13:47:08 2009 +0200

    Update check for existing/non-existing localize.sdf's.
    
    * bin/applyflags:

diff --git a/bin/applyflags b/bin/applyflags
index 33a2141..693e15b 100755
--- a/bin/applyflags
+++ b/bin/applyflags
@@ -31,9 +31,14 @@ fi
 if test -d $OOBUILDDIR/swext -o -d $OOBUILDDIR/sdext -o -d $OOBUILDDIR/reportbuilder; then
     echo -n " --distro=Extensions";
 fi
-if test -f $OOBUILDDIR/sw/source/ui/app/localize.sdf > /dev/null 2>&1 ; then
+
+# The localize.sdf's are created during the build when they do not exits.
+# Additionally, they are created using something like echo > localize.sdf, so
+# even test -s is not helpful here :-(
+if grep 'OpenOffice\.org' $OOBUILDDIR/sw/source/ui/app/localize.sdf > /dev/null 2>&1 ; then
     echo -n " --distro=Localize";
 fi
+
 if test "$UNSTABLE_WP" = "YES" ; then
     echo -n " --distro=UnstableWP";
 fi
commit a77f910a6d6cabdec108ff1feccbe81f4a47cb2f
Author: Jesús Corrius <jesus at softcatala.org>
Date:   Fri Jul 24 19:39:27 2009 +0200

    Update the Win32 Crosscompiling patches
    
    * distro-configs/CrossWin32.conf.in:
    * patches/dev300/crosswin32-desktop-mingw.diff:
    * patches/dev300/crosswin32-extensions-mingw.diff:
    * patches/dev300/crosswin32-helpcontent2-mingw.diff:
    * patches/dev300/crosswin32-pyuno-mingw.diff:
    * patches/dev300/crosswin32-sccomp-mingw.diff:
    * patches/dev300/crosswin32-shell-mingw.diff:
    * patches/dev300/crosswin32-tools-mingw.diff:
    * patches/dev300/crosswin32-ugly-hacks.diff:

diff --git a/distro-configs/CrossWin32.conf.in b/distro-configs/CrossWin32.conf.in
index cd990fb..f435bcf 100644
--- a/distro-configs/CrossWin32.conf.in
+++ b/distro-configs/CrossWin32.conf.in
@@ -14,7 +14,6 @@
 --without-stlport
 --with-system-python
 --disable-ldap
---with-java=no
 --disable-mozilla
 --with-system-mozilla=no
 --with-tools-dir=/home/jesus/soltools
diff --git a/patches/dev300/crosswin32-desktop-mingw.diff b/patches/dev300/crosswin32-desktop-mingw.diff
index 2a51515..89f8192 100644
--- a/patches/dev300/crosswin32-desktop-mingw.diff
+++ b/patches/dev300/crosswin32-desktop-mingw.diff
@@ -45,30 +45,65 @@
  
 --- desktop/win32/source/setup/makefile.mk.~1.12.~	2008-04-11 06:48:48.000000000 +0200
 +++ desktop/win32/source/setup/makefile.mk	2008-11-05 15:19:13.000000000 +0100
-@@ -92,4 +92,23 @@ APP1NOSVRES=	$(RES)$/$(TARGET).res
+@@ -91,5 +91,9 @@
+ .INCLUDE :  target.mk
  
  $(RCFILES) : $(ULFDIR)$/setup.ulf makefile.mk rcfooter.txt rcheader.txt rctmpl.txt
-     $(WRAPCMD) lngconvex.exe -ulf $(ULFDIR)$/setup.ulf -rc $(RCFILES) -rct rctmpl.txt -rch rcheader.txt -rcf rcfooter.txt
 +.IF "$(CROSS_COMPILING)" == "yes"
-+	sed -i -e 's@\\x\([0-9a-f][0-9a-f]["\\]\)@\\x00\1 at g' $@
-+	sed -i -e 's@\\x\([0-9a-f][0-9a-f]["\\]\)@\\x00\1 at g' $@
-+	sed -i -e 's@\\x\([0-9a-f][0-9a-f][0-9a-f]["\\]\)@\\x0\1 at g' $@
-+	sed -i -e 's@\\x\([0-9a-f][0-9a-f][0-9a-f]["\\]\)@\\x0\1 at g' $@
-+	sed -i -e 's@\([ ,]\)"@\1L"@g' $@
-+	sed -i -e 's at include L"@include "@' $@
-+	pytt '\r\n' '\n' $@
-+	pytt '^LANGUAGE 0x4d(.|\n)*' '' $@
-+#	sed -i -e 's@^LANGUAGE 0x211 at LANGUAGE 0x21@' $@
-+#	sed -i -e 's@^LANGUAGE 0x226 at LANGUAGE 0x26@' $@
-+#	sed -i -e 's@^LANGUAGE 0x22c at LANGUAGE 0x2c@' $@
-+#	sed -i -e 's@^LANGUAGE 0x22b at LANGUAGE 0x2b@' $@
-+#	sed -i -e 's@^LANGUAGE 0x30 at LANGUAGE 0x2d@' $@
-+#	sed -i -e 's@^LANGUAGE 0x73 at LANGUAGE 0x2a@' $@
-+#	sed -i -e 's@^LANGUAGE 0x31 at LANGUAGE 0x2e@' $@
-+#	sed -i -e 's@^LANGUAGE 0x33 at LANGUAGE 0x01@' $@
-+#	sed -i -e 's@^LANGUAGE 0x55 at LANGUAGE 0x22@' $@
-+.ENDIF #"$(CROSS_COMPILING)" == "yes"
- 
++    $(WRAPCMD) wine $(SOLARBINDIR)/lngconvex.exe -ulf $(ULFDIR)$/setup.ulf -rc $(RCFILES) -rct rctmpl.txt -rch rcheader.txt -rcf rcfooter.txt
++.ELSE
+     $(WRAPCMD) lngconvex.exe -ulf $(ULFDIR)$/setup.ulf -rc $(RCFILES) -rct rctmpl.txt -rch rcheader.txt -rcf rcfooter.txt
++.ENDIF
+
+--- /dev/null	2009-04-14 12:16:08.000000000 +0200
++++ desktop/win32/source/setup/strsafe.h	2009-07-15 16:53:22.000000000 +0200
+@@ -0,0 +1,45 @@
++//http://baseutils.googlecode.com/svn/trunk/str_strsafe.h
++
++/* Written by Krzysztof Kowalczyk (http://blog.kowalczyk.info)
++   The author disclaims copyright to this source code. */
++#ifndef __STR_STRSAFE_H
++#define __STR_STRSAFE_H
++
++/* When using MSVC, use <strsafe.h>, emulate it on other compiler (e.g. mingw) */
++
++#define DISABLE_STRSAFE
++#ifndef DISABLE_STRSAFE
++  #include <strsafe.h>
++#else
++  #include <stdio.h>
++  #include <string.h>
++  #include <windows.h>
++  #define	STRSAFE_E_INSUFFICIENT_BUFFER   -1
++  #define	_vsnprintf_s(p,s,z,f,a)		vsnprintf(p,s,f,a)
++
++#ifndef min
++  #define min(a,b) ((a)<(b)?(a):(b))
++#endif
++
++  /* WARNING: the return values of these two pairs of functions aren't
++  compatible. The strsafe functions return an error code and the standard C
++  functions return a character count */
++  #define	StringCchVPrintfA			vsnprintf
++  #define	StringCchVPrintfW			vsnprintf
++  #define	StringCchVPrintf			vsnprintf
++  
++  #define StringCchPrintfA(str, n, format, ...) snprintf ((char*)str, n, (char const*)format, __VA_ARGS__)
++  #define StringCchPrintfW(str, n, format, ...) snprintf ((char*)str, n, (char const*)format, __VA_ARGS__)
++  #define StringCchPrintf(str, n, format, ...) snprintf ((char*)str, n, (char const*)format, __VA_ARGS__)
++  
++  #define StringCchCopy(dest, n, src) strncpy ((char*)dest, (char const*)src, n)
++  #define StringCchCopyN(dest, n1, src, n2) strncpy ((char*)dest, (char const*)src, min (n1, n2))
++  #define StringCchCat(dest, n, src) strncat ((char*)dest, (char const*)src, n)
++
++  #define STRSAFE_MAX_CCH 0x7FFFFFFF
++
++  #define	_stricmp					strcasecmp
++  #define	_strnicmp					strncasecmp
++#endif
++
++#endif
+
 --- desktop/util/verinfo.rc.~1.19.12.1.~	2008-09-19 09:30:39.000000000 +0200
 +++ desktop/util/verinfo.rc	2008-11-05 15:04:37.000000000 +0100
 @@ -82,16 +82,16 @@
diff --git a/patches/dev300/crosswin32-extensions-mingw.diff b/patches/dev300/crosswin32-extensions-mingw.diff
index e69de29..e803e89 100644
--- a/patches/dev300/crosswin32-extensions-mingw.diff
+++ b/patches/dev300/crosswin32-extensions-mingw.diff
@@ -0,0 +1,26 @@
+--- extensions/source/nsplugin/source/nsplugin.rc.orig	2009-07-22 10:12:29.000000000 +0200
++++ extensions/source/nsplugin/source/nsplugin.rc	2009-07-22 10:12:29.000000000 +0200
+@@ -27,7 +27,7 @@
+  * for a copy of the LGPLv3 License.
+  *
+  ************************************************************************/
+-#define ADDITIONAL_VERINFO1     value "FileExtents", "sdc|sds|sda|sdd|sdp|smf|vor|sgl|sdw|sxc|stc|sxd|std|sxi|sti|sxm|sxw|sxg|stw|odt|ott|odm|oth|ods|ots|odg|otg|odp|otp|odf\0"\
+-    value "FileOpenName", "StarCalc 3.0 - 5.0|StarChart 3.0 - 5.0|StarDraw 3.0 - 5.0|StarImpress 3.0 - 5.0|StarImpress-packed 3.0 - 5.0|StarMath 3.0 - 5.0|StarWriter Template 3.0 - 5.0|StarWriter Global 3.0 - 5.0|StarWriter 3.0 - 5.0|StarOffice 6.0/7 Spreadsheet|StarOffice 6.0/7 Spreadsheet Template|StarOffice 6.0/7 Drawing|StarOffice 6.0/7 Drawing Template|StarOffice 6.0/7 Presentation|StarOffice 6.0/7 Presentation Template|StarOffice 6.0/7 Formula|StarOffice 6.0/7 Text Document|StarOffice 6.0/7 Master Document|StarOffice 6.0/7 Text Document Template|OpenDocument Text|OpenDocument Text Template|OpenDocument Master Document|HTML Document Template|OpenDocument Spreadsheet|OpenDocument Spreadsheet Template|OpenDocument Drawing|OpenDocument Drawing Template|OpenDocument Presentation|OpenDocument Presentation Template|OpenDocument Formula\0"
+-#define ADDITIONAL_VERINFO2    value "FileDescription", "StarOffice/StarSuite Plug-in handles all its documents" value "ProductName", "StarOffice/StarSuite Plug-in"  value "MIMEType",   "application/vnd.stardivision.calc|application/vnd.stardivision.chart|application/vnd.stardivision.draw|application/vnd.stardivision.impress|application/vnd.stardivision.impress-packed|application/vnd.stardivision.math|application/vnd.stardivision.writer|application/vnd.stardivision.writer-global|application/vnd.staroffice.writer|application/vnd.sun.xml.calc|application/vnd.sun.xml.calc.template|application/vnd.sun.xml.draw|application/vnd.sun.xml.draw.template|"
++#define ADDITIONAL_VERINFO1     VALUE "FileExtents", "sdc|sds|sda|sdd|sdp|smf|vor|sgl|sdw|sxc|stc|sxd|std|sxi|sti|sxm|sxw|sxg|stw|odt|ott|odm|oth|ods|ots|odg|otg|odp|otp|odf\0"\
++    VALUE "FileOpenName", "StarCalc 3.0 - 5.0|StarChart 3.0 - 5.0|StarDraw 3.0 - 5.0|StarImpress 3.0 - 5.0|StarImpress-packed 3.0 - 5.0|StarMath 3.0 - 5.0|StarWriter Template 3.0 - 5.0|StarWriter Global 3.0 - 5.0|StarWriter 3.0 - 5.0|StarOffice 6.0/7 Spreadsheet|StarOffice 6.0/7 Spreadsheet Template|StarOffice 6.0/7 Drawing|StarOffice 6.0/7 Drawing Template|StarOffice 6.0/7 Presentation|StarOffice 6.0/7 Presentation Template|StarOffice 6.0/7 Formula|StarOffice 6.0/7 Text Document|StarOffice 6.0/7 Master Document|StarOffice 6.0/7 Text Document Template|OpenDocument Text|OpenDocument Text Template|OpenDocument Master Document|HTML Document Template|OpenDocument Spreadsheet|OpenDocument Spreadsheet Template|OpenDocument Drawing|OpenDocument Drawing Template|OpenDocument Presentation|OpenDocument Presentation Template|OpenDocument Formula\0"
++#define ADDITIONAL_VERINFO2    VALUE "FileDescription", "StarOffice/StarSuite Plug-in handles all its documents" VALUE "ProductName", "StarOffice/StarSuite Plug-in"  VALUE "MIMEType",   "application/vnd.stardivision.calc|application/vnd.stardivision.chart|application/vnd.stardivision.draw|application/vnd.stardivision.impress|application/vnd.stardivision.impress-packed|application/vnd.stardivision.math|application/vnd.stardivision.writer|application/vnd.stardivision.writer-global|application/vnd.staroffice.writer|application/vnd.sun.xml.calc|application/vnd.sun.xml.calc.template|application/vnd.sun.xml.draw|application/vnd.sun.xml.draw.template|"
+ #define ADDITIONAL_VERINFO3     "application/vnd.sun.xml.impress|application/vnd.sun.xml.impress.template|application/vnd.sun.xml.math|application/vnd.sun.xml.writer|application/vnd.sun.xml.writer.global|application/vnd.sun.xml.writer.template|application/vnd.oasis.opendocument.text|application/vnd.oasis.opendocument.text-template|application/vnd.oasis.opendocument.text-master|application/vnd.oasis.opendocument.text-web|application/vnd.oasis.opendocument.spreadsheet|application/vnd.oasis.opendocument.spreadsheet-template|application/vnd.oasis.opendocument.graphics|application/vnd.oasis.opendocument.graphics-template|application/vnd.oasis.opendocument.presentation|application/vnd.oasis.opendocument.presentation-template|application/vnd.oasis.opendocument.formula\0"
+--- extensions/source/nsplugin/source/nsplugin_oo.rc.orig	2009-07-22 10:12:29.000000000 +0200
++++ extensions/source/nsplugin/source/nsplugin_oo.rc	2009-07-22 10:12:29.000000000 +0200
+@@ -27,7 +27,7 @@
+  * for a copy of the LGPLv3 License.
+  *
+  ************************************************************************/
+-#define ADDITIONAL_VERINFO1     value "FileExtents", "sdc|sds|sda|sdd|sdp|smf|vor|sgl|sdw|sxc|stc|sxd|std|sxi|sti|sxm|sxw|sxg|stw|odt|ott|odm|oth|ods|ots|odg|otg|odp|otp|odf\0"\
+-    value "FileOpenName", "StarCalc 3.0 - 5.0|StarChart 3.0 - 5.0|StarDraw 3.0 - 5.0|StarImpress 3.0 - 5.0|StarImpress-packed 3.0 - 5.0|StarMath 3.0 - 5.0|StarWriter Template 3.0 - 5.0|StarWriter Global 3.0 - 5.0|StarWriter 3.0 - 5.0|StarOffice 6.0/7 Spreadsheet|StarOffice 6.0/7 Spreadsheet Template|StarOffice 6.0/7 Drawing|StarOffice 6.0/7 Drawing Template|StarOffice 6.0/7 Presentation|StarOffice 6.0/7 Presentation Template|StarOffice 6.0/7 Formula|StarOffice 6.0/7 Text Document|StarOffice 6.0/7 Master Document|StarOffice 6.0/7 Text Document Template|OpenDocument Text|OpenDocument Text Template|OpenDocument Master Document|HTML Document Template|OpenDocument Spreadsheet|OpenDocument Spreadsheet Template|OpenDocument Drawing|OpenDocument Drawing Template|OpenDocument Presentation|OpenDocument Presentation Template|OpenDocument Formula\0"
+-#define ADDITIONAL_VERINFO2    value "FileDescription", "OpenOffice.org Plug-in handles all its documents" value "ProductName", "OpenOffice.org Plug-in"  value "MIMEType",   "application/vnd.stardivision.calc|application/vnd.stardivision.chart|application/vnd.stardivision.draw|application/vnd.stardivision.impress|application/vnd.stardivision.impress-packed|application/vnd.stardivision.math|application/vnd.stardivision.writer|application/vnd.stardivision.writer-global|application/vnd.staroffice.writer|application/vnd.sun.xml.calc|application/vnd.sun.xml.calc.template|application/vnd.sun.xml.draw|application/vnd.sun.xml.draw.template|"
++#define ADDITIONAL_VERINFO1     VALUE "FileExtents", "sdc|sds|sda|sdd|sdp|smf|vor|sgl|sdw|sxc|stc|sxd|std|sxi|sti|sxm|sxw|sxg|stw|odt|ott|odm|oth|ods|ots|odg|otg|odp|otp|odf\0"\
++    VALUE "FileOpenName", "StarCalc 3.0 - 5.0|StarChart 3.0 - 5.0|StarDraw 3.0 - 5.0|StarImpress 3.0 - 5.0|StarImpress-packed 3.0 - 5.0|StarMath 3.0 - 5.0|StarWriter Template 3.0 - 5.0|StarWriter Global 3.0 - 5.0|StarWriter 3.0 - 5.0|StarOffice 6.0/7 Spreadsheet|StarOffice 6.0/7 Spreadsheet Template|StarOffice 6.0/7 Drawing|StarOffice 6.0/7 Drawing Template|StarOffice 6.0/7 Presentation|StarOffice 6.0/7 Presentation Template|StarOffice 6.0/7 Formula|StarOffice 6.0/7 Text Document|StarOffice 6.0/7 Master Document|StarOffice 6.0/7 Text Document Template|OpenDocument Text|OpenDocument Text Template|OpenDocument Master Document|HTML Document Template|OpenDocument Spreadsheet|OpenDocument Spreadsheet Template|OpenDocument Drawing|OpenDocument Drawing Template|OpenDocument Presentation|OpenDocument Presentation Template|OpenDocument Formula\0"
++#define ADDITIONAL_VERINFO2    VALUE "FileDescription", "OpenOffice.org Plug-in handles all its documents" VALUE "ProductName", "OpenOffice.org Plug-in"  VALUE "MIMEType",   "application/vnd.stardivision.calc|application/vnd.stardivision.chart|application/vnd.stardivision.draw|application/vnd.stardivision.impress|application/vnd.stardivision.impress-packed|application/vnd.stardivision.math|application/vnd.stardivision.writer|application/vnd.stardivision.writer-global|application/vnd.staroffice.writer|application/vnd.sun.xml.calc|application/vnd.sun.xml.calc.template|application/vnd.sun.xml.draw|application/vnd.sun.xml.draw.template|"
+ #define ADDITIONAL_VERINFO3     "application/vnd.sun.xml.impress|application/vnd.sun.xml.impress.template|application/vnd.sun.xml.math|application/vnd.sun.xml.writer|application/vnd.sun.xml.writer.global|application/vnd.sun.xml.writer.template|application/vnd.oasis.opendocument.text|application/vnd.oasis.opendocument.text-template|application/vnd.oasis.opendocument.text-master|application/vnd.oasis.opendocument.text-web|application/vnd.oasis.opendocument.spreadsheet|application/vnd.oasis.opendocument.spreadsheet-template|application/vnd.oasis.opendocument.graphics|application/vnd.oasis.opendocument.graphics-template|application/vnd.oasis.opendocument.presentation|application/vnd.oasis.opendocument.presentation-template|application/vnd.oasis.opendocument.formula\0"
diff --git a/patches/dev300/crosswin32-helpcontent2-mingw.diff b/patches/dev300/crosswin32-helpcontent2-mingw.diff
index ad4b84f..1311d89 100644
--- a/patches/dev300/crosswin32-helpcontent2-mingw.diff
+++ b/patches/dev300/crosswin32-helpcontent2-mingw.diff
@@ -7,7 +7,7 @@
 +.IF "$(CROSS_COMPILING)" == "no"
 +HELPLINKER=HelpLinker
 +.ELSE # "$(CROSS_COMPILING)" == "yes"
-+HELPLINKER=$(SOLARBINDIR)/HelpLinker.exe
++HELPLINKER=wine $(SOLARBINDIR)/HelpLinker.exe
 +.ENDIF # "$(CROSS_COMPILING)" == "yes"
 +
  $(LINKALLTARGETS) : $(foreach,i,$(LINKLINKFILES) $(COMMONMISC)$/$$(@:b:s/_/./:e:s/.//)/$i) $(subst,LANGUAGE,$$(@:b:s/_/./:e:s/.//) $(LINKADDEDDEPS)) $(COMMONMISC)$/xhp_changed.flag $(PRJ)$/helpers$/hid.lst
diff --git a/patches/dev300/crosswin32-pyuno-mingw.diff b/patches/dev300/crosswin32-pyuno-mingw.diff
index ed91ed8..0ff7e49 100644
--- a/patches/dev300/crosswin32-pyuno-mingw.diff
+++ b/patches/dev300/crosswin32-pyuno-mingw.diff
@@ -18,3 +18,14 @@
  ALLTAR : \
  	$(DLLDEST)$/uno.py
 
+--- pyuno/source/loader/makefile.mk.orig	2008-04-11 12:31:24.000000000 +0200
++++ pyuno/source/loader/makefile.mk	2009-07-14 11:36:44.000000000 +0200
+@@ -117,7 +117,7 @@
+ 	cd $(DLLDEST) && sh -c "DYLD_LIBRARY_PATH=$(DYLD_LIBRARY_PATH):$(OUT)$/lib;export DYLD_LIBRARY_PATH;regcomp -register -r pyuno_services.tmp $(foreach,i,$(COMPONENTS) -c $(i))"
+ .ELSE
+ .IF "$(GUI)$(COM)"=="WNTGCC"
+-	cd $(DLLDEST) && sh -c "export PATH='$(PATH):$(OUT)$/bin'; regcomp -register -r pyuno_services.tmp $(foreach,i,$(COMPONENTS) -c $(i))"
++	cd $(DLLDEST) && sh -c "export PATH='$(PATH):$(OUT)$/bin'; wine $(SOLARBINDIR)/regcomp -register -r pyuno_services.tmp $(foreach,i,$(COMPONENTS) -c $(i))"
+ .ELSE
+ 	cd $(DLLDEST) && regcomp -register -r pyuno_services.tmp $(foreach,i,$(COMPONENTS) -c $(i))
+ .ENDIF    # "$(GUI)$(COM)"=="WNTGCC" 
diff --git a/patches/dev300/crosswin32-sccomp-mingw.diff b/patches/dev300/crosswin32-sccomp-mingw.diff
index 15ff5e1..2875387 100644
--- a/patches/dev300/crosswin32-sccomp-mingw.diff
+++ b/patches/dev300/crosswin32-sccomp-mingw.diff
@@ -1,21 +1,18 @@
 --- sccomp/source/solver/solver.cxx.pristine	2008-10-30 08:51:53.000000000 +0100
 +++ sccomp/source/solver/solver.cxx	2008-10-30 08:51:44.000000000 +0100
-@@ -28,6 +28,13 @@
+@@ -28,6 +28,10 @@
   *
   ************************************************************************/
  
 +#ifdef __MINGW32__
-+#define BOOL OOO_BOOL
-+#define INT32 OOO_INT32
-+#define UINT32 OOO_UINT32
-+#include <tools/solar.h>
++#define __MINGW32_UNDEF_CONFLICT_TYPES__
 +#endif /* __MINGW32__ */
 +
  #undef LANGUAGE_NONE
  #define WINAPI __stdcall
  #define LoadInverseLib FALSE
---- sccomp/source/solver/solver.hxx.pristine	2008-10-30 09:23:23.000000000 +0100
-+++ sccomp/source/solver/solver.hxx	2008-10-30 09:22:41.000000000 +0100
+--- sccomp/source/solver/solver.hxx.pristine	2008-10-30 08:51:53.000000000 +0100
++++ sccomp/source/solver/solver.hxx	2008-10-30 08:51:44.000000000 +0100
 @@ -31,6 +31,7 @@
  #ifndef SOLVER_HXX
  #define SOLVER_HXX
diff --git a/patches/dev300/crosswin32-shell-mingw.diff b/patches/dev300/crosswin32-shell-mingw.diff
index c904ee8..c65e7d2 100644
--- a/patches/dev300/crosswin32-shell-mingw.diff
+++ b/patches/dev300/crosswin32-shell-mingw.diff
@@ -287,28 +287,15 @@
  .INCLUDE :	set_wntx64.mk
 --- shell/source/win32/shlxthandler/res/makefile.mk.~1.8.~	2008-04-11 10:23:02.000000000 +0200
 +++ shell/source/win32/shlxthandler/res/makefile.mk	2008-11-04 10:53:13.000000000 +0100
-@@ -63,3 +63,21 @@ ULFDIR:=.
+@@ -62,4 +62,8 @@
+ # using lngconvex.exe 
  
  $(RCFILES) : $(ULFDIR)$/shlxthdl.ulf makefile.mk rcfooter.txt rcheader.txt rctmpl.txt
-     $(WRAPCMD) $(BIN)$/lngconvex.exe -ulf $(ULFDIR)$/shlxthdl.ulf -rc $(RES)$/shlxthdl.rc -rct rctmpl.txt -rch rcheader.txt -rcf rcfooter.txt
 +.IF "$(CROSS_COMPILING)" == "yes"
-+	sed -i -e 's@\\x\([0-9a-f][0-9a-f]["\\]\)@\\x00\1 at g' $@
-+	sed -i -e 's@\\x\([0-9a-f][0-9a-f]["\\]\)@\\x00\1 at g' $@
-+	sed -i -e 's@\\x\([0-9a-f][0-9a-f][0-9a-f]["\\]\)@\\x0\1 at g' $@
-+	sed -i -e 's@\\x\([0-9a-f][0-9a-f][0-9a-f]["\\]\)@\\x0\1 at g' $@
-+	sed -i -e 's@\([ ,]\)"@\1L"@g' $@
-+	sed -i -e 's at include L"@include "@' $@
-+	pytt '\r\n' '\n' $@
-+	pytt '^LANGUAGE 0x244(.|\n)*' '' $@
-+#	sed -i -e 's@^LANGUAGE 0x211 at LANGUAGE 0x21@' $@
-+#	sed -i -e 's@^LANGUAGE 0x226 at LANGUAGE 0x26@' $@
-+#	sed -i -e 's@^LANGUAGE 0x22c at LANGUAGE 0x2c@' $@
-+#	sed -i -e 's@^LANGUAGE 0x22b at LANGUAGE 0x2b@' $@
-+#	sed -i -e 's@^LANGUAGE 0x30 at LANGUAGE 0x2d@' $@
-+#	sed -i -e 's@^LANGUAGE 0x73 at LANGUAGE 0x2a@' $@
-+#	sed -i -e 's@^LANGUAGE 0x31 at LANGUAGE 0x2e@' $@
-+#	sed -i -e 's@^LANGUAGE 0x33 at LANGUAGE 0x01@' $@
-+.ENDIF #"$(CROSS_COMPILING)" == "yes"
++    $(WRAPCMD) wine $(BIN)$/lngconvex.exe -ulf $(ULFDIR)$/shlxthdl.ulf -rc $(RES)$/shlxthdl.rc -rct rctmpl.txt -rch rcheader.txt -rcf rcfooter.txt
++.ELSE
+     $(WRAPCMD) $(BIN)$/lngconvex.exe -ulf $(ULFDIR)$/shlxthdl.ulf -rc $(RES)$/shlxthdl.rc -rct rctmpl.txt -rch rcheader.txt -rcf rcfooter.txt
++.ENDIF
 
 +++ shell/inc/internal/infotips.hxx	2008-11-03 20:54:22.000000000 +0100
 +++ shell/inc/internal/infotips.hxx	2009-07-06 14:12:35.000000000 +0200
diff --git a/patches/dev300/crosswin32-tools-mingw.diff b/patches/dev300/crosswin32-tools-mingw.diff
index bac8f7a..c233366 100644
--- a/patches/dev300/crosswin32-tools-mingw.diff
+++ b/patches/dev300/crosswin32-tools-mingw.diff
@@ -13,16 +13,24 @@
  #include <tools/svwin.h>
 --- tools/inc/tools/solar.h.pristine	2008-10-29 23:44:36.000000000 +0100
 +++ tools/inc/tools/solar.h	2008-10-31 12:54:34.000000000 +0100
-@@ -57,6 +57,12 @@
+@@ -57,7 +57,9 @@
  /*   Previous typedefs from before sal convergence are in comments */
  /*   to the right of the new types.                                */
  
-+#ifdef __MINGW32__
-+#undef BOOL
-+#undef INT32
-+#undef UINT32
-+#endif /* __MINGW32__ */
-+
++#ifndef __MINGW32_UNDEF_CONFLICT_TYPES__
  typedef sal_Bool		BOOL;	/* typedef unsigned char   BOOL; */
++#endif // __MINGW32_UNDEF_CONFLICT_TYPES__
  typedef sal_uInt8		BYTE;	/* typedef unsigned char   BYTE; */
  typedef sal_uInt16		USHORT;	/* typedef unsigned short  USHORT; */
+ typedef sal_uIntPtr		ULONG;	/* typedef unsigned long   ULONG; */
+@@ -81,8 +83,10 @@
+ /* types with exact defined size (not just the minimum size) */
+ typedef sal_Int64			INT64;	/* typedef long            INT64;  previously "void" on Windows */
+ typedef sal_uInt64			UINT64;	/* typedef unsigned long   UINT64; previously "void" on Windows */
++#ifndef __MINGW32_UNDEF_CONFLICT_TYPES__
+ typedef sal_Int32			INT32;	/* typedef int             INT32;  previously "long" on Windows */
+ typedef sal_uInt32			UINT32;	/* typedef unsigned int    UINT32; previously "unsigned long" on Windows */
++#endif // __MINGW32_UNDEF_CONFLICT_TYPES__
+ #endif /* _SOLAR_NOUINT */
+ #endif
+
diff --git a/patches/dev300/crosswin32-ugly-hacks.diff b/patches/dev300/crosswin32-ugly-hacks.diff
index 76d3e49..c456ba9 100644
--- a/patches/dev300/crosswin32-ugly-hacks.diff
+++ b/patches/dev300/crosswin32-ugly-hacks.diff
@@ -6,7 +6,7 @@
  
 -   PYTHON_CFLAGS=`python-config --cflags`
 -   PYTHON_LIBS=`python-config --libs`
-+   PYTHON_CFLAGS="-I/usr/i686-pc-mingw32/sys-root/mingw/include/python2.6 -DNDEBUG -O2 -Wall"
++   PYTHON_CFLAGS="-I/usr/i686-pc-mingw32/sys-root/mingw/include/python2.6 -DNDEBUG -O2 -Wall -DWITH_THREAD"
 +   PYTHON_LIBS="-lpython2.6"
  
     if test "$_os" = "Darwin"; then
@@ -106,16 +106,6 @@
  pk  setup_native\source\ulfconv                           nmake   -  all sn_ulfconv NULL
  pk  setup_native\registry\data\org\openoffice\Office                     nmake   -  all sn_regconfig NULL
  pk  setup_native\source\registration\com\sun\star\servicetag\resources   get     -  all sn_svctagres NULL
---- pyuno/prj/build.lst.orig	2009-07-09 14:32:09.000000000 +0200
-+++ pyuno/prj/build.lst	2009-07-09 14:32:16.000000000 +0200
-@@ -1,5 +1,5 @@
- bgpu	pyuno	:	stoc cpputools cppuhelper bridges tools PYTHON:python NULL
- pu	pyuno				  usr1	-	all	br_mkout NULL
- pu	pyuno\zipcore	nmake	-	all	pu_zipcore NULL
--pu	pyuno\source\module	nmake	-	all	pu_module NULL
--pu	pyuno\source\loader	nmake	-	all	pu_loader pu_module NULL
-+#pu	pyuno\source\module	nmake	-	all	pu_module NULL
-+#pu	pyuno\source\loader	nmake	-	all	pu_loader pu_module NULL
 --- bean/prj/build.lst.orig	2009-07-09 14:37:14.000000000 +0200
 +++ bean/prj/build.lst	2009-07-09 14:37:56.000000000 +0200
 @@ -1,6 +1,7 @@
@@ -128,23 +118,6 @@
 -ob  bean\util              			nmake   -   all	ob_util ob_beanjava ob_legacybeanjava ob_beanwin32.n ob_beanunix.u NULL
 +#ob  bean\util              			nmake   -   all	ob_util ob_beanjava ob_legacybeanjava ob_beanwin32.n ob_beanunix.u NULL
 +ob  bean\util              			nmake   -   all	ob_util ob_beanjava ob_legacybeanjava ob_beanunix.u NULL
---- sccomp/prj/build.lst.orig	2009-07-09 14:42:23.000000000 +0200
-+++ sccomp/prj/build.lst	2009-07-09 14:42:57.000000000 +0200
-@@ -1,4 +1,4 @@
- scc	sccomp	:	offuh comphelper LPSOLVE:lpsolve tools transex3 rsc NULL
- scc	sccomp									usr1	-	all	scc_mkout NULL
- scc	sccomp\prj								get		-	all	scc_prj NULL
--scc	sccomp\source\solver					nmake	-	all	scc_solver NULL
-+#scc	sccomp\source\solver					nmake	-	all	scc_solver NULL
---- testtools/prj/build.lst.orig	2009-07-09 14:55:05.000000000 +0200
-+++ testtools/prj/build.lst	2009-07-09 14:55:18.000000000 +0200
-@@ -4,5 +4,5 @@
- tt testtools\source\bridgetest\cli nmake - w,vc7 tt_cli tt_bridgetest tt_bridgetest_idl tt_inc NULL
- tt testtools\source\bridgetest\idl nmake - all tt_bridgetest_idl tt_inc NULL
- tt testtools\com\sun\star\comp\bridge nmake - all tt_javaTestObjs tt_bridgetest_idl tt_inc NULL
--tt testtools\source\bridgetest\pyuno nmake - all tt_pyuno tt_bridgetest tt_inc NULL
-+#tt testtools\source\bridgetest\pyuno nmake - all tt_pyuno tt_bridgetest tt_inc NULL
- tt testtools\source\cliversioning nmake - all tt_cliver NULL
 --- testtools/source/bridgetest/makefile.mk.orig	2009-07-09 14:53:22.000000000 +0200
 +++ testtools/source/bridgetest/makefile.mk	2009-07-09 14:54:20.000000000 +0200
 @@ -192,7 +192,7 @@
@@ -219,57 +192,6 @@
  			-c i18npool.uno$(DLLPOST)
  
  # --- Def-File ---
---- connectivity/prj/build.lst.orig	2009-07-09 16:30:59.000000000 +0200
-+++ connectivity/prj/build.lst	2009-07-09 16:35:34.000000000 +0200
-@@ -7,7 +7,7 @@
- cn  connectivity\source\cpool                       nmake   -   all cn_cpool cn_dbtools cn_inc NULL
- cn  connectivity\source\resource                    nmake   -   all cn_res cn_inc NULL
- cn  connectivity\source\sdbcx                       nmake   -   all cn_sdbcx cn_inc NULL
--cn  connectivity\source\drivers\ado                 nmake   -   w   cn_ado cn_dbtools cn_inc NULL
-+#cn  connectivity\source\drivers\ado                 nmake   -   w   cn_ado cn_dbtools cn_inc NULL
- cn  connectivity\source\drivers\mozab\mozillasrc    nmake   -   all cn_mozab_mozillasrc cn_file cn_inc NULL
- cn  connectivity\source\drivers\mozab\bootstrap     nmake   -   all cn_mozab_bootstrap cn_mozab_mozillasrc cn_inc NULL
- cn  connectivity\source\drivers\mozab               nmake   -   all cn_mozab cn_mozab_bootstrap cn_dbtools cn_inc NULL
-@@ -16,11 +16,11 @@
- cn  connectivity\source\drivers\evoab               nmake   -   u   cn_evoab cn_dbtools cn_file cn_inc NULL
- cn  connectivity\source\drivers\evoab2              nmake   -   u   cn_evoab2 cn_dbtools cn_file cn_inc NULL
- cn  connectivity\source\drivers\calc                nmake   -   all cn_calc cn_file cn_inc NULL
--cn  connectivity\source\drivers\odbcbase            nmake   -   all cn_odbcbase cn_dbtools cn_inc NULL
--cn  connectivity\source\drivers\odbc                nmake   -   all cn_odbc cn_odbcbase cn_inc NULL
-+#cn  connectivity\source\drivers\odbcbase            nmake   -   all cn_odbcbase cn_dbtools cn_inc NULL
-+#cn  connectivity\source\drivers\odbc                nmake   -   all cn_odbc cn_odbcbase cn_inc NULL
- cn  connectivity\source\drivers\mysql               nmake   -   all cn_mysql cn_dbtools cn_inc NULL
- cn  connectivity\source\drivers\jdbc                nmake   -   all cn_jdbc cn_dbtools cn_inc NULL
--cn  connectivity\source\drivers\adabas              nmake   -   all cn_adabas cn_dbtools cn_odbcbase cn_inc NULL
-+#cn  connectivity\source\drivers\adabas              nmake   -   all cn_adabas cn_dbtools cn_odbcbase cn_inc NULL
- cn  connectivity\source\drivers\file                nmake   -   all cn_file cn_dbtools cn_inc NULL
- cn  connectivity\source\drivers\flat                nmake   -   all cn_flat cn_dbtools cn_file cn_inc NULL
- cn  connectivity\source\drivers\dbase               nmake   -   all cn_dbase cn_dbtools cn_file cn_inc NULL
---- helpcontent2/prj/build.lst.orig	2009-07-09 17:25:02.000000000 +0200
-+++ helpcontent2/prj/build.lst	2009-07-09 17:26:45.000000000 +0200
-@@ -53,13 +53,13 @@
- h2	helpcontent2\source\text\swriter\04                    nmake - all helpcontent2_swri_04 helpcontent2_aux NULL
- h2	helpcontent2\source\text\swriter\guide                 nmake - all helpcontent2_swri_guid helpcontent2_aux NULL
- h2	helpcontent2\util                                      nmake - all helpcontent2_ut helpcontent2_aux NULL
--h2	helpcontent2\util\sbasic                               nmake - all helpcontent2_ut_sbas helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
--h2	helpcontent2\util\schart                               nmake - all helpcontent2_ut_scha helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
--h2	helpcontent2\util\scalc                                nmake - all helpcontent2_ut_scal helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
--h2	helpcontent2\util\sdraw                                nmake - all helpcontent2_ut_sdra helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
--h2	helpcontent2\util\sdatabase                            nmake - all helpcontent2_ut_sdat helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
--h2	helpcontent2\util\shared                               nmake - all helpcontent2_ut_shar helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
--h2	helpcontent2\util\simpress                             nmake - all helpcontent2_ut_simp helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
--h2	helpcontent2\util\smath                                nmake - all helpcontent2_ut_smat helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
--h2	helpcontent2\util\swriter                              nmake - all helpcontent2_ut_swri helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
-+#h2	helpcontent2\util\sbasic                               nmake - all helpcontent2_ut_sbas helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
-+#h2	helpcontent2\util\schart                               nmake - all helpcontent2_ut_scha helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
-+#h2	helpcontent2\util\scalc                                nmake - all helpcontent2_ut_scal helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
-+#h2	helpcontent2\util\sdraw                                nmake - all helpcontent2_ut_sdra helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
-+#h2	helpcontent2\util\sdatabase                            nmake - all helpcontent2_ut_sdat helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
-+#h2	helpcontent2\util\shared                               nmake - all helpcontent2_ut_shar helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
-+#h2	helpcontent2\util\simpress                             nmake - all helpcontent2_ut_simp helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
-+#h2	helpcontent2\util\smath                                nmake - all helpcontent2_ut_smat helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
-+#h2	helpcontent2\util\swriter                              nmake - all helpcontent2_ut_swri helpcontent2_aux helpcontent2_sbas_guid helpcontent2_sbas_shar helpcontent2_sbas_shar_01 helpcontent2_sbas_shar_02 helpcontent2_scal helpcontent2_scal_00 helpcontent2_scal_01 helpcontent2_scal_02 helpcontent2_scal_04 helpcontent2_scal_05 helpcontent2_scal_guid helpcontent2_scha helpcontent2_scha_00 helpcontent2_scha_01 helpcontent2_scha_02 helpcontent2_scha_04 helpcontent2_sdra helpcontent2_sdra_00 helpcontent2_sdra_01 helpcontent2_sdra_04 helpcontent2_sdra_guid helpcontent2_shar helpcontent2_shar_00 helpcontent2_shar_01 helpcontent2_shar_02 helpcontent2_shar_04 helpcontent2_shar_05 helpcontent2_shar_07 helpcontent2_shar_auko helpcontent2_shar_aupi helpcontent2_shar_expl_data helpcontent2_shar_guid helpcontent2_shar_opti helpcontent2_simp helpcontent2_simp_00 helpcontent2_simp_01 helpcontent2_simp_02 helpcontent2_simp_04 helpcontent2_simp_guid helpcontent2_smat helpcontent2_smat_00 helpcontent2_smat_01 helpcontent2_smat_02 helpcontent2_smat_04 helpcontent2_smat_guid helpcontent2_swri helpcontent2_swri_00 helpcontent2_swri_01 helpcontent2_swri_02 helpcontent2_swri_04 helpcontent2_swri_guid NULL
- h2	helpcontent2\source\auxiliary                          nmake - all helpcontent2_aux NULL
 diff -urN zipfile.orig//crypt.h zipfile/crypt.h
 --- /dev/null	1970-01-01 01:00:00.000000000 +0100
 +++ shell/source/all/zipfile/crypt.h	2009-07-09 17:22:40.000000000 +0200
@@ -2640,95 +2562,18168 @@ diff -urN zipfile.orig//unzip.h zipfile/unzip.h
 +#endif
 +
 +#endif /* _unz_H */
---- dbaccess/prj/build.lst.orig	2009-07-11 10:37:50.000000000 +0200
-+++ dbaccess/prj/build.lst	2009-07-11 10:38:42.000000000 +0200
-@@ -1,29 +1,29 @@
- ba	dbaccess	:	BOOST:boost connectivity svx stoc uui QADEVOOO:qadevOOo NULL
--ba	dbaccess								usr1	-	all	ba_mkout NULL
--ba	dbaccess\inc							nmake	-	all	ba_inc NULL
--ba	dbaccess\source\ui\inc					nmake	-	all	ba_uiinc ba_inc NULL
--ba	dbaccess\source\core\api				nmake	-	all	ba_capi ba_inc NULL
--ba	dbaccess\source\core\dataaccess			nmake	-	all	ba_cdaccess ba_capi ba_inc NULL
--ba	dbaccess\source\core\misc				nmake	-	all	ba_cmisc ba_cdaccess ba_inc NULL
--ba	dbaccess\source\core\resource			nmake	-	all	ba_cres ba_cmisc ba_inc NULL
--ba	dbaccess\source\filter\xml				nmake	-	all	ba_ffilter ba_shared ba_util ba_inc NULL
--ba	dbaccess\source\filter\migration		nmake	-	all	ba_fmigration ba_shared ba_inc NULL
--ba	dbaccess\source\shared					nmake	-	all	ba_shared ba_cres ba_inc NULL
--ba  dbaccess\source\sdbtools\connection     nmake   -   all ba_conntools ba_inc NULL
--ba  dbaccess\source\sdbtools\misc           nmake   -   all ba_misctools ba_inc NULL
--ba  dbaccess\source\sdbtools\resource       nmake   -   all ba_miscres ba_inc NULL
--ba  dbaccess\source\ext\macromigration      nmake   -   all ba_extmm ba_inc NULL
--ba  dbaccess\source\ext\adabas  			nmake   -   all ba_ext_adabasui ba_inc NULL
--ba	dbaccess\source\ui\app					nmake	-	all	ba_uiapp ba_uiinc ba_inc NULL
--ba	dbaccess\source\ui\browser				nmake	-	all	ba_uibrowser ba_uiinc ba_inc NULL
--ba	dbaccess\source\ui\dlg					nmake	-	all	ba_uidlg ba_uiinc ba_inc NULL
--ba	dbaccess\source\ui\control				nmake	-	all	ba_uicontrol ba_uiinc ba_inc NULL
--ba	dbaccess\source\ui\misc					nmake	-	all	ba_uimisc ba_inc NULL
--ba	dbaccess\source\ui\querydesign			nmake	-	all	ba_uiquery ba_uiinc ba_inc NULL
--ba	dbaccess\source\ui\relationdesign		nmake	-	all	ba_uirelationdesign ba_uiinc ba_inc NULL
--ba	dbaccess\source\ui\tabledesign			nmake	-	all	ba_uitabledesign ba_uiinc ba_inc NULL
--ba	dbaccess\source\ui\uno					nmake	-	all	ba_uiuno ba_uimisc ba_inc NULL
--ba	dbaccess\source\ui\imagelists			nmake	-	all	ba_uiimglst ba_inc NULL
--ba  dbaccess\util                           nmake   -   all ba_util ba_uiimglst ba_capi ba_shared ba_uibrowser ba_uiapp ba_uicontrol ba_uidlg ba_uimisc ba_uiquery ba_uitabledesign ba_uirelationdesign ba_uiuno ba_conntools ba_misctools ba_miscres ba_ext_adabasui NULL
--ba  dbaccess\win32\source\odbcconfig        nmake   -   w ba_odbcconfig ba_inc NULL
--ba  dbaccess\qa\complex\dbaccess            nmake   -   all ba_complex_tests NULL
-+#ba	dbaccess								usr1	-	all	ba_mkout NULL
-+#ba	dbaccess\inc							nmake	-	all	ba_inc NULL
-+#ba	dbaccess\source\ui\inc					nmake	-	all	ba_uiinc ba_inc NULL
-+#ba	dbaccess\source\core\api				nmake	-	all	ba_capi ba_inc NULL
-+#ba	dbaccess\source\core\dataaccess			nmake	-	all	ba_cdaccess ba_capi ba_inc NULL
-+#ba	dbaccess\source\core\misc				nmake	-	all	ba_cmisc ba_cdaccess ba_inc NULL
-+#ba	dbaccess\source\core\resource			nmake	-	all	ba_cres ba_cmisc ba_inc NULL
-+#ba	dbaccess\source\filter\xml				nmake	-	all	ba_ffilter ba_shared ba_util ba_inc NULL
-+#ba	dbaccess\source\filter\migration		nmake	-	all	ba_fmigration ba_shared ba_inc NULL
-+#ba	dbaccess\source\shared					nmake	-	all	ba_shared ba_cres ba_inc NULL
-+#ba  dbaccess\source\sdbtools\connection     nmake   -   all ba_conntools ba_inc NULL
-+#ba  dbaccess\source\sdbtools\misc           nmake   -   all ba_misctools ba_inc NULL
-+#ba  dbaccess\source\sdbtools\resource       nmake   -   all ba_miscres ba_inc NULL
-+#ba  dbaccess\source\ext\macromigration      nmake   -   all ba_extmm ba_inc NULL
-+#ba  dbaccess\source\ext\adabas  			nmake   -   all ba_ext_adabasui ba_inc NULL
-+#ba	dbaccess\source\ui\app					nmake	-	all	ba_uiapp ba_uiinc ba_inc NULL
-+#ba	dbaccess\source\ui\browser				nmake	-	all	ba_uibrowser ba_uiinc ba_inc NULL
-+#ba	dbaccess\source\ui\dlg					nmake	-	all	ba_uidlg ba_uiinc ba_inc NULL
-+#ba	dbaccess\source\ui\control				nmake	-	all	ba_uicontrol ba_uiinc ba_inc NULL
-+#ba	dbaccess\source\ui\misc					nmake	-	all	ba_uimisc ba_inc NULL
-+#ba	dbaccess\source\ui\querydesign			nmake	-	all	ba_uiquery ba_uiinc ba_inc NULL
-+#ba	dbaccess\source\ui\relationdesign		nmake	-	all	ba_uirelationdesign ba_uiinc ba_inc NULL
-+#ba	dbaccess\source\ui\tabledesign			nmake	-	all	ba_uitabledesign ba_uiinc ba_inc NULL
-+#ba	dbaccess\source\ui\uno					nmake	-	all	ba_uiuno ba_uimisc ba_inc NULL
-+#ba	dbaccess\source\ui\imagelists			nmake	-	all	ba_uiimglst ba_inc NULL
-+#ba  dbaccess\util                           nmake   -   all ba_util ba_uiimglst ba_capi ba_shared ba_uibrowser ba_uiapp ba_uicontrol ba_uidlg ba_uimisc ba_uiquery ba_uitabledesign ba_uirelationdesign ba_uiuno ba_conntools ba_misctools ba_miscres ba_ext_adabasui NULL
-+#ba  dbaccess\win32\source\odbcconfig        nmake   -   w ba_odbcconfig ba_inc NULL
-+#ba  dbaccess\qa\complex\dbaccess            nmake   -   all ba_complex_tests NULL
---- desktop/prj/build.lst.orig	2009-07-11 13:26:12.000000000 +0200
-+++ desktop/prj/build.lst	2009-07-11 13:24:08.000000000 +0200
-@@ -10,7 +10,7 @@
- dt	desktop\source\offacc					nmake	-	all	dt_offac dt_inc NULL
- dt	desktop\source\splash					nmake	-	all	dt_spl dt_migr dt_inc NULL
- dt	desktop\win32\source					nmake	-	w	dt_wrapper dt_inc NULL
--dt	desktop\win32\source\setup				nmake	-	w	dt_setup dt_inc NULL
-+#dt	desktop\win32\source\setup				nmake	-	w	dt_setup dt_inc NULL
- dt	desktop\win32\source\officeloader		nmake	-	w	dt_officeloader dt_inc NULL
- dt	desktop\win32\source\guiloader			nmake	-	w	dt_guiloader dt_wrapper.w dt_inc NULL
- dt  desktop\win32\source\guistdio           nmake   -   w   dt_guistdio dt_inc NULL
---- extensions/prj/build.lst.orig	2009-07-11 13:49:43.000000000 +0200
-+++ extensions/prj/build.lst	2009-07-11 13:49:50.000000000 +0200
-@@ -27,8 +27,8 @@
- ex  extensions\source\oooimprovement            nmake   -   all ex_oooimprovement ex_inc NULL
- ex  extensions\source\preload                   nmake   -   all ex_preload  ex_inc NULL
- ex  extensions\source\config\ldap               nmake   -   all ex_ldap ex_inc NULL
--ex	extensions\source\nsplugin\source			nmake	-	u	ex_nsplugin ex_inc NULL
--ex	extensions\source\nsplugin\source			nmake	-	w	ex_nsplugin ex_inc NULL
-+#ex	extensions\source\nsplugin\source			nmake	-	u	ex_nsplugin ex_inc NULL
-+#ex	extensions\source\nsplugin\source			nmake	-	w	ex_nsplugin ex_inc NULL
- ex  extensions\source\update\feed               nmake   -   all ex_updchkfeed ex_inc NULL
- ex  extensions\source\update\check              nmake   -   all ex_updchk ex_inc NULL
- ex  extensions\source\update\ui                 nmake   -   all ex_updchkui ex_inc NULL
---- reportdesign/prj/build.lst.orig	2009-07-11 14:19:00.000000000 +0200
-+++ reportdesign/prj/build.lst	2009-07-11 14:19:11.000000000 +0200
-@@ -11,4 +11,4 @@
- rd  reportdesign\source\ui\report                                       nmake   -   all rd_uireport rd_inc NULL
- rd  reportdesign\source\ui\inspection                                   nmake   -   all rd_uiinspection rd_inc NULL
- rd  reportdesign\source\filter\xml                                      nmake   -   all rd_filter_xml rd_inc NULL
--rd  reportdesign\util                                                   nmake   -   all rd_util rd_api rd_res rd_shared rd_uimisc rd_uidlg rd_uireport rd_uiinspection rd_sdr rd_misc rd_filter_xml NULL
-+#rd  reportdesign\util                                                   nmake   -   all rd_util rd_api rd_res rd_shared rd_uimisc rd_uidlg rd_uireport rd_uiinspection rd_sdr rd_misc rd_filter_xml NULL
+diff -urN /home/jesus/ooo-build/build/ooo310-m14/connectivity/source/drivers/adabas//BDriver.cxx connectivity/source/drivers/adabas//BDriver.cxx
+--- connectivity/source/drivers/adabas/BDriver.cxx.orig	2008-10-01 15:28:29.000000000 +0200
++++ connectivity/source/drivers/adabas/BDriver.cxx	2009-07-22 15:38:34.000000000 +0200
+@@ -27,11 +27,12 @@
+  * for a copy of the LGPLv3 License.
+  *
+  ************************************************************************/
+-
+ // MARKER(update_precomp.py): autogen include statement, do not remove
++#define __MINGW32_UNDEF_CONFLICT_TYPES__
+ #include "precompiled_connectivity.hxx"
+-#include <unotools/tempfile.hxx>
+ #include "adabas/BDriver.hxx"
++
++#include <unotools/tempfile.hxx>
+ #include "adabas/BConnection.hxx"
+ #include "odbc/OFunctions.hxx"
+ #include <com/sun/star/lang/DisposedException.hpp>
+diff -urN /home/jesus/ooo-build/build/ooo310-m14/connectivity/source/drivers/adabas//BUser.cxx connectivity/source/drivers/adabas//BUser.cxx
+--- connectivity/source/drivers/adabas/BUser.cxx.orig	2008-10-01 15:28:29.000000000 +0200
++++ connectivity/source/drivers/adabas/BUser.cxx	2009-07-22 15:41:28.000000000 +0200
+@@ -37,6 +37,7 @@
+ #include "adabas/BConnection.hxx"
+ #include "connectivity/dbtools.hxx"
+ #include "connectivity/dbexception.hxx"
++#undef DELETE
+ #include <com/sun/star/sdbcx/Privilege.hpp>
+ #include <com/sun/star/sdbcx/PrivilegeObject.hpp>
+ #include "resource/adabas_res.hrc"
+--- connectivity/inc/connectivity/IParseContext.hxx.orig	2009-02-16 18:08:38.000000000 +0100
++++ connectivity/inc/connectivity/IParseContext.hxx	2009-07-20 17:19:42.000000000 +0200
+@@ -30,6 +30,10 @@
+ #ifndef CONNECTIVITY_IPARSECONTEXT_HXX
+ #define CONNECTIVITY_IPARSECONTEXT_HXX
+ 
++#ifdef ERROR_INVALID_TABLE
++#undef ERROR_INVALID_TABLE
++#endif
++
+ namespace connectivity { class OSQLParseNode; }
+ 
+ #include <rtl/ustring.hxx>
+diff -urN /home/jesus/ooo-build/build/ooo310-m14/connectivity/source/drivers/ado/adoctint.h connectivity/source/drivers/ado/adoctint.h
+--- /dev/null	1970-01-01 01:00:00.000000000 +0100
++++ connectivity/source/drivers/ado/adoctint.h	2009-07-22 17:49:20.000000000 +0200
+@@ -0,0 +1,1809 @@
++/**
++ * This file has no copyright assigned and is placed in the Public Domain.
++ * This file is part of the w64 mingw-runtime package.
++ * No warranty is given; refer to the file DISCLAIMER within this package.
++ */
++#ifndef _ADOCTINT_H_
++#define _ADOCTINT_H_
++
++#include <tchar.h>
++
++#ifndef __REQUIRED_RPCNDR_H_VERSION__
++#define __REQUIRED_RPCNDR_H_VERSION__ 440
++#endif
++#include "rpc.h"
++#include "rpcndr.h"
++#ifndef __m_adocat_h__
++#define __m_adocat_h__
++
++#ifndef ___ADOCollection_FWD_DEFINED__
++#define ___ADOCollection_FWD_DEFINED__
++typedef struct _ADOADOCollection _ADOCollection;
++typedef struct _ADOADOCollection _ADOADOCollection;
++#endif
++#ifndef ___ADODynaCollection_FWD_DEFINED__
++#define ___ADODynaCollection_FWD_DEFINED__
++typedef struct _ADODynaADOCollection _ADODynaCollection;
++#endif
++#ifndef ___Catalog_FWD_DEFINED__
++#define ___Catalog_FWD_DEFINED__
++typedef struct _ADOCatalog _Catalog;
++#endif
++#ifndef ___Table_FWD_DEFINED__
++#define ___Table_FWD_DEFINED__
++typedef struct _ADOTable _Table;
++#endif
++#ifndef ___Group25_FWD_DEFINED__
++#define ___Group25_FWD_DEFINED__
++typedef struct _Group25 _Group25;
++#endif
++#ifndef ___Group_FWD_DEFINED__
++#define ___Group_FWD_DEFINED__
++typedef struct _ADOGroup _Group;
++#endif
++#ifndef ___User25_FWD_DEFINED__
++#define ___User25_FWD_DEFINED__
++typedef struct _User25 _User25;
++#endif
++#ifndef ___User_FWD_DEFINED__
++#define ___User_FWD_DEFINED__
++typedef struct _ADOUser _User;
++#endif
++#ifndef ___Column_FWD_DEFINED__
++#define ___Column_FWD_DEFINED__
++typedef struct _ADOColumn _Column;
++#endif
++#ifndef ___Index_FWD_DEFINED__
++#define ___Index_FWD_DEFINED__
++typedef struct _ADOIndex _Index;
++#endif
++#ifndef ___Key_FWD_DEFINED__
++#define ___Key_FWD_DEFINED__
++typedef struct _ADOKey _Key;
++#endif
++#ifndef __View_FWD_DEFINED__
++#define __View_FWD_DEFINED__
++typedef struct ADOView View;
++#endif
++#ifndef __Procedure_FWD_DEFINED__
++#define __Procedure_FWD_DEFINED__
++typedef struct ADOProcedure Procedure;
++#endif
++#ifndef __Catalog_FWD_DEFINED__
++#define __Catalog_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADOCatalog Catalog;
++#else
++typedef struct ADOCatalog Catalog;
++#endif
++#endif
++#ifndef __Table_FWD_DEFINED__
++#define __Table_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADOTable Table;
++#else
++typedef struct ADOTable Table;
++#endif
++#endif
++#ifndef __Property_FWD_DEFINED__
++#define __Property_FWD_DEFINED__
++typedef struct ADOProperty Property;
++#endif
++#ifndef __Group_FWD_DEFINED__
++#define __Group_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADOGroup Group;
++#else
++typedef struct ADOGroup Group;
++#endif
++#endif
++#ifndef __User_FWD_DEFINED__
++#define __User_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADOUser User;
++#else
++typedef struct ADOUser User;
++#endif
++#endif
++#ifndef __Column_FWD_DEFINED__
++#define __Column_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADOColumn Column;
++#else
++typedef struct ADOColumn Column;
++#endif
++#endif
++#ifndef __Index_FWD_DEFINED__
++#define __Index_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADOIndex Index;
++#else
++typedef struct ADOIndex Index;
++#endif
++#endif
++#ifndef __Key_FWD_DEFINED__
++#define __Key_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADOKey Key;
++#else
++typedef struct ADOKey Key;
++#endif
++#endif
++#ifndef __Tables_FWD_DEFINED__
++#define __Tables_FWD_DEFINED__
++typedef struct ADOTables Tables;
++#endif
++#ifndef __Columns_FWD_DEFINED__
++#define __Columns_FWD_DEFINED__
++typedef struct ADOColumns Columns;
++#endif
++#ifndef __Procedures_FWD_DEFINED__
++#define __Procedures_FWD_DEFINED__
++typedef struct ADOProcedures Procedures;
++#endif
++#ifndef __Views_FWD_DEFINED__
++#define __Views_FWD_DEFINED__
++typedef struct ADOViews Views;
++#endif
++#ifndef __Indexes_FWD_DEFINED__
++#define __Indexes_FWD_DEFINED__
++typedef struct ADOIndexes Indexes;
++#endif
++#ifndef __Keys_FWD_DEFINED__
++#define __Keys_FWD_DEFINED__
++typedef struct ADOKeys Keys;
++#endif
++#ifndef __Users_FWD_DEFINED__
++#define __Users_FWD_DEFINED__
++typedef struct ADOUsers Users;
++#endif
++#ifndef __Groups_FWD_DEFINED__
++#define __Groups_FWD_DEFINED__
++typedef struct ADOGroups Groups;
++#endif
++#ifndef __Properties_FWD_DEFINED__
++#define __Properties_FWD_DEFINED__
++typedef struct ADOProperties Properties;
++#endif
++
++#include "oaidl.h"
++#include "ocidl.h"
++#ifdef __cplusplus
++extern "C"{
++#endif
++  void *__RPC_API MIDL_user_allocate(size_t);
++  void __RPC_API MIDL_user_free(void *);
++
++  typedef enum RuleEnum {
++    adRINone = 0,adRICascade = 1,adRISetNull = 2,adRISetDefault = 3
++  } RuleEnum;
++
++  typedef enum KeyTypeEnum {
++    adKeyPrimary = 1,adKeyForeign = 2,adKeyUnique = 3
++  } KeyTypeEnum;
++
++  typedef enum ActionEnum {
++    adAccessGrant = 1,adAccessSet = 2,adAccessDeny = 3,adAccessRevoke = 4
++  } ActionEnum;
++
++  typedef enum ColumnAttributesEnum {
++    adColFixed = 1,adColNullable = 2
++  } ColumnAttributesEnum;
++
++  typedef enum SortOrderEnum {
++    adSortAscending = 1,adSortDescending = 2
++  } SortOrderEnum;
++
++  typedef enum RightsEnum {
++    adRightNone = 0L,adRightDrop = 0x100L,adRightExclusive = 0x200L,adRightReadDesign = 0x400L,adRightWriteDesign = 0x800L,
++    adRightWithGrant = 0x1000L,adRightReference = 0x2000L,adRightCreate = 0x4000L,adRightInsert = 0x8000L,adRightDelete = 0x10000L,
++    adRightReadPermissions = 0x20000L,adRightWritePermissions = 0x40000L,adRightWriteOwner = 0x80000L,adRightMaximumAllowed = 0x2000000L,
++    adRightFull = 0x10000000L,adRightExecute = 0x20000000L,adRightUpdate = 0x40000000L,adRightRead = 0x80000000L
++  } RightsEnum;
++
++#ifdef _ADOINT_H_
++  typedef class dummy dummy;
++#else
++  typedef enum DataTypeEnum {
++    adEmpty = 0,adTinyInt = 16,adSmallInt = 2,adInteger = 3,adBigInt = 20,adUnsignedTinyInt = 17,adUnsignedSmallInt = 18,adUnsignedInt = 19,
++    adUnsignedBigInt = 21,adSingle = 4,adDouble = 5,adCurrency = 6,adDecimal = 14,adNumeric = 131,adBoolean = 11,adError = 10,adUserDefined = 132,
++    adVariant = 12,adIDispatch = 9,adIUnknown = 13,adGUID = 72,adDate = 7,adDBDate = 133,adDBTime = 134,adDBTimeStamp = 135,adBSTR = 8,adChar = 129,
++    adVarChar = 200,adLongVarChar = 201,adWChar = 130,adVarWChar = 202,adLongVarWChar = 203,adBinary = 128,adVarBinary = 204,adLongVarBinary = 205,
++    adChapter = 136,adFileTime = 64,adPropVariant = 138,adVarNumeric = 139
++  } DataTypeEnum;
++#endif
++
++  typedef enum AllowNullsEnum {
++    adIndexNullsAllow = 0,adIndexNullsDisallow = 1,adIndexNullsIgnore = 2,adIndexNullsIgnoreAny = 4
++  } AllowNullsEnum;
++
++  typedef enum ObjectTypeEnum {
++    adPermObjProviderSpecific = -1,adPermObjTable = 1,adPermObjColumn = 2,adPermObjDatabase = 3,adPermObjProcedure = 4,adPermObjView = 5
++  } ObjectTypeEnum;
++
++  typedef enum InheritTypeEnum {
++    adInheritNone = 0,adInheritObjects = 1,adInheritContainers = 2,adInheritBoth = 3,adInheritNoPropogate = 4
++  } InheritTypeEnum;
++
++  extern RPC_IF_HANDLE __MIDL_itf_AdoCat_0000_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_AdoCat_0000_v0_0_s_ifspec;
++#ifndef __ADOX_LIBRARY_DEFINED__
++#define __ADOX_LIBRARY_DEFINED__
++
++  EXTERN_C const IID LIBID_ADOX;
++#ifndef ___ADOCollection_INTERFACE_DEFINED__
++#define ___ADOCollection_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__ADOCollection;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOADOCollection : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Count(long *c) = 0;
++    virtual HRESULT WINAPI _NewEnum(IUnknown **ppvObject) = 0;
++    virtual HRESULT WINAPI Refresh(void) = 0;
++  };
++#else
++  typedef struct _ADOCollectionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOADOCollection *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOADOCollection *This);
++      ULONG (WINAPI *Release)(_ADOADOCollection *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOADOCollection *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOADOCollection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOADOCollection *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOADOCollection *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(_ADOADOCollection *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(_ADOADOCollection *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(_ADOADOCollection *This);
++    END_INTERFACE
++  } _ADOCollectionVtbl;
++  struct _ADOCollection {
++    CONST_VTBL struct _ADOCollectionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _ADOCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define _ADOCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define _ADOCollection_Release(This) (This)->lpVtbl->Release(This)
++#define _ADOCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define _ADOCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _ADOCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _ADOCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Collection_get_Count(This,c) (This)->lpVtbl->get_Count(This,c)
++#define _ADOCollection__NewEnum(This,ppvObject) (This)->lpVtbl->_NewEnum(This,ppvObject)
++#define _ADOCollection_Refresh(This) (This)->lpVtbl->Refresh(This)
++#endif
++#endif
++  HRESULT WINAPI _Collection_get_Count_Proxy(_ADOADOCollection *This,long *c);
++  void __RPC_STUB _Collection_get_Count_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _ADOCollection__NewEnum_Proxy(_ADOADOCollection *This,IUnknown **ppvObject);
++  void __RPC_STUB _ADOCollection__NewEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _ADOCollection_Refresh_Proxy(_ADOADOCollection *This);
++  void __RPC_STUB _ADOCollection_Refresh_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___ADODynaCollection_INTERFACE_DEFINED__
++#define ___ADODynaCollection_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__ADODynaCollection;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADODynaADOCollection : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI Append(IDispatch *Object) = 0;
++    virtual HRESULT WINAPI Delete(VARIANT Item) = 0;
++  };
++#else
++  typedef struct _ADODynaCollectionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADODynaADOCollection *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADODynaADOCollection *This);
++      ULONG (WINAPI *Release)(_ADODynaADOCollection *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADODynaADOCollection *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADODynaADOCollection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADODynaADOCollection *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADODynaADOCollection *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(_ADODynaADOCollection *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(_ADODynaADOCollection *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(_ADODynaADOCollection *This);
++      HRESULT (WINAPI *Append)(_ADODynaADOCollection *This,IDispatch *Object);
++      HRESULT (WINAPI *Delete)(_ADODynaADOCollection *This,VARIANT Item);
++    END_INTERFACE
++  } _ADODynaCollectionVtbl;
++  struct _ADODynaCollection {
++    CONST_VTBL struct _ADODynaCollectionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _ADODynaCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define _ADODynaCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define _ADODynaCollection_Release(This) (This)->lpVtbl->Release(This)
++#define _ADODynaCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define _ADODynaCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _ADODynaCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _ADODynaCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _DynaCollection_get_Count(This,c) (This)->lpVtbl->get_Count(This,c)
++#define _ADODynaCollection__NewEnum(This,ppvObject) (This)->lpVtbl->_NewEnum(This,ppvObject)
++#define _ADODynaCollection_Refresh(This) (This)->lpVtbl->Refresh(This)
++#define _ADODynaCollection_Append(This,Object) (This)->lpVtbl->Append(This,Object)
++#define _ADODynaCollection_Delete(This,Item) (This)->lpVtbl->Delete(This,Item)
++#endif
++#endif
++  HRESULT WINAPI _ADODynaCollection_Append_Proxy(_ADODynaADOCollection *This,IDispatch *Object);
++  void __RPC_STUB _ADODynaCollection_Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _ADODynaCollection_Delete_Proxy(_ADODynaADOCollection *This,VARIANT Item);
++  void __RPC_STUB _ADODynaCollection_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___Catalog_INTERFACE_DEFINED__
++#define ___Catalog_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Catalog;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOCatalog : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Tables(ADOTables **ppvObject) = 0;
++    virtual HRESULT WINAPI get_ActiveConnection(VARIANT *pVal) = 0;
++    virtual HRESULT WINAPI put_ActiveConnection(VARIANT newVal) = 0;
++    virtual HRESULT WINAPI putref_ActiveConnection(IDispatch *pCon) = 0;
++    virtual HRESULT WINAPI get_Procedures(ADOProcedures **ppvObject) = 0;
++    virtual HRESULT WINAPI get_Views(ADOViews **ppvObject) = 0;
++    virtual HRESULT WINAPI get_Groups(ADOGroups **ppvObject) = 0;
++    virtual HRESULT WINAPI get_Users(ADOUsers **ppvObject) = 0;
++    virtual HRESULT WINAPI Create(BSTR ConnectString,VARIANT *Connection) = 0;
++    virtual HRESULT WINAPI GetObjectOwner(BSTR ObjectName,ObjectTypeEnum ObjectType,VARIANT ObjectTypeId,BSTR *OwnerName) = 0;
++    virtual HRESULT WINAPI SetObjectOwner(BSTR ObjectName,ObjectTypeEnum ObjectType,BSTR UserName,VARIANT ObjectTypeId) = 0;
++  };
++#else
++  typedef struct _CatalogVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOCatalog *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOCatalog *This);
++      ULONG (WINAPI *Release)(_ADOCatalog *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOCatalog *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOCatalog *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOCatalog *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOCatalog *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Tables)(_ADOCatalog *This,ADOTables **ppvObject);
++      HRESULT (WINAPI *get_ActiveConnection)(_ADOCatalog *This,VARIANT *pVal);
++      HRESULT (WINAPI *put_ActiveConnection)(_ADOCatalog *This,VARIANT newVal);
++      HRESULT (WINAPI *putref_ActiveConnection)(_ADOCatalog *This,IDispatch *pCon);
++      HRESULT (WINAPI *get_Procedures)(_ADOCatalog *This,ADOProcedures **ppvObject);
++      HRESULT (WINAPI *get_Views)(_ADOCatalog *This,ADOViews **ppvObject);
++      HRESULT (WINAPI *get_Groups)(_ADOCatalog *This,ADOGroups **ppvObject);
++      HRESULT (WINAPI *get_Users)(_ADOCatalog *This,ADOUsers **ppvObject);
++      HRESULT (WINAPI *Create)(_ADOCatalog *This,BSTR ConnectString,VARIANT *Connection);
++
++      HRESULT (WINAPI *GetObjectOwner)(_ADOCatalog *This,BSTR ObjectName,ObjectTypeEnum ObjectType,VARIANT ObjectTypeId,BSTR *OwnerName);
++      HRESULT (WINAPI *SetObjectOwner)(_ADOCatalog *This,BSTR ObjectName,ObjectTypeEnum ObjectType,BSTR UserName,VARIANT ObjectTypeId);
++    END_INTERFACE
++  } _CatalogVtbl;
++  struct _Catalog {
++    CONST_VTBL struct _CatalogVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Catalog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define _Catalog_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define _Catalog_Release(This) (This)->lpVtbl->Release(This)
++#define _Catalog_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define _Catalog_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Catalog_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Catalog_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Catalog_get_Tables(This,ppvObject) (This)->lpVtbl->get_Tables(This,ppvObject)
++#define _Catalog_get_ActiveConnection(This,pVal) (This)->lpVtbl->get_ActiveConnection(This,pVal)
++#define _Catalog_put_ActiveConnection(This,newVal) (This)->lpVtbl->put_ActiveConnection(This,newVal)
++#define _Catalog_putref_ActiveConnection(This,pCon) (This)->lpVtbl->putref_ActiveConnection(This,pCon)
++#define _Catalog_get_Procedures(This,ppvObject) (This)->lpVtbl->get_Procedures(This,ppvObject)
++#define _Catalog_get_Views(This,ppvObject) (This)->lpVtbl->get_Views(This,ppvObject)
++#define _Catalog_get_Groups(This,ppvObject) (This)->lpVtbl->get_Groups(This,ppvObject)
++#define _Catalog_get_Users(This,ppvObject) (This)->lpVtbl->get_Users(This,ppvObject)
++#define _Catalog_Create(This,ConnectString,Connection) (This)->lpVtbl->Create(This,ConnectString,Connection)
++#define _Catalog_GetObjectOwner(This,ObjectName,ObjectType,ObjectTypeId,OwnerName) (This)->lpVtbl->GetObjectOwner(This,ObjectName,ObjectType,ObjectTypeId,OwnerName)
++#define _Catalog_SetObjectOwner(This,ObjectName,ObjectType,UserName,ObjectTypeId) (This)->lpVtbl->SetObjectOwner(This,ObjectName,ObjectType,UserName,ObjectTypeId)
++#endif
++#endif
++  HRESULT WINAPI _Catalog_get_Tables_Proxy(_ADOCatalog *This,ADOTables **ppvObject);
++  void __RPC_STUB _Catalog_get_Tables_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Catalog_get_ActiveConnection_Proxy(_ADOCatalog *This,VARIANT *pVal);
++  void __RPC_STUB _Catalog_get_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Catalog_put_ActiveConnection_Proxy(_ADOCatalog *This,VARIANT newVal);
++  void __RPC_STUB _Catalog_put_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Catalog_putref_ActiveConnection_Proxy(_ADOCatalog *This,IDispatch *pCon);
++  void __RPC_STUB _Catalog_putref_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Catalog_get_Procedures_Proxy(_ADOCatalog *This,ADOProcedures **ppvObject);
++  void __RPC_STUB _Catalog_get_Procedures_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Catalog_get_Views_Proxy(_ADOCatalog *This,ADOViews **ppvObject);
++  void __RPC_STUB _Catalog_get_Views_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Catalog_get_Groups_Proxy(_ADOCatalog *This,ADOGroups **ppvObject);
++  void __RPC_STUB _Catalog_get_Groups_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Catalog_get_Users_Proxy(_ADOCatalog *This,ADOUsers **ppvObject);
++  void __RPC_STUB _Catalog_get_Users_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Catalog_Create_Proxy(_ADOCatalog *This,BSTR ConnectString,VARIANT *Connection);
++  void __RPC_STUB _Catalog_Create_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Catalog_GetObjectOwner_Proxy(_ADOCatalog *This,BSTR ObjectName,ObjectTypeEnum ObjectType,VARIANT ObjectTypeId,BSTR *OwnerName);
++  void __RPC_STUB _Catalog_GetObjectOwner_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Catalog_SetObjectOwner_Proxy(_ADOCatalog *This,BSTR ObjectName,ObjectTypeEnum ObjectType,BSTR UserName,VARIANT ObjectTypeId);
++  void __RPC_STUB _Catalog_SetObjectOwner_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___Table_INTERFACE_DEFINED__
++#define ___Table_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Table;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOTable : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Columns(ADOColumns **ppvObject) = 0;
++    virtual HRESULT WINAPI get_Name(BSTR *pVal) = 0;
++    virtual HRESULT WINAPI put_Name(BSTR newVal) = 0;
++    virtual HRESULT WINAPI get_Type(BSTR *pVal) = 0;
++    virtual HRESULT WINAPI get_Indexes(ADOIndexes **ppvObject) = 0;
++    virtual HRESULT WINAPI get_Keys(ADOKeys **ppvObject) = 0;
++    virtual HRESULT WINAPI get_Properties(ADOProperties **ppvObject) = 0;
++    virtual HRESULT WINAPI get_DateCreated(VARIANT *pVal) = 0;
++    virtual HRESULT WINAPI get_DateModified(VARIANT *pVal) = 0;
++    virtual HRESULT WINAPI get_ParentCatalog(_ADOCatalog **ppvObject) = 0;
++    virtual HRESULT WINAPI put_ParentCatalog(_ADOCatalog *ppvObject) = 0;
++    virtual HRESULT WINAPI putref_ParentCatalog(_ADOCatalog *ppvObject) = 0;
++  };
++#else
++  typedef struct _TableVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOTable *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOTable *This);
++      ULONG (WINAPI *Release)(_ADOTable *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOTable *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOTable *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOTable *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOTable *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Columns)(_ADOTable *This,ADOColumns **ppvObject);
++      HRESULT (WINAPI *get_Name)(_ADOTable *This,BSTR *pVal);
++      HRESULT (WINAPI *put_Name)(_ADOTable *This,BSTR newVal);
++      HRESULT (WINAPI *get_Type)(_ADOTable *This,BSTR *pVal);
++      HRESULT (WINAPI *get_Indexes)(_ADOTable *This,ADOIndexes **ppvObject);
++      HRESULT (WINAPI *get_Keys)(_ADOTable *This,ADOKeys **ppvObject);
++      HRESULT (WINAPI *get_Properties)(_ADOTable *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_DateCreated)(_ADOTable *This,VARIANT *pVal);
++      HRESULT (WINAPI *get_DateModified)(_ADOTable *This,VARIANT *pVal);
++      HRESULT (WINAPI *get_ParentCatalog)(_ADOTable *This,_ADOCatalog **ppvObject);
++      HRESULT (WINAPI *put_ParentCatalog)(_ADOTable *This,_ADOCatalog *ppvObject);
++      HRESULT (WINAPI *putref_ParentADOCatalog)(_ADOTable *This,_ADOCatalog *ppvObject);
++    END_INTERFACE
++  } _TableVtbl;
++  struct _Table {
++    CONST_VTBL struct _TableVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Table_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define _Table_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define _Table_Release(This) (This)->lpVtbl->Release(This)
++#define _Table_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define _Table_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Table_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Table_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Table_get_Columns(This,ppvObject) (This)->lpVtbl->get_Columns(This,ppvObject)
++#define _Table_get_Name(This,pVal) (This)->lpVtbl->get_Name(This,pVal)
++#define _Table_put_Name(This,newVal) (This)->lpVtbl->put_Name(This,newVal)
++#define _Table_get_Type(This,pVal) (This)->lpVtbl->get_Type(This,pVal)
++#define _Table_get_Indexes(This,ppvObject) (This)->lpVtbl->get_Indexes(This,ppvObject)
++#define _Table_get_Keys(This,ppvObject) (This)->lpVtbl->get_Keys(This,ppvObject)
++#define _Table_get_Properties(This,ppvObject) (This)->lpVtbl->get_Properties(This,ppvObject)
++#define _Table_get_DateCreated(This,pVal) (This)->lpVtbl->get_DateCreated(This,pVal)
++#define _Table_get_DateModified(This,pVal) (This)->lpVtbl->get_DateModified(This,pVal)
++#define _Table_get_ParentCatalog(This,ppvObject) (This)->lpVtbl->get_ParentCatalog(This,ppvObject)
++#define _Table_put_ParentCatalog(This,ppvObject) (This)->lpVtbl->put_ParentCatalog(This,ppvObject)
++#define _Table_putref_ParentCatalog(This,ppvObject) (This)->lpVtbl->putref_ParentCatalog(This,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI _Table_get_Columns_Proxy(_ADOTable *This,ADOColumns **ppvObject);
++  void __RPC_STUB _Table_get_Columns_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Table_get_Name_Proxy(_ADOTable *This,BSTR *pVal);
++  void __RPC_STUB _Table_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Table_put_Name_Proxy(_ADOTable *This,BSTR newVal);
++  void __RPC_STUB _Table_put_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Table_get_Type_Proxy(_ADOTable *This,BSTR *pVal);
++  void __RPC_STUB _Table_get_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Table_get_Indexes_Proxy(_ADOTable *This,ADOIndexes **ppvObject);
++  void __RPC_STUB _Table_get_Indexes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Table_get_Keys_Proxy(_ADOTable *This,ADOKeys **ppvObject);
++  void __RPC_STUB _Table_get_Keys_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Table_get_Properties_Proxy(_ADOTable *This,ADOProperties **ppvObject);
++  void __RPC_STUB _Table_get_Properties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Table_get_DateCreated_Proxy(_ADOTable *This,VARIANT *pVal);
++  void __RPC_STUB _Table_get_DateCreated_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Table_get_DateModified_Proxy(_ADOTable *This,VARIANT *pVal);
++  void __RPC_STUB _Table_get_DateModified_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Table_get_ParentCatalog_Proxy(_ADOTable *This,_ADOCatalog **ppvObject);
++  void __RPC_STUB _Table_get_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Table_put_ParentCatalog_Proxy(_ADOTable *This,_ADOCatalog *ppvObject);
++  void __RPC_STUB _Table_put_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Table_putref_ParentCatalog_Proxy(_ADOTable *This,_ADOCatalog *ppvObject);
++  void __RPC_STUB _Table_putref_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___Group25_INTERFACE_DEFINED__
++#define ___Group25_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Group25;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _Group25 : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Name(BSTR *pVal) = 0;
++    virtual HRESULT WINAPI put_Name(BSTR newVal) = 0;
++    virtual HRESULT WINAPI GetPermissions(VARIANT Name,ObjectTypeEnum ObjectType,VARIANT ObjectTypeId,RightsEnum *Rights) = 0;
++    virtual HRESULT WINAPI SetPermissions(VARIANT Name,ObjectTypeEnum ObjectType,ActionEnum Action,RightsEnum Rights,InheritTypeEnum Inherit,VARIANT ObjectTypeId) = 0;
++    virtual HRESULT WINAPI get_Users(ADOUsers **ppvObject) = 0;
++  };
++#else
++  typedef struct _Group25Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_Group25 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_Group25 *This);
++      ULONG (WINAPI *Release)(_Group25 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_Group25 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_Group25 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_Group25 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_Group25 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Name)(_Group25 *This,BSTR *pVal);
++      HRESULT (WINAPI *put_Name)(_Group25 *This,BSTR newVal);
++      HRESULT (WINAPI *GetPermissions)(_Group25 *This,VARIANT Name,ObjectTypeEnum ObjectType,VARIANT ObjectTypeId,RightsEnum *Rights);
++      HRESULT (WINAPI *SetPermissions)(_Group25 *This,VARIANT Name,ObjectTypeEnum ObjectType,ActionEnum Action,RightsEnum Rights,InheritTypeEnum Inherit,VARIANT ObjectTypeId);
++      HRESULT (WINAPI *get_Users)(_Group25 *This,ADOUsers **ppvObject);
++    END_INTERFACE
++  } _Group25Vtbl;
++  struct _Group25 {
++    CONST_VTBL struct _Group25Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Group25_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define _Group25_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define _Group25_Release(This) (This)->lpVtbl->Release(This)
++#define _Group25_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define _Group25_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Group25_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Group25_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Group25_get_Name(This,pVal) (This)->lpVtbl->get_Name(This,pVal)
++#define _Group25_put_Name(This,newVal) (This)->lpVtbl->put_Name(This,newVal)
++#define _Group25_GetPermissions(This,Name,ObjectType,ObjectTypeId,Rights) (This)->lpVtbl->GetPermissions(This,Name,ObjectType,ObjectTypeId,Rights)
++#define _Group25_SetPermissions(This,Name,ObjectType,Action,Rights,Inherit,ObjectTypeId) (This)->lpVtbl->SetPermissions(This,Name,ObjectType,Action,Rights,Inherit,ObjectTypeId)
++#define _Group25_get_Users(This,ppvObject) (This)->lpVtbl->get_Users(This,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI _Group25_get_Name_Proxy(_Group25 *This,BSTR *pVal);
++  void __RPC_STUB _Group25_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Group25_put_Name_Proxy(_Group25 *This,BSTR newVal);
++  void __RPC_STUB _Group25_put_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Group25_GetPermissions_Proxy(_Group25 *This,VARIANT Name,ObjectTypeEnum ObjectType,VARIANT ObjectTypeId,RightsEnum *Rights);
++  void __RPC_STUB _Group25_GetPermissions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Group25_SetPermissions_Proxy(_Group25 *This,VARIANT Name,ObjectTypeEnum ObjectType,ActionEnum Action,RightsEnum Rights,InheritTypeEnum Inherit,VARIANT ObjectTypeId);
++  void __RPC_STUB _Group25_SetPermissions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Group25_get_Users_Proxy(_Group25 *This,ADOUsers **ppvObject);
++  void __RPC_STUB _Group25_get_Users_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___Group_INTERFACE_DEFINED__
++#define ___Group_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Group;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOGroup : public _Group25 {
++  public:
++    virtual HRESULT WINAPI get_Properties(ADOProperties **ppvObject) = 0;
++    virtual HRESULT WINAPI get_ParentCatalog(_ADOCatalog **ppvObject) = 0;
++    virtual HRESULT WINAPI put_ParentCatalog(_ADOCatalog *ppvObject) = 0;
++    virtual HRESULT WINAPI putref_ParentCatalog(_ADOCatalog *ppvObject) = 0;
++  };
++#else
++  typedef struct _GroupVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOGroup *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOGroup *This);
++      ULONG (WINAPI *Release)(_ADOGroup *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOGroup *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOGroup *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOGroup *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOGroup *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Name)(_ADOGroup *This,BSTR *pVal);
++      HRESULT (WINAPI *put_Name)(_ADOGroup *This,BSTR newVal);
++      HRESULT (WINAPI *GetPermissions)(_ADOGroup *This,VARIANT Name,ObjectTypeEnum ObjectType,VARIANT ObjectTypeId,RightsEnum *Rights);
++      HRESULT (WINAPI *SetPermissions)(_ADOGroup *This,VARIANT Name,ObjectTypeEnum ObjectType,ActionEnum Action,RightsEnum Rights,InheritTypeEnum Inherit,VARIANT ObjectTypeId);
++      HRESULT (WINAPI *get_Users)(_ADOGroup *This,ADOUsers **ppvObject);
++      HRESULT (WINAPI *get_Properties)(_ADOGroup *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ParentCatalog)(_ADOGroup *This,_ADOCatalog **ppvObject);
++      HRESULT (WINAPI *put_ParentCatalog)(_ADOGroup *This,_ADOCatalog *ppvObject);
++      HRESULT (WINAPI *putref_ParentADOCatalog)(_ADOGroup *This,_ADOCatalog *ppvObject);
++    END_INTERFACE
++  } _GroupVtbl;
++  struct _Group {
++    CONST_VTBL struct _GroupVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Group_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define _Group_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define _Group_Release(This) (This)->lpVtbl->Release(This)
++#define _Group_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define _Group_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Group_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Group_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Group_get_Name(This,pVal) (This)->lpVtbl->get_Name(This,pVal)
++#define _Group_put_Name(This,newVal) (This)->lpVtbl->put_Name(This,newVal)
++#define _Group_GetPermissions(This,Name,ObjectType,ObjectTypeId,Rights) (This)->lpVtbl->GetPermissions(This,Name,ObjectType,ObjectTypeId,Rights)
++#define _Group_SetPermissions(This,Name,ObjectType,Action,Rights,Inherit,ObjectTypeId) (This)->lpVtbl->SetPermissions(This,Name,ObjectType,Action,Rights,Inherit,ObjectTypeId)
++#define _Group_get_Users(This,ppvObject) (This)->lpVtbl->get_Users(This,ppvObject)
++#define _Group_get_Properties(This,ppvObject) (This)->lpVtbl->get_Properties(This,ppvObject)
++#define _Group_get_ParentCatalog(This,ppvObject) (This)->lpVtbl->get_ParentCatalog(This,ppvObject)
++#define _Group_put_ParentCatalog(This,ppvObject) (This)->lpVtbl->put_ParentCatalog(This,ppvObject)
++#define _Group_putref_ParentCatalog(This,ppvObject) (This)->lpVtbl->putref_ParentCatalog(This,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI _Group_get_Properties_Proxy(_ADOGroup *This,ADOProperties **ppvObject);
++  void __RPC_STUB _Group_get_Properties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Group_get_ParentCatalog_Proxy(_ADOGroup *This,_ADOCatalog **ppvObject);
++  void __RPC_STUB _Group_get_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Group_put_ParentCatalog_Proxy(_ADOGroup *This,_ADOCatalog *ppvObject);
++  void __RPC_STUB _Group_put_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Group_putref_ParentCatalog_Proxy(_ADOGroup *This,_ADOCatalog *ppvObject);
++  void __RPC_STUB _Group_putref_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___User25_INTERFACE_DEFINED__
++#define ___User25_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__User25;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _User25 : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Name(BSTR *pVal) = 0;
++    virtual HRESULT WINAPI put_Name(BSTR newVal) = 0;
++    virtual HRESULT WINAPI GetPermissions(VARIANT Name,ObjectTypeEnum ObjectType,VARIANT ObjectTypeId,RightsEnum *Rights) = 0;
++    virtual HRESULT WINAPI SetPermissions(VARIANT Name,ObjectTypeEnum ObjectType,ActionEnum Action,RightsEnum Rights,InheritTypeEnum Inherit,VARIANT ObjectTypeId) = 0;
++    virtual HRESULT WINAPI ChangePassword(BSTR OldPassword,BSTR NewPassword) = 0;
++    virtual HRESULT WINAPI get_Groups(ADOGroups **ppvObject) = 0;
++  };
++#else
++  typedef struct _User25Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_User25 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_User25 *This);
++      ULONG (WINAPI *Release)(_User25 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_User25 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_User25 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_User25 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_User25 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Name)(_User25 *This,BSTR *pVal);
++      HRESULT (WINAPI *put_Name)(_User25 *This,BSTR newVal);
++      HRESULT (WINAPI *GetPermissions)(_User25 *This,VARIANT Name,ObjectTypeEnum ObjectType,VARIANT ObjectTypeId,RightsEnum *Rights);
++      HRESULT (WINAPI *SetPermissions)(_User25 *This,VARIANT Name,ObjectTypeEnum ObjectType,ActionEnum Action,RightsEnum Rights,InheritTypeEnum Inherit,VARIANT ObjectTypeId);
++      HRESULT (WINAPI *ChangePassword)(_User25 *This,BSTR OldPassword,BSTR NewPassword);
++      HRESULT (WINAPI *get_Groups)(_User25 *This,ADOGroups **ppvObject);
++    END_INTERFACE
++  } _User25Vtbl;
++  struct _User25 {
++    CONST_VTBL struct _User25Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _User25_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define _User25_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define _User25_Release(This) (This)->lpVtbl->Release(This)
++#define _User25_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define _User25_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _User25_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _User25_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _User25_get_Name(This,pVal) (This)->lpVtbl->get_Name(This,pVal)
++#define _User25_put_Name(This,newVal) (This)->lpVtbl->put_Name(This,newVal)
++#define _User25_GetPermissions(This,Name,ObjectType,ObjectTypeId,Rights) (This)->lpVtbl->GetPermissions(This,Name,ObjectType,ObjectTypeId,Rights)
++#define _User25_SetPermissions(This,Name,ObjectType,Action,Rights,Inherit,ObjectTypeId) (This)->lpVtbl->SetPermissions(This,Name,ObjectType,Action,Rights,Inherit,ObjectTypeId)
++#define _User25_ChangePassword(This,OldPassword,NewPassword) (This)->lpVtbl->ChangePassword(This,OldPassword,NewPassword)
++#define _User25_get_Groups(This,ppvObject) (This)->lpVtbl->get_Groups(This,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI _User25_get_Name_Proxy(_User25 *This,BSTR *pVal);
++  void __RPC_STUB _User25_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _User25_put_Name_Proxy(_User25 *This,BSTR newVal);
++  void __RPC_STUB _User25_put_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _User25_GetPermissions_Proxy(_User25 *This,VARIANT Name,ObjectTypeEnum ObjectType,VARIANT ObjectTypeId,RightsEnum *Rights);
++  void __RPC_STUB _User25_GetPermissions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _User25_SetPermissions_Proxy(_User25 *This,VARIANT Name,ObjectTypeEnum ObjectType,ActionEnum Action,RightsEnum Rights,InheritTypeEnum Inherit,VARIANT ObjectTypeId);
++  void __RPC_STUB _User25_SetPermissions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _User25_ChangePassword_Proxy(_User25 *This,BSTR OldPassword,BSTR NewPassword);
++  void __RPC_STUB _User25_ChangePassword_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _User25_get_Groups_Proxy(_User25 *This,ADOGroups **ppvObject);
++  void __RPC_STUB _User25_get_Groups_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___User_INTERFACE_DEFINED__
++#define ___User_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__User;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOUser : public _User25 {
++  public:
++    virtual HRESULT WINAPI get_Properties(ADOProperties **ppvObject) = 0;
++    virtual HRESULT WINAPI get_ParentCatalog(_ADOCatalog **ppvObject) = 0;
++    virtual HRESULT WINAPI put_ParentCatalog(_ADOCatalog *ppvObject) = 0;
++    virtual HRESULT WINAPI putref_ParentCatalog(_ADOCatalog *ppvObject) = 0;
++  };
++#else
++  typedef struct _UserVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOUser *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOUser *This);
++      ULONG (WINAPI *Release)(_ADOUser *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOUser *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOUser *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOUser *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOUser *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Name)(_ADOUser *This,BSTR *pVal);
++      HRESULT (WINAPI *put_Name)(_ADOUser *This,BSTR newVal);
++      HRESULT (WINAPI *GetPermissions)(_ADOUser *This,VARIANT Name,ObjectTypeEnum ObjectType,VARIANT ObjectTypeId,RightsEnum *Rights);
++      HRESULT (WINAPI *SetPermissions)(_ADOUser *This,VARIANT Name,ObjectTypeEnum ObjectType,ActionEnum Action,RightsEnum Rights,InheritTypeEnum Inherit,VARIANT ObjectTypeId);
++      HRESULT (WINAPI *ChangePassword)(_ADOUser *This,BSTR OldPassword,BSTR NewPassword);
++      HRESULT (WINAPI *get_Groups)(_ADOUser *This,ADOGroups **ppvObject);
++      HRESULT (WINAPI *get_Properties)(_ADOUser *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ParentCatalog)(_ADOUser *This,_ADOCatalog **ppvObject);
++      HRESULT (WINAPI *put_ParentCatalog)(_ADOUser *This,_ADOCatalog *ppvObject);
++      HRESULT (WINAPI *putref_ParentADOCatalog)(_ADOUser *This,_ADOCatalog *ppvObject);
++    END_INTERFACE
++  } _UserVtbl;
++  struct _User {
++    CONST_VTBL struct _UserVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _User_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define _User_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define _User_Release(This) (This)->lpVtbl->Release(This)
++#define _User_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define _User_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _User_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _User_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _User_get_Name(This,pVal) (This)->lpVtbl->get_Name(This,pVal)
++#define _User_put_Name(This,newVal) (This)->lpVtbl->put_Name(This,newVal)
++#define _User_GetPermissions(This,Name,ObjectType,ObjectTypeId,Rights) (This)->lpVtbl->GetPermissions(This,Name,ObjectType,ObjectTypeId,Rights)
++#define _User_SetPermissions(This,Name,ObjectType,Action,Rights,Inherit,ObjectTypeId) (This)->lpVtbl->SetPermissions(This,Name,ObjectType,Action,Rights,Inherit,ObjectTypeId)
++#define _User_ChangePassword(This,OldPassword,NewPassword) (This)->lpVtbl->ChangePassword(This,OldPassword,NewPassword)
++#define _User_get_Groups(This,ppvObject) (This)->lpVtbl->get_Groups(This,ppvObject)
++#define _User_get_Properties(This,ppvObject) (This)->lpVtbl->get_Properties(This,ppvObject)
++#define _User_get_ParentCatalog(This,ppvObject) (This)->lpVtbl->get_ParentCatalog(This,ppvObject)
++#define _User_put_ParentCatalog(This,ppvObject) (This)->lpVtbl->put_ParentCatalog(This,ppvObject)
++#define _User_putref_ParentCatalog(This,ppvObject) (This)->lpVtbl->putref_ParentCatalog(This,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI _User_get_Properties_Proxy(_ADOUser *This,ADOProperties **ppvObject);
++  void __RPC_STUB _User_get_Properties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _User_get_ParentCatalog_Proxy(_ADOUser *This,_ADOCatalog **ppvObject);
++  void __RPC_STUB _User_get_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _User_put_ParentCatalog_Proxy(_ADOUser *This,_ADOCatalog *ppvObject);
++  void __RPC_STUB _User_put_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _User_putref_ParentCatalog_Proxy(_ADOUser *This,_ADOCatalog *ppvObject);
++  void __RPC_STUB _User_putref_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___Column_INTERFACE_DEFINED__
++#define ___Column_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Column;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOColumn : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Name(BSTR *pVal) = 0;
++    virtual HRESULT WINAPI put_Name(BSTR newVal) = 0;
++    virtual HRESULT WINAPI get_Attributes(ColumnAttributesEnum *pVal) = 0;
++    virtual HRESULT WINAPI put_Attributes(ColumnAttributesEnum newVal) = 0;
++    virtual HRESULT WINAPI get_DefinedSize(long *pVal) = 0;
++    virtual HRESULT WINAPI put_DefinedSize(long DefinedSize) = 0;
++    virtual HRESULT WINAPI get_NumericScale(BYTE *pVal) = 0;
++    virtual HRESULT WINAPI put_NumericScale(BYTE newVal) = 0;
++    virtual HRESULT WINAPI get_Precision(long *pVal) = 0;
++    virtual HRESULT WINAPI put_Precision(long newVal) = 0;
++    virtual HRESULT WINAPI get_RelatedColumn(BSTR *pVal) = 0;
++    virtual HRESULT WINAPI put_RelatedColumn(BSTR newVal) = 0;
++    virtual HRESULT WINAPI get_SortOrder(SortOrderEnum *pVal) = 0;
++    virtual HRESULT WINAPI put_SortOrder(SortOrderEnum newVal) = 0;
++    virtual HRESULT WINAPI get_Type(DataTypeEnum *pVal) = 0;
++    virtual HRESULT WINAPI put_Type(DataTypeEnum newVal) = 0;
++    virtual HRESULT WINAPI get_Properties(ADOProperties **ppvObject) = 0;
++    virtual HRESULT WINAPI get_ParentCatalog(_ADOCatalog **ppvObject) = 0;
++    virtual HRESULT WINAPI put_ParentCatalog(_ADOCatalog *ppvObject) = 0;
++    virtual HRESULT WINAPI putref_ParentCatalog(_ADOCatalog *ppvObject) = 0;
++  };
++#else
++  typedef struct _ColumnVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOColumn *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOColumn *This);
++      ULONG (WINAPI *Release)(_ADOColumn *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOColumn *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOColumn *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOColumn *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOColumn *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Name)(_ADOColumn *This,BSTR *pVal);
++      HRESULT (WINAPI *put_Name)(_ADOColumn *This,BSTR newVal);
++      HRESULT (WINAPI *get_Attributes)(_ADOColumn *This,ColumnAttributesEnum *pVal);
++      HRESULT (WINAPI *put_Attributes)(_ADOColumn *This,ColumnAttributesEnum newVal);
++      HRESULT (WINAPI *get_DefinedSize)(_ADOColumn *This,long *pVal);
++      HRESULT (WINAPI *put_DefinedSize)(_ADOColumn *This,long DefinedSize);
++      HRESULT (WINAPI *get_NumericScale)(_ADOColumn *This,BYTE *pVal);
++      HRESULT (WINAPI *put_NumericScale)(_ADOColumn *This,BYTE newVal);
++      HRESULT (WINAPI *get_Precision)(_ADOColumn *This,long *pVal);
++      HRESULT (WINAPI *put_Precision)(_ADOColumn *This,long newVal);
++      HRESULT (WINAPI *get_RelatedColumn)(_ADOColumn *This,BSTR *pVal);
++      HRESULT (WINAPI *put_RelatedColumn)(_ADOColumn *This,BSTR newVal);
++      HRESULT (WINAPI *get_SortOrder)(_ADOColumn *This,SortOrderEnum *pVal);
++      HRESULT (WINAPI *put_SortOrder)(_ADOColumn *This,SortOrderEnum newVal);
++      HRESULT (WINAPI *get_Type)(_ADOColumn *This,DataTypeEnum *pVal);
++      HRESULT (WINAPI *put_Type)(_ADOColumn *This,DataTypeEnum newVal);
++      HRESULT (WINAPI *get_Properties)(_ADOColumn *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ParentCatalog)(_ADOColumn *This,_ADOCatalog **ppvObject);
++      HRESULT (WINAPI *put_ParentCatalog)(_ADOColumn *This,_ADOCatalog *ppvObject);
++      HRESULT (WINAPI *putref_ParentADOCatalog)(_ADOColumn *This,_ADOCatalog *ppvObject);
++    END_INTERFACE
++  } _ColumnVtbl;
++  struct _Column {
++    CONST_VTBL struct _ColumnVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Column_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define _Column_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define _Column_Release(This) (This)->lpVtbl->Release(This)
++#define _Column_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define _Column_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Column_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Column_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Column_get_Name(This,pVal) (This)->lpVtbl->get_Name(This,pVal)
++#define _Column_put_Name(This,newVal) (This)->lpVtbl->put_Name(This,newVal)
++#define _Column_get_Attributes(This,pVal) (This)->lpVtbl->get_Attributes(This,pVal)
++#define _Column_put_Attributes(This,newVal) (This)->lpVtbl->put_Attributes(This,newVal)
++#define _Column_get_DefinedSize(This,pVal) (This)->lpVtbl->get_DefinedSize(This,pVal)
++#define _Column_put_DefinedSize(This,DefinedSize) (This)->lpVtbl->put_DefinedSize(This,DefinedSize)
++#define _Column_get_NumericScale(This,pVal) (This)->lpVtbl->get_NumericScale(This,pVal)
++#define _Column_put_NumericScale(This,newVal) (This)->lpVtbl->put_NumericScale(This,newVal)
++#define _Column_get_Precision(This,pVal) (This)->lpVtbl->get_Precision(This,pVal)
++#define _Column_put_Precision(This,newVal) (This)->lpVtbl->put_Precision(This,newVal)
++#define _Column_get_RelatedColumn(This,pVal) (This)->lpVtbl->get_RelatedColumn(This,pVal)
++#define _Column_put_RelatedColumn(This,newVal) (This)->lpVtbl->put_RelatedColumn(This,newVal)
++#define _Column_get_SortOrder(This,pVal) (This)->lpVtbl->get_SortOrder(This,pVal)
++#define _Column_put_SortOrder(This,newVal) (This)->lpVtbl->put_SortOrder(This,newVal)
++#define _Column_get_Type(This,pVal) (This)->lpVtbl->get_Type(This,pVal)
++#define _Column_put_Type(This,newVal) (This)->lpVtbl->put_Type(This,newVal)
++#define _Column_get_Properties(This,ppvObject) (This)->lpVtbl->get_Properties(This,ppvObject)
++#define _Column_get_ParentCatalog(This,ppvObject) (This)->lpVtbl->get_ParentCatalog(This,ppvObject)
++#define _Column_put_ParentCatalog(This,ppvObject) (This)->lpVtbl->put_ParentCatalog(This,ppvObject)
++#define _Column_putref_ParentCatalog(This,ppvObject) (This)->lpVtbl->putref_ParentCatalog(This,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI _Column_get_Name_Proxy(_ADOColumn *This,BSTR *pVal);
++  void __RPC_STUB _Column_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_put_Name_Proxy(_ADOColumn *This,BSTR newVal);
++  void __RPC_STUB _Column_put_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_get_Attributes_Proxy(_ADOColumn *This,ColumnAttributesEnum *pVal);
++  void __RPC_STUB _Column_get_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_put_Attributes_Proxy(_ADOColumn *This,ColumnAttributesEnum newVal);
++  void __RPC_STUB _Column_put_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_get_DefinedSize_Proxy(_ADOColumn *This,long *pVal);
++  void __RPC_STUB _Column_get_DefinedSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_put_DefinedSize_Proxy(_ADOColumn *This,long DefinedSize);
++  void __RPC_STUB _Column_put_DefinedSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_get_NumericScale_Proxy(_ADOColumn *This,BYTE *pVal);
++  void __RPC_STUB _Column_get_NumericScale_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_put_NumericScale_Proxy(_ADOColumn *This,BYTE newVal);
++  void __RPC_STUB _Column_put_NumericScale_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_get_Precision_Proxy(_ADOColumn *This,long *pVal);
++  void __RPC_STUB _Column_get_Precision_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_put_Precision_Proxy(_ADOColumn *This,long newVal);
++  void __RPC_STUB _Column_put_Precision_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_get_RelatedColumn_Proxy(_ADOColumn *This,BSTR *pVal);
++  void __RPC_STUB _Column_get_RelatedColumn_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_put_RelatedColumn_Proxy(_ADOColumn *This,BSTR newVal);
++  void __RPC_STUB _Column_put_RelatedColumn_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_get_SortOrder_Proxy(_ADOColumn *This,SortOrderEnum *pVal);
++  void __RPC_STUB _Column_get_SortOrder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_put_SortOrder_Proxy(_ADOColumn *This,SortOrderEnum newVal);
++  void __RPC_STUB _Column_put_SortOrder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_get_Type_Proxy(_ADOColumn *This,DataTypeEnum *pVal);
++  void __RPC_STUB _Column_get_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_put_Type_Proxy(_ADOColumn *This,DataTypeEnum newVal);
++  void __RPC_STUB _Column_put_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_get_Properties_Proxy(_ADOColumn *This,ADOProperties **ppvObject);
++  void __RPC_STUB _Column_get_Properties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_get_ParentCatalog_Proxy(_ADOColumn *This,_ADOCatalog **ppvObject);
++  void __RPC_STUB _Column_get_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_put_ParentCatalog_Proxy(_ADOColumn *This,_ADOCatalog *ppvObject);
++  void __RPC_STUB _Column_put_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Column_putref_ParentCatalog_Proxy(_ADOColumn *This,_ADOCatalog *ppvObject);
++  void __RPC_STUB _Column_putref_ParentCatalog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___Index_INTERFACE_DEFINED__
++#define ___Index_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Index;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOIndex : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Name(BSTR *pVal) = 0;
++    virtual HRESULT WINAPI put_Name(BSTR newVal) = 0;
++    virtual HRESULT WINAPI get_Clustered(VARIANT_BOOL *pVal) = 0;
++    virtual HRESULT WINAPI put_Clustered(VARIANT_BOOL newVal) = 0;
++    virtual HRESULT WINAPI get_IndexNulls(AllowNullsEnum *pVal) = 0;
++    virtual HRESULT WINAPI put_IndexNulls(AllowNullsEnum newVal) = 0;
++    virtual HRESULT WINAPI get_PrimaryKey(VARIANT_BOOL *pVal) = 0;
++    virtual HRESULT WINAPI put_PrimaryKey(VARIANT_BOOL newVal) = 0;
++    virtual HRESULT WINAPI get_Unique(VARIANT_BOOL *pVal) = 0;
++    virtual HRESULT WINAPI put_Unique(VARIANT_BOOL newVal) = 0;
++    virtual HRESULT WINAPI get_Columns(ADOColumns **ppvObject) = 0;
++    virtual HRESULT WINAPI get_Properties(ADOProperties **ppvObject) = 0;
++  };
++#else
++  typedef struct _IndexVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOIndex *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOIndex *This);
++      ULONG (WINAPI *Release)(_ADOIndex *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOIndex *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOIndex *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOIndex *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOIndex *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Name)(_ADOIndex *This,BSTR *pVal);
++      HRESULT (WINAPI *put_Name)(_ADOIndex *This,BSTR newVal);
++      HRESULT (WINAPI *get_Clustered)(_ADOIndex *This,VARIANT_BOOL *pVal);
++      HRESULT (WINAPI *put_Clustered)(_ADOIndex *This,VARIANT_BOOL newVal);
++      HRESULT (WINAPI *get_IndexNulls)(_ADOIndex *This,AllowNullsEnum *pVal);
++      HRESULT (WINAPI *put_IndexNulls)(_ADOIndex *This,AllowNullsEnum newVal);
++      HRESULT (WINAPI *get_PrimaryKey)(_ADOIndex *This,VARIANT_BOOL *pVal);
++      HRESULT (WINAPI *put_PrimaryKey)(_ADOIndex *This,VARIANT_BOOL newVal);
++      HRESULT (WINAPI *get_Unique)(_ADOIndex *This,VARIANT_BOOL *pVal);
++      HRESULT (WINAPI *put_Unique)(_ADOIndex *This,VARIANT_BOOL newVal);
++      HRESULT (WINAPI *get_Columns)(_ADOIndex *This,ADOColumns **ppvObject);
++      HRESULT (WINAPI *get_Properties)(_ADOIndex *This,ADOProperties **ppvObject);
++    END_INTERFACE
++  } _IndexVtbl;
++  struct _Index {
++    CONST_VTBL struct _IndexVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Index_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define _Index_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define _Index_Release(This) (This)->lpVtbl->Release(This)
++#define _Index_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define _Index_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Index_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Index_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Index_get_Name(This,pVal) (This)->lpVtbl->get_Name(This,pVal)
++#define _Index_put_Name(This,newVal) (This)->lpVtbl->put_Name(This,newVal)
++#define _Index_get_Clustered(This,pVal) (This)->lpVtbl->get_Clustered(This,pVal)
++#define _Index_put_Clustered(This,newVal) (This)->lpVtbl->put_Clustered(This,newVal)
++#define _Index_get_IndexNulls(This,pVal) (This)->lpVtbl->get_IndexNulls(This,pVal)
++#define _Index_put_IndexNulls(This,newVal) (This)->lpVtbl->put_IndexNulls(This,newVal)
++#define _Index_get_PrimaryKey(This,pVal) (This)->lpVtbl->get_PrimaryKey(This,pVal)
++#define _Index_put_PrimaryKey(This,newVal) (This)->lpVtbl->put_PrimaryKey(This,newVal)
++#define _Index_get_Unique(This,pVal) (This)->lpVtbl->get_Unique(This,pVal)
++#define _Index_put_Unique(This,newVal) (This)->lpVtbl->put_Unique(This,newVal)
++#define _Index_get_Columns(This,ppvObject) (This)->lpVtbl->get_Columns(This,ppvObject)
++#define _Index_get_Properties(This,ppvObject) (This)->lpVtbl->get_Properties(This,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI _Index_get_Name_Proxy(_ADOIndex *This,BSTR *pVal);
++  void __RPC_STUB _Index_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Index_put_Name_Proxy(_ADOIndex *This,BSTR newVal);
++  void __RPC_STUB _Index_put_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Index_get_Clustered_Proxy(_ADOIndex *This,VARIANT_BOOL *pVal);
++  void __RPC_STUB _Index_get_Clustered_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Index_put_Clustered_Proxy(_ADOIndex *This,VARIANT_BOOL newVal);
++  void __RPC_STUB _Index_put_Clustered_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Index_get_IndexNulls_Proxy(_ADOIndex *This,AllowNullsEnum *pVal);
++  void __RPC_STUB _Index_get_IndexNulls_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Index_put_IndexNulls_Proxy(_ADOIndex *This,AllowNullsEnum newVal);
++  void __RPC_STUB _Index_put_IndexNulls_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Index_get_PrimaryKey_Proxy(_ADOIndex *This,VARIANT_BOOL *pVal);
++  void __RPC_STUB _Index_get_PrimaryKey_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Index_put_PrimaryKey_Proxy(_ADOIndex *This,VARIANT_BOOL newVal);
++  void __RPC_STUB _Index_put_PrimaryKey_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Index_get_Unique_Proxy(_ADOIndex *This,VARIANT_BOOL *pVal);
++  void __RPC_STUB _Index_get_Unique_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Index_put_Unique_Proxy(_ADOIndex *This,VARIANT_BOOL newVal);
++  void __RPC_STUB _Index_put_Unique_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Index_get_Columns_Proxy(_ADOIndex *This,ADOColumns **ppvObject);
++  void __RPC_STUB _Index_get_Columns_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Index_get_Properties_Proxy(_ADOIndex *This,ADOProperties **ppvObject);
++  void __RPC_STUB _Index_get_Properties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___Key_INTERFACE_DEFINED__
++#define ___Key_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Key;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOKey : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Name(BSTR *pVal) = 0;
++    virtual HRESULT WINAPI put_Name(BSTR newVal) = 0;
++    virtual HRESULT WINAPI get_DeleteRule(RuleEnum *pVal) = 0;
++    virtual HRESULT WINAPI put_DeleteRule(RuleEnum newVal) = 0;
++    virtual HRESULT WINAPI get_Type(KeyTypeEnum *pVal) = 0;
++    virtual HRESULT WINAPI put_Type(KeyTypeEnum newVal) = 0;
++    virtual HRESULT WINAPI get_RelatedTable(BSTR *pVal) = 0;
++    virtual HRESULT WINAPI put_RelatedTable(BSTR newVal) = 0;
++    virtual HRESULT WINAPI get_UpdateRule(RuleEnum *pVal) = 0;
++    virtual HRESULT WINAPI put_UpdateRule(RuleEnum newVal) = 0;
++    virtual HRESULT WINAPI get_Columns(ADOColumns **ppvObject) = 0;
++  };
++#else
++  typedef struct _KeyVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOKey *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOKey *This);
++      ULONG (WINAPI *Release)(_ADOKey *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOKey *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOKey *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOKey *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOKey *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Name)(_ADOKey *This,BSTR *pVal);
++      HRESULT (WINAPI *put_Name)(_ADOKey *This,BSTR newVal);
++      HRESULT (WINAPI *get_DeleteRule)(_ADOKey *This,RuleEnum *pVal);
++      HRESULT (WINAPI *put_DeleteRule)(_ADOKey *This,RuleEnum newVal);
++      HRESULT (WINAPI *get_Type)(_ADOKey *This,KeyTypeEnum *pVal);
++      HRESULT (WINAPI *put_Type)(_ADOKey *This,KeyTypeEnum newVal);
++      HRESULT (WINAPI *get_RelatedTable)(_ADOKey *This,BSTR *pVal);
++      HRESULT (WINAPI *put_RelatedTable)(_ADOKey *This,BSTR newVal);
++      HRESULT (WINAPI *get_UpdateRule)(_ADOKey *This,RuleEnum *pVal);
++      HRESULT (WINAPI *put_UpdateRule)(_ADOKey *This,RuleEnum newVal);
++      HRESULT (WINAPI *get_Columns)(_ADOKey *This,ADOColumns **ppvObject);
++    END_INTERFACE
++  } _KeyVtbl;
++  struct _Key {
++    CONST_VTBL struct _KeyVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Key_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define _Key_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define _Key_Release(This) (This)->lpVtbl->Release(This)
++#define _Key_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define _Key_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Key_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Key_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Key_get_Name(This,pVal) (This)->lpVtbl->get_Name(This,pVal)
++#define _Key_put_Name(This,newVal) (This)->lpVtbl->put_Name(This,newVal)
++#define _Key_get_DeleteRule(This,pVal) (This)->lpVtbl->get_DeleteRule(This,pVal)
++#define _Key_put_DeleteRule(This,newVal) (This)->lpVtbl->put_DeleteRule(This,newVal)
++#define _Key_get_Type(This,pVal) (This)->lpVtbl->get_Type(This,pVal)
++#define _Key_put_Type(This,newVal) (This)->lpVtbl->put_Type(This,newVal)
++#define _Key_get_RelatedTable(This,pVal) (This)->lpVtbl->get_RelatedTable(This,pVal)
++#define _Key_put_RelatedTable(This,newVal) (This)->lpVtbl->put_RelatedTable(This,newVal)
++#define _Key_get_UpdateRule(This,pVal) (This)->lpVtbl->get_UpdateRule(This,pVal)
++#define _Key_put_UpdateRule(This,newVal) (This)->lpVtbl->put_UpdateRule(This,newVal)
++#define _Key_get_Columns(This,ppvObject) (This)->lpVtbl->get_Columns(This,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI _Key_get_Name_Proxy(_ADOKey *This,BSTR *pVal);
++  void __RPC_STUB _Key_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Key_put_Name_Proxy(_ADOKey *This,BSTR newVal);
++  void __RPC_STUB _Key_put_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Key_get_DeleteRule_Proxy(_ADOKey *This,RuleEnum *pVal);
++  void __RPC_STUB _Key_get_DeleteRule_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Key_put_DeleteRule_Proxy(_ADOKey *This,RuleEnum newVal);
++  void __RPC_STUB _Key_put_DeleteRule_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Key_get_Type_Proxy(_ADOKey *This,KeyTypeEnum *pVal);
++  void __RPC_STUB _Key_get_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Key_put_Type_Proxy(_ADOKey *This,KeyTypeEnum newVal);
++  void __RPC_STUB _Key_put_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Key_get_RelatedTable_Proxy(_ADOKey *This,BSTR *pVal);
++  void __RPC_STUB _Key_get_RelatedTable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Key_put_RelatedTable_Proxy(_ADOKey *This,BSTR newVal);
++  void __RPC_STUB _Key_put_RelatedTable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Key_get_UpdateRule_Proxy(_ADOKey *This,RuleEnum *pVal);
++  void __RPC_STUB _Key_get_UpdateRule_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Key_put_UpdateRule_Proxy(_ADOKey *This,RuleEnum newVal);
++  void __RPC_STUB _Key_put_UpdateRule_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Key_get_Columns_Proxy(_ADOKey *This,ADOColumns **ppvObject);
++  void __RPC_STUB _Key_get_Columns_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __View_INTERFACE_DEFINED__
++#define __View_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_View;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOView : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Command(VARIANT *pVal) = 0;
++    virtual HRESULT WINAPI put_Command(VARIANT newVal) = 0;
++    virtual HRESULT WINAPI putref_Command(IDispatch *pComm) = 0;
++    virtual HRESULT WINAPI get_Name(BSTR *pVal) = 0;
++    virtual HRESULT WINAPI get_DateCreated(VARIANT *pVal) = 0;
++    virtual HRESULT WINAPI get_DateModified(VARIANT *pVal) = 0;
++  };
++#else
++  typedef struct ViewVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOView *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOView *This);
++      ULONG (WINAPI *Release)(ADOView *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOView *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOView *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOView *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOView *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Command)(ADOView *This,VARIANT *pVal);
++      HRESULT (WINAPI *put_Command)(ADOView *This,VARIANT newVal);
++      HRESULT (WINAPI *putref_Command)(ADOView *This,IDispatch *pComm);
++      HRESULT (WINAPI *get_Name)(ADOView *This,BSTR *pVal);
++      HRESULT (WINAPI *get_DateCreated)(ADOView *This,VARIANT *pVal);
++      HRESULT (WINAPI *get_DateModified)(ADOView *This,VARIANT *pVal);
++    END_INTERFACE
++  } ViewVtbl;
++  struct View {
++    CONST_VTBL struct ViewVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define View_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define View_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define View_Release(This) (This)->lpVtbl->Release(This)
++#define View_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define View_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define View_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define View_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define View_get_Command(This,pVal) (This)->lpVtbl->get_Command(This,pVal)
++#define View_put_Command(This,newVal) (This)->lpVtbl->put_Command(This,newVal)
++#define View_putref_Command(This,pComm) (This)->lpVtbl->putref_Command(This,pComm)
++#define View_get_Name(This,pVal) (This)->lpVtbl->get_Name(This,pVal)
++#define View_get_DateCreated(This,pVal) (This)->lpVtbl->get_DateCreated(This,pVal)
++#define View_get_DateModified(This,pVal) (This)->lpVtbl->get_DateModified(This,pVal)
++#endif
++#endif
++  HRESULT WINAPI View_get_Command_Proxy(ADOView *This,VARIANT *pVal);
++  void __RPC_STUB View_get_Command_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI View_put_Command_Proxy(ADOView *This,VARIANT newVal);
++  void __RPC_STUB View_put_Command_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI View_putref_Command_Proxy(ADOView *This,IDispatch *pComm);
++  void __RPC_STUB View_putref_Command_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI View_get_Name_Proxy(ADOView *This,BSTR *pVal);
++  void __RPC_STUB View_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI View_get_DateCreated_Proxy(ADOView *This,VARIANT *pVal);
++  void __RPC_STUB View_get_DateCreated_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI View_get_DateModified_Proxy(ADOView *This,VARIANT *pVal);
++  void __RPC_STUB View_get_DateModified_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Procedure_INTERFACE_DEFINED__
++#define __Procedure_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Procedure;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOProcedure : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Command(VARIANT *pVar) = 0;
++    virtual HRESULT WINAPI put_Command(VARIANT newVal) = 0;
++    virtual HRESULT WINAPI putref_Command(IDispatch *pComm) = 0;
++    virtual HRESULT WINAPI get_Name(BSTR *pVal) = 0;
++    virtual HRESULT WINAPI get_DateCreated(VARIANT *pVal) = 0;
++    virtual HRESULT WINAPI get_DateModified(VARIANT *pVal) = 0;
++  };
++#else
++  typedef struct ProcedureVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOProcedure *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOProcedure *This);
++      ULONG (WINAPI *Release)(ADOProcedure *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOProcedure *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOProcedure *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOProcedure *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOProcedure *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Command)(ADOProcedure *This,VARIANT *pVar);
++      HRESULT (WINAPI *put_Command)(ADOProcedure *This,VARIANT newVal);
++      HRESULT (WINAPI *putref_Command)(ADOProcedure *This,IDispatch *pComm);
++      HRESULT (WINAPI *get_Name)(ADOProcedure *This,BSTR *pVal);
++      HRESULT (WINAPI *get_DateCreated)(ADOProcedure *This,VARIANT *pVal);
++      HRESULT (WINAPI *get_DateModified)(ADOProcedure *This,VARIANT *pVal);
++    END_INTERFACE
++  } ProcedureVtbl;
++  struct Procedure {
++    CONST_VTBL struct ProcedureVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Procedure_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define Procedure_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define Procedure_Release(This) (This)->lpVtbl->Release(This)
++#define Procedure_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define Procedure_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Procedure_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Procedure_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Procedure_get_Command(This,pVar) (This)->lpVtbl->get_Command(This,pVar)
++#define Procedure_put_Command(This,newVal) (This)->lpVtbl->put_Command(This,newVal)
++#define Procedure_putref_Command(This,pComm) (This)->lpVtbl->putref_Command(This,pComm)
++#define Procedure_get_Name(This,pVal) (This)->lpVtbl->get_Name(This,pVal)
++#define Procedure_get_DateCreated(This,pVal) (This)->lpVtbl->get_DateCreated(This,pVal)
++#define Procedure_get_DateModified(This,pVal) (This)->lpVtbl->get_DateModified(This,pVal)
++#endif
++#endif
++  HRESULT WINAPI Procedure_get_Command_Proxy(ADOProcedure *This,VARIANT *pVar);
++  void __RPC_STUB Procedure_get_Command_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Procedure_put_Command_Proxy(ADOProcedure *This,VARIANT newVal);
++  void __RPC_STUB Procedure_put_Command_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Procedure_putref_Command_Proxy(ADOProcedure *This,IDispatch *pComm);
++  void __RPC_STUB Procedure_putref_Command_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Procedure_get_Name_Proxy(ADOProcedure *This,BSTR *pVal);
++  void __RPC_STUB Procedure_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Procedure_get_DateCreated_Proxy(ADOProcedure *This,VARIANT *pVal);
++  void __RPC_STUB Procedure_get_DateCreated_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Procedure_get_DateModified_Proxy(ADOProcedure *This,VARIANT *pVal);
++  void __RPC_STUB Procedure_get_DateModified_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++  EXTERN_C const CLSID CLSID_Catalog;
++#ifdef __cplusplus
++//  Catalog;
++#endif
++  EXTERN_C const CLSID CLSID_Table;
++#ifdef __cplusplus
++//  Table;
++#endif
++
++#ifndef __Property_INTERFACE_DEFINED__
++#define __Property_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Property;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOProperty : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Value(VARIANT *pval) = 0;
++    virtual HRESULT WINAPI put_Value(VARIANT val) = 0;
++    virtual HRESULT WINAPI get_Name(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI get_Type(DataTypeEnum *ptype) = 0;
++    virtual HRESULT WINAPI get_Attributes(long *plAttributes) = 0;
++    virtual HRESULT WINAPI put_Attributes(long lAttributes) = 0;
++  };
++#else
++  typedef struct PropertyVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOProperty *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOProperty *This);
++      ULONG (WINAPI *Release)(ADOProperty *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOProperty *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOProperty *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOProperty *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOProperty *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Value)(ADOProperty *This,VARIANT *pval);
++      HRESULT (WINAPI *put_Value)(ADOProperty *This,VARIANT val);
++      HRESULT (WINAPI *get_Name)(ADOProperty *This,BSTR *pbstr);
++      HRESULT (WINAPI *get_Type)(ADOProperty *This,DataTypeEnum *ptype);
++      HRESULT (WINAPI *get_Attributes)(ADOProperty *This,long *plAttributes);
++      HRESULT (WINAPI *put_Attributes)(ADOProperty *This,long lAttributes);
++    END_INTERFACE
++  } PropertyVtbl;
++  struct Property {
++    CONST_VTBL struct PropertyVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Property_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define Property_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define Property_Release(This) (This)->lpVtbl->Release(This)
++#define Property_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define Property_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Property_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Property_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Property_get_Value(This,pval) (This)->lpVtbl->get_Value(This,pval)
++#define Property_put_Value(This,val) (This)->lpVtbl->put_Value(This,val)
++#define Property_get_Name(This,pbstr) (This)->lpVtbl->get_Name(This,pbstr)
++#define Property_get_Type(This,ptype) (This)->lpVtbl->get_Type(This,ptype)
++#define Property_get_Attributes(This,plAttributes) (This)->lpVtbl->get_Attributes(This,plAttributes)
++#define Property_put_Attributes(This,lAttributes) (This)->lpVtbl->put_Attributes(This,lAttributes)
++#endif
++#endif
++  HRESULT WINAPI Property_get_Value_Proxy(ADOProperty *This,VARIANT *pval);
++  void __RPC_STUB Property_get_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Property_put_Value_Proxy(ADOProperty *This,VARIANT val);
++  void __RPC_STUB Property_put_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Property_get_Name_Proxy(ADOProperty *This,BSTR *pbstr);
++  void __RPC_STUB Property_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Property_get_Type_Proxy(ADOProperty *This,DataTypeEnum *ptype);
++  void __RPC_STUB Property_get_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Property_get_Attributes_Proxy(ADOProperty *This,long *plAttributes);
++  void __RPC_STUB Property_get_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Property_put_Attributes_Proxy(ADOProperty *This,long lAttributes);
++  void __RPC_STUB Property_put_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++  EXTERN_C const CLSID CLSID_Group;
++#ifdef __cplusplus
++//  Group;
++#endif
++  EXTERN_C const CLSID CLSID_User;
++#ifdef __cplusplus
++//  User;
++#endif
++  EXTERN_C const CLSID CLSID_Column;
++#ifdef __cplusplus
++//  Column;
++#endif
++  EXTERN_C const CLSID CLSID_Index;
++#ifdef __cplusplus
++//  Index;
++#endif
++  EXTERN_C const CLSID CLSID_Key;
++#ifdef __cplusplus
++//  Key;
++#endif
++
++#ifndef __Tables_INTERFACE_DEFINED__
++#define __Tables_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Tables;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOTables : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Item,Table **ppvObject) = 0;
++    virtual HRESULT WINAPI Append(VARIANT Item) = 0;
++    virtual HRESULT WINAPI Delete(VARIANT Item) = 0;
++  };
++#else
++  typedef struct TablesVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOTables *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOTables *This);
++      ULONG (WINAPI *Release)(ADOTables *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOTables *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOTables *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOTables *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOTables *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOTables *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOTables *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOTables *This);
++      HRESULT (WINAPI *get_Item)(ADOTables *This,VARIANT Item,Table **ppvObject);
++      HRESULT (WINAPI *Append)(ADOTables *This,VARIANT Item);
++      HRESULT (WINAPI *Delete)(ADOTables *This,VARIANT Item);
++    END_INTERFACE
++  } TablesVtbl;
++  struct Tables {
++    CONST_VTBL struct TablesVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Tables_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define Tables_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define Tables_Release(This) (This)->lpVtbl->Release(This)
++#define Tables_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define Tables_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Tables_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Tables_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Tables_get_Count(This,c) (This)->lpVtbl->get_Count(This,c)
++#define Tables__NewEnum(This,ppvObject) (This)->lpVtbl->_NewEnum(This,ppvObject)
++#define Tables_Refresh(This) (This)->lpVtbl->Refresh(This)
++#define Tables_get_Item(This,Item,ppvObject) (This)->lpVtbl->get_Item(This,Item,ppvObject)
++#define Tables_Append(This,Item) (This)->lpVtbl->Append(This,Item)
++#define Tables_Delete(This,Item) (This)->lpVtbl->Delete(This,Item)
++#endif
++#endif
++  HRESULT WINAPI Tables_get_Item_Proxy(ADOTables *This,VARIANT Item,Table **ppvObject);
++  void __RPC_STUB Tables_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Tables_Append_Proxy(ADOTables *This,VARIANT Item);
++  void __RPC_STUB Tables_Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Tables_Delete_Proxy(ADOTables *This,VARIANT Item);
++  void __RPC_STUB Tables_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Columns_INTERFACE_DEFINED__
++#define __Columns_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Columns;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOColumns : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Item,Column **ppvObject) = 0;
++    virtual HRESULT WINAPI Append(VARIANT Item,DataTypeEnum Type = adVarWChar,long DefinedSize = 0) = 0;
++    virtual HRESULT WINAPI Delete(VARIANT Item) = 0;
++  };
++#else
++  typedef struct ColumnsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOColumns *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOColumns *This);
++      ULONG (WINAPI *Release)(ADOColumns *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOColumns *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOColumns *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOColumns *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOColumns *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOColumns *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOColumns *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOColumns *This);
++      HRESULT (WINAPI *get_Item)(ADOColumns *This,VARIANT Item,Column **ppvObject);
++      HRESULT (WINAPI *Append)(ADOColumns *This,VARIANT Item,DataTypeEnum Type,long DefinedSize);
++      HRESULT (WINAPI *Delete)(ADOColumns *This,VARIANT Item);
++    END_INTERFACE
++  } ColumnsVtbl;
++  struct Columns {
++    CONST_VTBL struct ColumnsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Columns_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define Columns_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define Columns_Release(This) (This)->lpVtbl->Release(This)
++#define Columns_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define Columns_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Columns_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Columns_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Columns_get_Count(This,c) (This)->lpVtbl->get_Count(This,c)
++#define Columns__NewEnum(This,ppvObject) (This)->lpVtbl->_NewEnum(This,ppvObject)
++#define Columns_Refresh(This) (This)->lpVtbl->Refresh(This)
++#define Columns_get_Item(This,Item,ppvObject) (This)->lpVtbl->get_Item(This,Item,ppvObject)
++#define Columns_Append(This,Item,Type,DefinedSize) (This)->lpVtbl->Append(This,Item,Type,DefinedSize)
++#define Columns_Delete(This,Item) (This)->lpVtbl->Delete(This,Item)
++#endif
++#endif
++  HRESULT WINAPI Columns_get_Item_Proxy(ADOColumns *This,VARIANT Item,Column **ppvObject);
++  void __RPC_STUB Columns_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Columns_Append_Proxy(ADOColumns *This,VARIANT Item,DataTypeEnum Type,long DefinedSize);
++  void __RPC_STUB Columns_Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Columns_Delete_Proxy(ADOColumns *This,VARIANT Item);
++  void __RPC_STUB Columns_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Procedures_INTERFACE_DEFINED__
++#define __Procedures_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Procedures;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOProcedures : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Item,ADOProcedure **ppvObject) = 0;
++    virtual HRESULT WINAPI Append(BSTR Name,IDispatch *Command) = 0;
++    virtual HRESULT WINAPI Delete(VARIANT Item) = 0;
++  };
++#else
++  typedef struct ProceduresVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOProcedures *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOProcedures *This);
++      ULONG (WINAPI *Release)(ADOProcedures *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOProcedures *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOProcedures *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOProcedures *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOProcedures *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOProcedures *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOProcedures *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOProcedures *This);
++      HRESULT (WINAPI *get_Item)(ADOProcedures *This,VARIANT Item,ADOProcedure **ppvObject);
++      HRESULT (WINAPI *Append)(ADOProcedures *This,BSTR Name,IDispatch *Command);
++      HRESULT (WINAPI *Delete)(ADOProcedures *This,VARIANT Item);
++    END_INTERFACE
++  } ProceduresVtbl;
++  struct Procedures {
++    CONST_VTBL struct ProceduresVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Procedures_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define Procedures_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define Procedures_Release(This) (This)->lpVtbl->Release(This)
++#define Procedures_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define Procedures_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Procedures_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Procedures_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Procedures_get_Count(This,c) (This)->lpVtbl->get_Count(This,c)
++#define Procedures__NewEnum(This,ppvObject) (This)->lpVtbl->_NewEnum(This,ppvObject)
++#define Procedures_Refresh(This) (This)->lpVtbl->Refresh(This)
++#define Procedures_get_Item(This,Item,ppvObject) (This)->lpVtbl->get_Item(This,Item,ppvObject)
++#define Procedures_Append(This,Name,Command) (This)->lpVtbl->Append(This,Name,Command)
++#define Procedures_Delete(This,Item) (This)->lpVtbl->Delete(This,Item)
++#endif
++#endif
++  HRESULT WINAPI Procedures_get_Item_Proxy(ADOProcedures *This,VARIANT Item,ADOProcedure **ppvObject);
++  void __RPC_STUB Procedures_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Procedures_Append_Proxy(ADOProcedures *This,BSTR Name,IDispatch *Command);
++  void __RPC_STUB Procedures_Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Procedures_Delete_Proxy(ADOProcedures *This,VARIANT Item);
++  void __RPC_STUB Procedures_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Views_INTERFACE_DEFINED__
++#define __Views_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Views;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOViews : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Item,ADOView **ppvObject) = 0;
++    virtual HRESULT WINAPI Append(BSTR Name,IDispatch *Command) = 0;
++    virtual HRESULT WINAPI Delete(VARIANT Item) = 0;
++  };
++#else
++  typedef struct ViewsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOViews *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOViews *This);
++      ULONG (WINAPI *Release)(ADOViews *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOViews *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOViews *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOViews *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOViews *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOViews *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOViews *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOViews *This);
++      HRESULT (WINAPI *get_Item)(ADOViews *This,VARIANT Item,ADOView **ppvObject);
++      HRESULT (WINAPI *Append)(ADOViews *This,BSTR Name,IDispatch *Command);
++      HRESULT (WINAPI *Delete)(ADOViews *This,VARIANT Item);
++    END_INTERFACE
++  } ViewsVtbl;
++  struct Views {
++    CONST_VTBL struct ViewsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Views_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define Views_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define Views_Release(This) (This)->lpVtbl->Release(This)
++#define Views_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define Views_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Views_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Views_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Views_get_Count(This,c) (This)->lpVtbl->get_Count(This,c)
++#define Views__NewEnum(This,ppvObject) (This)->lpVtbl->_NewEnum(This,ppvObject)
++#define Views_Refresh(This) (This)->lpVtbl->Refresh(This)
++#define Views_get_Item(This,Item,ppvObject) (This)->lpVtbl->get_Item(This,Item,ppvObject)
++#define Views_Append(This,Name,Command) (This)->lpVtbl->Append(This,Name,Command)
++#define Views_Delete(This,Item) (This)->lpVtbl->Delete(This,Item)
++#endif
++#endif
++  HRESULT WINAPI Views_get_Item_Proxy(ADOViews *This,VARIANT Item,ADOView **ppvObject);
++  void __RPC_STUB Views_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Views_Append_Proxy(ADOViews *This,BSTR Name,IDispatch *Command);
++  void __RPC_STUB Views_Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Views_Delete_Proxy(ADOViews *This,VARIANT Item);
++  void __RPC_STUB Views_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Indexes_INTERFACE_DEFINED__
++#define __Indexes_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Indexes;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOIndexes : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Item,Index **ppvObject) = 0;
++    virtual HRESULT WINAPI Append(VARIANT Item,VARIANT columns) = 0;
++    virtual HRESULT WINAPI Delete(VARIANT Item) = 0;
++  };
++#else
++  typedef struct IndexesVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOIndexes *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOIndexes *This);
++      ULONG (WINAPI *Release)(ADOIndexes *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOIndexes *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOIndexes *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOIndexes *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOIndexes *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOIndexes *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOIndexes *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOIndexes *This);
++      HRESULT (WINAPI *get_Item)(ADOIndexes *This,VARIANT Item,Index **ppvObject);
++      HRESULT (WINAPI *Append)(ADOIndexes *This,VARIANT Item,VARIANT columns);
++      HRESULT (WINAPI *Delete)(ADOIndexes *This,VARIANT Item);
++    END_INTERFACE
++  } IndexesVtbl;
++  struct Indexes {
++    CONST_VTBL struct IndexesVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Indexes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define Indexes_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define Indexes_Release(This) (This)->lpVtbl->Release(This)
++#define Indexes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define Indexes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Indexes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Indexes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Indexes_get_Count(This,c) (This)->lpVtbl->get_Count(This,c)
++#define Indexes__NewEnum(This,ppvObject) (This)->lpVtbl->_NewEnum(This,ppvObject)
++#define Indexes_Refresh(This) (This)->lpVtbl->Refresh(This)
++#define Indexes_get_Item(This,Item,ppvObject) (This)->lpVtbl->get_Item(This,Item,ppvObject)
++#define Indexes_Append(This,Item,columns) (This)->lpVtbl->Append(This,Item,columns)
++#define Indexes_Delete(This,Item) (This)->lpVtbl->Delete(This,Item)
++#endif
++#endif
++  HRESULT WINAPI Indexes_get_Item_Proxy(ADOIndexes *This,VARIANT Item,Index **ppvObject);
++  void __RPC_STUB Indexes_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Indexes_Append_Proxy(ADOIndexes *This,VARIANT Item,VARIANT columns);
++  void __RPC_STUB Indexes_Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Indexes_Delete_Proxy(ADOIndexes *This,VARIANT Item);
++  void __RPC_STUB Indexes_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Keys_INTERFACE_DEFINED__
++#define __Keys_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Keys;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOKeys : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Item,Key **ppvObject) = 0;
++    virtual HRESULT WINAPI Append(VARIANT Item,KeyTypeEnum Type,VARIANT Column,BSTR RelatedADOTable = L"",BSTR RelatedADOColumn = L"") = 0;
++    virtual HRESULT WINAPI Delete(VARIANT Item) = 0;
++  };
++#else
++  typedef struct KeysVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOKeys *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOKeys *This);
++      ULONG (WINAPI *Release)(ADOKeys *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOKeys *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOKeys *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOKeys *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOKeys *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOKeys *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOKeys *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOKeys *This);
++      HRESULT (WINAPI *get_Item)(ADOKeys *This,VARIANT Item,Key **ppvObject);
++      HRESULT (WINAPI *Append)(ADOKeys *This,VARIANT Item,KeyTypeEnum Type,VARIANT Column,BSTR RelatedTable,BSTR RelatedColumn);
++      HRESULT (WINAPI *Delete)(ADOKeys *This,VARIANT Item);
++    END_INTERFACE
++  } KeysVtbl;
++struct Keys {
++    CONST_VTBL struct KeysVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Keys_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define Keys_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define Keys_Release(This) (This)->lpVtbl->Release(This)
++#define Keys_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define Keys_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Keys_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Keys_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Keys_get_Count(This,c) (This)->lpVtbl->get_Count(This,c)
++#define Keys__NewEnum(This,ppvObject) (This)->lpVtbl->_NewEnum(This,ppvObject)
++#define Keys_Refresh(This) (This)->lpVtbl->Refresh(This)
++#define Keys_get_Item(This,Item,ppvObject) (This)->lpVtbl->get_Item(This,Item,ppvObject)
++#define Keys_Append(This,Item,Type,Column,RelatedTable,RelatedColumn) (This)->lpVtbl->Append(This,Item,Type,Column,RelatedTable,RelatedColumn)
++#define Keys_Delete(This,Item) (This)->lpVtbl->Delete(This,Item)
++#endif
++#endif
++  HRESULT WINAPI Keys_get_Item_Proxy(ADOKeys *This,VARIANT Item,Key **ppvObject);
++  void __RPC_STUB Keys_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Keys_Append_Proxy(ADOKeys *This,VARIANT Item,KeyTypeEnum Type,VARIANT Column,BSTR RelatedTable,BSTR RelatedColumn);
++  void __RPC_STUB Keys_Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Keys_Delete_Proxy(ADOKeys *This,VARIANT Item);
++  void __RPC_STUB Keys_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Users_INTERFACE_DEFINED__
++#define __Users_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Users;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOUsers : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Item,User **ppvObject) = 0;
++    virtual HRESULT WINAPI Append(VARIANT Item,BSTR Password = L"") = 0;
++    virtual HRESULT WINAPI Delete(VARIANT Item) = 0;
++  };
++#else
++  typedef struct UsersVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOUsers *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOUsers *This);
++      ULONG (WINAPI *Release)(ADOUsers *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOUsers *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOUsers *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOUsers *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOUsers *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOUsers *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOUsers *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOUsers *This);
++      HRESULT (WINAPI *get_Item)(ADOUsers *This,VARIANT Item,User **ppvObject);
++      HRESULT (WINAPI *Append)(ADOUsers *This,VARIANT Item,BSTR Password);
++      HRESULT (WINAPI *Delete)(ADOUsers *This,VARIANT Item);
++    END_INTERFACE
++  } UsersVtbl;
++  struct Users {
++    CONST_VTBL struct UsersVtbl *lpVtbl;
++  };
++
++#ifdef COBJMACROS
++#define Users_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define Users_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define Users_Release(This) (This)->lpVtbl->Release(This)
++#define Users_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define Users_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Users_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Users_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Users_get_Count(This,c) (This)->lpVtbl->get_Count(This,c)
++#define Users__NewEnum(This,ppvObject) (This)->lpVtbl->_NewEnum(This,ppvObject)
++#define Users_Refresh(This) (This)->lpVtbl->Refresh(This)
++#define Users_get_Item(This,Item,ppvObject) (This)->lpVtbl->get_Item(This,Item,ppvObject)
++#define Users_Append(This,Item,Password) (This)->lpVtbl->Append(This,Item,Password)
++#define Users_Delete(This,Item) (This)->lpVtbl->Delete(This,Item)
++#endif
++#endif
++  HRESULT WINAPI Users_get_Item_Proxy(ADOUsers *This,VARIANT Item,User **ppvObject);
++  void __RPC_STUB Users_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Users_Append_Proxy(ADOUsers *This,VARIANT Item,BSTR Password);
++  void __RPC_STUB Users_Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Users_Delete_Proxy(ADOUsers *This,VARIANT Item);
++  void __RPC_STUB Users_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Groups_INTERFACE_DEFINED__
++#define __Groups_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Groups;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOGroups : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Item,Group **ppvObject) = 0;
++    virtual HRESULT WINAPI Append(VARIANT Item) = 0;
++    virtual HRESULT WINAPI Delete(VARIANT Item) = 0;
++  };
++#else
++  typedef struct GroupsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOGroups *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOGroups *This);
++      ULONG (WINAPI *Release)(ADOGroups *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOGroups *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOGroups *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOGroups *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOGroups *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOGroups *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOGroups *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOGroups *This);
++      HRESULT (WINAPI *get_Item)(ADOGroups *This,VARIANT Item,Group **ppvObject);
++      HRESULT (WINAPI *Append)(ADOGroups *This,VARIANT Item);
++      HRESULT (WINAPI *Delete)(ADOGroups *This,VARIANT Item);
++    END_INTERFACE
++  } GroupsVtbl;
++  struct Groups {
++    CONST_VTBL struct GroupsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Groups_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define Groups_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define Groups_Release(This) (This)->lpVtbl->Release(This)
++#define Groups_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define Groups_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Groups_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Groups_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Groups_get_Count(This,c) (This)->lpVtbl->get_Count(This,c)
++#define Groups__NewEnum(This,ppvObject) (This)->lpVtbl->_NewEnum(This,ppvObject)
++#define Groups_Refresh(This) (This)->lpVtbl->Refresh(This)
++#define Groups_get_Item(This,Item,ppvObject) (This)->lpVtbl->get_Item(This,Item,ppvObject)
++#define Groups_Append(This,Item) (This)->lpVtbl->Append(This,Item)
++#define Groups_Delete(This,Item) (This)->lpVtbl->Delete(This,Item)
++#endif
++#endif
++  HRESULT WINAPI Groups_get_Item_Proxy(ADOGroups *This,VARIANT Item,Group **ppvObject);
++  void __RPC_STUB Groups_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Groups_Append_Proxy(ADOGroups *This,VARIANT Item);
++  void __RPC_STUB Groups_Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Groups_Delete_Proxy(ADOGroups *This,VARIANT Item);
++  void __RPC_STUB Groups_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Properties_INTERFACE_DEFINED__
++#define __Properties_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Properties;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOProperties : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Item,ADOProperty **ppvObject) = 0;
++  };
++#else
++  typedef struct PropertiesVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOProperties *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOProperties *This);
++      ULONG (WINAPI *Release)(ADOProperties *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOProperties *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOProperties *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOProperties *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOProperties *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOProperties *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOProperties *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOProperties *This);
++      HRESULT (WINAPI *get_Item)(ADOProperties *This,VARIANT Item,ADOProperty **ppvObject);
++    END_INTERFACE
++  } PropertiesVtbl;
++  struct Properties {
++    CONST_VTBL struct PropertiesVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Properties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define Properties_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define Properties_Release(This) (This)->lpVtbl->Release(This)
++#define Properties_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define Properties_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Properties_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Properties_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Properties_get_Count(This,c) (This)->lpVtbl->get_Count(This,c)
++#define Properties__NewEnum(This,ppvObject) (This)->lpVtbl->_NewEnum(This,ppvObject)
++#define Properties_Refresh(This) (This)->lpVtbl->Refresh(This)
++#define Properties_get_Item(This,Item,ppvObject) (This)->lpVtbl->get_Item(This,Item,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI Properties_get_Item_Proxy(ADOProperties *This,VARIANT Item,ADOProperty **ppvObject);
++  void __RPC_STUB Properties_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifdef __cplusplus
++}
++#endif
++#endif
++
++#define ADOCatalog _ADOCatalog
++#define ADOTable _ADOTable
++#define ADOGroup _ADOGroup
++#define ADOUser _ADOUser
++#define ADOIndex _ADOIndex
++#define ADOColumn _ADOColumn
++#define ADOKey _ADOKey
++#define ADOParameter _ADOParameter
++#define ADOCollection _ADOCollection
++#define ADODynaCollection _ADODynaCollection
++#endif
+diff -urN /home/jesus/ooo-build/build/ooo310-m14/connectivity/source/drivers/ado/adoint.h connectivity/source/drivers/ado/adoint.h
+--- /dev/null	1970-01-01 01:00:00.000000000 +0100
++++ connectivity/source/drivers/ado/adoint.h	2009-07-22 17:48:15.000000000 +0200
+@@ -0,0 +1,3848 @@
++/**
++ * This file has no copyright assigned and is placed in the Public Domain.
++ * This file is part of the w64 mingw-runtime package.
++ * No warranty is given; refer to the file DISCLAIMER within this package.
++ */
++#ifndef _ADOINT_H_
++#define _ADOINT_H_
++
++#include <tchar.h>
++
++#ifndef __REQUIRED_RPCNDR_H_VERSION__
++#define __REQUIRED_RPCNDR_H_VERSION__ 440
++#endif
++#include "rpc.h"
++#include "rpcndr.h"
++#ifndef __m_bobj_h__
++#define __m_bobj_h__
++
++#ifndef ___ADOCollection_FWD_DEFINED__
++#define ___ADOCollection_FWD_DEFINED__
++typedef struct _ADOCollection _ADOCollection;
++#endif
++#ifndef ___ADODynaCollection_FWD_DEFINED__
++#define ___ADODynaCollection_FWD_DEFINED__
++typedef struct _ADODynaCollection _ADODynaCollection;
++#endif
++#ifndef ___ADO_FWD_DEFINED__
++#define ___ADO_FWD_DEFINED__
++typedef struct _ADO _ADO;
++#endif
++#ifndef __Error_FWD_DEFINED__
++#define __Error_FWD_DEFINED__
++typedef struct ADOError Error;
++#endif
++#ifndef __Errors_FWD_DEFINED__
++#define __Errors_FWD_DEFINED__
++typedef struct ADOErrors Errors;
++#endif
++#ifndef __Command15_FWD_DEFINED__
++#define __Command15_FWD_DEFINED__
++typedef struct Command15 Command15;
++#endif
++#ifndef __Command25_FWD_DEFINED__
++#define __Command25_FWD_DEFINED__
++typedef struct Command25 Command25;
++#endif
++#ifndef ___Command_FWD_DEFINED__
++#define ___Command_FWD_DEFINED__
++typedef struct _ADOCommand _Command;
++#endif
++#ifndef __ConnectionEventsVt_FWD_DEFINED__
++#define __ConnectionEventsVt_FWD_DEFINED__
++typedef struct ConnectionEventsVt ConnectionEventsVt;
++#endif
++#ifndef __RecordsetEventsVt_FWD_DEFINED__
++#define __RecordsetEventsVt_FWD_DEFINED__
++typedef struct RecordsetEventsVt RecordsetEventsVt;
++#endif
++#ifndef __ConnectionEvents_FWD_DEFINED__
++#define __ConnectionEvents_FWD_DEFINED__
++typedef struct ConnectionEvents ConnectionEvents;
++#endif
++#ifndef __RecordsetEvents_FWD_DEFINED__
++#define __RecordsetEvents_FWD_DEFINED__
++typedef struct RecordsetEvents RecordsetEvents;
++#endif
++#ifndef __Connection15_FWD_DEFINED__
++#define __Connection15_FWD_DEFINED__
++typedef struct Connection15 Connection15;
++#endif
++#ifndef ___Connection_FWD_DEFINED__
++#define ___Connection_FWD_DEFINED__
++typedef struct _ADOConnection _Connection;
++#endif
++#ifndef __ADOConnectionConstruction15_FWD_DEFINED__
++#define __ADOConnectionConstruction15_FWD_DEFINED__
++typedef struct ADOConnectionConstruction15 ADOConnectionConstruction15;
++#endif
++#ifndef __ADOConnectionConstruction_FWD_DEFINED__
++#define __ADOConnectionConstruction_FWD_DEFINED__
++typedef struct ADOConnectionConstruction ADOConnectionConstruction;
++#endif
++#ifndef __Connection_FWD_DEFINED__
++#define __Connection_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADOConnection Connection;
++#else
++typedef struct ADOConnection Connection;
++#endif
++#endif
++#ifndef ___Record_FWD_DEFINED__
++#define ___Record_FWD_DEFINED__
++typedef struct _ADORecord _Record;
++#endif
++#ifndef __Record_FWD_DEFINED__
++#define __Record_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADORecord Record;
++#else
++typedef struct ADORecord Record;
++#endif
++#endif
++#ifndef ___Stream_FWD_DEFINED__
++#define ___Stream_FWD_DEFINED__
++typedef struct _ADOStream _Stream;
++#endif
++#ifndef __Stream_FWD_DEFINED__
++#define __Stream_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADOStream Stream;
++#else
++typedef struct ADOStream Stream;
++#endif
++#endif
++#ifndef __ADORecordConstruction_FWD_DEFINED__
++#define __ADORecordConstruction_FWD_DEFINED__
++typedef struct ADORecordConstruction ADORecordConstruction;
++#endif
++#ifndef __ADOStreamConstruction_FWD_DEFINED__
++#define __ADOStreamConstruction_FWD_DEFINED__
++typedef struct ADOStreamConstruction ADOStreamConstruction;
++#endif
++#ifndef __ADOCommandConstruction_FWD_DEFINED__
++#define __ADOCommandConstruction_FWD_DEFINED__
++typedef struct ADOCommandConstruction ADOCommandConstruction;
++#endif
++#ifndef __Command_FWD_DEFINED__
++#define __Command_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADOCommand Command;
++#else
++typedef struct ADOCommand Command;
++#endif
++#endif
++#ifndef __Recordset_FWD_DEFINED__
++#define __Recordset_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADORecordset Recordset;
++#else
++typedef struct ADORecordset Recordset;
++#endif
++#endif
++#ifndef __Recordset15_FWD_DEFINED__
++#define __Recordset15_FWD_DEFINED__
++typedef struct Recordset15 Recordset15;
++#endif
++#ifndef __Recordset20_FWD_DEFINED__
++#define __Recordset20_FWD_DEFINED__
++typedef struct Recordset20 Recordset20;
++#endif
++#ifndef __Recordset21_FWD_DEFINED__
++#define __Recordset21_FWD_DEFINED__
++typedef struct Recordset21 Recordset21;
++#endif
++#ifndef ___Recordset_FWD_DEFINED__
++#define ___Recordset_FWD_DEFINED__
++typedef struct _ADORecordset _Recordset;
++#endif
++#ifndef __ADORecordsetConstruction_FWD_DEFINED__
++#define __ADORecordsetConstruction_FWD_DEFINED__
++typedef struct ADORecordsetConstruction ADORecordsetConstruction;
++#endif
++#ifndef __Field15_FWD_DEFINED__
++#define __Field15_FWD_DEFINED__
++typedef struct Field15 Field15;
++#endif
++#ifndef __Field20_FWD_DEFINED__
++#define __Field20_FWD_DEFINED__
++typedef struct Field20 Field20;
++#endif
++#ifndef __Field_FWD_DEFINED__
++#define __Field_FWD_DEFINED__
++typedef struct ADOField Field;
++#endif
++#ifndef __Fields15_FWD_DEFINED__
++#define __Fields15_FWD_DEFINED__
++typedef struct Fields15 Fields15;
++#endif
++#ifndef __Fields20_FWD_DEFINED__
++#define __Fields20_FWD_DEFINED__
++typedef struct Fields20 Fields20;
++#endif
++#ifndef __Fields_FWD_DEFINED__
++#define __Fields_FWD_DEFINED__
++typedef struct ADOFields Fields;
++#endif
++#ifndef ___Parameter_FWD_DEFINED__
++#define ___Parameter_FWD_DEFINED__
++typedef struct _ADOParameter _Parameter;
++#endif
++#ifndef __Parameter_FWD_DEFINED__
++#define __Parameter_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class ADOParameter Parameter;
++#else
++typedef struct ADOParameter Parameter;
++#endif
++#endif
++#ifndef __Parameters_FWD_DEFINED__
++#define __Parameters_FWD_DEFINED__
++typedef struct ADOParameters Parameters;
++#endif
++#ifndef __Property_FWD_DEFINED__
++#define __Property_FWD_DEFINED__
++typedef struct ADOProperty Property;
++#endif
++#ifndef __Properties_FWD_DEFINED__
++#define __Properties_FWD_DEFINED__
++typedef struct ADOProperties Properties;
++#endif
++#ifdef __cplusplus
++extern "C"{
++#endif
++  void *__RPC_API MIDL_user_allocate(size_t);
++  void __RPC_API MIDL_user_free(void *);
++
++#ifdef _WIN64
++  typedef LONGLONG ADO_LONGPTR;
++#else
++  typedef LONG ADO_LONGPTR;
++#endif
++
++  extern RPC_IF_HANDLE __MIDL_itf_m_bobj_0000_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_m_bobj_0000_v0_0_s_ifspec;
++
++#ifndef __ADODB_LIBRARY_DEFINED__
++#define __ADODB_LIBRARY_DEFINED__
++  typedef enum CursorTypeEnum {
++    adOpenUnspecified = -1,adOpenForwardOnly = 0,adOpenKeyset = 1,adOpenDynamic = 2,adOpenStatic = 3
++  } CursorTypeEnum;
++  typedef enum CursorOptionEnum {
++    adHoldRecords = 0x100,adMovePrevious = 0x200,adAddNew = 0x1000400,adDelete = 0x1000800,adUpdate = 0x1008000,adBookmark = 0x2000,
++    adApproxPosition = 0x4000,adUpdateBatch = 0x10000,adResync = 0x20000,adNotify = 0x40000,adFind = 0x80000,adSeek = 0x400000,adIndex = 0x800000
++  } CursorOptionEnum;
++  typedef enum LockTypeEnum {
++    adLockUnspecified = -1,adLockReadOnly = 1,adLockPessimistic = 2,adLockOptimistic = 3,adLockBatchOptimistic = 4
++  } LockTypeEnum;
++  typedef enum ExecuteOptionEnum {
++    adOptionUnspecified = -1,adAsyncExecute = 0x10,adAsyncFetch = 0x20,adAsyncFetchNonBlocking = 0x40,adExecuteNoRecords = 0x80,
++    adExecuteStream = 0x400,adExecuteRecord = 0x800
++  } ExecuteOptionEnum;
++  typedef enum ConnectOptionEnum {
++    adConnectUnspecified = -1,adAsyncConnect = 0x10
++  } ConnectOptionEnum;
++  typedef enum ObjectStateEnum {
++    adStateClosed = 0,adStateOpen = 0x1,adStateConnecting = 0x2,adStateExecuting = 0x4,adStateFetching = 0x8
++  } ObjectStateEnum;
++  typedef enum CursorLocationEnum {
++    adUseNone = 1,adUseServer = 2,adUseClient = 3,adUseClientBatch = 3
++  } CursorLocationEnum;
++  typedef enum DataTypeEnum {
++    adEmpty = 0,adTinyInt = 16,adSmallInt = 2,adInteger = 3,adBigInt = 20,adUnsignedTinyInt = 17,adUnsignedSmallInt = 18,adUnsignedInt = 19,
++    adUnsignedBigInt = 21,adSingle = 4,adDouble = 5,adCurrency = 6,adDecimal = 14,adNumeric = 131,adBoolean = 11,adError = 10,adUserDefined = 132,
++    adVariant = 12,adIDispatch = 9,adIUnknown = 13,adGUID = 72,adDate = 7,adDBDate = 133,adDBTime = 134,adDBTimeStamp = 135,adBSTR = 8,adChar = 129,
++    adVarChar = 200,adLongVarChar = 201,adWChar = 130,adVarWChar = 202,adLongVarWChar = 203,adBinary = 128,adVarBinary = 204,adLongVarBinary = 205,
++    adChapter = 136,adFileTime = 64,adPropVariant = 138,adVarNumeric = 139,adArray = 0x2000
++  } DataTypeEnum;
++  typedef enum FieldAttributeEnum {
++    adFldUnspecified = -1,adFldMayDefer = 0x2,adFldUpdatable = 0x4,adFldUnknownUpdatable = 0x8,adFldFixed = 0x10,adFldIsNullable = 0x20,
++    adFldMayBeNull = 0x40,adFldLong = 0x80,adFldRowID = 0x100,adFldRowVersion = 0x200,adFldCacheDeferred = 0x1000,adFldIsChapter = 0x2000,
++    adFldNegativeScale = 0x4000,adFldKeyColumn = 0x8000,adFldIsRowURL = 0x10000,adFldIsDefaultStream = 0x20000,adFldIsCollection = 0x40000
++  } FieldAttributeEnum;
++  typedef enum EditModeEnum {
++    adEditNone = 0,adEditInProgress = 0x1,adEditAdd = 0x2,adEditDelete = 0x4
++  } EditModeEnum;
++  typedef enum RecordStatusEnum {
++    adRecOK = 0,adRecNew = 0x1,adRecModified = 0x2,adRecDeleted = 0x4,adRecUnmodified = 0x8,adRecInvalid = 0x10,adRecMultipleChanges = 0x40,
++    adRecPendingChanges = 0x80,adRecCanceled = 0x100,adRecCantRelease = 0x400,adRecConcurrencyViolation = 0x800,adRecIntegrityViolation = 0x1000,
++    adRecMaxChangesExceeded = 0x2000,adRecObjectOpen = 0x4000,adRecOutOfMemory = 0x8000,adRecPermissionDenied = 0x10000,
++    adRecSchemaViolation = 0x20000,adRecDBDeleted = 0x40000
++  } RecordStatusEnum;
++  typedef enum GetRowsOptionEnum {
++    adGetRowsRest = -1
++  } GetRowsOptionEnum;
++  typedef enum PositionEnum {
++    adPosUnknown = -1,adPosBOF = -2,adPosEOF = -3
++  } PositionEnum;
++#ifdef _WIN64
++  typedef LONGLONG PositionEnum_Param;
++#else
++  typedef PositionEnum PositionEnum_Param;
++#endif
++  typedef enum BookmarkEnum {
++    adBookmarkCurrent = 0,adBookmarkFirst = 1,adBookmarkLast = 2
++  } BookmarkEnum;
++  typedef enum MarshalOptionsEnum {
++    adMarshalAll = 0,adMarshalModifiedOnly = 1
++  } MarshalOptionsEnum;
++  typedef enum AffectEnum {
++    adAffectCurrent = 1,adAffectGroup = 2,adAffectAll = 3,adAffectAllChapters = 4
++  } AffectEnum;
++  typedef enum ResyncEnum {
++    adResyncUnderlyingValues = 1,adResyncAllValues = 2
++  } ResyncEnum;
++  typedef enum CompareEnum {
++    adCompareLessThan = 0,adCompareEqual = 1,adCompareGreaterThan = 2,adCompareNotEqual = 3,adCompareNotComparable = 4
++  } CompareEnum;
++  typedef enum FilterGroupEnum {
++    adFilterNone = 0,adFilterPendingRecords = 1,adFilterAffectedRecords = 2,adFilterFetchedRecords = 3,adFilterPredicate = 4,
++    adFilterConflictingRecords = 5
++  } FilterGroupEnum;
++  typedef enum SearchDirectionEnum {
++    adSearchForward = 1,adSearchBackward = -1
++  } SearchDirectionEnum;
++  typedef SearchDirectionEnum SearchDirection;
++  typedef enum PersistFormatEnum {
++    adPersistADTG = 0,adPersistXML = 1
++  } PersistFormatEnum;
++  typedef enum StringFormatEnum {
++    adClipString = 2
++  } StringFormatEnum;
++  typedef enum ConnectPromptEnum {
++    adPromptAlways = 1,adPromptComplete = 2,adPromptCompleteRequired = 3,adPromptNever = 4
++  } ConnectPromptEnum;
++  typedef enum ConnectModeEnum {
++    adModeUnknown = 0,adModeRead = 1,adModeWrite = 2,adModeReadWrite = 3,adModeShareDenyRead = 4,adModeShareDenyWrite = 8,adModeShareExclusive = 0xc,
++    adModeShareDenyNone = 0x10,adModeRecursive = 0x400000
++  } ConnectModeEnum;
++  typedef enum RecordCreateOptionsEnum {
++    adCreateCollection = 0x2000,adCreateStructDoc = 0x80000000,adCreateNonCollection = 0,adOpenIfExists = 0x2000000,adCreateOverwrite = 0x4000000,
++    adFailIfNotExists = -1
++  } RecordCreateOptionsEnum;
++  typedef enum RecordOpenOptionsEnum {
++    adOpenRecordUnspecified = -1,adOpenSource = 0x800000,adOpenOutput = 0x800000,adOpenAsync = 0x1000,adDelayFetchStream = 0x4000,
++    adDelayFetchFields = 0x8000,adOpenExecuteCommand = 0x10000
++  } RecordOpenOptionsEnum;
++  typedef enum IsolationLevelEnum {
++    adXactUnspecified = 0xffffffff,adXactChaos = 0x10,adXactReadUncommitted = 0x100,adXactBrowse = 0x100,adXactCursorStability = 0x1000,
++    adXactReadCommitted = 0x1000,adXactRepeatableRead = 0x10000,adXactSerializable = 0x100000,adXactIsolated = 0x100000
++  } IsolationLevelEnum;
++  typedef enum XactAttributeEnum {
++    adXactCommitRetaining = 0x20000,adXactAbortRetaining = 0x40000,adXactAsyncPhaseOne = 0x80000,adXactSyncPhaseOne = 0x100000
++  } XactAttributeEnum;
++  typedef enum PropertyAttributesEnum {
++    adPropNotSupported = 0,adPropRequired = 0x1,adPropOptional = 0x2,adPropRead = 0x200,adPropWrite = 0x400
++  } PropertyAttributesEnum;
++  typedef enum ErrorValueEnum {
++    adErrProviderFailed = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xbb8),
++    adErrInvalidArgument = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xbb9),
++    adErrOpeningFile = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xbba),
++    adErrReadFile = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xbbb),
++    adErrWriteFile = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xbbc),
++    adErrNoCurrentRecord = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xbcd),
++    adErrIllegalOperation = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xc93),
++    adErrCantChangeProvider = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xc94),
++    adErrInTransaction = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xcae),
++    adErrFeatureNotAvailable = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xcb3),
++    adErrItemNotFound = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xcc1),
++    adErrObjectInCollection = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xd27),
++    adErrObjectNotSet = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xd5c),
++    adErrDataConversion = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xd5d),
++    adErrObjectClosed = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe78),
++    adErrObjectOpen = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe79),
++    adErrProviderNotFound = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe7a),
++    adErrBoundToCommand = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe7b),
++    adErrInvalidParamInfo = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe7c),
++    adErrInvalidConnection = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe7d),
++    adErrNotReentrant = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe7e),
++    adErrStillExecuting = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe7f),
++    adErrOperationCancelled = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe80),
++    adErrStillConnecting = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe81),
++    adErrInvalidTransaction = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe82),
++    adErrNotExecuting = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe83),
++    adErrUnsafeOperation = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe84),
++    adwrnSecurityDialog = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe85),
++    adwrnSecurityDialogHeader = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe86),
++    adErrIntegrityViolation = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe87),
++    adErrPermissionDenied = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe88),
++    adErrDataOverflow = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe89),
++    adErrSchemaViolation = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe8a),
++    adErrSignMismatch = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe8b),
++    adErrCantConvertvalue = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe8c),
++    adErrCantCreate = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe8d),
++    adErrColumnNotOnThisRow = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe8e),
++    adErrURLDoesNotExist = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe8f),
++    adErrTreePermissionDenied = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe90),
++    adErrInvalidURL = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe91),
++    adErrResourceLocked = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe92),
++    adErrResourceExists = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe93),
++    adErrCannotComplete = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe94),
++    adErrVolumeNotFound = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe95),
++    adErrOutOfSpace = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe96),
++    adErrResourceOutOfScope = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe97),
++    adErrUnavailable = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe98),
++    adErrURLNamedRowDoesNotExist = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe99),
++    adErrDelResOutOfScope = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe9a),
++    adErrPropInvalidColumn = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe9b),
++    adErrPropInvalidOption = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe9c),
++    adErrPropInvalidValue = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe9d),
++    adErrPropConflicting = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe9e),
++    adErrPropNotAllSettable = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xe9f),
++    adErrPropNotSet = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xea0),
++    adErrPropNotSettable = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xea1),
++    adErrPropNotSupported = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xea2),
++    adErrCatalogNotSet = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xea3),
++    adErrCantChangeConnection = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xea4),
++    adErrFieldsUpdateFailed = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xea5),
++    adErrDenyNotSupported = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xea6),
++    adErrDenyTypeNotSupported = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xea7),
++    adErrProviderNotSpecified = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xea9),
++    adErrConnectionStringTooLong = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_CONTROL,0xeaa)
++  } ErrorValueEnum;
++  typedef enum ParameterAttributesEnum {
++    adParamSigned = 0x10,adParamNullable = 0x40,adParamLong = 0x80
++  } ParameterAttributesEnum;
++  typedef enum ParameterDirectionEnum {
++    adParamUnknown = 0,adParamInput = 0x1,adParamOutput = 0x2,adParamInputOutput = 0x3,adParamReturnValue = 0x4
++  } ParameterDirectionEnum;
++  typedef enum CommandTypeEnum {
++    adCmdUnspecified = -1,adCmdUnknown = 0x8,adCmdText = 0x1,adCmdTable = 0x2,adCmdStoredProc = 0x4,adCmdFile = 0x100,adCmdTableDirect = 0x200
++  } CommandTypeEnum;
++  typedef enum EventStatusEnum {
++    adStatusOK = 0x1,adStatusErrorsOccurred = 0x2,adStatusCantDeny = 0x3,adStatusCancel = 0x4,adStatusUnwantedEvent = 0x5
++  } EventStatusEnum;
++  typedef enum EventReasonEnum {
++    adRsnAddNew = 1,adRsnDelete = 2,adRsnUpdate = 3,adRsnUndoUpdate = 4,adRsnUndoAddNew = 5,adRsnUndoDelete = 6,adRsnRequery = 7,adRsnResynch = 8,
++    adRsnClose = 9,adRsnMove = 10,adRsnFirstChange = 11,adRsnMoveFirst = 12,adRsnMoveNext = 13,adRsnMovePrevious = 14,adRsnMoveLast = 15
++  } EventReasonEnum;
++  typedef enum SchemaEnum {
++    adSchemaProviderSpecific = -1,adSchemaAsserts = 0,adSchemaCatalogs = 1,adSchemaCharacterSets = 2,adSchemaCollations = 3,adSchemaColumns = 4,
++    adSchemaCheckConstraints = 5,adSchemaConstraintColumnUsage = 6,adSchemaConstraintTableUsage = 7,adSchemaKeyColumnUsage = 8,
++    adSchemaReferentialContraints = 9,adSchemaReferentialConstraints = 9,adSchemaTableConstraints = 10,adSchemaColumnsDomainUsage = 11,
++    adSchemaIndexes = 12,adSchemaColumnPrivileges = 13,adSchemaTablePrivileges = 14,adSchemaUsagePrivileges = 15,adSchemaProcedures = 16,
++    adSchemaSchemata = 17,adSchemaSQLLanguages = 18,adSchemaStatistics = 19,adSchemaTables = 20,adSchemaTranslations = 21,adSchemaProviderTypes = 22,
++    adSchemaViews = 23,adSchemaViewColumnUsage = 24,adSchemaViewTableUsage = 25,adSchemaProcedureParameters = 26,adSchemaForeignKeys = 27,
++    adSchemaPrimaryKeys = 28,adSchemaProcedureColumns = 29,adSchemaDBInfoKeywords = 30,adSchemaDBInfoLiterals = 31,adSchemaCubes = 32,
++    adSchemaDimensions = 33,adSchemaHierarchies = 34,adSchemaLevels = 35,adSchemaMeasures = 36,adSchemaProperties = 37,adSchemaMembers = 38,
++    adSchemaTrustees = 39,adSchemaFunctions = 40,adSchemaActions = 41,adSchemaCommands = 42,adSchemaSets = 43
++  } SchemaEnum;
++  typedef enum FieldStatusEnum {
++    adFieldOK = 0,adFieldCantConvertValue = 2,adFieldIsNull = 3,adFieldTruncated = 4,adFieldSignMismatch = 5,adFieldDataOverflow = 6,
++    adFieldCantCreate = 7,adFieldUnavailable = 8,adFieldPermissionDenied = 9,adFieldIntegrityViolation = 10,adFieldSchemaViolation = 11,
++    adFieldBadStatus = 12,adFieldDefault = 13,adFieldIgnore = 15,adFieldDoesNotExist = 16,adFieldInvalidURL = 17,adFieldResourceLocked = 18,
++    adFieldResourceExists = 19,adFieldCannotComplete = 20,adFieldVolumeNotFound = 21,adFieldOutOfSpace = 22,adFieldCannotDeleteSource = 23,
++    adFieldReadOnly = 24,adFieldResourceOutOfScope = 25,adFieldAlreadyExists = 26,adFieldPendingInsert = 0x10000,adFieldPendingDelete = 0x20000,
++    adFieldPendingChange = 0x40000,adFieldPendingUnknown = 0x80000,adFieldPendingUnknownDelete = 0x100000
++  } FieldStatusEnum;
++  typedef enum SeekEnum {
++    adSeekFirstEQ = 0x1,adSeekLastEQ = 0x2,adSeekAfterEQ = 0x4,adSeekAfter = 0x8,adSeekBeforeEQ = 0x10,adSeekBefore = 0x20
++  } SeekEnum;
++
++#ifndef _COMMON_ADC_AND_ADO_PROPS_
++#define _COMMON_ADC_AND_ADO_PROPS_
++  typedef enum ADCPROP_UPDATECRITERIA_ENUM {
++    adCriteriaKey = 0,adCriteriaAllCols = 1,adCriteriaUpdCols = 2,adCriteriaTimeStamp = 3
++  } ADCPROP_UPDATECRITERIA_ENUM;
++  typedef enum ADCPROP_ASYNCTHREADPRIORITY_ENUM {
++    adPriorityLowest = 1,adPriorityBelowNormal = 2,adPriorityNormal = 3,adPriorityAboveNormal = 4,adPriorityHighest = 5
++  } ADCPROP_ASYNCTHREADPRIORITY_ENUM;
++  typedef enum ADCPROP_AUTORECALC_ENUM {
++    adRecalcUpFront = 0,adRecalcAlways = 1
++  } ADCPROP_AUTORECALC_ENUM;
++  typedef enum ADCPROP_UPDATERESYNC_ENUM {
++    adResyncNone = 0,adResyncAutoIncrement = 1,adResyncConflicts = 2,adResyncUpdates = 4,adResyncInserts = 8,adResyncAll = 15
++  } ADCPROP_UPDATERESYNC_ENUM;
++#endif
++  typedef ADCPROP_UPDATERESYNC_ENUM CEResyncEnum;
++  typedef enum MoveRecordOptionsEnum {
++    adMoveUnspecified = -1,adMoveOverWrite = 1,adMoveDontUpdateLinks = 2,adMoveAllowEmulation = 4
++  } MoveRecordOptionsEnum;
++  typedef enum CopyRecordOptionsEnum {
++    adCopyUnspecified = -1,adCopyOverWrite = 1,adCopyAllowEmulation = 4,adCopyNonRecursive = 2
++  } CopyRecordOptionsEnum;
++  typedef enum StreamTypeEnum {
++    adTypeBinary = 1,adTypeText = 2
++  } StreamTypeEnum;
++  typedef enum LineSeparatorEnum {
++    adLF = 10,adCR = 13,adCRLF = -1
++  } LineSeparatorEnum;
++  typedef enum StreamOpenOptionsEnum {
++    adOpenStreamUnspecified = -1,adOpenStreamAsync = 1,adOpenStreamFromRecord = 4
++  } StreamOpenOptionsEnum;
++  typedef enum StreamWriteEnum {
++    adWriteChar = 0,adWriteLine = 1,stWriteChar = 0,stWriteLine = 1
++  } StreamWriteEnum;
++  typedef enum SaveOptionsEnum {
++    adSaveCreateNotExist = 1,adSaveCreateOverWrite = 2
++  } SaveOptionsEnum;
++  typedef enum FieldEnum {
++    adDefaultStream = -1,adRecordURL = -2
++  } FieldEnum;
++  typedef enum StreamReadEnum {
++    adReadAll = -1,adReadLine = -2
++  } StreamReadEnum;
++  typedef enum RecordTypeEnum {
++    adSimpleRecord = 0,adCollectionRecord = 1,adStructDoc = 2
++  } RecordTypeEnum;
++  EXTERN_C const IID LIBID_ADODB;
++
++#ifndef ___ADOCollection_INTERFACE_DEFINED__
++#define ___ADOCollection_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__ADOCollection;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOCollection : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Count(long *c) = 0;
++    virtual HRESULT WINAPI _NewEnum(IUnknown **ppvObject) = 0;
++    virtual HRESULT WINAPI Refresh(void) = 0;
++  };
++#else
++  typedef struct _ADOCollectionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOCollection *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOCollection *This);
++      ULONG (WINAPI *Release)(_ADOCollection *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOCollection *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOCollection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOCollection *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOCollection *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(_ADOCollection *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(_ADOCollection *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(_ADOCollection *This);
++    END_INTERFACE
++  } _ADOCollectionVtbl;
++  struct _ADOCollection {
++    CONST_VTBL struct _ADOCollectionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _ADOCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define _ADOCollection_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define _ADOCollection_Release(This) (This)->lpVtbl -> Release(This)
++#define _ADOCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define _ADOCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _ADOCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _ADOCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Collection_get_Count(This,c) (This)->lpVtbl -> get_Count(This,c)
++#define _ADOCollection__NewEnum(This,ppvObject) (This)->lpVtbl -> _NewEnum(This,ppvObject)
++#define _ADOCollection_Refresh(This) (This)->lpVtbl -> Refresh(This)
++#endif
++#endif
++  HRESULT WINAPI _Collection_get_Count_Proxy(_ADOCollection *This,long *c);
++  void __RPC_STUB _Collection_get_Count_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _ADOCollection__NewEnum_Proxy(_ADOCollection *This,IUnknown **ppvObject);
++  void __RPC_STUB _ADOCollection__NewEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _ADOCollection_Refresh_Proxy(_ADOCollection *This);
++  void __RPC_STUB _ADOCollection_Refresh_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___ADODynaCollection_INTERFACE_DEFINED__
++#define ___ADODynaCollection_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__ADODynaCollection;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADODynaCollection : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI Append(IDispatch *Object) = 0;
++    virtual HRESULT WINAPI Delete(VARIANT Index) = 0;
++  };
++#else
++  typedef struct _ADODynaCollectionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADODynaCollection *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADODynaCollection *This);
++      ULONG (WINAPI *Release)(_ADODynaCollection *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADODynaCollection *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADODynaCollection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADODynaCollection *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADODynaCollection *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(_ADODynaCollection *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(_ADODynaCollection *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(_ADODynaCollection *This);
++      HRESULT (WINAPI *Append)(_ADODynaCollection *This,IDispatch *Object);
++      HRESULT (WINAPI *Delete)(_ADODynaCollection *This,VARIANT Index);
++    END_INTERFACE
++  } _ADODynaCollectionVtbl;
++  struct _ADODynaCollection {
++    CONST_VTBL struct _ADODynaCollectionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _ADODynaCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define _ADODynaCollection_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define _ADODynaCollection_Release(This) (This)->lpVtbl -> Release(This)
++#define _ADODynaCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define _ADODynaCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _ADODynaCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _ADODynaCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _DynaCollection_get_Count(This,c) (This)->lpVtbl -> get_Count(This,c)
++#define _ADODynaCollection__NewEnum(This,ppvObject) (This)->lpVtbl -> _NewEnum(This,ppvObject)
++#define _ADODynaCollection_Refresh(This) (This)->lpVtbl -> Refresh(This)
++#define _ADODynaCollection_Append(This,Object) (This)->lpVtbl -> Append(This,Object)
++#define _ADODynaCollection_Delete(This,Index) (This)->lpVtbl -> Delete(This,Index)
++#endif
++#endif
++  HRESULT WINAPI _ADODynaCollection_Append_Proxy(_ADODynaCollection *This,IDispatch *Object);
++  void __RPC_STUB _ADODynaCollection_Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _ADODynaCollection_Delete_Proxy(_ADODynaCollection *This,VARIANT Index);
++  void __RPC_STUB _ADODynaCollection_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___ADO_INTERFACE_DEFINED__
++#define ___ADO_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__ADO;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADO : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Properties(ADOProperties **ppvObject) = 0;
++  };
++#else
++  typedef struct _ADOVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADO *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADO *This);
++      ULONG (WINAPI *Release)(_ADO *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADO *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADO *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADO *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADO *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(_ADO *This,ADOProperties **ppvObject);
++    END_INTERFACE
++  } _ADOVtbl;
++  struct _ADO {
++    CONST_VTBL struct _ADOVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _ADO_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define _ADO_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define _ADO_Release(This) (This)->lpVtbl -> Release(This)
++#define _ADO_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define _ADO_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _ADO_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _ADO_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _ADO_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI _ADO_get_Properties_Proxy(_ADO *This,ADOProperties **ppvObject);
++  void __RPC_STUB _ADO_get_Properties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Error_INTERFACE_DEFINED__
++#define __Error_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Error;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOError : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Number(long *pl) = 0;
++    virtual HRESULT WINAPI get_Source(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI get_Description(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI get_HelpFile(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI get_HelpContext(long *pl) = 0;
++    virtual HRESULT WINAPI get_SQLState(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI get_NativeError(long *pl) = 0;
++  };
++#else
++  typedef struct ErrorVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOError *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOError *This);
++      ULONG (WINAPI *Release)(ADOError *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOError *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOError *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOError *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOError *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Number)(ADOError *This,long *pl);
++      HRESULT (WINAPI *get_Source)(ADOError *This,BSTR *pbstr);
++      HRESULT (WINAPI *get_Description)(ADOError *This,BSTR *pbstr);
++      HRESULT (WINAPI *get_HelpFile)(ADOError *This,BSTR *pbstr);
++      HRESULT (WINAPI *get_HelpContext)(ADOError *This,long *pl);
++      HRESULT (WINAPI *get_SQLState)(ADOError *This,BSTR *pbstr);
++      HRESULT (WINAPI *get_NativeError)(ADOError *This,long *pl);
++    END_INTERFACE
++  } ErrorVtbl;
++  struct Error {
++    CONST_VTBL struct ErrorVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Error_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Error_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Error_Release(This) (This)->lpVtbl -> Release(This)
++#define Error_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Error_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Error_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Error_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Error_get_Number(This,pl) (This)->lpVtbl -> get_Number(This,pl)
++#define Error_get_Source(This,pbstr) (This)->lpVtbl -> get_Source(This,pbstr)
++#define Error_get_Description(This,pbstr) (This)->lpVtbl -> get_Description(This,pbstr)
++#define Error_get_HelpFile(This,pbstr) (This)->lpVtbl -> get_HelpFile(This,pbstr)
++#define Error_get_HelpContext(This,pl) (This)->lpVtbl -> get_HelpContext(This,pl)
++#define Error_get_SQLState(This,pbstr) (This)->lpVtbl -> get_SQLState(This,pbstr)
++#define Error_get_NativeError(This,pl) (This)->lpVtbl -> get_NativeError(This,pl)
++#endif
++#endif
++  HRESULT WINAPI Error_get_Number_Proxy(ADOError *This,long *pl);
++  void __RPC_STUB Error_get_Number_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Error_get_Source_Proxy(ADOError *This,BSTR *pbstr);
++  void __RPC_STUB Error_get_Source_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Error_get_Description_Proxy(ADOError *This,BSTR *pbstr);
++  void __RPC_STUB Error_get_Description_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Error_get_HelpFile_Proxy(ADOError *This,BSTR *pbstr);
++  void __RPC_STUB Error_get_HelpFile_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Error_get_HelpContext_Proxy(ADOError *This,long *pl);
++  void __RPC_STUB Error_get_HelpContext_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Error_get_SQLState_Proxy(ADOError *This,BSTR *pbstr);
++  void __RPC_STUB Error_get_SQLState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Error_get_NativeError_Proxy(ADOError *This,long *pl);
++  void __RPC_STUB Error_get_NativeError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Errors_INTERFACE_DEFINED__
++#define __Errors_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Errors;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOErrors : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Index,ADOError **ppvObject) = 0;
++    virtual HRESULT WINAPI Clear(void) = 0;
++  };
++#else
++  typedef struct ErrorsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOErrors *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOErrors *This);
++      ULONG (WINAPI *Release)(ADOErrors *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOErrors *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOErrors *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOErrors *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOErrors *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOErrors *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOErrors *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOErrors *This);
++      HRESULT (WINAPI *get_Item)(ADOErrors *This,VARIANT Index,ADOError **ppvObject);
++      HRESULT (WINAPI *Clear)(ADOErrors *This);
++    END_INTERFACE
++  } ErrorsVtbl;
++  struct Errors {
++    CONST_VTBL struct ErrorsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Errors_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Errors_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Errors_Release(This) (This)->lpVtbl -> Release(This)
++#define Errors_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Errors_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Errors_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Errors_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Errors_get_Count(This,c) (This)->lpVtbl -> get_Count(This,c)
++#define Errors__NewEnum(This,ppvObject) (This)->lpVtbl -> _NewEnum(This,ppvObject)
++#define Errors_Refresh(This) (This)->lpVtbl -> Refresh(This)
++#define Errors_get_Item(This,Index,ppvObject) (This)->lpVtbl -> get_Item(This,Index,ppvObject)
++#define Errors_Clear(This) (This)->lpVtbl -> Clear(This)
++#endif
++#endif
++  HRESULT WINAPI Errors_get_Item_Proxy(ADOErrors *This,VARIANT Index,ADOError **ppvObject);
++  void __RPC_STUB Errors_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Errors_Clear_Proxy(ADOErrors *This);
++  void __RPC_STUB Errors_Clear_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Command15_INTERFACE_DEFINED__
++#define __Command15_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Command15;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct Command15 : public _ADO {
++  public:
++    virtual HRESULT WINAPI get_ActiveConnection(_ADOConnection **ppvObject) = 0;
++    virtual HRESULT WINAPI putref_ActiveConnection(_ADOConnection *pCon) = 0;
++    virtual HRESULT WINAPI put_ActiveConnection(VARIANT vConn) = 0;
++    virtual HRESULT WINAPI get_CommandText(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI put_CommandText(BSTR bstr) = 0;
++    virtual HRESULT WINAPI get_CommandTimeout(LONG *pl) = 0;
++    virtual HRESULT WINAPI put_CommandTimeout(LONG Timeout) = 0;
++    virtual HRESULT WINAPI get_Prepared(VARIANT_BOOL *pfPrepared) = 0;
++    virtual HRESULT WINAPI put_Prepared(VARIANT_BOOL fPrepared) = 0;
++    virtual HRESULT WINAPI Execute(VARIANT *RecordsAffected,VARIANT *Parameters,long Options,_ADORecordset **ppirs) = 0;
++    virtual HRESULT WINAPI CreateParameter(BSTR Name,DataTypeEnum Type,ParameterDirectionEnum Direction,ADO_LONGPTR Size,VARIANT Value,_ADOParameter **ppiprm) = 0;
++    virtual HRESULT WINAPI get_Parameters(ADOParameters **ppvObject) = 0;
++    virtual HRESULT WINAPI put_CommandType(CommandTypeEnum lCmdType) = 0;
++    virtual HRESULT WINAPI get_CommandType(CommandTypeEnum *plCmdType) = 0;
++    virtual HRESULT WINAPI get_Name(BSTR *pbstrName) = 0;
++    virtual HRESULT WINAPI put_Name(BSTR bstrName) = 0;
++  };
++#else
++  typedef struct Command15Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(Command15 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(Command15 *This);
++      ULONG (WINAPI *Release)(Command15 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(Command15 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(Command15 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(Command15 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(Command15 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(Command15 *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ActiveConnection)(Command15 *This,_ADOConnection **ppvObject);
++      HRESULT (WINAPI *putref_ActiveADOConnection)(Command15 *This,_ADOConnection *pCon);
++      HRESULT (WINAPI *put_ActiveConnection)(Command15 *This,VARIANT vConn);
++      HRESULT (WINAPI *get_CommandText)(Command15 *This,BSTR *pbstr);
++      HRESULT (WINAPI *put_CommandText)(Command15 *This,BSTR bstr);
++      HRESULT (WINAPI *get_CommandTimeout)(Command15 *This,LONG *pl);
++      HRESULT (WINAPI *put_CommandTimeout)(Command15 *This,LONG Timeout);
++      HRESULT (WINAPI *get_Prepared)(Command15 *This,VARIANT_BOOL *pfPrepared);
++      HRESULT (WINAPI *put_Prepared)(Command15 *This,VARIANT_BOOL fPrepared);
++      HRESULT (WINAPI *Execute)(Command15 *This,VARIANT *RecordsAffected,VARIANT *Parameters,long Options,_ADORecordset **ppirs);
++      HRESULT (WINAPI *CreateParameter)(Command15 *This,BSTR Name,DataTypeEnum Type,ParameterDirectionEnum Direction,ADO_LONGPTR Size,VARIANT Value,_ADOParameter **ppiprm);
++      HRESULT (WINAPI *get_Parameters)(Command15 *This,ADOParameters **ppvObject);
++      HRESULT (WINAPI *put_CommandType)(Command15 *This,CommandTypeEnum lCmdType);
++      HRESULT (WINAPI *get_CommandType)(Command15 *This,CommandTypeEnum *plCmdType);
++      HRESULT (WINAPI *get_Name)(Command15 *This,BSTR *pbstrName);
++      HRESULT (WINAPI *put_Name)(Command15 *This,BSTR bstrName);
++    END_INTERFACE
++  } Command15Vtbl;
++  struct Command15 {
++    CONST_VTBL struct Command15Vtbl *lpVtbl;
++  };
++
++#ifdef COBJMACROS
++#define Command15_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Command15_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Command15_Release(This) (This)->lpVtbl -> Release(This)
++#define Command15_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Command15_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Command15_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Command15_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Command15_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define Command15_get_ActiveConnection(This,ppvObject) (This)->lpVtbl -> get_ActiveConnection(This,ppvObject)
++#define Command15_putref_ActiveConnection(This,pCon) (This)->lpVtbl -> putref_ActiveConnection(This,pCon)
++#define Command15_put_ActiveConnection(This,vConn) (This)->lpVtbl -> put_ActiveConnection(This,vConn)
++#define Command15_get_CommandText(This,pbstr) (This)->lpVtbl -> get_CommandText(This,pbstr)
++#define Command15_put_CommandText(This,bstr) (This)->lpVtbl -> put_CommandText(This,bstr)
++#define Command15_get_CommandTimeout(This,pl) (This)->lpVtbl -> get_CommandTimeout(This,pl)
++#define Command15_put_CommandTimeout(This,Timeout) (This)->lpVtbl -> put_CommandTimeout(This,Timeout)
++#define Command15_get_Prepared(This,pfPrepared) (This)->lpVtbl -> get_Prepared(This,pfPrepared)
++#define Command15_put_Prepared(This,fPrepared) (This)->lpVtbl -> put_Prepared(This,fPrepared)
++#define Command15_Execute(This,RecordsAffected,Parameters,Options,ppirs) (This)->lpVtbl -> Execute(This,RecordsAffected,Parameters,Options,ppirs)
++#define Command15_CreateParameter(This,Name,Type,Direction,Size,Value,ppiprm) (This)->lpVtbl -> CreateParameter(This,Name,Type,Direction,Size,Value,ppiprm)
++#define Command15_get_Parameters(This,ppvObject) (This)->lpVtbl -> get_Parameters(This,ppvObject)
++#define Command15_put_CommandType(This,lCmdType) (This)->lpVtbl -> put_CommandType(This,lCmdType)
++#define Command15_get_CommandType(This,plCmdType) (This)->lpVtbl -> get_CommandType(This,plCmdType)
++#define Command15_get_Name(This,pbstrName) (This)->lpVtbl -> get_Name(This,pbstrName)
++#define Command15_put_Name(This,bstrName) (This)->lpVtbl -> put_Name(This,bstrName)
++#endif
++#endif
++  HRESULT WINAPI Command15_get_ActiveConnection_Proxy(Command15 *This,_ADOConnection **ppvObject);
++  void __RPC_STUB Command15_get_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_putref_ActiveConnection_Proxy(Command15 *This,_ADOConnection *pCon);
++  void __RPC_STUB Command15_putref_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_put_ActiveConnection_Proxy(Command15 *This,VARIANT vConn);
++  void __RPC_STUB Command15_put_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_get_CommandText_Proxy(Command15 *This,BSTR *pbstr);
++  void __RPC_STUB Command15_get_CommandText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_put_CommandText_Proxy(Command15 *This,BSTR bstr);
++  void __RPC_STUB Command15_put_CommandText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_get_CommandTimeout_Proxy(Command15 *This,LONG *pl);
++  void __RPC_STUB Command15_get_CommandTimeout_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_put_CommandTimeout_Proxy(Command15 *This,LONG Timeout);
++  void __RPC_STUB Command15_put_CommandTimeout_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_get_Prepared_Proxy(Command15 *This,VARIANT_BOOL *pfPrepared);
++  void __RPC_STUB Command15_get_Prepared_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_put_Prepared_Proxy(Command15 *This,VARIANT_BOOL fPrepared);
++  void __RPC_STUB Command15_put_Prepared_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_Execute_Proxy(Command15 *This,VARIANT *RecordsAffected,VARIANT *Parameters,long Options,_ADORecordset **ppirs);
++  void __RPC_STUB Command15_Execute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_CreateParameter_Proxy(Command15 *This,BSTR Name,DataTypeEnum Type,ParameterDirectionEnum Direction,ADO_LONGPTR Size,VARIANT Value,_ADOParameter **ppiprm);
++  void __RPC_STUB Command15_CreateParameter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_get_Parameters_Proxy(Command15 *This,ADOParameters **ppvObject);
++  void __RPC_STUB Command15_get_Parameters_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_put_CommandType_Proxy(Command15 *This,CommandTypeEnum lCmdType);
++  void __RPC_STUB Command15_put_CommandType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_get_CommandType_Proxy(Command15 *This,CommandTypeEnum *plCmdType);
++  void __RPC_STUB Command15_get_CommandType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_get_Name_Proxy(Command15 *This,BSTR *pbstrName);
++  void __RPC_STUB Command15_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command15_put_Name_Proxy(Command15 *This,BSTR bstrName);
++  void __RPC_STUB Command15_put_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Command25_INTERFACE_DEFINED__
++#define __Command25_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Command25;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct Command25 : public Command15 {
++  public:
++    virtual HRESULT WINAPI get_State(LONG *plObjState) = 0;
++    virtual HRESULT WINAPI Cancel(void) = 0;
++  };
++#else
++  typedef struct Command25Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(Command25 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(Command25 *This);
++      ULONG (WINAPI *Release)(Command25 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(Command25 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(Command25 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(Command25 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(Command25 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(Command25 *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ActiveConnection)(Command25 *This,_ADOConnection **ppvObject);
++      HRESULT (WINAPI *putref_ActiveADOConnection)(Command25 *This,_ADOConnection *pCon);
++      HRESULT (WINAPI *put_ActiveConnection)(Command25 *This,VARIANT vConn);
++      HRESULT (WINAPI *get_CommandText)(Command25 *This,BSTR *pbstr);
++      HRESULT (WINAPI *put_CommandText)(Command25 *This,BSTR bstr);
++      HRESULT (WINAPI *get_CommandTimeout)(Command25 *This,LONG *pl);
++      HRESULT (WINAPI *put_CommandTimeout)(Command25 *This,LONG Timeout);
++      HRESULT (WINAPI *get_Prepared)(Command25 *This,VARIANT_BOOL *pfPrepared);
++      HRESULT (WINAPI *put_Prepared)(Command25 *This,VARIANT_BOOL fPrepared);
++      HRESULT (WINAPI *Execute)(Command25 *This,VARIANT *RecordsAffected,VARIANT *Parameters,long Options,_ADORecordset **ppirs);
++      HRESULT (WINAPI *CreateParameter)(Command25 *This,BSTR Name,DataTypeEnum Type,ParameterDirectionEnum Direction,ADO_LONGPTR Size,VARIANT Value,_ADOParameter **ppiprm);
++      HRESULT (WINAPI *get_Parameters)(Command25 *This,ADOParameters **ppvObject);
++      HRESULT (WINAPI *put_CommandType)(Command25 *This,CommandTypeEnum lCmdType);
++      HRESULT (WINAPI *get_CommandType)(Command25 *This,CommandTypeEnum *plCmdType);
++      HRESULT (WINAPI *get_Name)(Command25 *This,BSTR *pbstrName);
++      HRESULT (WINAPI *put_Name)(Command25 *This,BSTR bstrName);
++      HRESULT (WINAPI *get_State)(Command25 *This,LONG *plObjState);
++      HRESULT (WINAPI *Cancel)(Command25 *This);
++    END_INTERFACE
++  } Command25Vtbl;
++  struct Command25 {
++    CONST_VTBL struct Command25Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Command25_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Command25_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Command25_Release(This) (This)->lpVtbl -> Release(This)
++#define Command25_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Command25_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Command25_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Command25_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Command25_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define Command25_get_ActiveConnection(This,ppvObject) (This)->lpVtbl -> get_ActiveConnection(This,ppvObject)
++#define Command25_putref_ActiveConnection(This,pCon) (This)->lpVtbl -> putref_ActiveConnection(This,pCon)
++#define Command25_put_ActiveConnection(This,vConn) (This)->lpVtbl -> put_ActiveConnection(This,vConn)
++#define Command25_get_CommandText(This,pbstr) (This)->lpVtbl -> get_CommandText(This,pbstr)
++#define Command25_put_CommandText(This,bstr) (This)->lpVtbl -> put_CommandText(This,bstr)
++#define Command25_get_CommandTimeout(This,pl) (This)->lpVtbl -> get_CommandTimeout(This,pl)
++#define Command25_put_CommandTimeout(This,Timeout) (This)->lpVtbl -> put_CommandTimeout(This,Timeout)
++#define Command25_get_Prepared(This,pfPrepared) (This)->lpVtbl -> get_Prepared(This,pfPrepared)
++#define Command25_put_Prepared(This,fPrepared) (This)->lpVtbl -> put_Prepared(This,fPrepared)
++#define Command25_Execute(This,RecordsAffected,Parameters,Options,ppirs) (This)->lpVtbl -> Execute(This,RecordsAffected,Parameters,Options,ppirs)
++#define Command25_CreateParameter(This,Name,Type,Direction,Size,Value,ppiprm) (This)->lpVtbl -> CreateParameter(This,Name,Type,Direction,Size,Value,ppiprm)
++#define Command25_get_Parameters(This,ppvObject) (This)->lpVtbl -> get_Parameters(This,ppvObject)
++#define Command25_put_CommandType(This,lCmdType) (This)->lpVtbl -> put_CommandType(This,lCmdType)
++#define Command25_get_CommandType(This,plCmdType) (This)->lpVtbl -> get_CommandType(This,plCmdType)
++#define Command25_get_Name(This,pbstrName) (This)->lpVtbl -> get_Name(This,pbstrName)
++#define Command25_put_Name(This,bstrName) (This)->lpVtbl -> put_Name(This,bstrName)
++#define Command25_get_State(This,plObjState) (This)->lpVtbl -> get_State(This,plObjState)
++#define Command25_Cancel(This) (This)->lpVtbl -> Cancel(This)
++#endif
++#endif
++  HRESULT WINAPI Command25_get_State_Proxy(Command25 *This,LONG *plObjState);
++  void __RPC_STUB Command25_get_State_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Command25_Cancel_Proxy(Command25 *This);
++  void __RPC_STUB Command25_Cancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___Command_INTERFACE_DEFINED__
++#define ___Command_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Command;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOCommand : public Command25 {
++  public:
++    virtual HRESULT WINAPI putref_CommandStream(IUnknown *pStream) = 0;
++    virtual HRESULT WINAPI get_CommandStream(VARIANT *pvStream) = 0;
++    virtual HRESULT WINAPI put_Dialect(BSTR bstrDialect) = 0;
++    virtual HRESULT WINAPI get_Dialect(BSTR *pbstrDialect) = 0;
++    virtual HRESULT WINAPI put_NamedParameters(VARIANT_BOOL fNamedParameters) = 0;
++    virtual HRESULT WINAPI get_NamedParameters(VARIANT_BOOL *pfNamedParameters) = 0;
++  };
++#else
++  typedef struct _CommandVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOCommand *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOCommand *This);
++      ULONG (WINAPI *Release)(_ADOCommand *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOCommand *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOCommand *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOCommand *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOCommand *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(_ADOCommand *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ActiveConnection)(_ADOCommand *This,_ADOConnection **ppvObject);
++      HRESULT (WINAPI *putref_ActiveADOConnection)(_ADOCommand *This,_ADOConnection *pCon);
++      HRESULT (WINAPI *put_ActiveConnection)(_ADOCommand *This,VARIANT vConn);
++      HRESULT (WINAPI *get_CommandText)(_ADOCommand *This,BSTR *pbstr);
++      HRESULT (WINAPI *put_CommandText)(_ADOCommand *This,BSTR bstr);
++      HRESULT (WINAPI *get_CommandTimeout)(_ADOCommand *This,LONG *pl);
++      HRESULT (WINAPI *put_CommandTimeout)(_ADOCommand *This,LONG Timeout);
++      HRESULT (WINAPI *get_Prepared)(_ADOCommand *This,VARIANT_BOOL *pfPrepared);
++      HRESULT (WINAPI *put_Prepared)(_ADOCommand *This,VARIANT_BOOL fPrepared);
++      HRESULT (WINAPI *Execute)(_ADOCommand *This,VARIANT *RecordsAffected,VARIANT *Parameters,long Options,_ADORecordset **ppirs);
++      HRESULT (WINAPI *CreateParameter)(_ADOCommand *This,BSTR Name,DataTypeEnum Type,ParameterDirectionEnum Direction,ADO_LONGPTR Size,VARIANT Value,_ADOParameter **ppiprm);
++      HRESULT (WINAPI *get_Parameters)(_ADOCommand *This,ADOParameters **ppvObject);
++      HRESULT (WINAPI *put_CommandType)(_ADOCommand *This,CommandTypeEnum lCmdType);
++      HRESULT (WINAPI *get_CommandType)(_ADOCommand *This,CommandTypeEnum *plCmdType);
++      HRESULT (WINAPI *get_Name)(_ADOCommand *This,BSTR *pbstrName);
++      HRESULT (WINAPI *put_Name)(_ADOCommand *This,BSTR bstrName);
++      HRESULT (WINAPI *get_State)(_ADOCommand *This,LONG *plObjState);
++      HRESULT (WINAPI *Cancel)(_ADOCommand *This);
++      HRESULT (WINAPI *putref_CommandADOStream)(_ADOCommand *This,IUnknown *pStream);
++      HRESULT (WINAPI *get_CommandStream)(_ADOCommand *This,VARIANT *pvStream);
++      HRESULT (WINAPI *put_Dialect)(_ADOCommand *This,BSTR bstrDialect);
++      HRESULT (WINAPI *get_Dialect)(_ADOCommand *This,BSTR *pbstrDialect);
++      HRESULT (WINAPI *put_NamedParameters)(_ADOCommand *This,VARIANT_BOOL fNamedParameters);
++      HRESULT (WINAPI *get_NamedParameters)(_ADOCommand *This,VARIANT_BOOL *pfNamedParameters);
++    END_INTERFACE
++  } _CommandVtbl;
++  struct _Command {
++    CONST_VTBL struct _CommandVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Command_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define _Command_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define _Command_Release(This) (This)->lpVtbl -> Release(This)
++#define _Command_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define _Command_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Command_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Command_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Command_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define _Command_get_ActiveConnection(This,ppvObject) (This)->lpVtbl -> get_ActiveConnection(This,ppvObject)
++#define _Command_putref_ActiveConnection(This,pCon) (This)->lpVtbl -> putref_ActiveConnection(This,pCon)
++#define _Command_put_ActiveConnection(This,vConn) (This)->lpVtbl -> put_ActiveConnection(This,vConn)
++#define _Command_get_CommandText(This,pbstr) (This)->lpVtbl -> get_CommandText(This,pbstr)
++#define _Command_put_CommandText(This,bstr) (This)->lpVtbl -> put_CommandText(This,bstr)
++#define _Command_get_CommandTimeout(This,pl) (This)->lpVtbl -> get_CommandTimeout(This,pl)
++#define _Command_put_CommandTimeout(This,Timeout) (This)->lpVtbl -> put_CommandTimeout(This,Timeout)
++#define _Command_get_Prepared(This,pfPrepared) (This)->lpVtbl -> get_Prepared(This,pfPrepared)
++#define _Command_put_Prepared(This,fPrepared) (This)->lpVtbl -> put_Prepared(This,fPrepared)
++#define _Command_Execute(This,RecordsAffected,Parameters,Options,ppirs) (This)->lpVtbl -> Execute(This,RecordsAffected,Parameters,Options,ppirs)
++#define _Command_CreateParameter(This,Name,Type,Direction,Size,Value,ppiprm) (This)->lpVtbl -> CreateParameter(This,Name,Type,Direction,Size,Value,ppiprm)
++#define _Command_get_Parameters(This,ppvObject) (This)->lpVtbl -> get_Parameters(This,ppvObject)
++#define _Command_put_CommandType(This,lCmdType) (This)->lpVtbl -> put_CommandType(This,lCmdType)
++#define _Command_get_CommandType(This,plCmdType) (This)->lpVtbl -> get_CommandType(This,plCmdType)
++#define _Command_get_Name(This,pbstrName) (This)->lpVtbl -> get_Name(This,pbstrName)
++#define _Command_put_Name(This,bstrName) (This)->lpVtbl -> put_Name(This,bstrName)
++#define _Command_get_State(This,plObjState) (This)->lpVtbl -> get_State(This,plObjState)
++#define _Command_Cancel(This) (This)->lpVtbl -> Cancel(This)
++#define _Command_putref_CommandStream(This,pStream) (This)->lpVtbl -> putref_CommandStream(This,pStream)
++#define _Command_get_CommandStream(This,pvStream) (This)->lpVtbl -> get_CommandStream(This,pvStream)
++#define _Command_put_Dialect(This,bstrDialect) (This)->lpVtbl -> put_Dialect(This,bstrDialect)
++#define _Command_get_Dialect(This,pbstrDialect) (This)->lpVtbl -> get_Dialect(This,pbstrDialect)
++#define _Command_put_NamedParameters(This,fNamedParameters) (This)->lpVtbl -> put_NamedParameters(This,fNamedParameters)
++#define _Command_get_NamedParameters(This,pfNamedParameters) (This)->lpVtbl -> get_NamedParameters(This,pfNamedParameters)
++#endif
++#endif
++  HRESULT WINAPI _Command_putref_CommandStream_Proxy(_ADOCommand *This,IUnknown *pStream);
++  void __RPC_STUB _Command_putref_CommandStream_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Command_get_CommandStream_Proxy(_ADOCommand *This,VARIANT *pvStream);
++  void __RPC_STUB _Command_get_CommandStream_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Command_put_Dialect_Proxy(_ADOCommand *This,BSTR bstrDialect);
++  void __RPC_STUB _Command_put_Dialect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Command_get_Dialect_Proxy(_ADOCommand *This,BSTR *pbstrDialect);
++  void __RPC_STUB _Command_get_Dialect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Command_put_NamedParameters_Proxy(_ADOCommand *This,VARIANT_BOOL fNamedParameters);
++  void __RPC_STUB _Command_put_NamedParameters_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Command_get_NamedParameters_Proxy(_ADOCommand *This,VARIANT_BOOL *pfNamedParameters);
++  void __RPC_STUB _Command_get_NamedParameters_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ConnectionEventsVt_INTERFACE_DEFINED__
++#define __ConnectionEventsVt_INTERFACE_DEFINED__
++
++  EXTERN_C const IID IID_ConnectionEventsVt;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ConnectionEventsVt : public IUnknown {
++  public:
++    virtual HRESULT WINAPI InfoMessage(ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection) = 0;
++    virtual HRESULT WINAPI BeginTransComplete(LONG TransactionLevel,ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection) = 0;
++    virtual HRESULT WINAPI CommitTransComplete(ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection) = 0;
++    virtual HRESULT WINAPI RollbackTransComplete(ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection) = 0;
++    virtual HRESULT WINAPI WillExecute(BSTR *Source,CursorTypeEnum *CursorType,LockTypeEnum *LockType,long *Options,EventStatusEnum *adStatus,_ADOCommand *pCommand,_ADORecordset *pRecordset,_ADOConnection *pConnection) = 0;
++    virtual HRESULT WINAPI ExecuteComplete(LONG RecordsAffected,ADOError *pError,EventStatusEnum *adStatus,_ADOCommand *pCommand,_ADORecordset *pRecordset,_ADOConnection *pConnection) = 0;
++    virtual HRESULT WINAPI WillConnect(BSTR *ConnectionString,BSTR *UserID,BSTR *Password,long *Options,EventStatusEnum *adStatus,_ADOConnection *pConnection) = 0;
++    virtual HRESULT WINAPI ConnectComplete(ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection) = 0;
++    virtual HRESULT WINAPI Disconnect(EventStatusEnum *adStatus,_ADOConnection *pConnection) = 0;
++  };
++#else
++  typedef struct ConnectionEventsVtVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ConnectionEventsVt *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ConnectionEventsVt *This);
++      ULONG (WINAPI *Release)(ConnectionEventsVt *This);
++      HRESULT (WINAPI *InfoMessage)(ConnectionEventsVt *This,ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++      HRESULT (WINAPI *BeginTransComplete)(ConnectionEventsVt *This,LONG TransactionLevel,ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++      HRESULT (WINAPI *CommitTransComplete)(ConnectionEventsVt *This,ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++      HRESULT (WINAPI *RollbackTransComplete)(ConnectionEventsVt *This,ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++      HRESULT (WINAPI *WillExecute)(ConnectionEventsVt *This,BSTR *Source,CursorTypeEnum *CursorType,LockTypeEnum *LockType,long *Options,EventStatusEnum *adStatus,_ADOCommand *pCommand,_ADORecordset *pRecordset,_ADOConnection *pConnection);
++      HRESULT (WINAPI *ExecuteComplete)(ConnectionEventsVt *This,LONG RecordsAffected,ADOError *pError,EventStatusEnum *adStatus,_ADOCommand *pCommand,_ADORecordset *pRecordset,_ADOConnection *pConnection);
++      HRESULT (WINAPI *WillConnect)(ConnectionEventsVt *This,BSTR *ConnectionString,BSTR *UserID,BSTR *Password,long *Options,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++      HRESULT (WINAPI *ConnectComplete)(ConnectionEventsVt *This,ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++      HRESULT (WINAPI *Disconnect)(ConnectionEventsVt *This,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++    END_INTERFACE
++  } ConnectionEventsVtVtbl;
++  struct ConnectionEventsVt {
++    CONST_VTBL struct ConnectionEventsVtVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ConnectionEventsVt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define ConnectionEventsVt_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define ConnectionEventsVt_Release(This) (This)->lpVtbl -> Release(This)
++#define ConnectionEventsVt_InfoMessage(This,pError,adStatus,pConnection) (This)->lpVtbl -> InfoMessage(This,pError,adStatus,pConnection)
++#define ConnectionEventsVt_BeginTransComplete(This,TransactionLevel,pError,adStatus,pConnection) (This)->lpVtbl -> BeginTransComplete(This,TransactionLevel,pError,adStatus,pConnection)
++#define ConnectionEventsVt_CommitTransComplete(This,pError,adStatus,pConnection) (This)->lpVtbl -> CommitTransComplete(This,pError,adStatus,pConnection)
++#define ConnectionEventsVt_RollbackTransComplete(This,pError,adStatus,pConnection) (This)->lpVtbl -> RollbackTransComplete(This,pError,adStatus,pConnection)
++#define ConnectionEventsVt_WillExecute(This,Source,CursorType,LockType,Options,adStatus,pCommand,pRecordset,pConnection) (This)->lpVtbl -> WillExecute(This,Source,CursorType,LockType,Options,adStatus,pCommand,pRecordset,pConnection)
++#define ConnectionEventsVt_ExecuteComplete(This,RecordsAffected,pError,adStatus,pCommand,pRecordset,pConnection) (This)->lpVtbl -> ExecuteComplete(This,RecordsAffected,pError,adStatus,pCommand,pRecordset,pConnection)
++#define ConnectionEventsVt_WillConnect(This,ConnectionString,UserID,Password,Options,adStatus,pConnection) (This)->lpVtbl -> WillConnect(This,ConnectionString,UserID,Password,Options,adStatus,pConnection)
++#define ConnectionEventsVt_ConnectComplete(This,pError,adStatus,pConnection) (This)->lpVtbl -> ConnectComplete(This,pError,adStatus,pConnection)
++#define ConnectionEventsVt_Disconnect(This,adStatus,pConnection) (This)->lpVtbl -> Disconnect(This,adStatus,pConnection)
++#endif
++#endif
++  HRESULT WINAPI ConnectionEventsVt_InfoMessage_Proxy(ConnectionEventsVt *This,ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++  void __RPC_STUB ConnectionEventsVt_InfoMessage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ConnectionEventsVt_BeginTransComplete_Proxy(ConnectionEventsVt *This,LONG TransactionLevel,ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++  void __RPC_STUB ConnectionEventsVt_BeginTransComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ConnectionEventsVt_CommitTransComplete_Proxy(ConnectionEventsVt *This,ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++  void __RPC_STUB ConnectionEventsVt_CommitTransComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ConnectionEventsVt_RollbackTransComplete_Proxy(ConnectionEventsVt *This,ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++  void __RPC_STUB ConnectionEventsVt_RollbackTransComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ConnectionEventsVt_WillExecute_Proxy(ConnectionEventsVt *This,BSTR *Source,CursorTypeEnum *CursorType,LockTypeEnum *LockType,long *Options,EventStatusEnum *adStatus,_ADOCommand *pCommand,_ADORecordset *pRecordset,_ADOConnection *pConnection);
++  void __RPC_STUB ConnectionEventsVt_WillExecute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ConnectionEventsVt_ExecuteComplete_Proxy(ConnectionEventsVt *This,LONG RecordsAffected,ADOError *pError,EventStatusEnum *adStatus,_ADOCommand *pCommand,_ADORecordset *pRecordset,_ADOConnection *pConnection);
++  void __RPC_STUB ConnectionEventsVt_ExecuteComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ConnectionEventsVt_WillConnect_Proxy(ConnectionEventsVt *This,BSTR *ConnectionString,BSTR *UserID,BSTR *Password,long *Options,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++  void __RPC_STUB ConnectionEventsVt_WillConnect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ConnectionEventsVt_ConnectComplete_Proxy(ConnectionEventsVt *This,ADOError *pError,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++  void __RPC_STUB ConnectionEventsVt_ConnectComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ConnectionEventsVt_Disconnect_Proxy(ConnectionEventsVt *This,EventStatusEnum *adStatus,_ADOConnection *pConnection);
++  void __RPC_STUB ConnectionEventsVt_Disconnect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __RecordsetEventsVt_INTERFACE_DEFINED__
++#define __RecordsetEventsVt_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_RecordsetEventsVt;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct RecordsetEventsVt : public IUnknown {
++  public:
++    virtual HRESULT WINAPI WillChangeField(LONG cFields,VARIANT Fields,EventStatusEnum *adStatus,_ADORecordset *pRecordset) = 0;
++    virtual HRESULT WINAPI FieldChangeComplete(LONG cFields,VARIANT Fields,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset) = 0;
++    virtual HRESULT WINAPI WillChangeRecord(EventReasonEnum adReason,LONG cRecords,EventStatusEnum *adStatus,_ADORecordset *pRecordset) = 0;
++    virtual HRESULT WINAPI RecordChangeComplete(EventReasonEnum adReason,LONG cRecords,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset) = 0;
++    virtual HRESULT WINAPI WillChangeRecordset(EventReasonEnum adReason,EventStatusEnum *adStatus,_ADORecordset *pRecordset) = 0;
++    virtual HRESULT WINAPI RecordsetChangeComplete(EventReasonEnum adReason,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset) = 0;
++    virtual HRESULT WINAPI WillMove(EventReasonEnum adReason,EventStatusEnum *adStatus,_ADORecordset *pRecordset) = 0;
++    virtual HRESULT WINAPI MoveComplete(EventReasonEnum adReason,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset) = 0;
++    virtual HRESULT WINAPI EndOfRecordset(VARIANT_BOOL *fMoreData,EventStatusEnum *adStatus,_ADORecordset *pRecordset) = 0;
++    virtual HRESULT WINAPI FetchProgress(long Progress,long MaxProgress,EventStatusEnum *adStatus,_ADORecordset *pRecordset) = 0;
++    virtual HRESULT WINAPI FetchComplete(ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset) = 0;
++  };
++#else
++  typedef struct RecordsetEventsVtVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(RecordsetEventsVt *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(RecordsetEventsVt *This);
++      ULONG (WINAPI *Release)(RecordsetEventsVt *This);
++      HRESULT (WINAPI *WillChangeADOField)(RecordsetEventsVt *This,LONG cFields,VARIANT Fields,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++      HRESULT (WINAPI *FieldChangeComplete)(RecordsetEventsVt *This,LONG cFields,VARIANT Fields,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++      HRESULT (WINAPI *WillChangeADORecord)(RecordsetEventsVt *This,EventReasonEnum adReason,LONG cRecords,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++      HRESULT (WINAPI *RecordChangeComplete)(RecordsetEventsVt *This,EventReasonEnum adReason,LONG cRecords,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++      HRESULT (WINAPI *WillChangeADORecordset)(RecordsetEventsVt *This,EventReasonEnum adReason,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++      HRESULT (WINAPI *RecordsetChangeComplete)(RecordsetEventsVt *This,EventReasonEnum adReason,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++      HRESULT (WINAPI *WillMove)(RecordsetEventsVt *This,EventReasonEnum adReason,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++      HRESULT (WINAPI *MoveComplete)(RecordsetEventsVt *This,EventReasonEnum adReason,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++      HRESULT (WINAPI *EndOfADORecordset)(RecordsetEventsVt *This,VARIANT_BOOL *fMoreData,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++      HRESULT (WINAPI *FetchProgress)(RecordsetEventsVt *This,long Progress,long MaxProgress,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++      HRESULT (WINAPI *FetchComplete)(RecordsetEventsVt *This,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++    END_INTERFACE
++  } RecordsetEventsVtVtbl;
++  struct RecordsetEventsVt {
++    CONST_VTBL struct RecordsetEventsVtVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define RecordsetEventsVt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define RecordsetEventsVt_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define RecordsetEventsVt_Release(This) (This)->lpVtbl -> Release(This)
++#define RecordsetEventsVt_WillChangeField(This,cFields,Fields,adStatus,pRecordset) (This)->lpVtbl -> WillChangeField(This,cFields,Fields,adStatus,pRecordset)
++#define RecordsetEventsVt_FieldChangeComplete(This,cFields,Fields,pError,adStatus,pRecordset) (This)->lpVtbl -> FieldChangeComplete(This,cFields,Fields,pError,adStatus,pRecordset)
++#define RecordsetEventsVt_WillChangeRecord(This,adReason,cRecords,adStatus,pRecordset) (This)->lpVtbl -> WillChangeRecord(This,adReason,cRecords,adStatus,pRecordset)
++#define RecordsetEventsVt_RecordChangeComplete(This,adReason,cRecords,pError,adStatus,pRecordset) (This)->lpVtbl -> RecordChangeComplete(This,adReason,cRecords,pError,adStatus,pRecordset)
++#define RecordsetEventsVt_WillChangeRecordset(This,adReason,adStatus,pRecordset) (This)->lpVtbl -> WillChangeRecordset(This,adReason,adStatus,pRecordset)
++#define RecordsetEventsVt_RecordsetChangeComplete(This,adReason,pError,adStatus,pRecordset) (This)->lpVtbl -> RecordsetChangeComplete(This,adReason,pError,adStatus,pRecordset)
++#define RecordsetEventsVt_WillMove(This,adReason,adStatus,pRecordset) (This)->lpVtbl -> WillMove(This,adReason,adStatus,pRecordset)
++#define RecordsetEventsVt_MoveComplete(This,adReason,pError,adStatus,pRecordset) (This)->lpVtbl -> MoveComplete(This,adReason,pError,adStatus,pRecordset)
++#define RecordsetEventsVt_EndOfRecordset(This,fMoreData,adStatus,pRecordset) (This)->lpVtbl -> EndOfRecordset(This,fMoreData,adStatus,pRecordset)
++#define RecordsetEventsVt_FetchProgress(This,Progress,MaxProgress,adStatus,pRecordset) (This)->lpVtbl -> FetchProgress(This,Progress,MaxProgress,adStatus,pRecordset)
++#define RecordsetEventsVt_FetchComplete(This,pError,adStatus,pRecordset) (This)->lpVtbl -> FetchComplete(This,pError,adStatus,pRecordset)
++#endif
++#endif
++  HRESULT WINAPI RecordsetEventsVt_WillChangeField_Proxy(RecordsetEventsVt *This,LONG cFields,VARIANT Fields,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++  void __RPC_STUB RecordsetEventsVt_WillChangeField_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI RecordsetEventsVt_FieldChangeComplete_Proxy(RecordsetEventsVt *This,LONG cFields,VARIANT Fields,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++  void __RPC_STUB RecordsetEventsVt_FieldChangeComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI RecordsetEventsVt_WillChangeRecord_Proxy(RecordsetEventsVt *This,EventReasonEnum adReason,LONG cRecords,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++  void __RPC_STUB RecordsetEventsVt_WillChangeRecord_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI RecordsetEventsVt_RecordChangeComplete_Proxy(RecordsetEventsVt *This,EventReasonEnum adReason,LONG cRecords,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++  void __RPC_STUB RecordsetEventsVt_RecordChangeComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI RecordsetEventsVt_WillChangeRecordset_Proxy(RecordsetEventsVt *This,EventReasonEnum adReason,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++  void __RPC_STUB RecordsetEventsVt_WillChangeRecordset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI RecordsetEventsVt_RecordsetChangeComplete_Proxy(RecordsetEventsVt *This,EventReasonEnum adReason,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++  void __RPC_STUB RecordsetEventsVt_RecordsetChangeComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI RecordsetEventsVt_WillMove_Proxy(RecordsetEventsVt *This,EventReasonEnum adReason,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++  void __RPC_STUB RecordsetEventsVt_WillMove_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI RecordsetEventsVt_MoveComplete_Proxy(RecordsetEventsVt *This,EventReasonEnum adReason,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++  void __RPC_STUB RecordsetEventsVt_MoveComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI RecordsetEventsVt_EndOfRecordset_Proxy(RecordsetEventsVt *This,VARIANT_BOOL *fMoreData,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++  void __RPC_STUB RecordsetEventsVt_EndOfRecordset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI RecordsetEventsVt_FetchProgress_Proxy(RecordsetEventsVt *This,long Progress,long MaxProgress,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++  void __RPC_STUB RecordsetEventsVt_FetchProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI RecordsetEventsVt_FetchComplete_Proxy(RecordsetEventsVt *This,ADOError *pError,EventStatusEnum *adStatus,_ADORecordset *pRecordset);
++  void __RPC_STUB RecordsetEventsVt_FetchComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ConnectionEvents_DISPINTERFACE_DEFINED__
++#define __ConnectionEvents_DISPINTERFACE_DEFINED__
++  EXTERN_C const IID DIID_ConnectionEvents;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ConnectionEvents : public IDispatch {
++  };
++#else
++  typedef struct ConnectionEventsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ConnectionEvents *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ConnectionEvents *This);
++      ULONG (WINAPI *Release)(ConnectionEvents *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ConnectionEvents *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ConnectionEvents *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ConnectionEvents *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ConnectionEvents *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++    END_INTERFACE
++  } ConnectionEventsVtbl;
++  struct ConnectionEvents {
++    CONST_VTBL struct ConnectionEventsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ConnectionEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define ConnectionEvents_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define ConnectionEvents_Release(This) (This)->lpVtbl -> Release(This)
++#define ConnectionEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define ConnectionEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define ConnectionEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define ConnectionEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#endif
++#endif
++#endif
++
++#ifndef __RecordsetEvents_DISPINTERFACE_DEFINED__
++#define __RecordsetEvents_DISPINTERFACE_DEFINED__
++  EXTERN_C const IID DIID_RecordsetEvents;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct RecordsetEvents : public IDispatch {
++  };
++#else
++  typedef struct RecordsetEventsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(RecordsetEvents *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(RecordsetEvents *This);
++      ULONG (WINAPI *Release)(RecordsetEvents *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(RecordsetEvents *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(RecordsetEvents *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(RecordsetEvents *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(RecordsetEvents *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++    END_INTERFACE
++  } RecordsetEventsVtbl;
++  struct RecordsetEvents {
++    CONST_VTBL struct RecordsetEventsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define RecordsetEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define RecordsetEvents_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define RecordsetEvents_Release(This) (This)->lpVtbl -> Release(This)
++#define RecordsetEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define RecordsetEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define RecordsetEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define RecordsetEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#endif
++#endif
++#endif
++
++#ifndef __Connection15_INTERFACE_DEFINED__
++#define __Connection15_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Connection15;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct Connection15 : public _ADO {
++  public:
++    virtual HRESULT WINAPI get_ConnectionString(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI put_ConnectionString(BSTR bstr) = 0;
++    virtual HRESULT WINAPI get_CommandTimeout(LONG *plTimeout) = 0;
++    virtual HRESULT WINAPI put_CommandTimeout(LONG lTimeout) = 0;
++    virtual HRESULT WINAPI get_ConnectionTimeout(LONG *plTimeout) = 0;
++    virtual HRESULT WINAPI put_ConnectionTimeout(LONG lTimeout) = 0;
++    virtual HRESULT WINAPI get_Version(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI Close(void) = 0;
++    virtual HRESULT WINAPI Execute(BSTR CommandText,VARIANT *RecordsAffected,long Options,_ADORecordset **ppiRset) = 0;
++    virtual HRESULT WINAPI BeginTrans(long *TransactionLevel) = 0;
++    virtual HRESULT WINAPI CommitTrans(void) = 0;
++    virtual HRESULT WINAPI RollbackTrans(void) = 0;
++    virtual HRESULT WINAPI Open(BSTR ConnectionString = NULL,BSTR UserID = NULL,BSTR Password = NULL,long Options = adOptionUnspecified) = 0;
++    virtual HRESULT WINAPI get_Errors(ADOErrors **ppvObject) = 0;
++    virtual HRESULT WINAPI get_DefaultDatabase(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI put_DefaultDatabase(BSTR bstr) = 0;
++    virtual HRESULT WINAPI get_IsolationLevel(IsolationLevelEnum *Level) = 0;
++    virtual HRESULT WINAPI put_IsolationLevel(IsolationLevelEnum Level) = 0;
++    virtual HRESULT WINAPI get_Attributes(long *plAttr) = 0;
++    virtual HRESULT WINAPI put_Attributes(long lAttr) = 0;
++    virtual HRESULT WINAPI get_CursorLocation(CursorLocationEnum *plCursorLoc) = 0;
++    virtual HRESULT WINAPI put_CursorLocation(CursorLocationEnum lCursorLoc) = 0;
++    virtual HRESULT WINAPI get_Mode(ConnectModeEnum *plMode) = 0;
++    virtual HRESULT WINAPI put_Mode(ConnectModeEnum lMode) = 0;
++    virtual HRESULT WINAPI get_Provider(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI put_Provider(BSTR Provider) = 0;
++    virtual HRESULT WINAPI get_State(LONG *plObjState) = 0;
++    virtual HRESULT WINAPI OpenSchema(SchemaEnum Schema,VARIANT Restrictions,VARIANT SchemaID,_ADORecordset **pprset) = 0;
++  };
++#else
++  typedef struct Connection15Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(Connection15 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(Connection15 *This);
++      ULONG (WINAPI *Release)(Connection15 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(Connection15 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(Connection15 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(Connection15 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(Connection15 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(Connection15 *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ConnectionString)(Connection15 *This,BSTR *pbstr);
++      HRESULT (WINAPI *put_ConnectionString)(Connection15 *This,BSTR bstr);
++      HRESULT (WINAPI *get_CommandTimeout)(Connection15 *This,LONG *plTimeout);
++      HRESULT (WINAPI *put_CommandTimeout)(Connection15 *This,LONG lTimeout);
++      HRESULT (WINAPI *get_ConnectionTimeout)(Connection15 *This,LONG *plTimeout);
++      HRESULT (WINAPI *put_ConnectionTimeout)(Connection15 *This,LONG lTimeout);
++      HRESULT (WINAPI *get_Version)(Connection15 *This,BSTR *pbstr);
++      HRESULT (WINAPI *Close)(Connection15 *This);
++      HRESULT (WINAPI *Execute)(Connection15 *This,BSTR CommandText,VARIANT *RecordsAffected,long Options,_ADORecordset **ppiRset);
++      HRESULT (WINAPI *BeginTrans)(Connection15 *This,long *TransactionLevel);
++      HRESULT (WINAPI *CommitTrans)(Connection15 *This);
++      HRESULT (WINAPI *RollbackTrans)(Connection15 *This);
++      HRESULT (WINAPI *Open)(Connection15 *This,BSTR ConnectionString,BSTR UserID,BSTR Password,long Options);
++      HRESULT (WINAPI *get_Errors)(Connection15 *This,ADOErrors **ppvObject);
++      HRESULT (WINAPI *get_DefaultDatabase)(Connection15 *This,BSTR *pbstr);
++      HRESULT (WINAPI *put_DefaultDatabase)(Connection15 *This,BSTR bstr);
++      HRESULT (WINAPI *get_IsolationLevel)(Connection15 *This,IsolationLevelEnum *Level);
++      HRESULT (WINAPI *put_IsolationLevel)(Connection15 *This,IsolationLevelEnum Level);
++      HRESULT (WINAPI *get_Attributes)(Connection15 *This,long *plAttr);
++      HRESULT (WINAPI *put_Attributes)(Connection15 *This,long lAttr);
++      HRESULT (WINAPI *get_CursorLocation)(Connection15 *This,CursorLocationEnum *plCursorLoc);
++      HRESULT (WINAPI *put_CursorLocation)(Connection15 *This,CursorLocationEnum lCursorLoc);
++      HRESULT (WINAPI *get_Mode)(Connection15 *This,ConnectModeEnum *plMode);
++      HRESULT (WINAPI *put_Mode)(Connection15 *This,ConnectModeEnum lMode);
++      HRESULT (WINAPI *get_Provider)(Connection15 *This,BSTR *pbstr);
++      HRESULT (WINAPI *put_Provider)(Connection15 *This,BSTR Provider);
++      HRESULT (WINAPI *get_State)(Connection15 *This,LONG *plObjState);
++      HRESULT (WINAPI *OpenSchema)(Connection15 *This,SchemaEnum Schema,VARIANT Restrictions,VARIANT SchemaID,_ADORecordset **pprset);
++    END_INTERFACE
++  } Connection15Vtbl;
++  struct Connection15 {
++    CONST_VTBL struct Connection15Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Connection15_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Connection15_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Connection15_Release(This) (This)->lpVtbl -> Release(This)
++#define Connection15_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Connection15_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Connection15_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Connection15_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Connection15_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define Connection15_get_ConnectionString(This,pbstr) (This)->lpVtbl -> get_ConnectionString(This,pbstr)
++#define Connection15_put_ConnectionString(This,bstr) (This)->lpVtbl -> put_ConnectionString(This,bstr)
++#define Connection15_get_CommandTimeout(This,plTimeout) (This)->lpVtbl -> get_CommandTimeout(This,plTimeout)
++#define Connection15_put_CommandTimeout(This,lTimeout) (This)->lpVtbl -> put_CommandTimeout(This,lTimeout)
++#define Connection15_get_ConnectionTimeout(This,plTimeout) (This)->lpVtbl -> get_ConnectionTimeout(This,plTimeout)
++#define Connection15_put_ConnectionTimeout(This,lTimeout) (This)->lpVtbl -> put_ConnectionTimeout(This,lTimeout)
++#define Connection15_get_Version(This,pbstr) (This)->lpVtbl -> get_Version(This,pbstr)
++#define Connection15_Close(This) (This)->lpVtbl -> Close(This)
++#define Connection15_Execute(This,CommandText,RecordsAffected,Options,ppiRset) (This)->lpVtbl -> Execute(This,CommandText,RecordsAffected,Options,ppiRset)
++#define Connection15_BeginTrans(This,TransactionLevel) (This)->lpVtbl -> BeginTrans(This,TransactionLevel)
++#define Connection15_CommitTrans(This) (This)->lpVtbl -> CommitTrans(This)
++#define Connection15_RollbackTrans(This) (This)->lpVtbl -> RollbackTrans(This)
++#define Connection15_Open(This,ConnectionString,UserID,Password,Options) (This)->lpVtbl -> Open(This,ConnectionString,UserID,Password,Options)
++#define Connection15_get_Errors(This,ppvObject) (This)->lpVtbl -> get_Errors(This,ppvObject)
++#define Connection15_get_DefaultDatabase(This,pbstr) (This)->lpVtbl -> get_DefaultDatabase(This,pbstr)
++#define Connection15_put_DefaultDatabase(This,bstr) (This)->lpVtbl -> put_DefaultDatabase(This,bstr)
++#define Connection15_get_IsolationLevel(This,Level) (This)->lpVtbl -> get_IsolationLevel(This,Level)
++#define Connection15_put_IsolationLevel(This,Level) (This)->lpVtbl -> put_IsolationLevel(This,Level)
++#define Connection15_get_Attributes(This,plAttr) (This)->lpVtbl -> get_Attributes(This,plAttr)
++#define Connection15_put_Attributes(This,lAttr) (This)->lpVtbl -> put_Attributes(This,lAttr)
++#define Connection15_get_CursorLocation(This,plCursorLoc) (This)->lpVtbl -> get_CursorLocation(This,plCursorLoc)
++#define Connection15_put_CursorLocation(This,lCursorLoc) (This)->lpVtbl -> put_CursorLocation(This,lCursorLoc)
++#define Connection15_get_Mode(This,plMode) (This)->lpVtbl -> get_Mode(This,plMode)
++#define Connection15_put_Mode(This,lMode) (This)->lpVtbl -> put_Mode(This,lMode)
++#define Connection15_get_Provider(This,pbstr) (This)->lpVtbl -> get_Provider(This,pbstr)
++#define Connection15_put_Provider(This,Provider) (This)->lpVtbl -> put_Provider(This,Provider)
++#define Connection15_get_State(This,plObjState) (This)->lpVtbl -> get_State(This,plObjState)
++#define Connection15_OpenSchema(This,Schema,Restrictions,SchemaID,pprset) (This)->lpVtbl -> OpenSchema(This,Schema,Restrictions,SchemaID,pprset)
++#endif
++#endif
++  HRESULT WINAPI Connection15_get_ConnectionString_Proxy(Connection15 *This,BSTR *pbstr);
++  void __RPC_STUB Connection15_get_ConnectionString_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_put_ConnectionString_Proxy(Connection15 *This,BSTR bstr);
++  void __RPC_STUB Connection15_put_ConnectionString_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_get_CommandTimeout_Proxy(Connection15 *This,LONG *plTimeout);
++  void __RPC_STUB Connection15_get_CommandTimeout_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_put_CommandTimeout_Proxy(Connection15 *This,LONG lTimeout);
++  void __RPC_STUB Connection15_put_CommandTimeout_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_get_ConnectionTimeout_Proxy(Connection15 *This,LONG *plTimeout);
++  void __RPC_STUB Connection15_get_ConnectionTimeout_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_put_ConnectionTimeout_Proxy(Connection15 *This,LONG lTimeout);
++  void __RPC_STUB Connection15_put_ConnectionTimeout_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_get_Version_Proxy(Connection15 *This,BSTR *pbstr);
++  void __RPC_STUB Connection15_get_Version_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_Close_Proxy(Connection15 *This);
++  void __RPC_STUB Connection15_Close_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_Execute_Proxy(Connection15 *This,BSTR CommandText,VARIANT *RecordsAffected,long Options,_ADORecordset **ppiRset);
++  void __RPC_STUB Connection15_Execute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_BeginTrans_Proxy(Connection15 *This,long *TransactionLevel);
++  void __RPC_STUB Connection15_BeginTrans_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_CommitTrans_Proxy(Connection15 *This);
++  void __RPC_STUB Connection15_CommitTrans_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_RollbackTrans_Proxy(Connection15 *This);
++  void __RPC_STUB Connection15_RollbackTrans_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_Open_Proxy(Connection15 *This,BSTR ConnectionString,BSTR UserID,BSTR Password,long Options);
++  void __RPC_STUB Connection15_Open_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_get_Errors_Proxy(Connection15 *This,ADOErrors **ppvObject);
++  void __RPC_STUB Connection15_get_Errors_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_get_DefaultDatabase_Proxy(Connection15 *This,BSTR *pbstr);
++  void __RPC_STUB Connection15_get_DefaultDatabase_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_put_DefaultDatabase_Proxy(Connection15 *This,BSTR bstr);
++  void __RPC_STUB Connection15_put_DefaultDatabase_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_get_IsolationLevel_Proxy(Connection15 *This,IsolationLevelEnum *Level);
++  void __RPC_STUB Connection15_get_IsolationLevel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_put_IsolationLevel_Proxy(Connection15 *This,IsolationLevelEnum Level);
++  void __RPC_STUB Connection15_put_IsolationLevel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_get_Attributes_Proxy(Connection15 *This,long *plAttr);
++  void __RPC_STUB Connection15_get_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_put_Attributes_Proxy(Connection15 *This,long lAttr);
++  void __RPC_STUB Connection15_put_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_get_CursorLocation_Proxy(Connection15 *This,CursorLocationEnum *plCursorLoc);
++  void __RPC_STUB Connection15_get_CursorLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_put_CursorLocation_Proxy(Connection15 *This,CursorLocationEnum lCursorLoc);
++  void __RPC_STUB Connection15_put_CursorLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_get_Mode_Proxy(Connection15 *This,ConnectModeEnum *plMode);
++  void __RPC_STUB Connection15_get_Mode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_put_Mode_Proxy(Connection15 *This,ConnectModeEnum lMode);
++  void __RPC_STUB Connection15_put_Mode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_get_Provider_Proxy(Connection15 *This,BSTR *pbstr);
++  void __RPC_STUB Connection15_get_Provider_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_put_Provider_Proxy(Connection15 *This,BSTR Provider);
++  void __RPC_STUB Connection15_put_Provider_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_get_State_Proxy(Connection15 *This,LONG *plObjState);
++  void __RPC_STUB Connection15_get_State_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Connection15_OpenSchema_Proxy(Connection15 *This,SchemaEnum Schema,VARIANT Restrictions,VARIANT SchemaID,_ADORecordset **pprset);
++  void __RPC_STUB Connection15_OpenSchema_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___Connection_INTERFACE_DEFINED__
++#define ___Connection_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Connection;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOConnection : public Connection15 {
++  public:
++    virtual HRESULT WINAPI Cancel(void) = 0;
++  };
++#else
++  typedef struct _ConnectionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOConnection *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOConnection *This);
++      ULONG (WINAPI *Release)(_ADOConnection *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOConnection *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOConnection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOConnection *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOConnection *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(_ADOConnection *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ConnectionString)(_ADOConnection *This,BSTR *pbstr);
++      HRESULT (WINAPI *put_ConnectionString)(_ADOConnection *This,BSTR bstr);
++      HRESULT (WINAPI *get_CommandTimeout)(_ADOConnection *This,LONG *plTimeout);
++      HRESULT (WINAPI *put_CommandTimeout)(_ADOConnection *This,LONG lTimeout);
++      HRESULT (WINAPI *get_ConnectionTimeout)(_ADOConnection *This,LONG *plTimeout);
++      HRESULT (WINAPI *put_ConnectionTimeout)(_ADOConnection *This,LONG lTimeout);
++      HRESULT (WINAPI *get_Version)(_ADOConnection *This,BSTR *pbstr);
++      HRESULT (WINAPI *Close)(_ADOConnection *This);
++      HRESULT (WINAPI *Execute)(_ADOConnection *This,BSTR CommandText,VARIANT *RecordsAffected,long Options,_ADORecordset **ppiRset);
++      HRESULT (WINAPI *BeginTrans)(_ADOConnection *This,long *TransactionLevel);
++      HRESULT (WINAPI *CommitTrans)(_ADOConnection *This);
++      HRESULT (WINAPI *RollbackTrans)(_ADOConnection *This);
++      HRESULT (WINAPI *Open)(_ADOConnection *This,BSTR ConnectionString,BSTR UserID,BSTR Password,long Options);
++      HRESULT (WINAPI *get_Errors)(_ADOConnection *This,ADOErrors **ppvObject);
++      HRESULT (WINAPI *get_DefaultDatabase)(_ADOConnection *This,BSTR *pbstr);
++      HRESULT (WINAPI *put_DefaultDatabase)(_ADOConnection *This,BSTR bstr);
++      HRESULT (WINAPI *get_IsolationLevel)(_ADOConnection *This,IsolationLevelEnum *Level);
++      HRESULT (WINAPI *put_IsolationLevel)(_ADOConnection *This,IsolationLevelEnum Level);
++      HRESULT (WINAPI *get_Attributes)(_ADOConnection *This,long *plAttr);
++      HRESULT (WINAPI *put_Attributes)(_ADOConnection *This,long lAttr);
++      HRESULT (WINAPI *get_CursorLocation)(_ADOConnection *This,CursorLocationEnum *plCursorLoc);
++      HRESULT (WINAPI *put_CursorLocation)(_ADOConnection *This,CursorLocationEnum lCursorLoc);
++      HRESULT (WINAPI *get_Mode)(_ADOConnection *This,ConnectModeEnum *plMode);
++      HRESULT (WINAPI *put_Mode)(_ADOConnection *This,ConnectModeEnum lMode);
++      HRESULT (WINAPI *get_Provider)(_ADOConnection *This,BSTR *pbstr);
++      HRESULT (WINAPI *put_Provider)(_ADOConnection *This,BSTR Provider);
++      HRESULT (WINAPI *get_State)(_ADOConnection *This,LONG *plObjState);
++      HRESULT (WINAPI *OpenSchema)(_ADOConnection *This,SchemaEnum Schema,VARIANT Restrictions,VARIANT SchemaID,_ADORecordset **pprset);
++      HRESULT (WINAPI *Cancel)(_ADOConnection *This);
++    END_INTERFACE
++  } _ConnectionVtbl;
++  struct _Connection {
++    CONST_VTBL struct _ConnectionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Connection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define _Connection_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define _Connection_Release(This) (This)->lpVtbl -> Release(This)
++#define _Connection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define _Connection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Connection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Connection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Connection_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define _Connection_get_ConnectionString(This,pbstr) (This)->lpVtbl -> get_ConnectionString(This,pbstr)
++#define _Connection_put_ConnectionString(This,bstr) (This)->lpVtbl -> put_ConnectionString(This,bstr)
++#define _Connection_get_CommandTimeout(This,plTimeout) (This)->lpVtbl -> get_CommandTimeout(This,plTimeout)
++#define _Connection_put_CommandTimeout(This,lTimeout) (This)->lpVtbl -> put_CommandTimeout(This,lTimeout)
++#define _Connection_get_ConnectionTimeout(This,plTimeout) (This)->lpVtbl -> get_ConnectionTimeout(This,plTimeout)
++#define _Connection_put_ConnectionTimeout(This,lTimeout) (This)->lpVtbl -> put_ConnectionTimeout(This,lTimeout)
++#define _Connection_get_Version(This,pbstr) (This)->lpVtbl -> get_Version(This,pbstr)
++#define _Connection_Close(This) (This)->lpVtbl -> Close(This)
++#define _Connection_Execute(This,CommandText,RecordsAffected,Options,ppiRset) (This)->lpVtbl -> Execute(This,CommandText,RecordsAffected,Options,ppiRset)
++#define _Connection_BeginTrans(This,TransactionLevel) (This)->lpVtbl -> BeginTrans(This,TransactionLevel)
++#define _Connection_CommitTrans(This) (This)->lpVtbl -> CommitTrans(This)
++#define _Connection_RollbackTrans(This) (This)->lpVtbl -> RollbackTrans(This)
++#define _Connection_Open(This,ConnectionString,UserID,Password,Options) (This)->lpVtbl -> Open(This,ConnectionString,UserID,Password,Options)
++#define _Connection_get_Errors(This,ppvObject) (This)->lpVtbl -> get_Errors(This,ppvObject)
++#define _Connection_get_DefaultDatabase(This,pbstr) (This)->lpVtbl -> get_DefaultDatabase(This,pbstr)
++#define _Connection_put_DefaultDatabase(This,bstr) (This)->lpVtbl -> put_DefaultDatabase(This,bstr)
++#define _Connection_get_IsolationLevel(This,Level) (This)->lpVtbl -> get_IsolationLevel(This,Level)
++#define _Connection_put_IsolationLevel(This,Level) (This)->lpVtbl -> put_IsolationLevel(This,Level)
++#define _Connection_get_Attributes(This,plAttr) (This)->lpVtbl -> get_Attributes(This,plAttr)
++#define _Connection_put_Attributes(This,lAttr) (This)->lpVtbl -> put_Attributes(This,lAttr)
++#define _Connection_get_CursorLocation(This,plCursorLoc) (This)->lpVtbl -> get_CursorLocation(This,plCursorLoc)
++#define _Connection_put_CursorLocation(This,lCursorLoc) (This)->lpVtbl -> put_CursorLocation(This,lCursorLoc)
++#define _Connection_get_Mode(This,plMode) (This)->lpVtbl -> get_Mode(This,plMode)
++#define _Connection_put_Mode(This,lMode) (This)->lpVtbl -> put_Mode(This,lMode)
++#define _Connection_get_Provider(This,pbstr) (This)->lpVtbl -> get_Provider(This,pbstr)
++#define _Connection_put_Provider(This,Provider) (This)->lpVtbl -> put_Provider(This,Provider)
++#define _Connection_get_State(This,plObjState) (This)->lpVtbl -> get_State(This,plObjState)
++#define _Connection_OpenSchema(This,Schema,Restrictions,SchemaID,pprset) (This)->lpVtbl -> OpenSchema(This,Schema,Restrictions,SchemaID,pprset)
++#define _Connection_Cancel(This) (This)->lpVtbl -> Cancel(This)
++#endif
++#endif
++  HRESULT WINAPI _Connection_Cancel_Proxy(_ADOConnection *This);
++  void __RPC_STUB _Connection_Cancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ADOConnectionConstruction15_INTERFACE_DEFINED__
++#define __ADOConnectionConstruction15_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ADOConnectionConstruction15;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOConnectionConstruction15 : public IUnknown {
++  public:
++    virtual HRESULT WINAPI get_DSO(IUnknown **ppDSO) = 0;
++    virtual HRESULT WINAPI get_Session(IUnknown **ppSession) = 0;
++    virtual HRESULT WINAPI WrapDSOandSession(IUnknown *pDSO,IUnknown *pSession) = 0;
++  };
++#else
++  typedef struct ADOConnectionConstruction15Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOConnectionConstruction15 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOConnectionConstruction15 *This);
++      ULONG (WINAPI *Release)(ADOConnectionConstruction15 *This);
++      HRESULT (WINAPI *get_DSO)(ADOConnectionConstruction15 *This,IUnknown **ppDSO);
++      HRESULT (WINAPI *get_Session)(ADOConnectionConstruction15 *This,IUnknown **ppSession);
++      HRESULT (WINAPI *WrapDSOandSession)(ADOConnectionConstruction15 *This,IUnknown *pDSO,IUnknown *pSession);
++    END_INTERFACE
++  } ADOConnectionConstruction15Vtbl;
++  struct ADOConnectionConstruction15 {
++    CONST_VTBL struct ADOConnectionConstruction15Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ADOConnectionConstruction15_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define ADOConnectionConstruction15_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define ADOConnectionConstruction15_Release(This) (This)->lpVtbl -> Release(This)
++#define ADOConnectionConstruction15_get_DSO(This,ppDSO) (This)->lpVtbl -> get_DSO(This,ppDSO)
++#define ADOConnectionConstruction15_get_Session(This,ppSession) (This)->lpVtbl -> get_Session(This,ppSession)
++#define ADOConnectionConstruction15_WrapDSOandSession(This,pDSO,pSession) (This)->lpVtbl -> WrapDSOandSession(This,pDSO,pSession)
++#endif
++#endif
++  HRESULT WINAPI ADOConnectionConstruction15_get_DSO_Proxy(ADOConnectionConstruction15 *This,IUnknown **ppDSO);
++  void __RPC_STUB ADOConnectionConstruction15_get_DSO_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ADOConnectionConstruction15_get_Session_Proxy(ADOConnectionConstruction15 *This,IUnknown **ppSession);
++  void __RPC_STUB ADOConnectionConstruction15_get_Session_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ADOConnectionConstruction15_WrapDSOandSession_Proxy(ADOConnectionConstruction15 *This,IUnknown *pDSO,IUnknown *pSession);
++  void __RPC_STUB ADOConnectionConstruction15_WrapDSOandSession_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ADOConnectionConstruction_INTERFACE_DEFINED__
++#define __ADOConnectionConstruction_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ADOConnectionConstruction;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOConnectionConstruction : public ADOConnectionConstruction15 {
++  public:
++  };
++#else
++  typedef struct ADOConnectionConstructionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOConnectionConstruction *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOConnectionConstruction *This);
++      ULONG (WINAPI *Release)(ADOConnectionConstruction *This);
++      HRESULT (WINAPI *get_DSO)(ADOConnectionConstruction *This,IUnknown **ppDSO);
++      HRESULT (WINAPI *get_Session)(ADOConnectionConstruction *This,IUnknown **ppSession);
++      HRESULT (WINAPI *WrapDSOandSession)(ADOConnectionConstruction *This,IUnknown *pDSO,IUnknown *pSession);
++    END_INTERFACE
++  } ADOConnectionConstructionVtbl;
++  struct ADOConnectionConstruction {
++    CONST_VTBL struct ADOConnectionConstructionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ADOConnectionConstruction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define ADOConnectionConstruction_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define ADOConnectionConstruction_Release(This) (This)->lpVtbl -> Release(This)
++#define ADOConnectionConstruction_get_DSO(This,ppDSO) (This)->lpVtbl -> get_DSO(This,ppDSO)
++#define ADOConnectionConstruction_get_Session(This,ppSession) (This)->lpVtbl -> get_Session(This,ppSession)
++#define ADOConnectionConstruction_WrapDSOandSession(This,pDSO,pSession) (This)->lpVtbl -> WrapDSOandSession(This,pDSO,pSession)
++#endif
++#endif
++#endif
++  EXTERN_C const CLSID CLSID_Connection;
++#ifdef __cplusplus
++  //Connection;
++#endif
++
++#ifndef ___Record_INTERFACE_DEFINED__
++#define ___Record_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Record;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADORecord : public _ADO {
++  public:
++    virtual HRESULT WINAPI get_ActiveConnection(VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI put_ActiveConnection(BSTR bstrConn) = 0;
++    virtual HRESULT WINAPI putref_ActiveConnection(_ADOConnection *Con) = 0;
++    virtual HRESULT WINAPI get_State(ObjectStateEnum *pState) = 0;
++    virtual HRESULT WINAPI get_Source(VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI put_Source(BSTR Source) = 0;
++    virtual HRESULT WINAPI putref_Source(IDispatch *Source) = 0;
++    virtual HRESULT WINAPI get_Mode(ConnectModeEnum *pMode) = 0;
++    virtual HRESULT WINAPI put_Mode(ConnectModeEnum Mode) = 0;
++    virtual HRESULT WINAPI get_ParentURL(BSTR *pbstrParentURL) = 0;
++    virtual HRESULT WINAPI MoveRecord(BSTR Source,BSTR Destination,BSTR UserName,BSTR Password,MoveRecordOptionsEnum Options,VARIANT_BOOL Async,BSTR *pbstrNewURL) = 0;
++    virtual HRESULT WINAPI CopyRecord(BSTR Source,BSTR Destination,BSTR UserName,BSTR Password,CopyRecordOptionsEnum Options,VARIANT_BOOL Async,BSTR *pbstrNewURL) = 0;
++    virtual HRESULT WINAPI DeleteRecord(BSTR Source = NULL,VARIANT_BOOL Async = 0) = 0;
++    virtual HRESULT WINAPI Open(VARIANT Source,VARIANT ActiveConnection,ConnectModeEnum Mode = adModeUnknown,RecordCreateOptionsEnum CreateOptions = adFailIfNotExists,RecordOpenOptionsEnum Options = adOpenRecordUnspecified,BSTR UserName = NULL,BSTR Password = NULL) = 0;
++    virtual HRESULT WINAPI Close(void) = 0;
++    virtual HRESULT WINAPI get_Fields(ADOFields **ppFlds) = 0;
++    virtual HRESULT WINAPI get_RecordType(RecordTypeEnum *pType) = 0;
++    virtual HRESULT WINAPI GetChildren(_ADORecordset **ppRSet) = 0;
++    virtual HRESULT WINAPI Cancel(void) = 0;
++  };
++#else
++  typedef struct _RecordVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADORecord *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADORecord *This);
++      ULONG (WINAPI *Release)(_ADORecord *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADORecord *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADORecord *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADORecord *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADORecord *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(_ADORecord *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ActiveConnection)(_ADORecord *This,VARIANT *pvar);
++      HRESULT (WINAPI *put_ActiveConnection)(_ADORecord *This,BSTR bstrConn);
++      HRESULT (WINAPI *putref_ActiveADOConnection)(_ADORecord *This,_ADOConnection *Con);
++      HRESULT (WINAPI *get_State)(_ADORecord *This,ObjectStateEnum *pState);
++      HRESULT (WINAPI *get_Source)(_ADORecord *This,VARIANT *pvar);
++      HRESULT (WINAPI *put_Source)(_ADORecord *This,BSTR Source);
++      HRESULT (WINAPI *putref_Source)(_ADORecord *This,IDispatch *Source);
++      HRESULT (WINAPI *get_Mode)(_ADORecord *This,ConnectModeEnum *pMode);
++      HRESULT (WINAPI *put_Mode)(_ADORecord *This,ConnectModeEnum Mode);
++      HRESULT (WINAPI *get_ParentURL)(_ADORecord *This,BSTR *pbstrParentURL);
++      HRESULT (WINAPI *MoveADORecord)(_ADORecord *This,BSTR Source,BSTR Destination,BSTR UserName,BSTR Password,MoveRecordOptionsEnum Options,VARIANT_BOOL Async,BSTR *pbstrNewURL);
++      HRESULT (WINAPI *CopyADORecord)(_ADORecord *This,BSTR Source,BSTR Destination,BSTR UserName,BSTR Password,CopyRecordOptionsEnum Options,VARIANT_BOOL Async,BSTR *pbstrNewURL);
++      HRESULT (WINAPI *DeleteADORecord)(_ADORecord *This,BSTR Source,VARIANT_BOOL Async);
++      HRESULT (WINAPI *Open)(_ADORecord *This,VARIANT Source,VARIANT ActiveConnection,ConnectModeEnum Mode,RecordCreateOptionsEnum CreateOptions,RecordOpenOptionsEnum Options,BSTR UserName,BSTR Password);
++      HRESULT (WINAPI *Close)(_ADORecord *This);
++      HRESULT (WINAPI *get_Fields)(_ADORecord *This,ADOFields **ppFlds);
++      HRESULT (WINAPI *get_RecordType)(_ADORecord *This,RecordTypeEnum *pType);
++      HRESULT (WINAPI *GetChildren)(_ADORecord *This,_ADORecordset **ppRSet);
++      HRESULT (WINAPI *Cancel)(_ADORecord *This);
++    END_INTERFACE
++  } _RecordVtbl;
++  struct _Record {
++    CONST_VTBL struct _RecordVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Record_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define _Record_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define _Record_Release(This) (This)->lpVtbl -> Release(This)
++#define _Record_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define _Record_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Record_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Record_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Record_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define _Record_get_ActiveConnection(This,pvar) (This)->lpVtbl -> get_ActiveConnection(This,pvar)
++#define _Record_put_ActiveConnection(This,bstrConn) (This)->lpVtbl -> put_ActiveConnection(This,bstrConn)
++#define _Record_putref_ActiveConnection(This,Con) (This)->lpVtbl -> putref_ActiveConnection(This,Con)
++#define _Record_get_State(This,pState) (This)->lpVtbl -> get_State(This,pState)
++#define _Record_get_Source(This,pvar) (This)->lpVtbl -> get_Source(This,pvar)
++#define _Record_put_Source(This,Source) (This)->lpVtbl -> put_Source(This,Source)
++#define _Record_putref_Source(This,Source) (This)->lpVtbl -> putref_Source(This,Source)
++#define _Record_get_Mode(This,pMode) (This)->lpVtbl -> get_Mode(This,pMode)
++#define _Record_put_Mode(This,Mode) (This)->lpVtbl -> put_Mode(This,Mode)
++#define _Record_get_ParentURL(This,pbstrParentURL) (This)->lpVtbl -> get_ParentURL(This,pbstrParentURL)
++#define _Record_MoveRecord(This,Source,Destination,UserName,Password,Options,Async,pbstrNewURL) (This)->lpVtbl -> MoveRecord(This,Source,Destination,UserName,Password,Options,Async,pbstrNewURL)
++#define _Record_CopyRecord(This,Source,Destination,UserName,Password,Options,Async,pbstrNewURL) (This)->lpVtbl -> CopyRecord(This,Source,Destination,UserName,Password,Options,Async,pbstrNewURL)
++#define _Record_DeleteRecord(This,Source,Async) (This)->lpVtbl -> DeleteRecord(This,Source,Async)
++#define _Record_Open(This,Source,ActiveConnection,Mode,CreateOptions,Options,UserName,Password) (This)->lpVtbl -> Open(This,Source,ActiveConnection,Mode,CreateOptions,Options,UserName,Password)
++#define _Record_Close(This) (This)->lpVtbl -> Close(This)
++#define _Record_get_Fields(This,ppFlds) (This)->lpVtbl -> get_Fields(This,ppFlds)
++#define _Record_get_RecordType(This,pType) (This)->lpVtbl -> get_RecordType(This,pType)
++#define _Record_GetChildren(This,ppRSet) (This)->lpVtbl -> GetChildren(This,ppRSet)
++#define _Record_Cancel(This) (This)->lpVtbl -> Cancel(This)
++#endif
++#endif
++  HRESULT WINAPI _Record_get_ActiveConnection_Proxy(_ADORecord *This,VARIANT *pvar);
++  void __RPC_STUB _Record_get_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_put_ActiveConnection_Proxy(_ADORecord *This,BSTR bstrConn);
++  void __RPC_STUB _Record_put_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_putref_ActiveConnection_Proxy(_ADORecord *This,_ADOConnection *Con);
++  void __RPC_STUB _Record_putref_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_get_State_Proxy(_ADORecord *This,ObjectStateEnum *pState);
++  void __RPC_STUB _Record_get_State_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_get_Source_Proxy(_ADORecord *This,VARIANT *pvar);
++  void __RPC_STUB _Record_get_Source_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_put_Source_Proxy(_ADORecord *This,BSTR Source);
++  void __RPC_STUB _Record_put_Source_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_putref_Source_Proxy(_ADORecord *This,IDispatch *Source);
++  void __RPC_STUB _Record_putref_Source_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_get_Mode_Proxy(_ADORecord *This,ConnectModeEnum *pMode);
++  void __RPC_STUB _Record_get_Mode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_put_Mode_Proxy(_ADORecord *This,ConnectModeEnum Mode);
++  void __RPC_STUB _Record_put_Mode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_get_ParentURL_Proxy(_ADORecord *This,BSTR *pbstrParentURL);
++  void __RPC_STUB _Record_get_ParentURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_MoveRecord_Proxy(_ADORecord *This,BSTR Source,BSTR Destination,BSTR UserName,BSTR Password,MoveRecordOptionsEnum Options,VARIANT_BOOL Async,BSTR *pbstrNewURL);
++  void __RPC_STUB _Record_MoveRecord_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_CopyRecord_Proxy(_ADORecord *This,BSTR Source,BSTR Destination,BSTR UserName,BSTR Password,CopyRecordOptionsEnum Options,VARIANT_BOOL Async,BSTR *pbstrNewURL);
++  void __RPC_STUB _Record_CopyRecord_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_DeleteRecord_Proxy(_ADORecord *This,BSTR Source,VARIANT_BOOL Async);
++  void __RPC_STUB _Record_DeleteRecord_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_Open_Proxy(_ADORecord *This,VARIANT Source,VARIANT ActiveConnection,ConnectModeEnum Mode,RecordCreateOptionsEnum CreateOptions,RecordOpenOptionsEnum Options,BSTR UserName,BSTR Password);
++  void __RPC_STUB _Record_Open_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_Close_Proxy(_ADORecord *This);
++  void __RPC_STUB _Record_Close_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_get_Fields_Proxy(_ADORecord *This,ADOFields **ppFlds);
++  void __RPC_STUB _Record_get_Fields_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_get_RecordType_Proxy(_ADORecord *This,RecordTypeEnum *pType);
++  void __RPC_STUB _Record_get_RecordType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_GetChildren_Proxy(_ADORecord *This,_ADORecordset **ppRSet);
++  void __RPC_STUB _Record_GetChildren_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Record_Cancel_Proxy(_ADORecord *This);
++  void __RPC_STUB _Record_Cancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++  EXTERN_C const CLSID CLSID_Record;
++#ifdef __cplusplus
++//  Record;
++#endif
++
++#ifndef ___Stream_INTERFACE_DEFINED__
++#define ___Stream_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Stream;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOStream : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Size(ADO_LONGPTR *pSize) = 0;
++    virtual HRESULT WINAPI get_EOS(VARIANT_BOOL *pEOS) = 0;
++    virtual HRESULT WINAPI get_Position(ADO_LONGPTR *pPos) = 0;
++    virtual HRESULT WINAPI put_Position(ADO_LONGPTR Position) = 0;
++    virtual HRESULT WINAPI get_Type(StreamTypeEnum *pType) = 0;
++    virtual HRESULT WINAPI put_Type(StreamTypeEnum Type) = 0;
++    virtual HRESULT WINAPI get_LineSeparator(LineSeparatorEnum *pLS) = 0;
++    virtual HRESULT WINAPI put_LineSeparator(LineSeparatorEnum LineSeparator) = 0;
++    virtual HRESULT WINAPI get_State(ObjectStateEnum *pState) = 0;
++    virtual HRESULT WINAPI get_Mode(ConnectModeEnum *pMode) = 0;
++    virtual HRESULT WINAPI put_Mode(ConnectModeEnum Mode) = 0;
++    virtual HRESULT WINAPI get_Charset(BSTR *pbstrCharset) = 0;
++    virtual HRESULT WINAPI put_Charset(BSTR Charset) = 0;
++    virtual HRESULT WINAPI Read(long NumBytes,VARIANT *pVal) = 0;
++    virtual HRESULT WINAPI Open(VARIANT Source,ConnectModeEnum Mode = adModeUnknown,StreamOpenOptionsEnum Options = adOpenStreamUnspecified,BSTR UserName = NULL,BSTR Password = NULL) = 0;
++    virtual HRESULT WINAPI Close(void) = 0;
++    virtual HRESULT WINAPI SkipLine(void) = 0;
++    virtual HRESULT WINAPI Write(VARIANT Buffer) = 0;
++    virtual HRESULT WINAPI SetEOS(void) = 0;
++    virtual HRESULT WINAPI CopyTo(_ADOStream *DestStream,ADO_LONGPTR CharNumber = -1) = 0;
++    virtual HRESULT WINAPI Flush(void) = 0;
++    virtual HRESULT WINAPI SaveToFile(BSTR FileName,SaveOptionsEnum Options = adSaveCreateNotExist) = 0;
++    virtual HRESULT WINAPI LoadFromFile(BSTR FileName) = 0;
++    virtual HRESULT WINAPI ReadText(long NumChars,BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI WriteText(BSTR Data,StreamWriteEnum Options = adWriteChar) = 0;
++    virtual HRESULT WINAPI Cancel(void) = 0;
++  };
++#else
++  typedef struct _StreamVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOStream *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOStream *This);
++      ULONG (WINAPI *Release)(_ADOStream *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOStream *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOStream *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOStream *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOStream *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Size)(_ADOStream *This,ADO_LONGPTR *pSize);
++      HRESULT (WINAPI *get_EOS)(_ADOStream *This,VARIANT_BOOL *pEOS);
++      HRESULT (WINAPI *get_Position)(_ADOStream *This,ADO_LONGPTR *pPos);
++      HRESULT (WINAPI *put_Position)(_ADOStream *This,ADO_LONGPTR Position);
++      HRESULT (WINAPI *get_Type)(_ADOStream *This,StreamTypeEnum *pType);
++      HRESULT (WINAPI *put_Type)(_ADOStream *This,StreamTypeEnum Type);
++      HRESULT (WINAPI *get_LineSeparator)(_ADOStream *This,LineSeparatorEnum *pLS);
++      HRESULT (WINAPI *put_LineSeparator)(_ADOStream *This,LineSeparatorEnum LineSeparator);
++      HRESULT (WINAPI *get_State)(_ADOStream *This,ObjectStateEnum *pState);
++      HRESULT (WINAPI *get_Mode)(_ADOStream *This,ConnectModeEnum *pMode);
++      HRESULT (WINAPI *put_Mode)(_ADOStream *This,ConnectModeEnum Mode);
++      HRESULT (WINAPI *get_Charset)(_ADOStream *This,BSTR *pbstrCharset);
++      HRESULT (WINAPI *put_Charset)(_ADOStream *This,BSTR Charset);
++      HRESULT (WINAPI *Read)(_ADOStream *This,long NumBytes,VARIANT *pVal);
++      HRESULT (WINAPI *Open)(_ADOStream *This,VARIANT Source,ConnectModeEnum Mode,StreamOpenOptionsEnum Options,BSTR UserName,BSTR Password);
++      HRESULT (WINAPI *Close)(_ADOStream *This);
++      HRESULT (WINAPI *SkipLine)(_ADOStream *This);
++      HRESULT (WINAPI *Write)(_ADOStream *This,VARIANT Buffer);
++      HRESULT (WINAPI *SetEOS)(_ADOStream *This);
++      HRESULT (WINAPI *CopyTo)(_ADOStream *This,_ADOStream *DestStream,ADO_LONGPTR CharNumber);
++      HRESULT (WINAPI *Flush)(_ADOStream *This);
++      HRESULT (WINAPI *SaveToFile)(_ADOStream *This,BSTR FileName,SaveOptionsEnum Options);
++      HRESULT (WINAPI *LoadFromFile)(_ADOStream *This,BSTR FileName);
++      HRESULT (WINAPI *ReadText)(_ADOStream *This,long NumChars,BSTR *pbstr);
++      HRESULT (WINAPI *WriteText)(_ADOStream *This,BSTR Data,StreamWriteEnum Options);
++      HRESULT (WINAPI *Cancel)(_ADOStream *This);
++    END_INTERFACE
++  } _StreamVtbl;
++  struct _Stream {
++    CONST_VTBL struct _StreamVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Stream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define _Stream_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define _Stream_Release(This) (This)->lpVtbl -> Release(This)
++#define _Stream_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define _Stream_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Stream_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Stream_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Stream_get_Size(This,pSize) (This)->lpVtbl -> get_Size(This,pSize)
++#define _Stream_get_EOS(This,pEOS) (This)->lpVtbl -> get_EOS(This,pEOS)
++#define _Stream_get_Position(This,pPos) (This)->lpVtbl -> get_Position(This,pPos)
++#define _Stream_put_Position(This,Position) (This)->lpVtbl -> put_Position(This,Position)
++#define _Stream_get_Type(This,pType) (This)->lpVtbl -> get_Type(This,pType)
++#define _Stream_put_Type(This,Type) (This)->lpVtbl -> put_Type(This,Type)
++#define _Stream_get_LineSeparator(This,pLS) (This)->lpVtbl -> get_LineSeparator(This,pLS)
++#define _Stream_put_LineSeparator(This,LineSeparator) (This)->lpVtbl -> put_LineSeparator(This,LineSeparator)
++#define _Stream_get_State(This,pState) (This)->lpVtbl -> get_State(This,pState)
++#define _Stream_get_Mode(This,pMode) (This)->lpVtbl -> get_Mode(This,pMode)
++#define _Stream_put_Mode(This,Mode) (This)->lpVtbl -> put_Mode(This,Mode)
++#define _Stream_get_Charset(This,pbstrCharset) (This)->lpVtbl -> get_Charset(This,pbstrCharset)
++#define _Stream_put_Charset(This,Charset) (This)->lpVtbl -> put_Charset(This,Charset)
++#define _Stream_Read(This,NumBytes,pVal) (This)->lpVtbl -> Read(This,NumBytes,pVal)
++#define _Stream_Open(This,Source,Mode,Options,UserName,Password) (This)->lpVtbl -> Open(This,Source,Mode,Options,UserName,Password)
++#define _Stream_Close(This) (This)->lpVtbl -> Close(This)
++#define _Stream_SkipLine(This) (This)->lpVtbl -> SkipLine(This)
++#define _Stream_Write(This,Buffer) (This)->lpVtbl -> Write(This,Buffer)
++#define _Stream_SetEOS(This) (This)->lpVtbl -> SetEOS(This)
++#define _Stream_CopyTo(This,DestStream,CharNumber) (This)->lpVtbl -> CopyTo(This,DestStream,CharNumber)
++#define _Stream_Flush(This) (This)->lpVtbl -> Flush(This)
++#define _Stream_SaveToFile(This,FileName,Options) (This)->lpVtbl -> SaveToFile(This,FileName,Options)
++#define _Stream_LoadFromFile(This,FileName) (This)->lpVtbl -> LoadFromFile(This,FileName)
++#define _Stream_ReadText(This,NumChars,pbstr) (This)->lpVtbl -> ReadText(This,NumChars,pbstr)
++#define _Stream_WriteText(This,Data,Options) (This)->lpVtbl -> WriteText(This,Data,Options)
++#define _Stream_Cancel(This) (This)->lpVtbl -> Cancel(This)
++#endif
++#endif
++  HRESULT WINAPI _Stream_get_Size_Proxy(_ADOStream *This,ADO_LONGPTR *pSize);
++  void __RPC_STUB _Stream_get_Size_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_get_EOS_Proxy(_ADOStream *This,VARIANT_BOOL *pEOS);
++  void __RPC_STUB _Stream_get_EOS_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_get_Position_Proxy(_ADOStream *This,ADO_LONGPTR *pPos);
++  void __RPC_STUB _Stream_get_Position_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_put_Position_Proxy(_ADOStream *This,ADO_LONGPTR Position);
++  void __RPC_STUB _Stream_put_Position_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_get_Type_Proxy(_ADOStream *This,StreamTypeEnum *pType);
++  void __RPC_STUB _Stream_get_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_put_Type_Proxy(_ADOStream *This,StreamTypeEnum Type);
++  void __RPC_STUB _Stream_put_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_get_LineSeparator_Proxy(_ADOStream *This,LineSeparatorEnum *pLS);
++  void __RPC_STUB _Stream_get_LineSeparator_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_put_LineSeparator_Proxy(_ADOStream *This,LineSeparatorEnum LineSeparator);
++  void __RPC_STUB _Stream_put_LineSeparator_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_get_State_Proxy(_ADOStream *This,ObjectStateEnum *pState);
++  void __RPC_STUB _Stream_get_State_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_get_Mode_Proxy(_ADOStream *This,ConnectModeEnum *pMode);
++  void __RPC_STUB _Stream_get_Mode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_put_Mode_Proxy(_ADOStream *This,ConnectModeEnum Mode);
++  void __RPC_STUB _Stream_put_Mode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_get_Charset_Proxy(_ADOStream *This,BSTR *pbstrCharset);
++  void __RPC_STUB _Stream_get_Charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_put_Charset_Proxy(_ADOStream *This,BSTR Charset);
++  void __RPC_STUB _Stream_put_Charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_Read_Proxy(_ADOStream *This,long NumBytes,VARIANT *pVal);
++  void __RPC_STUB _Stream_Read_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_Open_Proxy(_ADOStream *This,VARIANT Source,ConnectModeEnum Mode,StreamOpenOptionsEnum Options,BSTR UserName,BSTR Password);
++  void __RPC_STUB _Stream_Open_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_Close_Proxy(_ADOStream *This);
++  void __RPC_STUB _Stream_Close_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_SkipLine_Proxy(_ADOStream *This);
++  void __RPC_STUB _Stream_SkipLine_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_Write_Proxy(_ADOStream *This,VARIANT Buffer);
++  void __RPC_STUB _Stream_Write_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_SetEOS_Proxy(_ADOStream *This);
++  void __RPC_STUB _Stream_SetEOS_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_CopyTo_Proxy(_ADOStream *This,_ADOStream *DestStream,ADO_LONGPTR CharNumber);
++  void __RPC_STUB _Stream_CopyTo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_Flush_Proxy(_ADOStream *This);
++  void __RPC_STUB _Stream_Flush_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_SaveToFile_Proxy(_ADOStream *This,BSTR FileName,SaveOptionsEnum Options);
++  void __RPC_STUB _Stream_SaveToFile_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_LoadFromFile_Proxy(_ADOStream *This,BSTR FileName);
++  void __RPC_STUB _Stream_LoadFromFile_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_ReadText_Proxy(_ADOStream *This,long NumChars,BSTR *pbstr);
++  void __RPC_STUB _Stream_ReadText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_WriteText_Proxy(_ADOStream *This,BSTR Data,StreamWriteEnum Options);
++  void __RPC_STUB _Stream_WriteText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Stream_Cancel_Proxy(_ADOStream *This);
++  void __RPC_STUB _Stream_Cancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++  EXTERN_C const CLSID CLSID_Stream;
++#ifdef __cplusplus
++//  Stream;
++#endif
++
++#ifndef __ADORecordConstruction_INTERFACE_DEFINED__
++#define __ADORecordConstruction_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ADORecordConstruction;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADORecordConstruction : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Row(IUnknown **ppRow) = 0;
++    virtual HRESULT WINAPI put_Row(IUnknown *pRow) = 0;
++    virtual HRESULT WINAPI put_ParentRow(IUnknown *pRow) = 0;
++  };
++#else
++  typedef struct ADORecordConstructionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADORecordConstruction *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADORecordConstruction *This);
++      ULONG (WINAPI *Release)(ADORecordConstruction *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADORecordConstruction *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADORecordConstruction *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADORecordConstruction *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADORecordConstruction *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Row)(ADORecordConstruction *This,IUnknown **ppRow);
++      HRESULT (WINAPI *put_Row)(ADORecordConstruction *This,IUnknown *pRow);
++      HRESULT (WINAPI *put_ParentRow)(ADORecordConstruction *This,IUnknown *pRow);
++    END_INTERFACE
++  } ADORecordConstructionVtbl;
++  struct ADORecordConstruction {
++    CONST_VTBL struct ADORecordConstructionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ADORecordConstruction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define ADORecordConstruction_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define ADORecordConstruction_Release(This) (This)->lpVtbl -> Release(This)
++#define ADORecordConstruction_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define ADORecordConstruction_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define ADORecordConstruction_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define ADORecordConstruction_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define ADORecordConstruction_get_Row(This,ppRow) (This)->lpVtbl -> get_Row(This,ppRow)
++#define ADORecordConstruction_put_Row(This,pRow) (This)->lpVtbl -> put_Row(This,pRow)
++#define ADORecordConstruction_put_ParentRow(This,pRow) (This)->lpVtbl -> put_ParentRow(This,pRow)
++#endif
++#endif
++  HRESULT WINAPI ADORecordConstruction_get_Row_Proxy(ADORecordConstruction *This,IUnknown **ppRow);
++  void __RPC_STUB ADORecordConstruction_get_Row_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ADORecordConstruction_put_Row_Proxy(ADORecordConstruction *This,IUnknown *pRow);
++  void __RPC_STUB ADORecordConstruction_put_Row_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ADORecordConstruction_put_ParentRow_Proxy(ADORecordConstruction *This,IUnknown *pRow);
++  void __RPC_STUB ADORecordConstruction_put_ParentRow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ADOStreamConstruction_INTERFACE_DEFINED__
++#define __ADOStreamConstruction_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ADOStreamConstruction;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOStreamConstruction : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Stream(IUnknown **ppStm) = 0;
++    virtual HRESULT WINAPI put_Stream(IUnknown *pStm) = 0;
++  };
++#else
++  typedef struct ADOStreamConstructionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOStreamConstruction *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOStreamConstruction *This);
++      ULONG (WINAPI *Release)(ADOStreamConstruction *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOStreamConstruction *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOStreamConstruction *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOStreamConstruction *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOStreamConstruction *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Stream)(ADOStreamConstruction *This,IUnknown **ppStm);
++      HRESULT (WINAPI *put_Stream)(ADOStreamConstruction *This,IUnknown *pStm);
++    END_INTERFACE
++  } ADOStreamConstructionVtbl;
++  struct ADOStreamConstruction {
++    CONST_VTBL struct ADOStreamConstructionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ADOStreamConstruction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define ADOStreamConstruction_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define ADOStreamConstruction_Release(This) (This)->lpVtbl -> Release(This)
++#define ADOStreamConstruction_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define ADOStreamConstruction_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define ADOStreamConstruction_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define ADOStreamConstruction_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define ADOStreamConstruction_get_Stream(This,ppStm) (This)->lpVtbl -> get_Stream(This,ppStm)
++#define ADOStreamConstruction_put_Stream(This,pStm) (This)->lpVtbl -> put_Stream(This,pStm)
++#endif
++#endif
++  HRESULT WINAPI ADOStreamConstruction_get_Stream_Proxy(ADOStreamConstruction *This,IUnknown **ppStm);
++  void __RPC_STUB ADOStreamConstruction_get_Stream_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ADOStreamConstruction_put_Stream_Proxy(ADOStreamConstruction *This,IUnknown *pStm);
++  void __RPC_STUB ADOStreamConstruction_put_Stream_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ADOCommandConstruction_INTERFACE_DEFINED__
++#define __ADOCommandConstruction_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ADOCommandConstruction;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOCommandConstruction : public IUnknown {
++  public:
++    virtual HRESULT WINAPI get_OLEDBCommand(IUnknown **ppOLEDBCommand) = 0;
++    virtual HRESULT WINAPI put_OLEDBCommand(IUnknown *pOLEDBCommand) = 0;
++  };
++#else
++  typedef struct ADOCommandConstructionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOCommandConstruction *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOCommandConstruction *This);
++      ULONG (WINAPI *Release)(ADOCommandConstruction *This);
++      HRESULT (WINAPI *get_OLEDBCommand)(ADOCommandConstruction *This,IUnknown **ppOLEDBCommand);
++      HRESULT (WINAPI *put_OLEDBCommand)(ADOCommandConstruction *This,IUnknown *pOLEDBCommand);
++    END_INTERFACE
++  } ADOCommandConstructionVtbl;
++  struct ADOCommandConstruction {
++    CONST_VTBL struct ADOCommandConstructionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ADOCommandConstruction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define ADOCommandConstruction_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define ADOCommandConstruction_Release(This) (This)->lpVtbl -> Release(This)
++#define ADOCommandConstruction_get_OLEDBCommand(This,ppOLEDBCommand) (This)->lpVtbl -> get_OLEDBCommand(This,ppOLEDBCommand)
++#define ADOCommandConstruction_put_OLEDBCommand(This,pOLEDBCommand) (This)->lpVtbl -> put_OLEDBCommand(This,pOLEDBCommand)
++#endif
++#endif
++  HRESULT WINAPI ADOCommandConstruction_get_OLEDBCommand_Proxy(ADOCommandConstruction *This,IUnknown **ppOLEDBCommand);
++  void __RPC_STUB ADOCommandConstruction_get_OLEDBCommand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ADOCommandConstruction_put_OLEDBCommand_Proxy(ADOCommandConstruction *This,IUnknown *pOLEDBCommand);
++  void __RPC_STUB ADOCommandConstruction_put_OLEDBCommand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++  EXTERN_C const CLSID CLSID_Command;
++#ifdef __cplusplus
++//  Command;
++#endif
++  EXTERN_C const CLSID CLSID_Recordset;
++#ifdef __cplusplus
++//  Recordset;
++#endif
++
++#ifndef __Recordset15_INTERFACE_DEFINED__
++#define __Recordset15_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Recordset15;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct Recordset15 : public _ADO {
++  public:
++    virtual HRESULT WINAPI get_AbsolutePosition(PositionEnum_Param *pl) = 0;
++    virtual HRESULT WINAPI put_AbsolutePosition(PositionEnum_Param Position) = 0;
++    virtual HRESULT WINAPI putref_ActiveConnection(IDispatch *pconn) = 0;
++    virtual HRESULT WINAPI put_ActiveConnection(VARIANT vConn) = 0;
++    virtual HRESULT WINAPI get_ActiveConnection(VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI get_BOF(VARIANT_BOOL *pb) = 0;
++    virtual HRESULT WINAPI get_Bookmark(VARIANT *pvBookmark) = 0;
++    virtual HRESULT WINAPI put_Bookmark(VARIANT vBookmark) = 0;
++    virtual HRESULT WINAPI get_CacheSize(long *pl) = 0;
++    virtual HRESULT WINAPI put_CacheSize(long CacheSize) = 0;
++    virtual HRESULT WINAPI get_CursorType(CursorTypeEnum *plCursorType) = 0;
++    virtual HRESULT WINAPI put_CursorType(CursorTypeEnum lCursorType) = 0;
++    virtual HRESULT WINAPI get_EOF(VARIANT_BOOL *pb) = 0;
++    virtual HRESULT WINAPI get_Fields(ADOFields **ppvObject) = 0;
++    virtual HRESULT WINAPI get_LockType(LockTypeEnum *plLockType) = 0;
++    virtual HRESULT WINAPI put_LockType(LockTypeEnum lLockType) = 0;
++    virtual HRESULT WINAPI get_MaxRecords(ADO_LONGPTR *plMaxRecords) = 0;
++    virtual HRESULT WINAPI put_MaxRecords(ADO_LONGPTR lMaxRecords) = 0;
++    virtual HRESULT WINAPI get_RecordCount(ADO_LONGPTR *pl) = 0;
++    virtual HRESULT WINAPI putref_Source(IDispatch *pcmd) = 0;
++    virtual HRESULT WINAPI put_Source(BSTR bstrConn) = 0;
++    virtual HRESULT WINAPI get_Source(VARIANT *pvSource) = 0;
++    virtual HRESULT WINAPI AddNew(VARIANT FieldList,VARIANT Values) = 0;
++    virtual HRESULT WINAPI CancelUpdate(void) = 0;
++    virtual HRESULT WINAPI Close(void) = 0;
++    virtual HRESULT WINAPI Delete(AffectEnum AffectRecords = adAffectCurrent) = 0;
++    virtual HRESULT WINAPI GetRows(long Rows,VARIANT Start,VARIANT Fields,VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI Move(ADO_LONGPTR NumRecords,VARIANT Start) = 0;
++    virtual HRESULT WINAPI MoveNext(void) = 0;
++    virtual HRESULT WINAPI MovePrevious(void) = 0;
++    virtual HRESULT WINAPI MoveFirst(void) = 0;
++    virtual HRESULT WINAPI MoveLast(void) = 0;
++    virtual HRESULT WINAPI Open(VARIANT Source,VARIANT ActiveConnection,CursorTypeEnum CursorType = adOpenUnspecified,LockTypeEnum LockType = adLockUnspecified,LONG Options = adCmdUnspecified) = 0;
++    virtual HRESULT WINAPI Requery(LONG Options = adOptionUnspecified) = 0;
++    virtual HRESULT WINAPI _xResync(AffectEnum AffectRecords = adAffectAll) = 0;
++    virtual HRESULT WINAPI Update(VARIANT Fields,VARIANT Values) = 0;
++    virtual HRESULT WINAPI get_AbsolutePage(PositionEnum_Param *pl) = 0;
++    virtual HRESULT WINAPI put_AbsolutePage(PositionEnum_Param Page) = 0;
++    virtual HRESULT WINAPI get_EditMode(EditModeEnum *pl) = 0;
++    virtual HRESULT WINAPI get_Filter(VARIANT *Criteria) = 0;
++    virtual HRESULT WINAPI put_Filter(VARIANT Criteria) = 0;
++    virtual HRESULT WINAPI get_PageCount(ADO_LONGPTR *pl) = 0;
++    virtual HRESULT WINAPI get_PageSize(long *pl) = 0;
++    virtual HRESULT WINAPI put_PageSize(long PageSize) = 0;
++    virtual HRESULT WINAPI get_Sort(BSTR *Criteria) = 0;
++    virtual HRESULT WINAPI put_Sort(BSTR Criteria) = 0;
++    virtual HRESULT WINAPI get_Status(long *pl) = 0;
++    virtual HRESULT WINAPI get_State(LONG *plObjState) = 0;
++    virtual HRESULT WINAPI _xClone(_ADORecordset **ppvObject) = 0;
++    virtual HRESULT WINAPI UpdateBatch(AffectEnum AffectRecords = adAffectAll) = 0;
++    virtual HRESULT WINAPI CancelBatch(AffectEnum AffectRecords = adAffectAll) = 0;
++    virtual HRESULT WINAPI get_CursorLocation(CursorLocationEnum *plCursorLoc) = 0;
++    virtual HRESULT WINAPI put_CursorLocation(CursorLocationEnum lCursorLoc) = 0;
++    virtual HRESULT WINAPI NextRecordset(VARIANT *RecordsAffected,_ADORecordset **ppiRs) = 0;
++    virtual HRESULT WINAPI Supports(CursorOptionEnum CursorOptions,VARIANT_BOOL *pb) = 0;
++    virtual HRESULT WINAPI get_Collect(VARIANT Index,VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI put_Collect(VARIANT Index,VARIANT value) = 0;
++    virtual HRESULT WINAPI get_MarshalOptions(MarshalOptionsEnum *peMarshal) = 0;
++    virtual HRESULT WINAPI put_MarshalOptions(MarshalOptionsEnum eMarshal) = 0;
++    virtual HRESULT WINAPI Find(BSTR Criteria,ADO_LONGPTR SkipRecords,SearchDirectionEnum SearchDirection,VARIANT Start) = 0;
++  };
++#else
++  typedef struct Recordset15Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(Recordset15 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(Recordset15 *This);
++      ULONG (WINAPI *Release)(Recordset15 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(Recordset15 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(Recordset15 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(Recordset15 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(Recordset15 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(Recordset15 *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_AbsolutePosition)(Recordset15 *This,PositionEnum_Param *pl);
++      HRESULT (WINAPI *put_AbsolutePosition)(Recordset15 *This,PositionEnum_Param Position);
++      HRESULT (WINAPI *putref_ActiveADOConnection)(Recordset15 *This,IDispatch *pconn);
++      HRESULT (WINAPI *put_ActiveConnection)(Recordset15 *This,VARIANT vConn);
++      HRESULT (WINAPI *get_ActiveConnection)(Recordset15 *This,VARIANT *pvar);
++      HRESULT (WINAPI *get_BOF)(Recordset15 *This,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Bookmark)(Recordset15 *This,VARIANT *pvBookmark);
++      HRESULT (WINAPI *put_Bookmark)(Recordset15 *This,VARIANT vBookmark);
++      HRESULT (WINAPI *get_CacheSize)(Recordset15 *This,long *pl);
++      HRESULT (WINAPI *put_CacheSize)(Recordset15 *This,long CacheSize);
++      HRESULT (WINAPI *get_CursorType)(Recordset15 *This,CursorTypeEnum *plCursorType);
++      HRESULT (WINAPI *put_CursorType)(Recordset15 *This,CursorTypeEnum lCursorType);
++      HRESULT (WINAPI *get_EOF)(Recordset15 *This,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Fields)(Recordset15 *This,ADOFields **ppvObject);
++      HRESULT (WINAPI *get_LockType)(Recordset15 *This,LockTypeEnum *plLockType);
++      HRESULT (WINAPI *put_LockType)(Recordset15 *This,LockTypeEnum lLockType);
++      HRESULT (WINAPI *get_MaxRecords)(Recordset15 *This,ADO_LONGPTR *plMaxRecords);
++      HRESULT (WINAPI *put_MaxRecords)(Recordset15 *This,ADO_LONGPTR lMaxRecords);
++      HRESULT (WINAPI *get_RecordCount)(Recordset15 *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *putref_Source)(Recordset15 *This,IDispatch *pcmd);
++      HRESULT (WINAPI *put_Source)(Recordset15 *This,BSTR bstrConn);
++      HRESULT (WINAPI *get_Source)(Recordset15 *This,VARIANT *pvSource);
++      HRESULT (WINAPI *AddNew)(Recordset15 *This,VARIANT FieldList,VARIANT Values);
++      HRESULT (WINAPI *CancelUpdate)(Recordset15 *This);
++      HRESULT (WINAPI *Close)(Recordset15 *This);
++      HRESULT (WINAPI *Delete)(Recordset15 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *GetRows)(Recordset15 *This,long Rows,VARIANT Start,VARIANT Fields,VARIANT *pvar);
++      HRESULT (WINAPI *Move)(Recordset15 *This,ADO_LONGPTR NumRecords,VARIANT Start);
++      HRESULT (WINAPI *MoveNext)(Recordset15 *This);
++      HRESULT (WINAPI *MovePrevious)(Recordset15 *This);
++      HRESULT (WINAPI *MoveFirst)(Recordset15 *This);
++      HRESULT (WINAPI *MoveLast)(Recordset15 *This);
++      HRESULT (WINAPI *Open)(Recordset15 *This,VARIANT Source,VARIANT ActiveConnection,CursorTypeEnum CursorType,LockTypeEnum LockType,LONG Options);
++      HRESULT (WINAPI *Requery)(Recordset15 *This,LONG Options);
++      HRESULT (WINAPI *_xResync)(Recordset15 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *Update)(Recordset15 *This,VARIANT Fields,VARIANT Values);
++      HRESULT (WINAPI *get_AbsolutePage)(Recordset15 *This,PositionEnum_Param *pl);
++      HRESULT (WINAPI *put_AbsolutePage)(Recordset15 *This,PositionEnum_Param Page);
++      HRESULT (WINAPI *get_EditMode)(Recordset15 *This,EditModeEnum *pl);
++      HRESULT (WINAPI *get_Filter)(Recordset15 *This,VARIANT *Criteria);
++      HRESULT (WINAPI *put_Filter)(Recordset15 *This,VARIANT Criteria);
++      HRESULT (WINAPI *get_PageCount)(Recordset15 *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *get_PageSize)(Recordset15 *This,long *pl);
++      HRESULT (WINAPI *put_PageSize)(Recordset15 *This,long PageSize);
++      HRESULT (WINAPI *get_Sort)(Recordset15 *This,BSTR *Criteria);
++      HRESULT (WINAPI *put_Sort)(Recordset15 *This,BSTR Criteria);
++      HRESULT (WINAPI *get_Status)(Recordset15 *This,long *pl);
++      HRESULT (WINAPI *get_State)(Recordset15 *This,LONG *plObjState);
++      HRESULT (WINAPI *_xClone)(Recordset15 *This,_ADORecordset **ppvObject);
++      HRESULT (WINAPI *UpdateBatch)(Recordset15 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *CancelBatch)(Recordset15 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *get_CursorLocation)(Recordset15 *This,CursorLocationEnum *plCursorLoc);
++      HRESULT (WINAPI *put_CursorLocation)(Recordset15 *This,CursorLocationEnum lCursorLoc);
++      HRESULT (WINAPI *NextADORecordset)(Recordset15 *This,VARIANT *RecordsAffected,_ADORecordset **ppiRs);
++      HRESULT (WINAPI *Supports)(Recordset15 *This,CursorOptionEnum CursorOptions,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Collect)(Recordset15 *This,VARIANT Index,VARIANT *pvar);
++      HRESULT (WINAPI *put_Collect)(Recordset15 *This,VARIANT Index,VARIANT value);
++      HRESULT (WINAPI *get_MarshalOptions)(Recordset15 *This,MarshalOptionsEnum *peMarshal);
++      HRESULT (WINAPI *put_MarshalOptions)(Recordset15 *This,MarshalOptionsEnum eMarshal);
++      HRESULT (WINAPI *Find)(Recordset15 *This,BSTR Criteria,ADO_LONGPTR SkipRecords,SearchDirectionEnum SearchDirection,VARIANT Start);
++    END_INTERFACE
++  } Recordset15Vtbl;
++  struct Recordset15 {
++    CONST_VTBL struct Recordset15Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Recordset15_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Recordset15_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Recordset15_Release(This) (This)->lpVtbl -> Release(This)
++#define Recordset15_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Recordset15_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Recordset15_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Recordset15_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Recordset15_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define Recordset15_get_AbsolutePosition(This,pl) (This)->lpVtbl -> get_AbsolutePosition(This,pl)
++#define Recordset15_put_AbsolutePosition(This,Position) (This)->lpVtbl -> put_AbsolutePosition(This,Position)
++#define Recordset15_putref_ActiveConnection(This,pconn) (This)->lpVtbl -> putref_ActiveConnection(This,pconn)
++#define Recordset15_put_ActiveConnection(This,vConn) (This)->lpVtbl -> put_ActiveConnection(This,vConn)
++#define Recordset15_get_ActiveConnection(This,pvar) (This)->lpVtbl -> get_ActiveConnection(This,pvar)
++#define Recordset15_get_BOF(This,pb) (This)->lpVtbl -> get_BOF(This,pb)
++#define Recordset15_get_Bookmark(This,pvBookmark) (This)->lpVtbl -> get_Bookmark(This,pvBookmark)
++#define Recordset15_put_Bookmark(This,vBookmark) (This)->lpVtbl -> put_Bookmark(This,vBookmark)
++#define Recordset15_get_CacheSize(This,pl) (This)->lpVtbl -> get_CacheSize(This,pl)
++#define Recordset15_put_CacheSize(This,CacheSize) (This)->lpVtbl -> put_CacheSize(This,CacheSize)
++#define Recordset15_get_CursorType(This,plCursorType) (This)->lpVtbl -> get_CursorType(This,plCursorType)
++#define Recordset15_put_CursorType(This,lCursorType) (This)->lpVtbl -> put_CursorType(This,lCursorType)
++#define Recordset15_get_EOF(This,pb) (This)->lpVtbl -> get_EOF(This,pb)
++#define Recordset15_get_Fields(This,ppvObject) (This)->lpVtbl -> get_Fields(This,ppvObject)
++#define Recordset15_get_LockType(This,plLockType) (This)->lpVtbl -> get_LockType(This,plLockType)
++#define Recordset15_put_LockType(This,lLockType) (This)->lpVtbl -> put_LockType(This,lLockType)
++#define Recordset15_get_MaxRecords(This,plMaxRecords) (This)->lpVtbl -> get_MaxRecords(This,plMaxRecords)
++#define Recordset15_put_MaxRecords(This,lMaxRecords) (This)->lpVtbl -> put_MaxRecords(This,lMaxRecords)
++#define Recordset15_get_RecordCount(This,pl) (This)->lpVtbl -> get_RecordCount(This,pl)
++#define Recordset15_putref_Source(This,pcmd) (This)->lpVtbl -> putref_Source(This,pcmd)
++#define Recordset15_put_Source(This,bstrConn) (This)->lpVtbl -> put_Source(This,bstrConn)
++#define Recordset15_get_Source(This,pvSource) (This)->lpVtbl -> get_Source(This,pvSource)
++#define Recordset15_AddNew(This,FieldList,Values) (This)->lpVtbl -> AddNew(This,FieldList,Values)
++#define Recordset15_CancelUpdate(This) (This)->lpVtbl -> CancelUpdate(This)
++#define Recordset15_Close(This) (This)->lpVtbl -> Close(This)
++#define Recordset15_Delete(This,AffectRecords) (This)->lpVtbl -> Delete(This,AffectRecords)
++#define Recordset15_GetRows(This,Rows,Start,Fields,pvar) (This)->lpVtbl -> GetRows(This,Rows,Start,Fields,pvar)
++#define Recordset15_Move(This,NumRecords,Start) (This)->lpVtbl -> Move(This,NumRecords,Start)
++#define Recordset15_MoveNext(This) (This)->lpVtbl -> MoveNext(This)
++#define Recordset15_MovePrevious(This) (This)->lpVtbl -> MovePrevious(This)
++#define Recordset15_MoveFirst(This) (This)->lpVtbl -> MoveFirst(This)
++#define Recordset15_MoveLast(This) (This)->lpVtbl -> MoveLast(This)
++#define Recordset15_Open(This,Source,ActiveConnection,CursorType,LockType,Options) (This)->lpVtbl -> Open(This,Source,ActiveConnection,CursorType,LockType,Options)
++#define Recordset15_Requery(This,Options) (This)->lpVtbl -> Requery(This,Options)
++#define Recordset15__xResync(This,AffectRecords) (This)->lpVtbl -> _xResync(This,AffectRecords)
++#define Recordset15_Update(This,Fields,Values) (This)->lpVtbl -> Update(This,Fields,Values)
++#define Recordset15_get_AbsolutePage(This,pl) (This)->lpVtbl -> get_AbsolutePage(This,pl)
++#define Recordset15_put_AbsolutePage(This,Page) (This)->lpVtbl -> put_AbsolutePage(This,Page)
++#define Recordset15_get_EditMode(This,pl) (This)->lpVtbl -> get_EditMode(This,pl)
++#define Recordset15_get_Filter(This,Criteria) (This)->lpVtbl -> get_Filter(This,Criteria)
++#define Recordset15_put_Filter(This,Criteria) (This)->lpVtbl -> put_Filter(This,Criteria)
++#define Recordset15_get_PageCount(This,pl) (This)->lpVtbl -> get_PageCount(This,pl)
++#define Recordset15_get_PageSize(This,pl) (This)->lpVtbl -> get_PageSize(This,pl)
++#define Recordset15_put_PageSize(This,PageSize) (This)->lpVtbl -> put_PageSize(This,PageSize)
++#define Recordset15_get_Sort(This,Criteria) (This)->lpVtbl -> get_Sort(This,Criteria)
++#define Recordset15_put_Sort(This,Criteria) (This)->lpVtbl -> put_Sort(This,Criteria)
++#define Recordset15_get_Status(This,pl) (This)->lpVtbl -> get_Status(This,pl)
++#define Recordset15_get_State(This,plObjState) (This)->lpVtbl -> get_State(This,plObjState)
++#define Recordset15__xClone(This,ppvObject) (This)->lpVtbl -> _xClone(This,ppvObject)
++#define Recordset15_UpdateBatch(This,AffectRecords) (This)->lpVtbl -> UpdateBatch(This,AffectRecords)
++#define Recordset15_CancelBatch(This,AffectRecords) (This)->lpVtbl -> CancelBatch(This,AffectRecords)
++#define Recordset15_get_CursorLocation(This,plCursorLoc) (This)->lpVtbl -> get_CursorLocation(This,plCursorLoc)
++#define Recordset15_put_CursorLocation(This,lCursorLoc) (This)->lpVtbl -> put_CursorLocation(This,lCursorLoc)
++#define Recordset15_NextRecordset(This,RecordsAffected,ppiRs) (This)->lpVtbl -> NextRecordset(This,RecordsAffected,ppiRs)
++#define Recordset15_Supports(This,CursorOptions,pb) (This)->lpVtbl -> Supports(This,CursorOptions,pb)
++#define Recordset15_get_Collect(This,Index,pvar) (This)->lpVtbl -> get_Collect(This,Index,pvar)
++#define Recordset15_put_Collect(This,Index,value) (This)->lpVtbl -> put_Collect(This,Index,value)
++#define Recordset15_get_MarshalOptions(This,peMarshal) (This)->lpVtbl -> get_MarshalOptions(This,peMarshal)
++#define Recordset15_put_MarshalOptions(This,eMarshal) (This)->lpVtbl -> put_MarshalOptions(This,eMarshal)
++#define Recordset15_Find(This,Criteria,SkipRecords,SearchDirection,Start) (This)->lpVtbl -> Find(This,Criteria,SkipRecords,SearchDirection,Start)
++#endif
++#endif
++  HRESULT WINAPI Recordset15_get_AbsolutePosition_Proxy(Recordset15 *This,PositionEnum_Param *pl);
++  void __RPC_STUB Recordset15_get_AbsolutePosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_AbsolutePosition_Proxy(Recordset15 *This,PositionEnum_Param Position);
++  void __RPC_STUB Recordset15_put_AbsolutePosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_putref_ActiveConnection_Proxy(Recordset15 *This,IDispatch *pconn);
++  void __RPC_STUB Recordset15_putref_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_ActiveConnection_Proxy(Recordset15 *This,VARIANT vConn);
++  void __RPC_STUB Recordset15_put_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_ActiveConnection_Proxy(Recordset15 *This,VARIANT *pvar);
++  void __RPC_STUB Recordset15_get_ActiveConnection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_BOF_Proxy(Recordset15 *This,VARIANT_BOOL *pb);
++  void __RPC_STUB Recordset15_get_BOF_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_Bookmark_Proxy(Recordset15 *This,VARIANT *pvBookmark);
++  void __RPC_STUB Recordset15_get_Bookmark_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_Bookmark_Proxy(Recordset15 *This,VARIANT vBookmark);
++  void __RPC_STUB Recordset15_put_Bookmark_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_CacheSize_Proxy(Recordset15 *This,long *pl);
++  void __RPC_STUB Recordset15_get_CacheSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_CacheSize_Proxy(Recordset15 *This,long CacheSize);
++  void __RPC_STUB Recordset15_put_CacheSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_CursorType_Proxy(Recordset15 *This,CursorTypeEnum *plCursorType);
++  void __RPC_STUB Recordset15_get_CursorType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_CursorType_Proxy(Recordset15 *This,CursorTypeEnum lCursorType);
++  void __RPC_STUB Recordset15_put_CursorType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_EOF_Proxy(Recordset15 *This,VARIANT_BOOL *pb);
++  void __RPC_STUB Recordset15_get_EOF_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_Fields_Proxy(Recordset15 *This,ADOFields **ppvObject);
++  void __RPC_STUB Recordset15_get_Fields_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_LockType_Proxy(Recordset15 *This,LockTypeEnum *plLockType);
++  void __RPC_STUB Recordset15_get_LockType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_LockType_Proxy(Recordset15 *This,LockTypeEnum lLockType);
++  void __RPC_STUB Recordset15_put_LockType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_MaxRecords_Proxy(Recordset15 *This,ADO_LONGPTR *plMaxRecords);
++  void __RPC_STUB Recordset15_get_MaxRecords_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_MaxRecords_Proxy(Recordset15 *This,ADO_LONGPTR lMaxRecords);
++  void __RPC_STUB Recordset15_put_MaxRecords_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_RecordCount_Proxy(Recordset15 *This,ADO_LONGPTR *pl);
++  void __RPC_STUB Recordset15_get_RecordCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_putref_Source_Proxy(Recordset15 *This,IDispatch *pcmd);
++  void __RPC_STUB Recordset15_putref_Source_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_Source_Proxy(Recordset15 *This,BSTR bstrConn);
++  void __RPC_STUB Recordset15_put_Source_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_Source_Proxy(Recordset15 *This,VARIANT *pvSource);
++  void __RPC_STUB Recordset15_get_Source_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_AddNew_Proxy(Recordset15 *This,VARIANT FieldList,VARIANT Values);
++  void __RPC_STUB Recordset15_AddNew_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_CancelUpdate_Proxy(Recordset15 *This);
++  void __RPC_STUB Recordset15_CancelUpdate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_Close_Proxy(Recordset15 *This);
++  void __RPC_STUB Recordset15_Close_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_Delete_Proxy(Recordset15 *This,AffectEnum AffectRecords);
++  void __RPC_STUB Recordset15_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_GetRows_Proxy(Recordset15 *This,long Rows,VARIANT Start,VARIANT Fields,VARIANT *pvar);
++  void __RPC_STUB Recordset15_GetRows_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_Move_Proxy(Recordset15 *This,ADO_LONGPTR NumRecords,VARIANT Start);
++  void __RPC_STUB Recordset15_Move_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_MoveNext_Proxy(Recordset15 *This);
++  void __RPC_STUB Recordset15_MoveNext_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_MovePrevious_Proxy(Recordset15 *This);
++  void __RPC_STUB Recordset15_MovePrevious_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_MoveFirst_Proxy(Recordset15 *This);
++  void __RPC_STUB Recordset15_MoveFirst_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_MoveLast_Proxy(Recordset15 *This);
++  void __RPC_STUB Recordset15_MoveLast_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_Open_Proxy(Recordset15 *This,VARIANT Source,VARIANT ActiveConnection,CursorTypeEnum CursorType,LockTypeEnum LockType,LONG Options);
++  void __RPC_STUB Recordset15_Open_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_Requery_Proxy(Recordset15 *This,LONG Options);
++  void __RPC_STUB Recordset15_Requery_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15__xResync_Proxy(Recordset15 *This,AffectEnum AffectRecords);
++  void __RPC_STUB Recordset15__xResync_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_Update_Proxy(Recordset15 *This,VARIANT Fields,VARIANT Values);
++  void __RPC_STUB Recordset15_Update_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_AbsolutePage_Proxy(Recordset15 *This,PositionEnum_Param *pl);
++  void __RPC_STUB Recordset15_get_AbsolutePage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_AbsolutePage_Proxy(Recordset15 *This,PositionEnum_Param Page);
++  void __RPC_STUB Recordset15_put_AbsolutePage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_EditMode_Proxy(Recordset15 *This,EditModeEnum *pl);
++  void __RPC_STUB Recordset15_get_EditMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_Filter_Proxy(Recordset15 *This,VARIANT *Criteria);
++  void __RPC_STUB Recordset15_get_Filter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_Filter_Proxy(Recordset15 *This,VARIANT Criteria);
++  void __RPC_STUB Recordset15_put_Filter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_PageCount_Proxy(Recordset15 *This,ADO_LONGPTR *pl);
++  void __RPC_STUB Recordset15_get_PageCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_PageSize_Proxy(Recordset15 *This,long *pl);
++  void __RPC_STUB Recordset15_get_PageSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_PageSize_Proxy(Recordset15 *This,long PageSize);
++  void __RPC_STUB Recordset15_put_PageSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_Sort_Proxy(Recordset15 *This,BSTR *Criteria);
++  void __RPC_STUB Recordset15_get_Sort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_Sort_Proxy(Recordset15 *This,BSTR Criteria);
++  void __RPC_STUB Recordset15_put_Sort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_Status_Proxy(Recordset15 *This,long *pl);
++  void __RPC_STUB Recordset15_get_Status_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_State_Proxy(Recordset15 *This,LONG *plObjState);
++  void __RPC_STUB Recordset15_get_State_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15__xClone_Proxy(Recordset15 *This,_ADORecordset **ppvObject);
++  void __RPC_STUB Recordset15__xClone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_UpdateBatch_Proxy(Recordset15 *This,AffectEnum AffectRecords);
++  void __RPC_STUB Recordset15_UpdateBatch_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_CancelBatch_Proxy(Recordset15 *This,AffectEnum AffectRecords);
++  void __RPC_STUB Recordset15_CancelBatch_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_CursorLocation_Proxy(Recordset15 *This,CursorLocationEnum *plCursorLoc);
++  void __RPC_STUB Recordset15_get_CursorLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_CursorLocation_Proxy(Recordset15 *This,CursorLocationEnum lCursorLoc);
++  void __RPC_STUB Recordset15_put_CursorLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_NextRecordset_Proxy(Recordset15 *This,VARIANT *RecordsAffected,_ADORecordset **ppiRs);
++  void __RPC_STUB Recordset15_NextRecordset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_Supports_Proxy(Recordset15 *This,CursorOptionEnum CursorOptions,VARIANT_BOOL *pb);
++  void __RPC_STUB Recordset15_Supports_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_Collect_Proxy(Recordset15 *This,VARIANT Index,VARIANT *pvar);
++  void __RPC_STUB Recordset15_get_Collect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_Collect_Proxy(Recordset15 *This,VARIANT Index,VARIANT value);
++  void __RPC_STUB Recordset15_put_Collect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_get_MarshalOptions_Proxy(Recordset15 *This,MarshalOptionsEnum *peMarshal);
++  void __RPC_STUB Recordset15_get_MarshalOptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_put_MarshalOptions_Proxy(Recordset15 *This,MarshalOptionsEnum eMarshal);
++  void __RPC_STUB Recordset15_put_MarshalOptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset15_Find_Proxy(Recordset15 *This,BSTR Criteria,ADO_LONGPTR SkipRecords,SearchDirectionEnum SearchDirection,VARIANT Start);
++  void __RPC_STUB Recordset15_Find_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Recordset20_INTERFACE_DEFINED__
++#define __Recordset20_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Recordset20;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct Recordset20 : public Recordset15 {
++  public:
++    virtual HRESULT WINAPI Cancel(void) = 0;
++    virtual HRESULT WINAPI get_DataSource(IUnknown **ppunkDataSource) = 0;
++    virtual HRESULT WINAPI putref_DataSource(IUnknown *punkDataSource) = 0;
++    virtual HRESULT WINAPI _xSave(BSTR FileName = NULL,PersistFormatEnum PersistFormat = adPersistADTG) = 0;
++    virtual HRESULT WINAPI get_ActiveCommand(IDispatch **ppCmd) = 0;
++    virtual HRESULT WINAPI put_StayInSync(VARIANT_BOOL bStayInSync) = 0;
++    virtual HRESULT WINAPI get_StayInSync(VARIANT_BOOL *pbStayInSync) = 0;
++    virtual HRESULT WINAPI GetString(StringFormatEnum StringFormat,long NumRows,BSTR ColumnDelimeter,BSTR RowDelimeter,BSTR NullExpr,BSTR *pRetString) = 0;
++    virtual HRESULT WINAPI get_DataMember(BSTR *pbstrDataMember) = 0;
++    virtual HRESULT WINAPI put_DataMember(BSTR bstrDataMember) = 0;
++    virtual HRESULT WINAPI CompareBookmarks(VARIANT Bookmark1,VARIANT Bookmark2,CompareEnum *pCompare) = 0;
++    virtual HRESULT WINAPI Clone(LockTypeEnum LockType,_ADORecordset **ppvObject) = 0;
++    virtual HRESULT WINAPI Resync(AffectEnum AffectRecords = adAffectAll,ResyncEnum ResyncValues = adResyncAllValues) = 0;
++  };
++#else
++  typedef struct Recordset20Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(Recordset20 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(Recordset20 *This);
++      ULONG (WINAPI *Release)(Recordset20 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(Recordset20 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(Recordset20 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(Recordset20 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(Recordset20 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(Recordset20 *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_AbsolutePosition)(Recordset20 *This,PositionEnum_Param *pl);
++      HRESULT (WINAPI *put_AbsolutePosition)(Recordset20 *This,PositionEnum_Param Position);
++      HRESULT (WINAPI *putref_ActiveADOConnection)(Recordset20 *This,IDispatch *pconn);
++      HRESULT (WINAPI *put_ActiveConnection)(Recordset20 *This,VARIANT vConn);
++      HRESULT (WINAPI *get_ActiveConnection)(Recordset20 *This,VARIANT *pvar);
++      HRESULT (WINAPI *get_BOF)(Recordset20 *This,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Bookmark)(Recordset20 *This,VARIANT *pvBookmark);
++      HRESULT (WINAPI *put_Bookmark)(Recordset20 *This,VARIANT vBookmark);
++      HRESULT (WINAPI *get_CacheSize)(Recordset20 *This,long *pl);
++      HRESULT (WINAPI *put_CacheSize)(Recordset20 *This,long CacheSize);
++      HRESULT (WINAPI *get_CursorType)(Recordset20 *This,CursorTypeEnum *plCursorType);
++      HRESULT (WINAPI *put_CursorType)(Recordset20 *This,CursorTypeEnum lCursorType);
++      HRESULT (WINAPI *get_EOF)(Recordset20 *This,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Fields)(Recordset20 *This,ADOFields **ppvObject);
++      HRESULT (WINAPI *get_LockType)(Recordset20 *This,LockTypeEnum *plLockType);
++      HRESULT (WINAPI *put_LockType)(Recordset20 *This,LockTypeEnum lLockType);
++      HRESULT (WINAPI *get_MaxRecords)(Recordset20 *This,ADO_LONGPTR *plMaxRecords);
++      HRESULT (WINAPI *put_MaxRecords)(Recordset20 *This,ADO_LONGPTR lMaxRecords);
++      HRESULT (WINAPI *get_RecordCount)(Recordset20 *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *putref_Source)(Recordset20 *This,IDispatch *pcmd);
++      HRESULT (WINAPI *put_Source)(Recordset20 *This,BSTR bstrConn);
++      HRESULT (WINAPI *get_Source)(Recordset20 *This,VARIANT *pvSource);
++      HRESULT (WINAPI *AddNew)(Recordset20 *This,VARIANT FieldList,VARIANT Values);
++      HRESULT (WINAPI *CancelUpdate)(Recordset20 *This);
++      HRESULT (WINAPI *Close)(Recordset20 *This);
++      HRESULT (WINAPI *Delete)(Recordset20 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *GetRows)(Recordset20 *This,long Rows,VARIANT Start,VARIANT Fields,VARIANT *pvar);
++      HRESULT (WINAPI *Move)(Recordset20 *This,ADO_LONGPTR NumRecords,VARIANT Start);
++      HRESULT (WINAPI *MoveNext)(Recordset20 *This);
++      HRESULT (WINAPI *MovePrevious)(Recordset20 *This);
++      HRESULT (WINAPI *MoveFirst)(Recordset20 *This);
++      HRESULT (WINAPI *MoveLast)(Recordset20 *This);
++      HRESULT (WINAPI *Open)(Recordset20 *This,VARIANT Source,VARIANT ActiveConnection,CursorTypeEnum CursorType,LockTypeEnum LockType,LONG Options);
++      HRESULT (WINAPI *Requery)(Recordset20 *This,LONG Options);
++      HRESULT (WINAPI *_xResync)(Recordset20 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *Update)(Recordset20 *This,VARIANT Fields,VARIANT Values);
++      HRESULT (WINAPI *get_AbsolutePage)(Recordset20 *This,PositionEnum_Param *pl);
++      HRESULT (WINAPI *put_AbsolutePage)(Recordset20 *This,PositionEnum_Param Page);
++      HRESULT (WINAPI *get_EditMode)(Recordset20 *This,EditModeEnum *pl);
++      HRESULT (WINAPI *get_Filter)(Recordset20 *This,VARIANT *Criteria);
++      HRESULT (WINAPI *put_Filter)(Recordset20 *This,VARIANT Criteria);
++      HRESULT (WINAPI *get_PageCount)(Recordset20 *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *get_PageSize)(Recordset20 *This,long *pl);
++      HRESULT (WINAPI *put_PageSize)(Recordset20 *This,long PageSize);
++      HRESULT (WINAPI *get_Sort)(Recordset20 *This,BSTR *Criteria);
++      HRESULT (WINAPI *put_Sort)(Recordset20 *This,BSTR Criteria);
++      HRESULT (WINAPI *get_Status)(Recordset20 *This,long *pl);
++      HRESULT (WINAPI *get_State)(Recordset20 *This,LONG *plObjState);
++      HRESULT (WINAPI *_xClone)(Recordset20 *This,_ADORecordset **ppvObject);
++      HRESULT (WINAPI *UpdateBatch)(Recordset20 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *CancelBatch)(Recordset20 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *get_CursorLocation)(Recordset20 *This,CursorLocationEnum *plCursorLoc);
++      HRESULT (WINAPI *put_CursorLocation)(Recordset20 *This,CursorLocationEnum lCursorLoc);
++      HRESULT (WINAPI *NextADORecordset)(Recordset20 *This,VARIANT *RecordsAffected,_ADORecordset **ppiRs);
++      HRESULT (WINAPI *Supports)(Recordset20 *This,CursorOptionEnum CursorOptions,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Collect)(Recordset20 *This,VARIANT Index,VARIANT *pvar);
++      HRESULT (WINAPI *put_Collect)(Recordset20 *This,VARIANT Index,VARIANT value);
++      HRESULT (WINAPI *get_MarshalOptions)(Recordset20 *This,MarshalOptionsEnum *peMarshal);
++      HRESULT (WINAPI *put_MarshalOptions)(Recordset20 *This,MarshalOptionsEnum eMarshal);
++      HRESULT (WINAPI *Find)(Recordset20 *This,BSTR Criteria,ADO_LONGPTR SkipRecords,SearchDirectionEnum SearchDirection,VARIANT Start);
++      HRESULT (WINAPI *Cancel)(Recordset20 *This);
++      HRESULT (WINAPI *get_DataSource)(Recordset20 *This,IUnknown **ppunkDataSource);
++      HRESULT (WINAPI *putref_DataSource)(Recordset20 *This,IUnknown *punkDataSource);
++      HRESULT (WINAPI *_xSave)(Recordset20 *This,BSTR FileName,PersistFormatEnum PersistFormat);
++      HRESULT (WINAPI *get_ActiveCommand)(Recordset20 *This,IDispatch **ppCmd);
++      HRESULT (WINAPI *put_StayInSync)(Recordset20 *This,VARIANT_BOOL bStayInSync);
++      HRESULT (WINAPI *get_StayInSync)(Recordset20 *This,VARIANT_BOOL *pbStayInSync);
++      HRESULT (WINAPI *GetString)(Recordset20 *This,StringFormatEnum StringFormat,long NumRows,BSTR ColumnDelimeter,BSTR RowDelimeter,BSTR NullExpr,BSTR *pRetString);
++      HRESULT (WINAPI *get_DataMember)(Recordset20 *This,BSTR *pbstrDataMember);
++      HRESULT (WINAPI *put_DataMember)(Recordset20 *This,BSTR bstrDataMember);
++      HRESULT (WINAPI *CompareBookmarks)(Recordset20 *This,VARIANT Bookmark1,VARIANT Bookmark2,CompareEnum *pCompare);
++      HRESULT (WINAPI *Clone)(Recordset20 *This,LockTypeEnum LockType,_ADORecordset **ppvObject);
++      HRESULT (WINAPI *Resync)(Recordset20 *This,AffectEnum AffectRecords,ResyncEnum ResyncValues);
++    END_INTERFACE
++  } Recordset20Vtbl;
++  struct Recordset20 {
++    CONST_VTBL struct Recordset20Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Recordset20_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Recordset20_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Recordset20_Release(This) (This)->lpVtbl -> Release(This)
++#define Recordset20_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Recordset20_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Recordset20_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Recordset20_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Recordset20_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define Recordset20_get_AbsolutePosition(This,pl) (This)->lpVtbl -> get_AbsolutePosition(This,pl)
++#define Recordset20_put_AbsolutePosition(This,Position) (This)->lpVtbl -> put_AbsolutePosition(This,Position)
++#define Recordset20_putref_ActiveConnection(This,pconn) (This)->lpVtbl -> putref_ActiveConnection(This,pconn)
++#define Recordset20_put_ActiveConnection(This,vConn) (This)->lpVtbl -> put_ActiveConnection(This,vConn)
++#define Recordset20_get_ActiveConnection(This,pvar) (This)->lpVtbl -> get_ActiveConnection(This,pvar)
++#define Recordset20_get_BOF(This,pb) (This)->lpVtbl -> get_BOF(This,pb)
++#define Recordset20_get_Bookmark(This,pvBookmark) (This)->lpVtbl -> get_Bookmark(This,pvBookmark)
++#define Recordset20_put_Bookmark(This,vBookmark) (This)->lpVtbl -> put_Bookmark(This,vBookmark)
++#define Recordset20_get_CacheSize(This,pl) (This)->lpVtbl -> get_CacheSize(This,pl)
++#define Recordset20_put_CacheSize(This,CacheSize) (This)->lpVtbl -> put_CacheSize(This,CacheSize)
++#define Recordset20_get_CursorType(This,plCursorType) (This)->lpVtbl -> get_CursorType(This,plCursorType)
++#define Recordset20_put_CursorType(This,lCursorType) (This)->lpVtbl -> put_CursorType(This,lCursorType)
++#define Recordset20_get_EOF(This,pb) (This)->lpVtbl -> get_EOF(This,pb)
++#define Recordset20_get_Fields(This,ppvObject) (This)->lpVtbl -> get_Fields(This,ppvObject)
++#define Recordset20_get_LockType(This,plLockType) (This)->lpVtbl -> get_LockType(This,plLockType)
++#define Recordset20_put_LockType(This,lLockType) (This)->lpVtbl -> put_LockType(This,lLockType)
++#define Recordset20_get_MaxRecords(This,plMaxRecords) (This)->lpVtbl -> get_MaxRecords(This,plMaxRecords)
++#define Recordset20_put_MaxRecords(This,lMaxRecords) (This)->lpVtbl -> put_MaxRecords(This,lMaxRecords)
++#define Recordset20_get_RecordCount(This,pl) (This)->lpVtbl -> get_RecordCount(This,pl)
++#define Recordset20_putref_Source(This,pcmd) (This)->lpVtbl -> putref_Source(This,pcmd)
++#define Recordset20_put_Source(This,bstrConn) (This)->lpVtbl -> put_Source(This,bstrConn)
++#define Recordset20_get_Source(This,pvSource) (This)->lpVtbl -> get_Source(This,pvSource)
++#define Recordset20_AddNew(This,FieldList,Values) (This)->lpVtbl -> AddNew(This,FieldList,Values)
++#define Recordset20_CancelUpdate(This) (This)->lpVtbl -> CancelUpdate(This)
++#define Recordset20_Close(This) (This)->lpVtbl -> Close(This)
++#define Recordset20_Delete(This,AffectRecords) (This)->lpVtbl -> Delete(This,AffectRecords)
++#define Recordset20_GetRows(This,Rows,Start,Fields,pvar) (This)->lpVtbl -> GetRows(This,Rows,Start,Fields,pvar)
++#define Recordset20_Move(This,NumRecords,Start) (This)->lpVtbl -> Move(This,NumRecords,Start)
++#define Recordset20_MoveNext(This) (This)->lpVtbl -> MoveNext(This)
++#define Recordset20_MovePrevious(This) (This)->lpVtbl -> MovePrevious(This)
++#define Recordset20_MoveFirst(This) (This)->lpVtbl -> MoveFirst(This)
++#define Recordset20_MoveLast(This) (This)->lpVtbl -> MoveLast(This)
++#define Recordset20_Open(This,Source,ActiveConnection,CursorType,LockType,Options) (This)->lpVtbl -> Open(This,Source,ActiveConnection,CursorType,LockType,Options)
++#define Recordset20_Requery(This,Options) (This)->lpVtbl -> Requery(This,Options)
++#define Recordset20__xResync(This,AffectRecords) (This)->lpVtbl -> _xResync(This,AffectRecords)
++#define Recordset20_Update(This,Fields,Values) (This)->lpVtbl -> Update(This,Fields,Values)
++#define Recordset20_get_AbsolutePage(This,pl) (This)->lpVtbl -> get_AbsolutePage(This,pl)
++#define Recordset20_put_AbsolutePage(This,Page) (This)->lpVtbl -> put_AbsolutePage(This,Page)
++#define Recordset20_get_EditMode(This,pl) (This)->lpVtbl -> get_EditMode(This,pl)
++#define Recordset20_get_Filter(This,Criteria) (This)->lpVtbl -> get_Filter(This,Criteria)
++#define Recordset20_put_Filter(This,Criteria) (This)->lpVtbl -> put_Filter(This,Criteria)
++#define Recordset20_get_PageCount(This,pl) (This)->lpVtbl -> get_PageCount(This,pl)
++#define Recordset20_get_PageSize(This,pl) (This)->lpVtbl -> get_PageSize(This,pl)
++#define Recordset20_put_PageSize(This,PageSize) (This)->lpVtbl -> put_PageSize(This,PageSize)
++#define Recordset20_get_Sort(This,Criteria) (This)->lpVtbl -> get_Sort(This,Criteria)
++#define Recordset20_put_Sort(This,Criteria) (This)->lpVtbl -> put_Sort(This,Criteria)
++#define Recordset20_get_Status(This,pl) (This)->lpVtbl -> get_Status(This,pl)
++#define Recordset20_get_State(This,plObjState) (This)->lpVtbl -> get_State(This,plObjState)
++#define Recordset20__xClone(This,ppvObject) (This)->lpVtbl -> _xClone(This,ppvObject)
++#define Recordset20_UpdateBatch(This,AffectRecords) (This)->lpVtbl -> UpdateBatch(This,AffectRecords)
++#define Recordset20_CancelBatch(This,AffectRecords) (This)->lpVtbl -> CancelBatch(This,AffectRecords)
++#define Recordset20_get_CursorLocation(This,plCursorLoc) (This)->lpVtbl -> get_CursorLocation(This,plCursorLoc)
++#define Recordset20_put_CursorLocation(This,lCursorLoc) (This)->lpVtbl -> put_CursorLocation(This,lCursorLoc)
++#define Recordset20_NextRecordset(This,RecordsAffected,ppiRs) (This)->lpVtbl -> NextRecordset(This,RecordsAffected,ppiRs)
++#define Recordset20_Supports(This,CursorOptions,pb) (This)->lpVtbl -> Supports(This,CursorOptions,pb)
++#define Recordset20_get_Collect(This,Index,pvar) (This)->lpVtbl -> get_Collect(This,Index,pvar)
++#define Recordset20_put_Collect(This,Index,value) (This)->lpVtbl -> put_Collect(This,Index,value)
++#define Recordset20_get_MarshalOptions(This,peMarshal) (This)->lpVtbl -> get_MarshalOptions(This,peMarshal)
++#define Recordset20_put_MarshalOptions(This,eMarshal) (This)->lpVtbl -> put_MarshalOptions(This,eMarshal)
++#define Recordset20_Find(This,Criteria,SkipRecords,SearchDirection,Start) (This)->lpVtbl -> Find(This,Criteria,SkipRecords,SearchDirection,Start)
++#define Recordset20_Cancel(This) (This)->lpVtbl -> Cancel(This)
++#define Recordset20_get_DataSource(This,ppunkDataSource) (This)->lpVtbl -> get_DataSource(This,ppunkDataSource)
++#define Recordset20_putref_DataSource(This,punkDataSource) (This)->lpVtbl -> putref_DataSource(This,punkDataSource)
++#define Recordset20__xSave(This,FileName,PersistFormat) (This)->lpVtbl -> _xSave(This,FileName,PersistFormat)
++#define Recordset20_get_ActiveCommand(This,ppCmd) (This)->lpVtbl -> get_ActiveCommand(This,ppCmd)
++#define Recordset20_put_StayInSync(This,bStayInSync) (This)->lpVtbl -> put_StayInSync(This,bStayInSync)
++#define Recordset20_get_StayInSync(This,pbStayInSync) (This)->lpVtbl -> get_StayInSync(This,pbStayInSync)
++#define Recordset20_GetString(This,StringFormat,NumRows,ColumnDelimeter,RowDelimeter,NullExpr,pRetString) (This)->lpVtbl -> GetString(This,StringFormat,NumRows,ColumnDelimeter,RowDelimeter,NullExpr,pRetString)
++#define Recordset20_get_DataMember(This,pbstrDataMember) (This)->lpVtbl -> get_DataMember(This,pbstrDataMember)
++#define Recordset20_put_DataMember(This,bstrDataMember) (This)->lpVtbl -> put_DataMember(This,bstrDataMember)
++#define Recordset20_CompareBookmarks(This,Bookmark1,Bookmark2,pCompare) (This)->lpVtbl -> CompareBookmarks(This,Bookmark1,Bookmark2,pCompare)
++#define Recordset20_Clone(This,LockType,ppvObject) (This)->lpVtbl -> Clone(This,LockType,ppvObject)
++#define Recordset20_Resync(This,AffectRecords,ResyncValues) (This)->lpVtbl -> Resync(This,AffectRecords,ResyncValues)
++#endif
++#endif
++  HRESULT WINAPI Recordset20_Cancel_Proxy(Recordset20 *This);
++  void __RPC_STUB Recordset20_Cancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20_get_DataSource_Proxy(Recordset20 *This,IUnknown **ppunkDataSource);
++  void __RPC_STUB Recordset20_get_DataSource_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20_putref_DataSource_Proxy(Recordset20 *This,IUnknown *punkDataSource);
++  void __RPC_STUB Recordset20_putref_DataSource_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20__xSave_Proxy(Recordset20 *This,BSTR FileName,PersistFormatEnum PersistFormat);
++  void __RPC_STUB Recordset20__xSave_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20_get_ActiveCommand_Proxy(Recordset20 *This,IDispatch **ppCmd);
++  void __RPC_STUB Recordset20_get_ActiveCommand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20_put_StayInSync_Proxy(Recordset20 *This,VARIANT_BOOL bStayInSync);
++  void __RPC_STUB Recordset20_put_StayInSync_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20_get_StayInSync_Proxy(Recordset20 *This,VARIANT_BOOL *pbStayInSync);
++  void __RPC_STUB Recordset20_get_StayInSync_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20_GetString_Proxy(Recordset20 *This,StringFormatEnum StringFormat,long NumRows,BSTR ColumnDelimeter,BSTR RowDelimeter,BSTR NullExpr,BSTR *pRetString);
++  void __RPC_STUB Recordset20_GetString_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20_get_DataMember_Proxy(Recordset20 *This,BSTR *pbstrDataMember);
++  void __RPC_STUB Recordset20_get_DataMember_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20_put_DataMember_Proxy(Recordset20 *This,BSTR bstrDataMember);
++  void __RPC_STUB Recordset20_put_DataMember_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20_CompareBookmarks_Proxy(Recordset20 *This,VARIANT Bookmark1,VARIANT Bookmark2,CompareEnum *pCompare);
++  void __RPC_STUB Recordset20_CompareBookmarks_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20_Clone_Proxy(Recordset20 *This,LockTypeEnum LockType,_ADORecordset **ppvObject);
++  void __RPC_STUB Recordset20_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset20_Resync_Proxy(Recordset20 *This,AffectEnum AffectRecords,ResyncEnum ResyncValues);
++  void __RPC_STUB Recordset20_Resync_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Recordset21_INTERFACE_DEFINED__
++#define __Recordset21_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Recordset21;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct Recordset21 : public Recordset20 {
++  public:
++    virtual HRESULT WINAPI Seek(VARIANT KeyValues,SeekEnum SeekOption = adSeekFirstEQ) = 0;
++    virtual HRESULT WINAPI put_Index(BSTR Index) = 0;
++    virtual HRESULT WINAPI get_Index(BSTR *pbstrIndex) = 0;
++  };
++#else
++  typedef struct Recordset21Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(Recordset21 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(Recordset21 *This);
++      ULONG (WINAPI *Release)(Recordset21 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(Recordset21 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(Recordset21 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(Recordset21 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(Recordset21 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(Recordset21 *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_AbsolutePosition)(Recordset21 *This,PositionEnum_Param *pl);
++      HRESULT (WINAPI *put_AbsolutePosition)(Recordset21 *This,PositionEnum_Param Position);
++      HRESULT (WINAPI *putref_ActiveADOConnection)(Recordset21 *This,IDispatch *pconn);
++      HRESULT (WINAPI *put_ActiveConnection)(Recordset21 *This,VARIANT vConn);
++      HRESULT (WINAPI *get_ActiveConnection)(Recordset21 *This,VARIANT *pvar);
++      HRESULT (WINAPI *get_BOF)(Recordset21 *This,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Bookmark)(Recordset21 *This,VARIANT *pvBookmark);
++      HRESULT (WINAPI *put_Bookmark)(Recordset21 *This,VARIANT vBookmark);
++      HRESULT (WINAPI *get_CacheSize)(Recordset21 *This,long *pl);
++      HRESULT (WINAPI *put_CacheSize)(Recordset21 *This,long CacheSize);
++      HRESULT (WINAPI *get_CursorType)(Recordset21 *This,CursorTypeEnum *plCursorType);
++      HRESULT (WINAPI *put_CursorType)(Recordset21 *This,CursorTypeEnum lCursorType);
++      HRESULT (WINAPI *get_EOF)(Recordset21 *This,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Fields)(Recordset21 *This,ADOFields **ppvObject);
++      HRESULT (WINAPI *get_LockType)(Recordset21 *This,LockTypeEnum *plLockType);
++      HRESULT (WINAPI *put_LockType)(Recordset21 *This,LockTypeEnum lLockType);
++      HRESULT (WINAPI *get_MaxRecords)(Recordset21 *This,ADO_LONGPTR *plMaxRecords);
++      HRESULT (WINAPI *put_MaxRecords)(Recordset21 *This,ADO_LONGPTR lMaxRecords);
++      HRESULT (WINAPI *get_RecordCount)(Recordset21 *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *putref_Source)(Recordset21 *This,IDispatch *pcmd);
++      HRESULT (WINAPI *put_Source)(Recordset21 *This,BSTR bstrConn);
++      HRESULT (WINAPI *get_Source)(Recordset21 *This,VARIANT *pvSource);
++      HRESULT (WINAPI *AddNew)(Recordset21 *This,VARIANT FieldList,VARIANT Values);
++      HRESULT (WINAPI *CancelUpdate)(Recordset21 *This);
++      HRESULT (WINAPI *Close)(Recordset21 *This);
++      HRESULT (WINAPI *Delete)(Recordset21 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *GetRows)(Recordset21 *This,long Rows,VARIANT Start,VARIANT Fields,VARIANT *pvar);
++      HRESULT (WINAPI *Move)(Recordset21 *This,ADO_LONGPTR NumRecords,VARIANT Start);
++      HRESULT (WINAPI *MoveNext)(Recordset21 *This);
++      HRESULT (WINAPI *MovePrevious)(Recordset21 *This);
++      HRESULT (WINAPI *MoveFirst)(Recordset21 *This);
++      HRESULT (WINAPI *MoveLast)(Recordset21 *This);
++      HRESULT (WINAPI *Open)(Recordset21 *This,VARIANT Source,VARIANT ActiveConnection,CursorTypeEnum CursorType,LockTypeEnum LockType,LONG Options);
++      HRESULT (WINAPI *Requery)(Recordset21 *This,LONG Options);
++      HRESULT (WINAPI *_xResync)(Recordset21 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *Update)(Recordset21 *This,VARIANT Fields,VARIANT Values);
++      HRESULT (WINAPI *get_AbsolutePage)(Recordset21 *This,PositionEnum_Param *pl);
++      HRESULT (WINAPI *put_AbsolutePage)(Recordset21 *This,PositionEnum_Param Page);
++      HRESULT (WINAPI *get_EditMode)(Recordset21 *This,EditModeEnum *pl);
++      HRESULT (WINAPI *get_Filter)(Recordset21 *This,VARIANT *Criteria);
++      HRESULT (WINAPI *put_Filter)(Recordset21 *This,VARIANT Criteria);
++      HRESULT (WINAPI *get_PageCount)(Recordset21 *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *get_PageSize)(Recordset21 *This,long *pl);
++      HRESULT (WINAPI *put_PageSize)(Recordset21 *This,long PageSize);
++      HRESULT (WINAPI *get_Sort)(Recordset21 *This,BSTR *Criteria);
++      HRESULT (WINAPI *put_Sort)(Recordset21 *This,BSTR Criteria);
++      HRESULT (WINAPI *get_Status)(Recordset21 *This,long *pl);
++      HRESULT (WINAPI *get_State)(Recordset21 *This,LONG *plObjState);
++      HRESULT (WINAPI *_xClone)(Recordset21 *This,_ADORecordset **ppvObject);
++      HRESULT (WINAPI *UpdateBatch)(Recordset21 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *CancelBatch)(Recordset21 *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *get_CursorLocation)(Recordset21 *This,CursorLocationEnum *plCursorLoc);
++      HRESULT (WINAPI *put_CursorLocation)(Recordset21 *This,CursorLocationEnum lCursorLoc);
++      HRESULT (WINAPI *NextADORecordset)(Recordset21 *This,VARIANT *RecordsAffected,_ADORecordset **ppiRs);
++      HRESULT (WINAPI *Supports)(Recordset21 *This,CursorOptionEnum CursorOptions,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Collect)(Recordset21 *This,VARIANT Index,VARIANT *pvar);
++      HRESULT (WINAPI *put_Collect)(Recordset21 *This,VARIANT Index,VARIANT value);
++      HRESULT (WINAPI *get_MarshalOptions)(Recordset21 *This,MarshalOptionsEnum *peMarshal);
++      HRESULT (WINAPI *put_MarshalOptions)(Recordset21 *This,MarshalOptionsEnum eMarshal);
++      HRESULT (WINAPI *Find)(Recordset21 *This,BSTR Criteria,ADO_LONGPTR SkipRecords,SearchDirectionEnum SearchDirection,VARIANT Start);
++      HRESULT (WINAPI *Cancel)(Recordset21 *This);
++      HRESULT (WINAPI *get_DataSource)(Recordset21 *This,IUnknown **ppunkDataSource);
++      HRESULT (WINAPI *putref_DataSource)(Recordset21 *This,IUnknown *punkDataSource);
++      HRESULT (WINAPI *_xSave)(Recordset21 *This,BSTR FileName,PersistFormatEnum PersistFormat);
++      HRESULT (WINAPI *get_ActiveCommand)(Recordset21 *This,IDispatch **ppCmd);
++      HRESULT (WINAPI *put_StayInSync)(Recordset21 *This,VARIANT_BOOL bStayInSync);
++      HRESULT (WINAPI *get_StayInSync)(Recordset21 *This,VARIANT_BOOL *pbStayInSync);
++      HRESULT (WINAPI *GetString)(Recordset21 *This,StringFormatEnum StringFormat,long NumRows,BSTR ColumnDelimeter,BSTR RowDelimeter,BSTR NullExpr,BSTR *pRetString);
++      HRESULT (WINAPI *get_DataMember)(Recordset21 *This,BSTR *pbstrDataMember);
++      HRESULT (WINAPI *put_DataMember)(Recordset21 *This,BSTR bstrDataMember);
++      HRESULT (WINAPI *CompareBookmarks)(Recordset21 *This,VARIANT Bookmark1,VARIANT Bookmark2,CompareEnum *pCompare);
++      HRESULT (WINAPI *Clone)(Recordset21 *This,LockTypeEnum LockType,_ADORecordset **ppvObject);
++      HRESULT (WINAPI *Resync)(Recordset21 *This,AffectEnum AffectRecords,ResyncEnum ResyncValues);
++      HRESULT (WINAPI *Seek)(Recordset21 *This,VARIANT KeyValues,SeekEnum SeekOption);
++      HRESULT (WINAPI *put_Index)(Recordset21 *This,BSTR Index);
++      HRESULT (WINAPI *get_Index)(Recordset21 *This,BSTR *pbstrIndex);
++    END_INTERFACE
++  } Recordset21Vtbl;
++  struct Recordset21 {
++    CONST_VTBL struct Recordset21Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Recordset21_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Recordset21_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Recordset21_Release(This) (This)->lpVtbl -> Release(This)
++#define Recordset21_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Recordset21_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Recordset21_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Recordset21_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Recordset21_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define Recordset21_get_AbsolutePosition(This,pl) (This)->lpVtbl -> get_AbsolutePosition(This,pl)
++#define Recordset21_put_AbsolutePosition(This,Position) (This)->lpVtbl -> put_AbsolutePosition(This,Position)
++#define Recordset21_putref_ActiveConnection(This,pconn) (This)->lpVtbl -> putref_ActiveConnection(This,pconn)
++#define Recordset21_put_ActiveConnection(This,vConn) (This)->lpVtbl -> put_ActiveConnection(This,vConn)
++#define Recordset21_get_ActiveConnection(This,pvar) (This)->lpVtbl -> get_ActiveConnection(This,pvar)
++#define Recordset21_get_BOF(This,pb) (This)->lpVtbl -> get_BOF(This,pb)
++#define Recordset21_get_Bookmark(This,pvBookmark) (This)->lpVtbl -> get_Bookmark(This,pvBookmark)
++#define Recordset21_put_Bookmark(This,vBookmark) (This)->lpVtbl -> put_Bookmark(This,vBookmark)
++#define Recordset21_get_CacheSize(This,pl) (This)->lpVtbl -> get_CacheSize(This,pl)
++#define Recordset21_put_CacheSize(This,CacheSize) (This)->lpVtbl -> put_CacheSize(This,CacheSize)
++#define Recordset21_get_CursorType(This,plCursorType) (This)->lpVtbl -> get_CursorType(This,plCursorType)
++#define Recordset21_put_CursorType(This,lCursorType) (This)->lpVtbl -> put_CursorType(This,lCursorType)
++#define Recordset21_get_EOF(This,pb) (This)->lpVtbl -> get_EOF(This,pb)
++#define Recordset21_get_Fields(This,ppvObject) (This)->lpVtbl -> get_Fields(This,ppvObject)
++#define Recordset21_get_LockType(This,plLockType) (This)->lpVtbl -> get_LockType(This,plLockType)
++#define Recordset21_put_LockType(This,lLockType) (This)->lpVtbl -> put_LockType(This,lLockType)
++#define Recordset21_get_MaxRecords(This,plMaxRecords) (This)->lpVtbl -> get_MaxRecords(This,plMaxRecords)
++#define Recordset21_put_MaxRecords(This,lMaxRecords) (This)->lpVtbl -> put_MaxRecords(This,lMaxRecords)
++#define Recordset21_get_RecordCount(This,pl) (This)->lpVtbl -> get_RecordCount(This,pl)
++#define Recordset21_putref_Source(This,pcmd) (This)->lpVtbl -> putref_Source(This,pcmd)
++#define Recordset21_put_Source(This,bstrConn) (This)->lpVtbl -> put_Source(This,bstrConn)
++#define Recordset21_get_Source(This,pvSource) (This)->lpVtbl -> get_Source(This,pvSource)
++#define Recordset21_AddNew(This,FieldList,Values) (This)->lpVtbl -> AddNew(This,FieldList,Values)
++#define Recordset21_CancelUpdate(This) (This)->lpVtbl -> CancelUpdate(This)
++#define Recordset21_Close(This) (This)->lpVtbl -> Close(This)
++#define Recordset21_Delete(This,AffectRecords) (This)->lpVtbl -> Delete(This,AffectRecords)
++#define Recordset21_GetRows(This,Rows,Start,Fields,pvar) (This)->lpVtbl -> GetRows(This,Rows,Start,Fields,pvar)
++#define Recordset21_Move(This,NumRecords,Start) (This)->lpVtbl -> Move(This,NumRecords,Start)
++#define Recordset21_MoveNext(This) (This)->lpVtbl -> MoveNext(This)
++#define Recordset21_MovePrevious(This) (This)->lpVtbl -> MovePrevious(This)
++#define Recordset21_MoveFirst(This) (This)->lpVtbl -> MoveFirst(This)
++#define Recordset21_MoveLast(This) (This)->lpVtbl -> MoveLast(This)
++#define Recordset21_Open(This,Source,ActiveConnection,CursorType,LockType,Options) (This)->lpVtbl -> Open(This,Source,ActiveConnection,CursorType,LockType,Options)
++#define Recordset21_Requery(This,Options) (This)->lpVtbl -> Requery(This,Options)
++#define Recordset21__xResync(This,AffectRecords) (This)->lpVtbl -> _xResync(This,AffectRecords)
++#define Recordset21_Update(This,Fields,Values) (This)->lpVtbl -> Update(This,Fields,Values)
++#define Recordset21_get_AbsolutePage(This,pl) (This)->lpVtbl -> get_AbsolutePage(This,pl)
++#define Recordset21_put_AbsolutePage(This,Page) (This)->lpVtbl -> put_AbsolutePage(This,Page)
++#define Recordset21_get_EditMode(This,pl) (This)->lpVtbl -> get_EditMode(This,pl)
++#define Recordset21_get_Filter(This,Criteria) (This)->lpVtbl -> get_Filter(This,Criteria)
++#define Recordset21_put_Filter(This,Criteria) (This)->lpVtbl -> put_Filter(This,Criteria)
++#define Recordset21_get_PageCount(This,pl) (This)->lpVtbl -> get_PageCount(This,pl)
++#define Recordset21_get_PageSize(This,pl) (This)->lpVtbl -> get_PageSize(This,pl)
++#define Recordset21_put_PageSize(This,PageSize) (This)->lpVtbl -> put_PageSize(This,PageSize)
++#define Recordset21_get_Sort(This,Criteria) (This)->lpVtbl -> get_Sort(This,Criteria)
++#define Recordset21_put_Sort(This,Criteria) (This)->lpVtbl -> put_Sort(This,Criteria)
++#define Recordset21_get_Status(This,pl) (This)->lpVtbl -> get_Status(This,pl)
++#define Recordset21_get_State(This,plObjState) (This)->lpVtbl -> get_State(This,plObjState)
++#define Recordset21__xClone(This,ppvObject) (This)->lpVtbl -> _xClone(This,ppvObject)
++#define Recordset21_UpdateBatch(This,AffectRecords) (This)->lpVtbl -> UpdateBatch(This,AffectRecords)
++#define Recordset21_CancelBatch(This,AffectRecords) (This)->lpVtbl -> CancelBatch(This,AffectRecords)
++#define Recordset21_get_CursorLocation(This,plCursorLoc) (This)->lpVtbl -> get_CursorLocation(This,plCursorLoc)
++#define Recordset21_put_CursorLocation(This,lCursorLoc) (This)->lpVtbl -> put_CursorLocation(This,lCursorLoc)
++#define Recordset21_NextRecordset(This,RecordsAffected,ppiRs) (This)->lpVtbl -> NextRecordset(This,RecordsAffected,ppiRs)
++#define Recordset21_Supports(This,CursorOptions,pb) (This)->lpVtbl -> Supports(This,CursorOptions,pb)
++#define Recordset21_get_Collect(This,Index,pvar) (This)->lpVtbl -> get_Collect(This,Index,pvar)
++#define Recordset21_put_Collect(This,Index,value) (This)->lpVtbl -> put_Collect(This,Index,value)
++#define Recordset21_get_MarshalOptions(This,peMarshal) (This)->lpVtbl -> get_MarshalOptions(This,peMarshal)
++#define Recordset21_put_MarshalOptions(This,eMarshal) (This)->lpVtbl -> put_MarshalOptions(This,eMarshal)
++#define Recordset21_Find(This,Criteria,SkipRecords,SearchDirection,Start) (This)->lpVtbl -> Find(This,Criteria,SkipRecords,SearchDirection,Start)
++#define Recordset21_Cancel(This) (This)->lpVtbl -> Cancel(This)
++#define Recordset21_get_DataSource(This,ppunkDataSource) (This)->lpVtbl -> get_DataSource(This,ppunkDataSource)
++#define Recordset21_putref_DataSource(This,punkDataSource) (This)->lpVtbl -> putref_DataSource(This,punkDataSource)
++#define Recordset21__xSave(This,FileName,PersistFormat) (This)->lpVtbl -> _xSave(This,FileName,PersistFormat)
++#define Recordset21_get_ActiveCommand(This,ppCmd) (This)->lpVtbl -> get_ActiveCommand(This,ppCmd)
++#define Recordset21_put_StayInSync(This,bStayInSync) (This)->lpVtbl -> put_StayInSync(This,bStayInSync)
++#define Recordset21_get_StayInSync(This,pbStayInSync) (This)->lpVtbl -> get_StayInSync(This,pbStayInSync)
++#define Recordset21_GetString(This,StringFormat,NumRows,ColumnDelimeter,RowDelimeter,NullExpr,pRetString) (This)->lpVtbl -> GetString(This,StringFormat,NumRows,ColumnDelimeter,RowDelimeter,NullExpr,pRetString)
++#define Recordset21_get_DataMember(This,pbstrDataMember) (This)->lpVtbl -> get_DataMember(This,pbstrDataMember)
++#define Recordset21_put_DataMember(This,bstrDataMember) (This)->lpVtbl -> put_DataMember(This,bstrDataMember)
++#define Recordset21_CompareBookmarks(This,Bookmark1,Bookmark2,pCompare) (This)->lpVtbl -> CompareBookmarks(This,Bookmark1,Bookmark2,pCompare)
++#define Recordset21_Clone(This,LockType,ppvObject) (This)->lpVtbl -> Clone(This,LockType,ppvObject)
++#define Recordset21_Resync(This,AffectRecords,ResyncValues) (This)->lpVtbl -> Resync(This,AffectRecords,ResyncValues)
++#define Recordset21_Seek(This,KeyValues,SeekOption) (This)->lpVtbl -> Seek(This,KeyValues,SeekOption)
++#define Recordset21_put_Index(This,Index) (This)->lpVtbl -> put_Index(This,Index)
++#define Recordset21_get_Index(This,pbstrIndex) (This)->lpVtbl -> get_Index(This,pbstrIndex)
++#endif
++#endif
++  HRESULT WINAPI Recordset21_Seek_Proxy(Recordset21 *This,VARIANT KeyValues,SeekEnum SeekOption);
++  void __RPC_STUB Recordset21_Seek_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset21_put_Index_Proxy(Recordset21 *This,BSTR Index);
++  void __RPC_STUB Recordset21_put_Index_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Recordset21_get_Index_Proxy(Recordset21 *This,BSTR *pbstrIndex);
++  void __RPC_STUB Recordset21_get_Index_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___Recordset_INTERFACE_DEFINED__
++#define ___Recordset_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Recordset;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADORecordset : public Recordset21 {
++  public:
++    virtual HRESULT WINAPI Save(VARIANT Destination,PersistFormatEnum PersistFormat = adPersistADTG) = 0;
++  };
++#else
++  typedef struct _RecordsetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADORecordset *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADORecordset *This);
++      ULONG (WINAPI *Release)(_ADORecordset *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADORecordset *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADORecordset *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADORecordset *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADORecordset *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(_ADORecordset *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_AbsolutePosition)(_ADORecordset *This,PositionEnum_Param *pl);
++      HRESULT (WINAPI *put_AbsolutePosition)(_ADORecordset *This,PositionEnum_Param Position);
++      HRESULT (WINAPI *putref_ActiveADOConnection)(_ADORecordset *This,IDispatch *pconn);
++      HRESULT (WINAPI *put_ActiveConnection)(_ADORecordset *This,VARIANT vConn);
++      HRESULT (WINAPI *get_ActiveConnection)(_ADORecordset *This,VARIANT *pvar);
++      HRESULT (WINAPI *get_BOF)(_ADORecordset *This,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Bookmark)(_ADORecordset *This,VARIANT *pvBookmark);
++      HRESULT (WINAPI *put_Bookmark)(_ADORecordset *This,VARIANT vBookmark);
++      HRESULT (WINAPI *get_CacheSize)(_ADORecordset *This,long *pl);
++      HRESULT (WINAPI *put_CacheSize)(_ADORecordset *This,long CacheSize);
++      HRESULT (WINAPI *get_CursorType)(_ADORecordset *This,CursorTypeEnum *plCursorType);
++      HRESULT (WINAPI *put_CursorType)(_ADORecordset *This,CursorTypeEnum lCursorType);
++      HRESULT (WINAPI *get_EOF)(_ADORecordset *This,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Fields)(_ADORecordset *This,ADOFields **ppvObject);
++      HRESULT (WINAPI *get_LockType)(_ADORecordset *This,LockTypeEnum *plLockType);
++      HRESULT (WINAPI *put_LockType)(_ADORecordset *This,LockTypeEnum lLockType);
++      HRESULT (WINAPI *get_MaxRecords)(_ADORecordset *This,ADO_LONGPTR *plMaxRecords);
++      HRESULT (WINAPI *put_MaxRecords)(_ADORecordset *This,ADO_LONGPTR lMaxRecords);
++      HRESULT (WINAPI *get_RecordCount)(_ADORecordset *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *putref_Source)(_ADORecordset *This,IDispatch *pcmd);
++      HRESULT (WINAPI *put_Source)(_ADORecordset *This,BSTR bstrConn);
++      HRESULT (WINAPI *get_Source)(_ADORecordset *This,VARIANT *pvSource);
++      HRESULT (WINAPI *AddNew)(_ADORecordset *This,VARIANT FieldList,VARIANT Values);
++      HRESULT (WINAPI *CancelUpdate)(_ADORecordset *This);
++      HRESULT (WINAPI *Close)(_ADORecordset *This);
++      HRESULT (WINAPI *Delete)(_ADORecordset *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *GetRows)(_ADORecordset *This,long Rows,VARIANT Start,VARIANT Fields,VARIANT *pvar);
++      HRESULT (WINAPI *Move)(_ADORecordset *This,ADO_LONGPTR NumRecords,VARIANT Start);
++      HRESULT (WINAPI *MoveNext)(_ADORecordset *This);
++      HRESULT (WINAPI *MovePrevious)(_ADORecordset *This);
++      HRESULT (WINAPI *MoveFirst)(_ADORecordset *This);
++      HRESULT (WINAPI *MoveLast)(_ADORecordset *This);
++      HRESULT (WINAPI *Open)(_ADORecordset *This,VARIANT Source,VARIANT ActiveConnection,CursorTypeEnum CursorType,LockTypeEnum LockType,LONG Options);
++      HRESULT (WINAPI *Requery)(_ADORecordset *This,LONG Options);
++      HRESULT (WINAPI *_xResync)(_ADORecordset *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *Update)(_ADORecordset *This,VARIANT Fields,VARIANT Values);
++      HRESULT (WINAPI *get_AbsolutePage)(_ADORecordset *This,PositionEnum_Param *pl);
++      HRESULT (WINAPI *put_AbsolutePage)(_ADORecordset *This,PositionEnum_Param Page);
++      HRESULT (WINAPI *get_EditMode)(_ADORecordset *This,EditModeEnum *pl);
++      HRESULT (WINAPI *get_Filter)(_ADORecordset *This,VARIANT *Criteria);
++      HRESULT (WINAPI *put_Filter)(_ADORecordset *This,VARIANT Criteria);
++      HRESULT (WINAPI *get_PageCount)(_ADORecordset *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *get_PageSize)(_ADORecordset *This,long *pl);
++      HRESULT (WINAPI *put_PageSize)(_ADORecordset *This,long PageSize);
++      HRESULT (WINAPI *get_Sort)(_ADORecordset *This,BSTR *Criteria);
++      HRESULT (WINAPI *put_Sort)(_ADORecordset *This,BSTR Criteria);
++      HRESULT (WINAPI *get_Status)(_ADORecordset *This,long *pl);
++      HRESULT (WINAPI *get_State)(_ADORecordset *This,LONG *plObjState);
++      HRESULT (WINAPI *_xClone)(_ADORecordset *This,_ADORecordset **ppvObject);
++      HRESULT (WINAPI *UpdateBatch)(_ADORecordset *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *CancelBatch)(_ADORecordset *This,AffectEnum AffectRecords);
++      HRESULT (WINAPI *get_CursorLocation)(_ADORecordset *This,CursorLocationEnum *plCursorLoc);
++      HRESULT (WINAPI *put_CursorLocation)(_ADORecordset *This,CursorLocationEnum lCursorLoc);
++      HRESULT (WINAPI *NextADORecordset)(_ADORecordset *This,VARIANT *RecordsAffected,_ADORecordset **ppiRs);
++      HRESULT (WINAPI *Supports)(_ADORecordset *This,CursorOptionEnum CursorOptions,VARIANT_BOOL *pb);
++      HRESULT (WINAPI *get_Collect)(_ADORecordset *This,VARIANT Index,VARIANT *pvar);
++      HRESULT (WINAPI *put_Collect)(_ADORecordset *This,VARIANT Index,VARIANT value);
++      HRESULT (WINAPI *get_MarshalOptions)(_ADORecordset *This,MarshalOptionsEnum *peMarshal);
++      HRESULT (WINAPI *put_MarshalOptions)(_ADORecordset *This,MarshalOptionsEnum eMarshal);
++      HRESULT (WINAPI *Find)(_ADORecordset *This,BSTR Criteria,ADO_LONGPTR SkipRecords,SearchDirectionEnum SearchDirection,VARIANT Start);
++      HRESULT (WINAPI *Cancel)(_ADORecordset *This);
++      HRESULT (WINAPI *get_DataSource)(_ADORecordset *This,IUnknown **ppunkDataSource);
++      HRESULT (WINAPI *putref_DataSource)(_ADORecordset *This,IUnknown *punkDataSource);
++      HRESULT (WINAPI *_xSave)(_ADORecordset *This,BSTR FileName,PersistFormatEnum PersistFormat);
++      HRESULT (WINAPI *get_ActiveCommand)(_ADORecordset *This,IDispatch **ppCmd);
++      HRESULT (WINAPI *put_StayInSync)(_ADORecordset *This,VARIANT_BOOL bStayInSync);
++      HRESULT (WINAPI *get_StayInSync)(_ADORecordset *This,VARIANT_BOOL *pbStayInSync);
++      HRESULT (WINAPI *GetString)(_ADORecordset *This,StringFormatEnum StringFormat,long NumRows,BSTR ColumnDelimeter,BSTR RowDelimeter,BSTR NullExpr,BSTR *pRetString);
++      HRESULT (WINAPI *get_DataMember)(_ADORecordset *This,BSTR *pbstrDataMember);
++      HRESULT (WINAPI *put_DataMember)(_ADORecordset *This,BSTR bstrDataMember);
++      HRESULT (WINAPI *CompareBookmarks)(_ADORecordset *This,VARIANT Bookmark1,VARIANT Bookmark2,CompareEnum *pCompare);
++      HRESULT (WINAPI *Clone)(_ADORecordset *This,LockTypeEnum LockType,_ADORecordset **ppvObject);
++      HRESULT (WINAPI *Resync)(_ADORecordset *This,AffectEnum AffectRecords,ResyncEnum ResyncValues);
++      HRESULT (WINAPI *Seek)(_ADORecordset *This,VARIANT KeyValues,SeekEnum SeekOption);
++      HRESULT (WINAPI *put_Index)(_ADORecordset *This,BSTR Index);
++      HRESULT (WINAPI *get_Index)(_ADORecordset *This,BSTR *pbstrIndex);
++      HRESULT (WINAPI *Save)(_ADORecordset *This,VARIANT Destination,PersistFormatEnum PersistFormat);
++    END_INTERFACE
++  } _RecordsetVtbl;
++  struct _Recordset {
++    CONST_VTBL struct _RecordsetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Recordset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define _Recordset_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define _Recordset_Release(This) (This)->lpVtbl -> Release(This)
++#define _Recordset_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define _Recordset_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Recordset_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Recordset_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Recordset_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define _Recordset_get_AbsolutePosition(This,pl) (This)->lpVtbl -> get_AbsolutePosition(This,pl)
++#define _Recordset_put_AbsolutePosition(This,Position) (This)->lpVtbl -> put_AbsolutePosition(This,Position)
++#define _Recordset_putref_ActiveConnection(This,pconn) (This)->lpVtbl -> putref_ActiveConnection(This,pconn)
++#define _Recordset_put_ActiveConnection(This,vConn) (This)->lpVtbl -> put_ActiveConnection(This,vConn)
++#define _Recordset_get_ActiveConnection(This,pvar) (This)->lpVtbl -> get_ActiveConnection(This,pvar)
++#define _Recordset_get_BOF(This,pb) (This)->lpVtbl -> get_BOF(This,pb)
++#define _Recordset_get_Bookmark(This,pvBookmark) (This)->lpVtbl -> get_Bookmark(This,pvBookmark)
++#define _Recordset_put_Bookmark(This,vBookmark) (This)->lpVtbl -> put_Bookmark(This,vBookmark)
++#define _Recordset_get_CacheSize(This,pl) (This)->lpVtbl -> get_CacheSize(This,pl)
++#define _Recordset_put_CacheSize(This,CacheSize) (This)->lpVtbl -> put_CacheSize(This,CacheSize)
++#define _Recordset_get_CursorType(This,plCursorType) (This)->lpVtbl -> get_CursorType(This,plCursorType)
++#define _Recordset_put_CursorType(This,lCursorType) (This)->lpVtbl -> put_CursorType(This,lCursorType)
++#define _Recordset_get_EOF(This,pb) (This)->lpVtbl -> get_EOF(This,pb)
++#define _Recordset_get_Fields(This,ppvObject) (This)->lpVtbl -> get_Fields(This,ppvObject)
++#define _Recordset_get_LockType(This,plLockType) (This)->lpVtbl -> get_LockType(This,plLockType)
++#define _Recordset_put_LockType(This,lLockType) (This)->lpVtbl -> put_LockType(This,lLockType)
++#define _Recordset_get_MaxRecords(This,plMaxRecords) (This)->lpVtbl -> get_MaxRecords(This,plMaxRecords)
++#define _Recordset_put_MaxRecords(This,lMaxRecords) (This)->lpVtbl -> put_MaxRecords(This,lMaxRecords)
++#define _Recordset_get_RecordCount(This,pl) (This)->lpVtbl -> get_RecordCount(This,pl)
++#define _Recordset_putref_Source(This,pcmd) (This)->lpVtbl -> putref_Source(This,pcmd)
++#define _Recordset_put_Source(This,bstrConn) (This)->lpVtbl -> put_Source(This,bstrConn)
++#define _Recordset_get_Source(This,pvSource) (This)->lpVtbl -> get_Source(This,pvSource)
++#define _Recordset_AddNew(This,FieldList,Values) (This)->lpVtbl -> AddNew(This,FieldList,Values)
++#define _Recordset_CancelUpdate(This) (This)->lpVtbl -> CancelUpdate(This)
++#define _Recordset_Close(This) (This)->lpVtbl -> Close(This)
++#define _Recordset_Delete(This,AffectRecords) (This)->lpVtbl -> Delete(This,AffectRecords)
++#define _Recordset_GetRows(This,Rows,Start,Fields,pvar) (This)->lpVtbl -> GetRows(This,Rows,Start,Fields,pvar)
++#define _Recordset_Move(This,NumRecords,Start) (This)->lpVtbl -> Move(This,NumRecords,Start)
++#define _Recordset_MoveNext(This) (This)->lpVtbl -> MoveNext(This)
++#define _Recordset_MovePrevious(This) (This)->lpVtbl -> MovePrevious(This)
++#define _Recordset_MoveFirst(This) (This)->lpVtbl -> MoveFirst(This)
++#define _Recordset_MoveLast(This) (This)->lpVtbl -> MoveLast(This)
++#define _Recordset_Open(This,Source,ActiveConnection,CursorType,LockType,Options) (This)->lpVtbl -> Open(This,Source,ActiveConnection,CursorType,LockType,Options)
++#define _Recordset_Requery(This,Options) (This)->lpVtbl -> Requery(This,Options)
++#define _Recordset__xResync(This,AffectRecords) (This)->lpVtbl -> _xResync(This,AffectRecords)
++#define _Recordset_Update(This,Fields,Values) (This)->lpVtbl -> Update(This,Fields,Values)
++#define _Recordset_get_AbsolutePage(This,pl) (This)->lpVtbl -> get_AbsolutePage(This,pl)
++#define _Recordset_put_AbsolutePage(This,Page) (This)->lpVtbl -> put_AbsolutePage(This,Page)
++#define _Recordset_get_EditMode(This,pl) (This)->lpVtbl -> get_EditMode(This,pl)
++#define _Recordset_get_Filter(This,Criteria) (This)->lpVtbl -> get_Filter(This,Criteria)
++#define _Recordset_put_Filter(This,Criteria) (This)->lpVtbl -> put_Filter(This,Criteria)
++#define _Recordset_get_PageCount(This,pl) (This)->lpVtbl -> get_PageCount(This,pl)
++#define _Recordset_get_PageSize(This,pl) (This)->lpVtbl -> get_PageSize(This,pl)
++#define _Recordset_put_PageSize(This,PageSize) (This)->lpVtbl -> put_PageSize(This,PageSize)
++#define _Recordset_get_Sort(This,Criteria) (This)->lpVtbl -> get_Sort(This,Criteria)
++#define _Recordset_put_Sort(This,Criteria) (This)->lpVtbl -> put_Sort(This,Criteria)
++#define _Recordset_get_Status(This,pl) (This)->lpVtbl -> get_Status(This,pl)
++#define _Recordset_get_State(This,plObjState) (This)->lpVtbl -> get_State(This,plObjState)
++#define _Recordset__xClone(This,ppvObject) (This)->lpVtbl -> _xClone(This,ppvObject)
++#define _Recordset_UpdateBatch(This,AffectRecords) (This)->lpVtbl -> UpdateBatch(This,AffectRecords)
++#define _Recordset_CancelBatch(This,AffectRecords) (This)->lpVtbl -> CancelBatch(This,AffectRecords)
++#define _Recordset_get_CursorLocation(This,plCursorLoc) (This)->lpVtbl -> get_CursorLocation(This,plCursorLoc)
++#define _Recordset_put_CursorLocation(This,lCursorLoc) (This)->lpVtbl -> put_CursorLocation(This,lCursorLoc)
++#define _Recordset_NextRecordset(This,RecordsAffected,ppiRs) (This)->lpVtbl -> NextRecordset(This,RecordsAffected,ppiRs)
++#define _Recordset_Supports(This,CursorOptions,pb) (This)->lpVtbl -> Supports(This,CursorOptions,pb)
++#define _Recordset_get_Collect(This,Index,pvar) (This)->lpVtbl -> get_Collect(This,Index,pvar)
++#define _Recordset_put_Collect(This,Index,value) (This)->lpVtbl -> put_Collect(This,Index,value)
++#define _Recordset_get_MarshalOptions(This,peMarshal) (This)->lpVtbl -> get_MarshalOptions(This,peMarshal)
++#define _Recordset_put_MarshalOptions(This,eMarshal) (This)->lpVtbl -> put_MarshalOptions(This,eMarshal)
++#define _Recordset_Find(This,Criteria,SkipRecords,SearchDirection,Start) (This)->lpVtbl -> Find(This,Criteria,SkipRecords,SearchDirection,Start)
++#define _Recordset_Cancel(This) (This)->lpVtbl -> Cancel(This)
++#define _Recordset_get_DataSource(This,ppunkDataSource) (This)->lpVtbl -> get_DataSource(This,ppunkDataSource)
++#define _Recordset_putref_DataSource(This,punkDataSource) (This)->lpVtbl -> putref_DataSource(This,punkDataSource)
++#define _Recordset__xSave(This,FileName,PersistFormat) (This)->lpVtbl -> _xSave(This,FileName,PersistFormat)
++#define _Recordset_get_ActiveCommand(This,ppCmd) (This)->lpVtbl -> get_ActiveCommand(This,ppCmd)
++#define _Recordset_put_StayInSync(This,bStayInSync) (This)->lpVtbl -> put_StayInSync(This,bStayInSync)
++#define _Recordset_get_StayInSync(This,pbStayInSync) (This)->lpVtbl -> get_StayInSync(This,pbStayInSync)
++#define _Recordset_GetString(This,StringFormat,NumRows,ColumnDelimeter,RowDelimeter,NullExpr,pRetString) (This)->lpVtbl -> GetString(This,StringFormat,NumRows,ColumnDelimeter,RowDelimeter,NullExpr,pRetString)
++#define _Recordset_get_DataMember(This,pbstrDataMember) (This)->lpVtbl -> get_DataMember(This,pbstrDataMember)
++#define _Recordset_put_DataMember(This,bstrDataMember) (This)->lpVtbl -> put_DataMember(This,bstrDataMember)
++#define _Recordset_CompareBookmarks(This,Bookmark1,Bookmark2,pCompare) (This)->lpVtbl -> CompareBookmarks(This,Bookmark1,Bookmark2,pCompare)
++#define _Recordset_Clone(This,LockType,ppvObject) (This)->lpVtbl -> Clone(This,LockType,ppvObject)
++#define _Recordset_Resync(This,AffectRecords,ResyncValues) (This)->lpVtbl -> Resync(This,AffectRecords,ResyncValues)
++#define _Recordset_Seek(This,KeyValues,SeekOption) (This)->lpVtbl -> Seek(This,KeyValues,SeekOption)
++#define _Recordset_put_Index(This,Index) (This)->lpVtbl -> put_Index(This,Index)
++#define _Recordset_get_Index(This,pbstrIndex) (This)->lpVtbl -> get_Index(This,pbstrIndex)
++#define _Recordset_Save(This,Destination,PersistFormat) (This)->lpVtbl -> Save(This,Destination,PersistFormat)
++#endif
++#endif
++  HRESULT WINAPI _Recordset_Save_Proxy(_ADORecordset *This,VARIANT Destination,PersistFormatEnum PersistFormat);
++  void __RPC_STUB _Recordset_Save_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ADORecordsetConstruction_INTERFACE_DEFINED__
++#define __ADORecordsetConstruction_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ADORecordsetConstruction;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADORecordsetConstruction : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Rowset(IUnknown **ppRowset) = 0;
++    virtual HRESULT WINAPI put_Rowset(IUnknown *pRowset) = 0;
++    virtual HRESULT WINAPI get_Chapter(ADO_LONGPTR *plChapter) = 0;
++    virtual HRESULT WINAPI put_Chapter(ADO_LONGPTR lChapter) = 0;
++    virtual HRESULT WINAPI get_RowPosition(IUnknown **ppRowPos) = 0;
++    virtual HRESULT WINAPI put_RowPosition(IUnknown *pRowPos) = 0;
++  };
++#else
++  typedef struct ADORecordsetConstructionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADORecordsetConstruction *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADORecordsetConstruction *This);
++      ULONG (WINAPI *Release)(ADORecordsetConstruction *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADORecordsetConstruction *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADORecordsetConstruction *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADORecordsetConstruction *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADORecordsetConstruction *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Rowset)(ADORecordsetConstruction *This,IUnknown **ppRowset);
++      HRESULT (WINAPI *put_Rowset)(ADORecordsetConstruction *This,IUnknown *pRowset);
++      HRESULT (WINAPI *get_Chapter)(ADORecordsetConstruction *This,ADO_LONGPTR *plChapter);
++      HRESULT (WINAPI *put_Chapter)(ADORecordsetConstruction *This,ADO_LONGPTR lChapter);
++      HRESULT (WINAPI *get_RowPosition)(ADORecordsetConstruction *This,IUnknown **ppRowPos);
++      HRESULT (WINAPI *put_RowPosition)(ADORecordsetConstruction *This,IUnknown *pRowPos);
++    END_INTERFACE
++  } ADORecordsetConstructionVtbl;
++  struct ADORecordsetConstruction {
++    CONST_VTBL struct ADORecordsetConstructionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ADORecordsetConstruction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define ADORecordsetConstruction_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define ADORecordsetConstruction_Release(This) (This)->lpVtbl -> Release(This)
++#define ADORecordsetConstruction_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define ADORecordsetConstruction_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define ADORecordsetConstruction_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define ADORecordsetConstruction_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define ADORecordsetConstruction_get_Rowset(This,ppRowset) (This)->lpVtbl -> get_Rowset(This,ppRowset)
++#define ADORecordsetConstruction_put_Rowset(This,pRowset) (This)->lpVtbl -> put_Rowset(This,pRowset)
++#define ADORecordsetConstruction_get_Chapter(This,plChapter) (This)->lpVtbl -> get_Chapter(This,plChapter)
++#define ADORecordsetConstruction_put_Chapter(This,lChapter) (This)->lpVtbl -> put_Chapter(This,lChapter)
++#define ADORecordsetConstruction_get_RowPosition(This,ppRowPos) (This)->lpVtbl -> get_RowPosition(This,ppRowPos)
++#define ADORecordsetConstruction_put_RowPosition(This,pRowPos) (This)->lpVtbl -> put_RowPosition(This,pRowPos)
++#endif
++#endif
++  HRESULT WINAPI ADORecordsetConstruction_get_Rowset_Proxy(ADORecordsetConstruction *This,IUnknown **ppRowset);
++  void __RPC_STUB ADORecordsetConstruction_get_Rowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ADORecordsetConstruction_put_Rowset_Proxy(ADORecordsetConstruction *This,IUnknown *pRowset);
++  void __RPC_STUB ADORecordsetConstruction_put_Rowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ADORecordsetConstruction_get_Chapter_Proxy(ADORecordsetConstruction *This,ADO_LONGPTR *plChapter);
++  void __RPC_STUB ADORecordsetConstruction_get_Chapter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ADORecordsetConstruction_put_Chapter_Proxy(ADORecordsetConstruction *This,ADO_LONGPTR lChapter);
++  void __RPC_STUB ADORecordsetConstruction_put_Chapter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ADORecordsetConstruction_get_RowPosition_Proxy(ADORecordsetConstruction *This,IUnknown **ppRowPos);
++  void __RPC_STUB ADORecordsetConstruction_get_RowPosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ADORecordsetConstruction_put_RowPosition_Proxy(ADORecordsetConstruction *This,IUnknown *pRowPos);
++  void __RPC_STUB ADORecordsetConstruction_put_RowPosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Field15_INTERFACE_DEFINED__
++#define __Field15_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Field15;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct Field15 : public _ADO {
++  public:
++    virtual HRESULT WINAPI get_ActualSize(ADO_LONGPTR *pl) = 0;
++    virtual HRESULT WINAPI get_Attributes(long *pl) = 0;
++    virtual HRESULT WINAPI get_DefinedSize(ADO_LONGPTR *pl) = 0;
++    virtual HRESULT WINAPI get_Name(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI get_Type(DataTypeEnum *pDataType) = 0;
++    virtual HRESULT WINAPI get_Value(VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI put_Value(VARIANT Val) = 0;
++    virtual HRESULT WINAPI get_Precision(BYTE *pbPrecision) = 0;
++    virtual HRESULT WINAPI get_NumericScale(BYTE *pbNumericScale) = 0;
++    virtual HRESULT WINAPI AppendChunk(VARIANT Data) = 0;
++    virtual HRESULT WINAPI GetChunk(long Length,VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI get_OriginalValue(VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI get_UnderlyingValue(VARIANT *pvar) = 0;
++  };
++#else
++  typedef struct Field15Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(Field15 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(Field15 *This);
++      ULONG (WINAPI *Release)(Field15 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(Field15 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(Field15 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(Field15 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(Field15 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(Field15 *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ActualSize)(Field15 *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *get_Attributes)(Field15 *This,long *pl);
++      HRESULT (WINAPI *get_DefinedSize)(Field15 *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *get_Name)(Field15 *This,BSTR *pbstr);
++      HRESULT (WINAPI *get_Type)(Field15 *This,DataTypeEnum *pDataType);
++      HRESULT (WINAPI *get_Value)(Field15 *This,VARIANT *pvar);
++      HRESULT (WINAPI *put_Value)(Field15 *This,VARIANT Val);
++      HRESULT (WINAPI *get_Precision)(Field15 *This,BYTE *pbPrecision);
++      HRESULT (WINAPI *get_NumericScale)(Field15 *This,BYTE *pbNumericScale);
++      HRESULT (WINAPI *AppendChunk)(Field15 *This,VARIANT Data);
++      HRESULT (WINAPI *GetChunk)(Field15 *This,long Length,VARIANT *pvar);
++      HRESULT (WINAPI *get_OriginalValue)(Field15 *This,VARIANT *pvar);
++      HRESULT (WINAPI *get_UnderlyingValue)(Field15 *This,VARIANT *pvar);
++    END_INTERFACE
++  } Field15Vtbl;
++  struct Field15 {
++    CONST_VTBL struct Field15Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Field15_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Field15_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Field15_Release(This) (This)->lpVtbl -> Release(This)
++#define Field15_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Field15_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Field15_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Field15_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Field15_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define Field15_get_ActualSize(This,pl) (This)->lpVtbl -> get_ActualSize(This,pl)
++#define Field15_get_Attributes(This,pl) (This)->lpVtbl -> get_Attributes(This,pl)
++#define Field15_get_DefinedSize(This,pl) (This)->lpVtbl -> get_DefinedSize(This,pl)
++#define Field15_get_Name(This,pbstr) (This)->lpVtbl -> get_Name(This,pbstr)
++#define Field15_get_Type(This,pDataType) (This)->lpVtbl -> get_Type(This,pDataType)
++#define Field15_get_Value(This,pvar) (This)->lpVtbl -> get_Value(This,pvar)
++#define Field15_put_Value(This,Val) (This)->lpVtbl -> put_Value(This,Val)
++#define Field15_get_Precision(This,pbPrecision) (This)->lpVtbl -> get_Precision(This,pbPrecision)
++#define Field15_get_NumericScale(This,pbNumericScale) (This)->lpVtbl -> get_NumericScale(This,pbNumericScale)
++#define Field15_AppendChunk(This,Data) (This)->lpVtbl -> AppendChunk(This,Data)
++#define Field15_GetChunk(This,Length,pvar) (This)->lpVtbl -> GetChunk(This,Length,pvar)
++#define Field15_get_OriginalValue(This,pvar) (This)->lpVtbl -> get_OriginalValue(This,pvar)
++#define Field15_get_UnderlyingValue(This,pvar) (This)->lpVtbl -> get_UnderlyingValue(This,pvar)
++#endif
++#endif
++  HRESULT WINAPI Field15_get_ActualSize_Proxy(Field15 *This,ADO_LONGPTR *pl);
++  void __RPC_STUB Field15_get_ActualSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_get_Attributes_Proxy(Field15 *This,long *pl);
++  void __RPC_STUB Field15_get_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_get_DefinedSize_Proxy(Field15 *This,ADO_LONGPTR *pl);
++  void __RPC_STUB Field15_get_DefinedSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_get_Name_Proxy(Field15 *This,BSTR *pbstr);
++  void __RPC_STUB Field15_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_get_Type_Proxy(Field15 *This,DataTypeEnum *pDataType);
++  void __RPC_STUB Field15_get_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_get_Value_Proxy(Field15 *This,VARIANT *pvar);
++  void __RPC_STUB Field15_get_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_put_Value_Proxy(Field15 *This,VARIANT Val);
++  void __RPC_STUB Field15_put_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_get_Precision_Proxy(Field15 *This,BYTE *pbPrecision);
++  void __RPC_STUB Field15_get_Precision_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_get_NumericScale_Proxy(Field15 *This,BYTE *pbNumericScale);
++  void __RPC_STUB Field15_get_NumericScale_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_AppendChunk_Proxy(Field15 *This,VARIANT Data);
++  void __RPC_STUB Field15_AppendChunk_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_GetChunk_Proxy(Field15 *This,long Length,VARIANT *pvar);
++  void __RPC_STUB Field15_GetChunk_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_get_OriginalValue_Proxy(Field15 *This,VARIANT *pvar);
++  void __RPC_STUB Field15_get_OriginalValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field15_get_UnderlyingValue_Proxy(Field15 *This,VARIANT *pvar);
++  void __RPC_STUB Field15_get_UnderlyingValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Field20_INTERFACE_DEFINED__
++#define __Field20_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Field20;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct Field20 : public _ADO {
++  public:
++    virtual HRESULT WINAPI get_ActualSize(ADO_LONGPTR *pl) = 0;
++    virtual HRESULT WINAPI get_Attributes(long *pl) = 0;
++    virtual HRESULT WINAPI get_DefinedSize(ADO_LONGPTR *pl) = 0;
++    virtual HRESULT WINAPI get_Name(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI get_Type(DataTypeEnum *pDataType) = 0;
++    virtual HRESULT WINAPI get_Value(VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI put_Value(VARIANT Val) = 0;
++    virtual HRESULT WINAPI get_Precision(BYTE *pbPrecision) = 0;
++    virtual HRESULT WINAPI get_NumericScale(BYTE *pbNumericScale) = 0;
++    virtual HRESULT WINAPI AppendChunk(VARIANT Data) = 0;
++    virtual HRESULT WINAPI GetChunk(long Length,VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI get_OriginalValue(VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI get_UnderlyingValue(VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI get_DataFormat(IUnknown **ppiDF) = 0;
++    virtual HRESULT WINAPI putref_DataFormat(IUnknown *piDF) = 0;
++    virtual HRESULT WINAPI put_Precision(BYTE bPrecision) = 0;
++    virtual HRESULT WINAPI put_NumericScale(BYTE bScale) = 0;
++    virtual HRESULT WINAPI put_Type(DataTypeEnum DataType) = 0;
++    virtual HRESULT WINAPI put_DefinedSize(ADO_LONGPTR lSize) = 0;
++    virtual HRESULT WINAPI put_Attributes(long lAttributes) = 0;
++  };
++#else
++  typedef struct Field20Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(Field20 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(Field20 *This);
++      ULONG (WINAPI *Release)(Field20 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(Field20 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(Field20 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(Field20 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(Field20 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(Field20 *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ActualSize)(Field20 *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *get_Attributes)(Field20 *This,long *pl);
++      HRESULT (WINAPI *get_DefinedSize)(Field20 *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *get_Name)(Field20 *This,BSTR *pbstr);
++      HRESULT (WINAPI *get_Type)(Field20 *This,DataTypeEnum *pDataType);
++      HRESULT (WINAPI *get_Value)(Field20 *This,VARIANT *pvar);
++      HRESULT (WINAPI *put_Value)(Field20 *This,VARIANT Val);
++      HRESULT (WINAPI *get_Precision)(Field20 *This,BYTE *pbPrecision);
++      HRESULT (WINAPI *get_NumericScale)(Field20 *This,BYTE *pbNumericScale);
++      HRESULT (WINAPI *AppendChunk)(Field20 *This,VARIANT Data);
++      HRESULT (WINAPI *GetChunk)(Field20 *This,long Length,VARIANT *pvar);
++      HRESULT (WINAPI *get_OriginalValue)(Field20 *This,VARIANT *pvar);
++      HRESULT (WINAPI *get_UnderlyingValue)(Field20 *This,VARIANT *pvar);
++      HRESULT (WINAPI *get_DataFormat)(Field20 *This,IUnknown **ppiDF);
++      HRESULT (WINAPI *putref_DataFormat)(Field20 *This,IUnknown *piDF);
++      HRESULT (WINAPI *put_Precision)(Field20 *This,BYTE bPrecision);
++      HRESULT (WINAPI *put_NumericScale)(Field20 *This,BYTE bScale);
++      HRESULT (WINAPI *put_Type)(Field20 *This,DataTypeEnum DataType);
++      HRESULT (WINAPI *put_DefinedSize)(Field20 *This,ADO_LONGPTR lSize);
++      HRESULT (WINAPI *put_Attributes)(Field20 *This,long lAttributes);
++    END_INTERFACE
++  } Field20Vtbl;
++  struct Field20 {
++    CONST_VTBL struct Field20Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Field20_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Field20_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Field20_Release(This) (This)->lpVtbl -> Release(This)
++#define Field20_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Field20_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Field20_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Field20_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Field20_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define Field20_get_ActualSize(This,pl) (This)->lpVtbl -> get_ActualSize(This,pl)
++#define Field20_get_Attributes(This,pl) (This)->lpVtbl -> get_Attributes(This,pl)
++#define Field20_get_DefinedSize(This,pl) (This)->lpVtbl -> get_DefinedSize(This,pl)
++#define Field20_get_Name(This,pbstr) (This)->lpVtbl -> get_Name(This,pbstr)
++#define Field20_get_Type(This,pDataType) (This)->lpVtbl -> get_Type(This,pDataType)
++#define Field20_get_Value(This,pvar) (This)->lpVtbl -> get_Value(This,pvar)
++#define Field20_put_Value(This,Val) (This)->lpVtbl -> put_Value(This,Val)
++#define Field20_get_Precision(This,pbPrecision) (This)->lpVtbl -> get_Precision(This,pbPrecision)
++#define Field20_get_NumericScale(This,pbNumericScale) (This)->lpVtbl -> get_NumericScale(This,pbNumericScale)
++#define Field20_AppendChunk(This,Data) (This)->lpVtbl -> AppendChunk(This,Data)
++#define Field20_GetChunk(This,Length,pvar) (This)->lpVtbl -> GetChunk(This,Length,pvar)
++#define Field20_get_OriginalValue(This,pvar) (This)->lpVtbl -> get_OriginalValue(This,pvar)
++#define Field20_get_UnderlyingValue(This,pvar) (This)->lpVtbl -> get_UnderlyingValue(This,pvar)
++#define Field20_get_DataFormat(This,ppiDF) (This)->lpVtbl -> get_DataFormat(This,ppiDF)
++#define Field20_putref_DataFormat(This,piDF) (This)->lpVtbl -> putref_DataFormat(This,piDF)
++#define Field20_put_Precision(This,bPrecision) (This)->lpVtbl -> put_Precision(This,bPrecision)
++#define Field20_put_NumericScale(This,bScale) (This)->lpVtbl -> put_NumericScale(This,bScale)
++#define Field20_put_Type(This,DataType) (This)->lpVtbl -> put_Type(This,DataType)
++#define Field20_put_DefinedSize(This,lSize) (This)->lpVtbl -> put_DefinedSize(This,lSize)
++#define Field20_put_Attributes(This,lAttributes) (This)->lpVtbl -> put_Attributes(This,lAttributes)
++#endif
++#endif
++  HRESULT WINAPI Field20_get_ActualSize_Proxy(Field20 *This,ADO_LONGPTR *pl);
++  void __RPC_STUB Field20_get_ActualSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_get_Attributes_Proxy(Field20 *This,long *pl);
++  void __RPC_STUB Field20_get_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_get_DefinedSize_Proxy(Field20 *This,ADO_LONGPTR *pl);
++  void __RPC_STUB Field20_get_DefinedSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_get_Name_Proxy(Field20 *This,BSTR *pbstr);
++  void __RPC_STUB Field20_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_get_Type_Proxy(Field20 *This,DataTypeEnum *pDataType);
++  void __RPC_STUB Field20_get_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_get_Value_Proxy(Field20 *This,VARIANT *pvar);
++  void __RPC_STUB Field20_get_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_put_Value_Proxy(Field20 *This,VARIANT Val);
++  void __RPC_STUB Field20_put_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_get_Precision_Proxy(Field20 *This,BYTE *pbPrecision);
++  void __RPC_STUB Field20_get_Precision_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_get_NumericScale_Proxy(Field20 *This,BYTE *pbNumericScale);
++  void __RPC_STUB Field20_get_NumericScale_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_AppendChunk_Proxy(Field20 *This,VARIANT Data);
++  void __RPC_STUB Field20_AppendChunk_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_GetChunk_Proxy(Field20 *This,long Length,VARIANT *pvar);
++  void __RPC_STUB Field20_GetChunk_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_get_OriginalValue_Proxy(Field20 *This,VARIANT *pvar);
++  void __RPC_STUB Field20_get_OriginalValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_get_UnderlyingValue_Proxy(Field20 *This,VARIANT *pvar);
++  void __RPC_STUB Field20_get_UnderlyingValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_get_DataFormat_Proxy(Field20 *This,IUnknown **ppiDF);
++  void __RPC_STUB Field20_get_DataFormat_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_putref_DataFormat_Proxy(Field20 *This,IUnknown *piDF);
++  void __RPC_STUB Field20_putref_DataFormat_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_put_Precision_Proxy(Field20 *This,BYTE bPrecision);
++  void __RPC_STUB Field20_put_Precision_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_put_NumericScale_Proxy(Field20 *This,BYTE bScale);
++  void __RPC_STUB Field20_put_NumericScale_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_put_Type_Proxy(Field20 *This,DataTypeEnum DataType);
++  void __RPC_STUB Field20_put_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_put_DefinedSize_Proxy(Field20 *This,ADO_LONGPTR lSize);
++  void __RPC_STUB Field20_put_DefinedSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Field20_put_Attributes_Proxy(Field20 *This,long lAttributes);
++  void __RPC_STUB Field20_put_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Field_INTERFACE_DEFINED__
++#define __Field_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Field;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOField : public Field20 {
++  public:
++    virtual HRESULT WINAPI get_Status(long *pFStatus) = 0;
++  };
++#else
++  typedef struct FieldVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOField *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOField *This);
++      ULONG (WINAPI *Release)(ADOField *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOField *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOField *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOField *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOField *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(ADOField *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_ActualSize)(ADOField *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *get_Attributes)(ADOField *This,long *pl);
++      HRESULT (WINAPI *get_DefinedSize)(ADOField *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *get_Name)(ADOField *This,BSTR *pbstr);
++      HRESULT (WINAPI *get_Type)(ADOField *This,DataTypeEnum *pDataType);
++      HRESULT (WINAPI *get_Value)(ADOField *This,VARIANT *pvar);
++      HRESULT (WINAPI *put_Value)(ADOField *This,VARIANT Val);
++      HRESULT (WINAPI *get_Precision)(ADOField *This,BYTE *pbPrecision);
++      HRESULT (WINAPI *get_NumericScale)(ADOField *This,BYTE *pbNumericScale);
++      HRESULT (WINAPI *AppendChunk)(ADOField *This,VARIANT Data);
++      HRESULT (WINAPI *GetChunk)(ADOField *This,long Length,VARIANT *pvar);
++      HRESULT (WINAPI *get_OriginalValue)(ADOField *This,VARIANT *pvar);
++      HRESULT (WINAPI *get_UnderlyingValue)(ADOField *This,VARIANT *pvar);
++      HRESULT (WINAPI *get_DataFormat)(ADOField *This,IUnknown **ppiDF);
++      HRESULT (WINAPI *putref_DataFormat)(ADOField *This,IUnknown *piDF);
++      HRESULT (WINAPI *put_Precision)(ADOField *This,BYTE bPrecision);
++      HRESULT (WINAPI *put_NumericScale)(ADOField *This,BYTE bScale);
++      HRESULT (WINAPI *put_Type)(ADOField *This,DataTypeEnum DataType);
++      HRESULT (WINAPI *put_DefinedSize)(ADOField *This,ADO_LONGPTR lSize);
++      HRESULT (WINAPI *put_Attributes)(ADOField *This,long lAttributes);
++      HRESULT (WINAPI *get_Status)(ADOField *This,long *pFStatus);
++    END_INTERFACE
++  } FieldVtbl;
++  struct Field {
++    CONST_VTBL struct FieldVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Field_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Field_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Field_Release(This) (This)->lpVtbl -> Release(This)
++#define Field_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Field_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Field_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Field_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Field_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define Field_get_ActualSize(This,pl) (This)->lpVtbl -> get_ActualSize(This,pl)
++#define Field_get_Attributes(This,pl) (This)->lpVtbl -> get_Attributes(This,pl)
++#define Field_get_DefinedSize(This,pl) (This)->lpVtbl -> get_DefinedSize(This,pl)
++#define Field_get_Name(This,pbstr) (This)->lpVtbl -> get_Name(This,pbstr)
++#define Field_get_Type(This,pDataType) (This)->lpVtbl -> get_Type(This,pDataType)
++#define Field_get_Value(This,pvar) (This)->lpVtbl -> get_Value(This,pvar)
++#define Field_put_Value(This,Val) (This)->lpVtbl -> put_Value(This,Val)
++#define Field_get_Precision(This,pbPrecision) (This)->lpVtbl -> get_Precision(This,pbPrecision)
++#define Field_get_NumericScale(This,pbNumericScale) (This)->lpVtbl -> get_NumericScale(This,pbNumericScale)
++#define Field_AppendChunk(This,Data) (This)->lpVtbl -> AppendChunk(This,Data)
++#define Field_GetChunk(This,Length,pvar) (This)->lpVtbl -> GetChunk(This,Length,pvar)
++#define Field_get_OriginalValue(This,pvar) (This)->lpVtbl -> get_OriginalValue(This,pvar)
++#define Field_get_UnderlyingValue(This,pvar) (This)->lpVtbl -> get_UnderlyingValue(This,pvar)
++#define Field_get_DataFormat(This,ppiDF) (This)->lpVtbl -> get_DataFormat(This,ppiDF)
++#define Field_putref_DataFormat(This,piDF) (This)->lpVtbl -> putref_DataFormat(This,piDF)
++#define Field_put_Precision(This,bPrecision) (This)->lpVtbl -> put_Precision(This,bPrecision)
++#define Field_put_NumericScale(This,bScale) (This)->lpVtbl -> put_NumericScale(This,bScale)
++#define Field_put_Type(This,DataType) (This)->lpVtbl -> put_Type(This,DataType)
++#define Field_put_DefinedSize(This,lSize) (This)->lpVtbl -> put_DefinedSize(This,lSize)
++#define Field_put_Attributes(This,lAttributes) (This)->lpVtbl -> put_Attributes(This,lAttributes)
++#define Field_get_Status(This,pFStatus) (This)->lpVtbl -> get_Status(This,pFStatus)
++#endif
++#endif
++  HRESULT WINAPI Field_get_Status_Proxy(ADOField *This,long *pFStatus);
++  void __RPC_STUB Field_get_Status_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Fields15_INTERFACE_DEFINED__
++#define __Fields15_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Fields15;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct Fields15 : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Index,ADOField **ppvObject) = 0;
++  };
++#else
++  typedef struct Fields15Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(Fields15 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(Fields15 *This);
++      ULONG (WINAPI *Release)(Fields15 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(Fields15 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(Fields15 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(Fields15 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(Fields15 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(Fields15 *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(Fields15 *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(Fields15 *This);
++      HRESULT (WINAPI *get_Item)(Fields15 *This,VARIANT Index,ADOField **ppvObject);
++    END_INTERFACE
++  } Fields15Vtbl;
++  struct Fields15 {
++    CONST_VTBL struct Fields15Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Fields15_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Fields15_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Fields15_Release(This) (This)->lpVtbl -> Release(This)
++#define Fields15_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Fields15_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Fields15_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Fields15_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Fields15_get_Count(This,c) (This)->lpVtbl -> get_Count(This,c)
++#define Fields15__NewEnum(This,ppvObject) (This)->lpVtbl -> _NewEnum(This,ppvObject)
++#define Fields15_Refresh(This) (This)->lpVtbl -> Refresh(This)
++#define Fields15_get_Item(This,Index,ppvObject) (This)->lpVtbl -> get_Item(This,Index,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI Fields15_get_Item_Proxy(Fields15 *This,VARIANT Index,ADOField **ppvObject);
++  void __RPC_STUB Fields15_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Fields20_INTERFACE_DEFINED__
++#define __Fields20_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Fields20;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct Fields20 : public Fields15 {
++  public:
++    virtual HRESULT WINAPI _Append(BSTR Name,DataTypeEnum Type,ADO_LONGPTR DefinedSize = 0,FieldAttributeEnum Attrib = adFldUnspecified) = 0;
++    virtual HRESULT WINAPI Delete(VARIANT Index) = 0;
++  };
++#else
++  typedef struct Fields20Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(Fields20 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(Fields20 *This);
++      ULONG (WINAPI *Release)(Fields20 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(Fields20 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(Fields20 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(Fields20 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(Fields20 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(Fields20 *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(Fields20 *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(Fields20 *This);
++      HRESULT (WINAPI *get_Item)(Fields20 *This,VARIANT Index,ADOField **ppvObject);
++      HRESULT (WINAPI *_Append)(Fields20 *This,BSTR Name,DataTypeEnum Type,ADO_LONGPTR DefinedSize,FieldAttributeEnum Attrib);
++      HRESULT (WINAPI *Delete)(Fields20 *This,VARIANT Index);
++    END_INTERFACE
++  } Fields20Vtbl;
++  struct Fields20 {
++    CONST_VTBL struct Fields20Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Fields20_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Fields20_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Fields20_Release(This) (This)->lpVtbl -> Release(This)
++#define Fields20_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Fields20_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Fields20_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Fields20_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Fields20_get_Count(This,c) (This)->lpVtbl -> get_Count(This,c)
++#define Fields20__NewEnum(This,ppvObject) (This)->lpVtbl -> _NewEnum(This,ppvObject)
++#define Fields20_Refresh(This) (This)->lpVtbl -> Refresh(This)
++#define Fields20_get_Item(This,Index,ppvObject) (This)->lpVtbl -> get_Item(This,Index,ppvObject)
++#define Fields20__Append(This,Name,Type,DefinedSize,Attrib) (This)->lpVtbl -> _Append(This,Name,Type,DefinedSize,Attrib)
++#define Fields20_Delete(This,Index) (This)->lpVtbl -> Delete(This,Index)
++#endif
++#endif
++  HRESULT WINAPI Fields20__Append_Proxy(Fields20 *This,BSTR Name,DataTypeEnum Type,ADO_LONGPTR DefinedSize,FieldAttributeEnum Attrib);
++  void __RPC_STUB Fields20__Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Fields20_Delete_Proxy(Fields20 *This,VARIANT Index);
++  void __RPC_STUB Fields20_Delete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Fields_INTERFACE_DEFINED__
++#define __Fields_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Fields;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOFields : public Fields20 {
++  public:
++    virtual HRESULT WINAPI Append(BSTR Name,DataTypeEnum Type,ADO_LONGPTR DefinedSize,FieldAttributeEnum Attrib,VARIANT FieldValue) = 0;
++    virtual HRESULT WINAPI Update(void) = 0;
++    virtual HRESULT WINAPI Resync(ResyncEnum ResyncValues = adResyncAllValues) = 0;
++    virtual HRESULT WINAPI CancelUpdate(void) = 0;
++  };
++#else
++  typedef struct FieldsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOFields *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOFields *This);
++      ULONG (WINAPI *Release)(ADOFields *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOFields *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOFields *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOFields *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOFields *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOFields *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOFields *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOFields *This);
++      HRESULT (WINAPI *get_Item)(ADOFields *This,VARIANT Index,ADOField **ppvObject);
++      HRESULT (WINAPI *_Append)(ADOFields *This,BSTR Name,DataTypeEnum Type,ADO_LONGPTR DefinedSize,FieldAttributeEnum Attrib);
++      HRESULT (WINAPI *Delete)(ADOFields *This,VARIANT Index);
++      HRESULT (WINAPI *Append)(ADOFields *This,BSTR Name,DataTypeEnum Type,ADO_LONGPTR DefinedSize,FieldAttributeEnum Attrib,VARIANT FieldValue);
++      HRESULT (WINAPI *Update)(ADOFields *This);
++      HRESULT (WINAPI *Resync)(ADOFields *This,ResyncEnum ResyncValues);
++      HRESULT (WINAPI *CancelUpdate)(ADOFields *This);
++    END_INTERFACE
++  } FieldsVtbl;
++  struct Fields {
++    CONST_VTBL struct FieldsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Fields_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Fields_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Fields_Release(This) (This)->lpVtbl -> Release(This)
++#define Fields_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Fields_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Fields_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Fields_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Fields_get_Count(This,c) (This)->lpVtbl -> get_Count(This,c)
++#define Fields__NewEnum(This,ppvObject) (This)->lpVtbl -> _NewEnum(This,ppvObject)
++#define Fields_Refresh(This) (This)->lpVtbl -> Refresh(This)
++#define Fields_get_Item(This,Index,ppvObject) (This)->lpVtbl -> get_Item(This,Index,ppvObject)
++#define Fields__Append(This,Name,Type,DefinedSize,Attrib) (This)->lpVtbl -> _Append(This,Name,Type,DefinedSize,Attrib)
++#define Fields_Delete(This,Index) (This)->lpVtbl -> Delete(This,Index)
++#define Fields_Append(This,Name,Type,DefinedSize,Attrib,FieldValue) (This)->lpVtbl -> Append(This,Name,Type,DefinedSize,Attrib,FieldValue)
++#define Fields_Update(This) (This)->lpVtbl -> Update(This)
++#define Fields_Resync(This,ResyncValues) (This)->lpVtbl -> Resync(This,ResyncValues)
++#define Fields_CancelUpdate(This) (This)->lpVtbl -> CancelUpdate(This)
++#endif
++#endif
++  HRESULT WINAPI Fields_Append_Proxy(ADOFields *This,BSTR Name,DataTypeEnum Type,ADO_LONGPTR DefinedSize,FieldAttributeEnum Attrib,VARIANT FieldValue);
++  void __RPC_STUB Fields_Append_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Fields_Update_Proxy(ADOFields *This);
++  void __RPC_STUB Fields_Update_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Fields_Resync_Proxy(ADOFields *This,ResyncEnum ResyncValues);
++  void __RPC_STUB Fields_Resync_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Fields_CancelUpdate_Proxy(ADOFields *This);
++  void __RPC_STUB Fields_CancelUpdate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef ___Parameter_INTERFACE_DEFINED__
++#define ___Parameter_INTERFACE_DEFINED__
++  EXTERN_C const IID IID__Parameter;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct _ADOParameter : public _ADO {
++  public:
++    virtual HRESULT WINAPI get_Name(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI put_Name(BSTR bstr) = 0;
++    virtual HRESULT WINAPI get_Value(VARIANT *pvar) = 0;
++    virtual HRESULT WINAPI put_Value(VARIANT val) = 0;
++    virtual HRESULT WINAPI get_Type(DataTypeEnum *psDataType) = 0;
++    virtual HRESULT WINAPI put_Type(DataTypeEnum sDataType) = 0;
++    virtual HRESULT WINAPI put_Direction(ParameterDirectionEnum lParmDirection) = 0;
++    virtual HRESULT WINAPI get_Direction(ParameterDirectionEnum *plParmDirection) = 0;
++    virtual HRESULT WINAPI put_Precision(BYTE bPrecision) = 0;
++    virtual HRESULT WINAPI get_Precision(BYTE *pbPrecision) = 0;
++    virtual HRESULT WINAPI put_NumericScale(BYTE bScale) = 0;
++    virtual HRESULT WINAPI get_NumericScale(BYTE *pbScale) = 0;
++    virtual HRESULT WINAPI put_Size(ADO_LONGPTR l) = 0;
++    virtual HRESULT WINAPI get_Size(ADO_LONGPTR *pl) = 0;
++    virtual HRESULT WINAPI AppendChunk(VARIANT Val) = 0;
++    virtual HRESULT WINAPI get_Attributes(LONG *plParmAttribs) = 0;
++    virtual HRESULT WINAPI put_Attributes(LONG lParmAttribs) = 0;
++  };
++#else
++  typedef struct _ParameterVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(_ADOParameter *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(_ADOParameter *This);
++      ULONG (WINAPI *Release)(_ADOParameter *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(_ADOParameter *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(_ADOParameter *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(_ADOParameter *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(_ADOParameter *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Properties)(_ADOParameter *This,ADOProperties **ppvObject);
++      HRESULT (WINAPI *get_Name)(_ADOParameter *This,BSTR *pbstr);
++      HRESULT (WINAPI *put_Name)(_ADOParameter *This,BSTR bstr);
++      HRESULT (WINAPI *get_Value)(_ADOParameter *This,VARIANT *pvar);
++      HRESULT (WINAPI *put_Value)(_ADOParameter *This,VARIANT val);
++      HRESULT (WINAPI *get_Type)(_ADOParameter *This,DataTypeEnum *psDataType);
++      HRESULT (WINAPI *put_Type)(_ADOParameter *This,DataTypeEnum sDataType);
++      HRESULT (WINAPI *put_Direction)(_ADOParameter *This,ParameterDirectionEnum lParmDirection);
++      HRESULT (WINAPI *get_Direction)(_ADOParameter *This,ParameterDirectionEnum *plParmDirection);
++      HRESULT (WINAPI *put_Precision)(_ADOParameter *This,BYTE bPrecision);
++      HRESULT (WINAPI *get_Precision)(_ADOParameter *This,BYTE *pbPrecision);
++      HRESULT (WINAPI *put_NumericScale)(_ADOParameter *This,BYTE bScale);
++      HRESULT (WINAPI *get_NumericScale)(_ADOParameter *This,BYTE *pbScale);
++      HRESULT (WINAPI *put_Size)(_ADOParameter *This,ADO_LONGPTR l);
++      HRESULT (WINAPI *get_Size)(_ADOParameter *This,ADO_LONGPTR *pl);
++      HRESULT (WINAPI *AppendChunk)(_ADOParameter *This,VARIANT Val);
++      HRESULT (WINAPI *get_Attributes)(_ADOParameter *This,LONG *plParmAttribs);
++      HRESULT (WINAPI *put_Attributes)(_ADOParameter *This,LONG lParmAttribs);
++    END_INTERFACE
++  } _ParameterVtbl;
++  struct _Parameter {
++    CONST_VTBL struct _ParameterVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define _Parameter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define _Parameter_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define _Parameter_Release(This) (This)->lpVtbl -> Release(This)
++#define _Parameter_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define _Parameter_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define _Parameter_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define _Parameter_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define _Parameter_get_Properties(This,ppvObject) (This)->lpVtbl -> get_Properties(This,ppvObject)
++#define _Parameter_get_Name(This,pbstr) (This)->lpVtbl -> get_Name(This,pbstr)
++#define _Parameter_put_Name(This,bstr) (This)->lpVtbl -> put_Name(This,bstr)
++#define _Parameter_get_Value(This,pvar) (This)->lpVtbl -> get_Value(This,pvar)
++#define _Parameter_put_Value(This,val) (This)->lpVtbl -> put_Value(This,val)
++#define _Parameter_get_Type(This,psDataType) (This)->lpVtbl -> get_Type(This,psDataType)
++#define _Parameter_put_Type(This,sDataType) (This)->lpVtbl -> put_Type(This,sDataType)
++#define _Parameter_put_Direction(This,lParmDirection) (This)->lpVtbl -> put_Direction(This,lParmDirection)
++#define _Parameter_get_Direction(This,plParmDirection) (This)->lpVtbl -> get_Direction(This,plParmDirection)
++#define _Parameter_put_Precision(This,bPrecision) (This)->lpVtbl -> put_Precision(This,bPrecision)
++#define _Parameter_get_Precision(This,pbPrecision) (This)->lpVtbl -> get_Precision(This,pbPrecision)
++#define _Parameter_put_NumericScale(This,bScale) (This)->lpVtbl -> put_NumericScale(This,bScale)
++#define _Parameter_get_NumericScale(This,pbScale) (This)->lpVtbl -> get_NumericScale(This,pbScale)
++#define _Parameter_put_Size(This,l) (This)->lpVtbl -> put_Size(This,l)
++#define _Parameter_get_Size(This,pl) (This)->lpVtbl -> get_Size(This,pl)
++#define _Parameter_AppendChunk(This,Val) (This)->lpVtbl -> AppendChunk(This,Val)
++#define _Parameter_get_Attributes(This,plParmAttribs) (This)->lpVtbl -> get_Attributes(This,plParmAttribs)
++#define _Parameter_put_Attributes(This,lParmAttribs) (This)->lpVtbl -> put_Attributes(This,lParmAttribs)
++#endif
++#endif
++  HRESULT WINAPI _Parameter_get_Name_Proxy(_ADOParameter *This,BSTR *pbstr);
++  void __RPC_STUB _Parameter_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_put_Name_Proxy(_ADOParameter *This,BSTR bstr);
++  void __RPC_STUB _Parameter_put_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_get_Value_Proxy(_ADOParameter *This,VARIANT *pvar);
++  void __RPC_STUB _Parameter_get_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_put_Value_Proxy(_ADOParameter *This,VARIANT val);
++  void __RPC_STUB _Parameter_put_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_get_Type_Proxy(_ADOParameter *This,DataTypeEnum *psDataType);
++  void __RPC_STUB _Parameter_get_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_put_Type_Proxy(_ADOParameter *This,DataTypeEnum sDataType);
++  void __RPC_STUB _Parameter_put_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_put_Direction_Proxy(_ADOParameter *This,ParameterDirectionEnum lParmDirection);
++  void __RPC_STUB _Parameter_put_Direction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_get_Direction_Proxy(_ADOParameter *This,ParameterDirectionEnum *plParmDirection);
++  void __RPC_STUB _Parameter_get_Direction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_put_Precision_Proxy(_ADOParameter *This,BYTE bPrecision);
++  void __RPC_STUB _Parameter_put_Precision_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_get_Precision_Proxy(_ADOParameter *This,BYTE *pbPrecision);
++  void __RPC_STUB _Parameter_get_Precision_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_put_NumericScale_Proxy(_ADOParameter *This,BYTE bScale);
++  void __RPC_STUB _Parameter_put_NumericScale_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_get_NumericScale_Proxy(_ADOParameter *This,BYTE *pbScale);
++  void __RPC_STUB _Parameter_get_NumericScale_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_put_Size_Proxy(_ADOParameter *This,ADO_LONGPTR l);
++  void __RPC_STUB _Parameter_put_Size_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_get_Size_Proxy(_ADOParameter *This,ADO_LONGPTR *pl);
++  void __RPC_STUB _Parameter_get_Size_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_AppendChunk_Proxy(_ADOParameter *This,VARIANT Val);
++  void __RPC_STUB _Parameter_AppendChunk_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_get_Attributes_Proxy(_ADOParameter *This,LONG *plParmAttribs);
++  void __RPC_STUB _Parameter_get_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI _Parameter_put_Attributes_Proxy(_ADOParameter *This,LONG lParmAttribs);
++  void __RPC_STUB _Parameter_put_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++  EXTERN_C const CLSID CLSID_Parameter;
++#ifdef __cplusplus
++//  Parameter;
++#endif
++
++#ifndef __Parameters_INTERFACE_DEFINED__
++#define __Parameters_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Parameters;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct
++ADOParameters : public _ADODynaCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Index,_ADOParameter **ppvObject) = 0;
++  };
++#else
++  typedef struct ParametersVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOParameters *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOParameters *This);
++      ULONG (WINAPI *Release)(ADOParameters *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOParameters *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOParameters *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOParameters *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOParameters *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOParameters *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOParameters *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOParameters *This);
++      HRESULT (WINAPI *Append)(ADOParameters *This,IDispatch *Object);
++      HRESULT (WINAPI *Delete)(ADOParameters *This,VARIANT Index);
++      HRESULT (WINAPI *get_Item)(ADOParameters *This,VARIANT Index,_ADOParameter **ppvObject);
++    END_INTERFACE
++  } ParametersVtbl;
++  struct Parameters {
++    CONST_VTBL struct ParametersVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Parameters_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Parameters_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Parameters_Release(This) (This)->lpVtbl -> Release(This)
++#define Parameters_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Parameters_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Parameters_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Parameters_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Parameters_get_Count(This,c) (This)->lpVtbl -> get_Count(This,c)
++#define Parameters__NewEnum(This,ppvObject) (This)->lpVtbl -> _NewEnum(This,ppvObject)
++#define Parameters_Refresh(This) (This)->lpVtbl -> Refresh(This)
++#define Parameters_Append(This,Object) (This)->lpVtbl -> Append(This,Object)
++#define Parameters_Delete(This,Index) (This)->lpVtbl -> Delete(This,Index)
++#define Parameters_get_Item(This,Index,ppvObject) (This)->lpVtbl -> get_Item(This,Index,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI Parameters_get_Item_Proxy(ADOParameters *This,VARIANT Index,_ADOParameter **ppvObject);
++  void __RPC_STUB Parameters_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Property_INTERFACE_DEFINED__
++#define __Property_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Property;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOProperty : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_Value(VARIANT *pval) = 0;
++    virtual HRESULT WINAPI put_Value(VARIANT val) = 0;
++    virtual HRESULT WINAPI get_Name(BSTR *pbstr) = 0;
++    virtual HRESULT WINAPI get_Type(DataTypeEnum *ptype) = 0;
++    virtual HRESULT WINAPI get_Attributes(long *plAttributes) = 0;
++    virtual HRESULT WINAPI put_Attributes(long lAttributes) = 0;
++  };
++#else
++  typedef struct PropertyVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOProperty *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOProperty *This);
++      ULONG (WINAPI *Release)(ADOProperty *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOProperty *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOProperty *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOProperty *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOProperty *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Value)(ADOProperty *This,VARIANT *pval);
++      HRESULT (WINAPI *put_Value)(ADOProperty *This,VARIANT val);
++      HRESULT (WINAPI *get_Name)(ADOProperty *This,BSTR *pbstr);
++      HRESULT (WINAPI *get_Type)(ADOProperty *This,DataTypeEnum *ptype);
++      HRESULT (WINAPI *get_Attributes)(ADOProperty *This,long *plAttributes);
++      HRESULT (WINAPI *put_Attributes)(ADOProperty *This,long lAttributes);
++    END_INTERFACE
++  } PropertyVtbl;
++  struct Property {
++    CONST_VTBL struct PropertyVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Property_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Property_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Property_Release(This) (This)->lpVtbl -> Release(This)
++#define Property_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Property_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Property_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Property_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Property_get_Value(This,pval) (This)->lpVtbl -> get_Value(This,pval)
++#define Property_put_Value(This,val) (This)->lpVtbl -> put_Value(This,val)
++#define Property_get_Name(This,pbstr) (This)->lpVtbl -> get_Name(This,pbstr)
++#define Property_get_Type(This,ptype) (This)->lpVtbl -> get_Type(This,ptype)
++#define Property_get_Attributes(This,plAttributes) (This)->lpVtbl -> get_Attributes(This,plAttributes)
++#define Property_put_Attributes(This,lAttributes) (This)->lpVtbl -> put_Attributes(This,lAttributes)
++#endif
++#endif
++  HRESULT WINAPI Property_get_Value_Proxy(ADOProperty *This,VARIANT *pval);
++  void __RPC_STUB Property_get_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Property_put_Value_Proxy(ADOProperty *This,VARIANT val);
++  void __RPC_STUB Property_put_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Property_get_Name_Proxy(ADOProperty *This,BSTR *pbstr);
++  void __RPC_STUB Property_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Property_get_Type_Proxy(ADOProperty *This,DataTypeEnum *ptype);
++  void __RPC_STUB Property_get_Type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Property_get_Attributes_Proxy(ADOProperty *This,long *plAttributes);
++  void __RPC_STUB Property_get_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI Property_put_Attributes_Proxy(ADOProperty *This,long lAttributes);
++  void __RPC_STUB Property_put_Attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __Properties_INTERFACE_DEFINED__
++#define __Properties_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_Properties;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ADOProperties : public _ADOCollection {
++  public:
++    virtual HRESULT WINAPI get_Item(VARIANT Index,ADOProperty **ppvObject) = 0;
++
++  };
++#else
++  typedef struct PropertiesVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ADOProperties *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ADOProperties *This);
++      ULONG (WINAPI *Release)(ADOProperties *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(ADOProperties *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(ADOProperties *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(ADOProperties *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(ADOProperties *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_Count)(ADOProperties *This,long *c);
++      HRESULT (WINAPI *_NewEnum)(ADOProperties *This,IUnknown **ppvObject);
++      HRESULT (WINAPI *Refresh)(ADOProperties *This);
++      HRESULT (WINAPI *get_Item)(ADOProperties *This,VARIANT Index,ADOProperty **ppvObject);
++    END_INTERFACE
++  } PropertiesVtbl;
++  struct Properties {
++    CONST_VTBL struct PropertiesVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define Properties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
++#define Properties_AddRef(This) (This)->lpVtbl -> AddRef(This)
++#define Properties_Release(This) (This)->lpVtbl -> Release(This)
++#define Properties_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
++#define Properties_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define Properties_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define Properties_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define Properties_get_Count(This,c) (This)->lpVtbl -> get_Count(This,c)
++#define Properties__NewEnum(This,ppvObject) (This)->lpVtbl -> _NewEnum(This,ppvObject)
++#define Properties_Refresh(This) (This)->lpVtbl -> Refresh(This)
++#define Properties_get_Item(This,Index,ppvObject) (This)->lpVtbl -> get_Item(This,Index,ppvObject)
++#endif
++#endif
++  HRESULT WINAPI Properties_get_Item_Proxy(ADOProperties *This,VARIANT Index,ADOProperty **ppvObject);
++  void __RPC_STUB Properties_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++  extern RPC_IF_HANDLE __MIDL_itf_m_bobj_0150_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_m_bobj_0150_v0_0_s_ifspec;
++
++#ifdef __cplusplus
++}
++#endif
++#endif
++#define ADOCommand _ADOCommand
++#define ADORecordset _ADORecordset
++#define ADOTransaction _ADOTransaction
++#define ADOParameter _ADOParameter
++#define ADOConnection _ADOConnection
++#define ADOCollection _ADOCollection
++#define ADODynaCollection _ADODynaCollection
++#define ADORecord _ADORecord
++#define ADORecField _ADORecField
++#define ADOStream _ADOStream
++#endif
+diff -urN /home/jesus/ooo-build/build/ooo310-m14/connectivity/source/drivers/ado/msxml.h connectivity/source/drivers/ado/msxml.h
+--- /dev/null	1970-01-01 01:00:00.000000000 +0100
++++ connectivity/source/drivers/ado/msxml.h	2009-07-22 17:30:26.000000000 +0200
+@@ -0,0 +1,3379 @@
++/**
++ * This file has no copyright assigned and is placed in the Public Domain.
++ * This file is part of the w64 mingw-runtime package.
++ * No warranty is given; refer to the file DISCLAIMER within this package.
++ */
++#ifndef __REQUIRED_RPCNDR_H_VERSION__
++#define __REQUIRED_RPCNDR_H_VERSION__ 440
++#endif
++
++#include "rpc.h"
++#include "rpcndr.h"
++
++#ifndef __msxml_h__
++#define __msxml_h__
++
++#ifndef __IXMLDOMImplementation_FWD_DEFINED__
++#define __IXMLDOMImplementation_FWD_DEFINED__
++typedef struct IXMLDOMImplementation IXMLDOMImplementation;
++#endif
++
++#ifndef __IXMLDOMNode_FWD_DEFINED__
++#define __IXMLDOMNode_FWD_DEFINED__
++typedef struct IXMLDOMNode IXMLDOMNode;
++#endif
++
++#ifndef __IXMLDOMDocumentFragment_FWD_DEFINED__
++#define __IXMLDOMDocumentFragment_FWD_DEFINED__
++typedef struct IXMLDOMDocumentFragment IXMLDOMDocumentFragment;
++#endif
++
++#ifndef __IXMLDOMDocument_FWD_DEFINED__
++#define __IXMLDOMDocument_FWD_DEFINED__
++typedef struct IXMLDOMDocument IXMLDOMDocument;
++#endif
++
++#ifndef __IXMLDOMNodeList_FWD_DEFINED__
++#define __IXMLDOMNodeList_FWD_DEFINED__
++typedef struct IXMLDOMNodeList IXMLDOMNodeList;
++#endif
++
++#ifndef __IXMLDOMNamedNodeMap_FWD_DEFINED__
++#define __IXMLDOMNamedNodeMap_FWD_DEFINED__
++typedef struct IXMLDOMNamedNodeMap IXMLDOMNamedNodeMap;
++#endif
++
++#ifndef __IXMLDOMCharacterData_FWD_DEFINED__
++#define __IXMLDOMCharacterData_FWD_DEFINED__
++typedef struct IXMLDOMCharacterData IXMLDOMCharacterData;
++#endif
++
++#ifndef __IXMLDOMAttribute_FWD_DEFINED__
++#define __IXMLDOMAttribute_FWD_DEFINED__
++typedef struct IXMLDOMAttribute IXMLDOMAttribute;
++#endif
++
++#ifndef __IXMLDOMElement_FWD_DEFINED__
++#define __IXMLDOMElement_FWD_DEFINED__
++typedef struct IXMLDOMElement IXMLDOMElement;
++#endif
++
++#ifndef __IXMLDOMText_FWD_DEFINED__
++#define __IXMLDOMText_FWD_DEFINED__
++typedef struct IXMLDOMText IXMLDOMText;
++#endif
++
++#ifndef __IXMLDOMComment_FWD_DEFINED__
++#define __IXMLDOMComment_FWD_DEFINED__
++typedef struct IXMLDOMComment IXMLDOMComment;
++#endif
++
++#ifndef __IXMLDOMProcessingInstruction_FWD_DEFINED__
++#define __IXMLDOMProcessingInstruction_FWD_DEFINED__
++typedef struct IXMLDOMProcessingInstruction IXMLDOMProcessingInstruction;
++#endif
++
++#ifndef __IXMLDOMCDATASection_FWD_DEFINED__
++#define __IXMLDOMCDATASection_FWD_DEFINED__
++typedef struct IXMLDOMCDATASection IXMLDOMCDATASection;
++#endif
++
++#ifndef __IXMLDOMDocumentType_FWD_DEFINED__
++#define __IXMLDOMDocumentType_FWD_DEFINED__
++typedef struct IXMLDOMDocumentType IXMLDOMDocumentType;
++#endif
++
++#ifndef __IXMLDOMNotation_FWD_DEFINED__
++#define __IXMLDOMNotation_FWD_DEFINED__
++typedef struct IXMLDOMNotation IXMLDOMNotation;
++#endif
++
++#ifndef __IXMLDOMEntity_FWD_DEFINED__
++#define __IXMLDOMEntity_FWD_DEFINED__
++typedef struct IXMLDOMEntity IXMLDOMEntity;
++#endif
++
++#ifndef __IXMLDOMEntityReference_FWD_DEFINED__
++#define __IXMLDOMEntityReference_FWD_DEFINED__
++typedef struct IXMLDOMEntityReference IXMLDOMEntityReference;
++#endif
++
++#ifndef __IXMLDOMParseError_FWD_DEFINED__
++#define __IXMLDOMParseError_FWD_DEFINED__
++typedef struct IXMLDOMParseError IXMLDOMParseError;
++#endif
++
++#ifndef __IXTLRuntime_FWD_DEFINED__
++#define __IXTLRuntime_FWD_DEFINED__
++typedef struct IXTLRuntime IXTLRuntime;
++#endif
++
++#ifndef __XMLDOMDocumentEvents_FWD_DEFINED__
++#define __XMLDOMDocumentEvents_FWD_DEFINED__
++typedef struct XMLDOMDocumentEvents XMLDOMDocumentEvents;
++#endif
++
++#ifndef __DOMDocument_FWD_DEFINED__
++#define __DOMDocument_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class DOMDocument DOMDocument;
++#else
++typedef struct DOMDocument DOMDocument;
++#endif
++#endif
++
++#ifndef __DOMFreeThreadedDocument_FWD_DEFINED__
++#define __DOMFreeThreadedDocument_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class DOMFreeThreadedDocument DOMFreeThreadedDocument;
++#else
++typedef struct DOMFreeThreadedDocument DOMFreeThreadedDocument;
++#endif
++#endif
++
++#ifndef __IXMLHttpRequest_FWD_DEFINED__
++#define __IXMLHttpRequest_FWD_DEFINED__
++typedef struct IXMLHttpRequest IXMLHttpRequest;
++#endif
++
++#ifndef __XMLHTTPRequest_FWD_DEFINED__
++#define __XMLHTTPRequest_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class XMLHTTPRequest XMLHTTPRequest;
++#else
++typedef struct XMLHTTPRequest XMLHTTPRequest;
++#endif
++#endif
++
++#ifndef __IXMLDSOControl_FWD_DEFINED__
++#define __IXMLDSOControl_FWD_DEFINED__
++typedef struct IXMLDSOControl IXMLDSOControl;
++#endif
++
++#ifndef __XMLDSOControl_FWD_DEFINED__
++#define __XMLDSOControl_FWD_DEFINED__
++#ifdef __cplusplus
++typedef class XMLDSOControl XMLDSOControl;
++#else
++typedef struct XMLDSOControl XMLDSOControl;
++#endif
++#endif
++
++#ifndef __IXMLElementCollection_FWD_DEFINED__
++#define __IXMLElementCollection_FWD_DEFINED__
++typedef struct IXMLElementCollection IXMLElementCollection;
++#endif
++
++#ifndef __IXMLDocument_FWD_DEFINED__
++#define __IXMLDocument_FWD_DEFINED__
++typedef struct IXMLDocument IXMLDocument;
++#endif
++
++#ifndef __IXMLDocument2_FWD_DEFINED__
++#define __IXMLDocument2_FWD_DEFINED__
++typedef struct IXMLDocument2 IXMLDocument2;
++#endif
++
++#ifndef __IXMLElement_FWD_DEFINED__
++#define __IXMLElement_FWD_DEFINED__
++typedef struct IXMLElement IXMLElement;
++#endif
++
++#ifndef __IXMLElement2_FWD_DEFINED__
++#define __IXMLElement2_FWD_DEFINED__
++typedef struct IXMLElement2 IXMLElement2;
++#endif
++
++#ifndef __IXMLAttribute_FWD_DEFINED__
++#define __IXMLAttribute_FWD_DEFINED__
++typedef struct IXMLAttribute IXMLAttribute;
++#endif
++
++#ifndef __IXMLError_FWD_DEFINED__
++#define __IXMLError_FWD_DEFINED__
++typedef struct IXMLError IXMLError;
++#endif
++
++#ifndef __XMLDocument_FWD_DEFINED__
++#define __XMLDocument_FWD_DEFINED__
++
++#ifdef __cplusplus
++typedef class XMLDocument XMLDocument;
++#else
++typedef struct XMLDocument XMLDocument;
++#endif
++#endif
++
++#include "unknwn.h"
++#include "objidl.h"
++#include "oaidl.h"
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++  void *__RPC_API MIDL_user_allocate(size_t);
++  void __RPC_API MIDL_user_free(void *);
++
++  typedef struct _xml_error {
++    unsigned int _nLine;
++    BSTR _pchBuf;
++    unsigned int _cchBuf;
++    unsigned int _ich;
++    BSTR _pszFound;
++    BSTR _pszExpected;
++    DWORD _reserved1;
++    DWORD _reserved2;
++  } XML_ERROR;
++
++  extern RPC_IF_HANDLE __MIDL_itf_msxml_0000_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_msxml_0000_v0_0_s_ifspec;
++
++#ifndef __MSXML_LIBRARY_DEFINED__
++#define __MSXML_LIBRARY_DEFINED__
++
++  typedef enum tagDOMNodeType {
++    NODE_INVALID = 0,NODE_ELEMENT = NODE_INVALID + 1,NODE_ATTRIBUTE = NODE_ELEMENT + 1,NODE_TEXT = NODE_ATTRIBUTE + 1,
++    NODE_CDATA_SECTION = NODE_TEXT + 1,NODE_ENTITY_REFERENCE = NODE_CDATA_SECTION + 1,NODE_ENTITY = NODE_ENTITY_REFERENCE + 1,
++    NODE_PROCESSING_INSTRUCTION = NODE_ENTITY + 1,NODE_COMMENT = NODE_PROCESSING_INSTRUCTION + 1,NODE_DOCUMENT = NODE_COMMENT + 1,
++    NODE_DOCUMENT_TYPE = NODE_DOCUMENT + 1,NODE_DOCUMENT_FRAGMENT = NODE_DOCUMENT_TYPE + 1,NODE_NOTATION = NODE_DOCUMENT_FRAGMENT + 1
++  } DOMNodeType;
++
++  typedef enum tagXMLEMEM_TYPE {
++    XMLELEMTYPE_ELEMENT = 0,XMLELEMTYPE_TEXT = XMLELEMTYPE_ELEMENT + 1,XMLELEMTYPE_COMMENT = XMLELEMTYPE_TEXT + 1,
++    XMLELEMTYPE_DOCUMENT = XMLELEMTYPE_COMMENT + 1,XMLELEMTYPE_DTD = XMLELEMTYPE_DOCUMENT + 1,XMLELEMTYPE_PI = XMLELEMTYPE_DTD + 1,
++    XMLELEMTYPE_OTHER = XMLELEMTYPE_PI + 1
++  } XMLELEM_TYPE;
++
++  EXTERN_C const IID LIBID_MSXML;
++
++#ifndef __IXMLDOMImplementation_INTERFACE_DEFINED__
++#define __IXMLDOMImplementation_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMImplementation;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMImplementation : public IDispatch {
++  public:
++    virtual HRESULT WINAPI hasFeature(BSTR feature,BSTR version,VARIANT_BOOL *hasFeature) = 0;
++  };
++#else
++  typedef struct IXMLDOMImplementationVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMImplementation *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMImplementation *This);
++      ULONG (WINAPI *Release)(IXMLDOMImplementation *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMImplementation *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMImplementation *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMImplementation *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMImplementation *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *hasFeature)(IXMLDOMImplementation *This,BSTR feature,BSTR version,VARIANT_BOOL *hasFeature);
++    END_INTERFACE
++  } IXMLDOMImplementationVtbl;
++  struct IXMLDOMImplementation {
++    CONST_VTBL struct IXMLDOMImplementationVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMImplementation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMImplementation_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMImplementation_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMImplementation_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMImplementation_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMImplementation_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMImplementation_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMImplementation_hasFeature(This,feature,version,hasFeature) (This)->lpVtbl->hasFeature(This,feature,version,hasFeature)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMImplementation_hasFeature_Proxy(IXMLDOMImplementation *This,BSTR feature,BSTR version,VARIANT_BOOL *hasFeature);
++  void __RPC_STUB IXMLDOMImplementation_hasFeature_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMNode_INTERFACE_DEFINED__
++#define __IXMLDOMNode_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMNode;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMNode : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_nodeName(BSTR *name) = 0;
++    virtual HRESULT WINAPI get_nodeValue(VARIANT *value) = 0;
++    virtual HRESULT WINAPI put_nodeValue(VARIANT value) = 0;
++    virtual HRESULT WINAPI get_nodeType(DOMNodeType *type) = 0;
++    virtual HRESULT WINAPI get_parentNode(IXMLDOMNode **parent) = 0;
++    virtual HRESULT WINAPI get_childNodes(IXMLDOMNodeList **childList) = 0;
++    virtual HRESULT WINAPI get_firstChild(IXMLDOMNode **firstChild) = 0;
++    virtual HRESULT WINAPI get_lastChild(IXMLDOMNode **lastChild) = 0;
++    virtual HRESULT WINAPI get_previousSibling(IXMLDOMNode **previousSibling) = 0;
++    virtual HRESULT WINAPI get_nextSibling(IXMLDOMNode **nextSibling) = 0;
++    virtual HRESULT WINAPI get_attributes(IXMLDOMNamedNodeMap **attributeMap) = 0;
++    virtual HRESULT WINAPI insertBefore(IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild) = 0;
++    virtual HRESULT WINAPI replaceChild(IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild) = 0;
++    virtual HRESULT WINAPI removeChild(IXMLDOMNode *childNode,IXMLDOMNode **oldChild) = 0;
++    virtual HRESULT WINAPI appendChild(IXMLDOMNode *newChild,IXMLDOMNode **outNewChild) = 0;
++    virtual HRESULT WINAPI hasChildNodes(VARIANT_BOOL *hasChild) = 0;
++    virtual HRESULT WINAPI get_ownerDocument(IXMLDOMDocument **DOMDocument) = 0;
++    virtual HRESULT WINAPI cloneNode(VARIANT_BOOL deep,IXMLDOMNode **cloneRoot) = 0;
++    virtual HRESULT WINAPI get_nodeTypeString(BSTR *nodeType) = 0;
++    virtual HRESULT WINAPI get_text(BSTR *text) = 0;
++    virtual HRESULT WINAPI put_text(BSTR text) = 0;
++    virtual HRESULT WINAPI get_specified(VARIANT_BOOL *isSpecified) = 0;
++    virtual HRESULT WINAPI get_definition(IXMLDOMNode **definitionNode) = 0;
++    virtual HRESULT WINAPI get_nodeTypedValue(VARIANT *typedValue) = 0;
++    virtual HRESULT WINAPI put_nodeTypedValue(VARIANT typedValue) = 0;
++    virtual HRESULT WINAPI get_dataType(VARIANT *dataTypeName) = 0;
++    virtual HRESULT WINAPI put_dataType(BSTR dataTypeName) = 0;
++    virtual HRESULT WINAPI get_xml(BSTR *xmlString) = 0;
++    virtual HRESULT WINAPI transformNode(IXMLDOMNode *stylesheet,BSTR *xmlString) = 0;
++    virtual HRESULT WINAPI selectNodes(BSTR queryString,IXMLDOMNodeList **resultList) = 0;
++    virtual HRESULT WINAPI selectSingleNode(BSTR queryString,IXMLDOMNode **resultNode) = 0;
++    virtual HRESULT WINAPI get_parsed(VARIANT_BOOL *isParsed) = 0;
++    virtual HRESULT WINAPI get_namespaceURI(BSTR *namespaceURI) = 0;
++    virtual HRESULT WINAPI get_prefix(BSTR *prefixString) = 0;
++    virtual HRESULT WINAPI get_baseName(BSTR *nameString) = 0;
++    virtual HRESULT WINAPI transformNodeToObject(IXMLDOMNode *stylesheet,VARIANT outputObject) = 0;
++  };
++#else
++  typedef struct IXMLDOMNodeVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMNode *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMNode *This);
++      ULONG (WINAPI *Release)(IXMLDOMNode *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMNode *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMNode *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMNode *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMNode *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMNode *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMNode *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMNode *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMNode *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMNode *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMNode *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMNode *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMNode *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMNode *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMNode *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMNode *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMNode *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMNode *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMNode *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMNode *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMNode *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMNode *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMNode *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMNode *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMNode *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMNode *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMNode *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMNode *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMNode *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMNode *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMNode *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMNode *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMNode *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMNode *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMNode *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMNode *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMNode *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMNode *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMNode *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++    END_INTERFACE
++  } IXMLDOMNodeVtbl;
++  struct IXMLDOMNode {
++    CONST_VTBL struct IXMLDOMNodeVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMNode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMNode_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMNode_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMNode_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMNode_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMNode_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMNode_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMNode_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMNode_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMNode_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMNode_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMNode_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMNode_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMNode_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMNode_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMNode_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMNode_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMNode_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMNode_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMNode_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMNode_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMNode_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMNode_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMNode_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMNode_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMNode_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMNode_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMNode_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMNode_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMNode_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMNode_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMNode_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMNode_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMNode_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMNode_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMNode_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMNode_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMNode_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMNode_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMNode_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMNode_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMNode_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMNode_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMNode_get_nodeName_Proxy(IXMLDOMNode *This,BSTR *name);
++  void __RPC_STUB IXMLDOMNode_get_nodeName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_nodeValue_Proxy(IXMLDOMNode *This,VARIANT *value);
++  void __RPC_STUB IXMLDOMNode_get_nodeValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_put_nodeValue_Proxy(IXMLDOMNode *This,VARIANT value);
++  void __RPC_STUB IXMLDOMNode_put_nodeValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_nodeType_Proxy(IXMLDOMNode *This,DOMNodeType *type);
++  void __RPC_STUB IXMLDOMNode_get_nodeType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_parentNode_Proxy(IXMLDOMNode *This,IXMLDOMNode **parent);
++  void __RPC_STUB IXMLDOMNode_get_parentNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_childNodes_Proxy(IXMLDOMNode *This,IXMLDOMNodeList **childList);
++  void __RPC_STUB IXMLDOMNode_get_childNodes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_firstChild_Proxy(IXMLDOMNode *This,IXMLDOMNode **firstChild);
++  void __RPC_STUB IXMLDOMNode_get_firstChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_lastChild_Proxy(IXMLDOMNode *This,IXMLDOMNode **lastChild);
++  void __RPC_STUB IXMLDOMNode_get_lastChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_previousSibling_Proxy(IXMLDOMNode *This,IXMLDOMNode **previousSibling);
++  void __RPC_STUB IXMLDOMNode_get_previousSibling_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_nextSibling_Proxy(IXMLDOMNode *This,IXMLDOMNode **nextSibling);
++  void __RPC_STUB IXMLDOMNode_get_nextSibling_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_attributes_Proxy(IXMLDOMNode *This,IXMLDOMNamedNodeMap **attributeMap);
++  void __RPC_STUB IXMLDOMNode_get_attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_insertBefore_Proxy(IXMLDOMNode *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++  void __RPC_STUB IXMLDOMNode_insertBefore_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_replaceChild_Proxy(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++  void __RPC_STUB IXMLDOMNode_replaceChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_removeChild_Proxy(IXMLDOMNode *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++  void __RPC_STUB IXMLDOMNode_removeChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_appendChild_Proxy(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++  void __RPC_STUB IXMLDOMNode_appendChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_hasChildNodes_Proxy(IXMLDOMNode *This,VARIANT_BOOL *hasChild);
++  void __RPC_STUB IXMLDOMNode_hasChildNodes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_ownerDocument_Proxy(IXMLDOMNode *This,IXMLDOMDocument **DOMDocument);
++  void __RPC_STUB IXMLDOMNode_get_ownerDocument_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_cloneNode_Proxy(IXMLDOMNode *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++  void __RPC_STUB IXMLDOMNode_cloneNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_nodeTypeString_Proxy(IXMLDOMNode *This,BSTR *nodeType);
++  void __RPC_STUB IXMLDOMNode_get_nodeTypeString_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_text_Proxy(IXMLDOMNode *This,BSTR *text);
++  void __RPC_STUB IXMLDOMNode_get_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_put_text_Proxy(IXMLDOMNode *This,BSTR text);
++  void __RPC_STUB IXMLDOMNode_put_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_specified_Proxy(IXMLDOMNode *This,VARIANT_BOOL *isSpecified);
++  void __RPC_STUB IXMLDOMNode_get_specified_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_definition_Proxy(IXMLDOMNode *This,IXMLDOMNode **definitionNode);
++  void __RPC_STUB IXMLDOMNode_get_definition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_nodeTypedValue_Proxy(IXMLDOMNode *This,VARIANT *typedValue);
++  void __RPC_STUB IXMLDOMNode_get_nodeTypedValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_put_nodeTypedValue_Proxy(IXMLDOMNode *This,VARIANT typedValue);
++  void __RPC_STUB IXMLDOMNode_put_nodeTypedValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_dataType_Proxy(IXMLDOMNode *This,VARIANT *dataTypeName);
++  void __RPC_STUB IXMLDOMNode_get_dataType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_put_dataType_Proxy(IXMLDOMNode *This,BSTR dataTypeName);
++  void __RPC_STUB IXMLDOMNode_put_dataType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_xml_Proxy(IXMLDOMNode *This,BSTR *xmlString);
++  void __RPC_STUB IXMLDOMNode_get_xml_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_transformNode_Proxy(IXMLDOMNode *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++  void __RPC_STUB IXMLDOMNode_transformNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_selectNodes_Proxy(IXMLDOMNode *This,BSTR queryString,IXMLDOMNodeList **resultList);
++  void __RPC_STUB IXMLDOMNode_selectNodes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_selectSingleNode_Proxy(IXMLDOMNode *This,BSTR queryString,IXMLDOMNode **resultNode);
++  void __RPC_STUB IXMLDOMNode_selectSingleNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_parsed_Proxy(IXMLDOMNode *This,VARIANT_BOOL *isParsed);
++  void __RPC_STUB IXMLDOMNode_get_parsed_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_namespaceURI_Proxy(IXMLDOMNode *This,BSTR *namespaceURI);
++  void __RPC_STUB IXMLDOMNode_get_namespaceURI_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_prefix_Proxy(IXMLDOMNode *This,BSTR *prefixString);
++  void __RPC_STUB IXMLDOMNode_get_prefix_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_get_baseName_Proxy(IXMLDOMNode *This,BSTR *nameString);
++  void __RPC_STUB IXMLDOMNode_get_baseName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNode_transformNodeToObject_Proxy(IXMLDOMNode *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++  void __RPC_STUB IXMLDOMNode_transformNodeToObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMDocumentFragment_INTERFACE_DEFINED__
++#define __IXMLDOMDocumentFragment_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMDocumentFragment;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMDocumentFragment : public IXMLDOMNode {
++  };
++#else
++  typedef struct IXMLDOMDocumentFragmentVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMDocumentFragment *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMDocumentFragment *This);
++      ULONG (WINAPI *Release)(IXMLDOMDocumentFragment *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMDocumentFragment *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMDocumentFragment *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMDocumentFragment *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMDocumentFragment *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMDocumentFragment *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMDocumentFragment *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMDocumentFragment *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMDocumentFragment *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMDocumentFragment *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMDocumentFragment *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMDocumentFragment *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMDocumentFragment *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMDocumentFragment *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMDocumentFragment *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMDocumentFragment *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMDocumentFragment *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMDocumentFragment *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMDocumentFragment *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMDocumentFragment *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMDocumentFragment *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMDocumentFragment *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMDocumentFragment *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMDocumentFragment *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMDocumentFragment *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMDocumentFragment *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMDocumentFragment *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMDocumentFragment *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMDocumentFragment *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMDocumentFragment *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMDocumentFragment *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMDocumentFragment *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMDocumentFragment *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMDocumentFragment *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMDocumentFragment *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMDocumentFragment *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++    END_INTERFACE
++  } IXMLDOMDocumentFragmentVtbl;
++  struct IXMLDOMDocumentFragment {
++    CONST_VTBL struct IXMLDOMDocumentFragmentVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMDocumentFragment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMDocumentFragment_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMDocumentFragment_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMDocumentFragment_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMDocumentFragment_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMDocumentFragment_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMDocumentFragment_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMDocumentFragment_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMDocumentFragment_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMDocumentFragment_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMDocumentFragment_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMDocumentFragment_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMDocumentFragment_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMDocumentFragment_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMDocumentFragment_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMDocumentFragment_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMDocumentFragment_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMDocumentFragment_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMDocumentFragment_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMDocumentFragment_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMDocumentFragment_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMDocumentFragment_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMDocumentFragment_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMDocumentFragment_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMDocumentFragment_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMDocumentFragment_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMDocumentFragment_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMDocumentFragment_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMDocumentFragment_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMDocumentFragment_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMDocumentFragment_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMDocumentFragment_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMDocumentFragment_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMDocumentFragment_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMDocumentFragment_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMDocumentFragment_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMDocumentFragment_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMDocumentFragment_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMDocumentFragment_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMDocumentFragment_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMDocumentFragment_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMDocumentFragment_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMDocumentFragment_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#endif
++#endif
++#endif
++
++#ifndef __IXMLDOMDocument_INTERFACE_DEFINED__
++#define __IXMLDOMDocument_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMDocument;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMDocument : public IXMLDOMNode {
++  public:
++    virtual HRESULT WINAPI get_doctype(IXMLDOMDocumentType **documentType) = 0;
++    virtual HRESULT WINAPI get_implementation(IXMLDOMImplementation **impl) = 0;
++    virtual HRESULT WINAPI get_documentElement(IXMLDOMElement **DOMElement) = 0;
++    virtual HRESULT WINAPI putref_documentElement(IXMLDOMElement *DOMElement) = 0;
++    virtual HRESULT WINAPI createElement(BSTR tagName,IXMLDOMElement **element) = 0;
++    virtual HRESULT WINAPI createDocumentFragment(IXMLDOMDocumentFragment **docFrag) = 0;
++    virtual HRESULT WINAPI createTextNode(BSTR data,IXMLDOMText **text) = 0;
++    virtual HRESULT WINAPI createComment(BSTR data,IXMLDOMComment **comment) = 0;
++    virtual HRESULT WINAPI createCDATASection(BSTR data,IXMLDOMCDATASection **cdata) = 0;
++    virtual HRESULT WINAPI createProcessingInstruction(BSTR target,BSTR data,IXMLDOMProcessingInstruction **pi) = 0;
++    virtual HRESULT WINAPI createAttribute(BSTR name,IXMLDOMAttribute **attribute) = 0;
++    virtual HRESULT WINAPI createEntityReference(BSTR name,IXMLDOMEntityReference **entityRef) = 0;
++    virtual HRESULT WINAPI getElementsByTagName(BSTR tagName,IXMLDOMNodeList **resultList) = 0;
++    virtual HRESULT WINAPI createNode(VARIANT Type,BSTR name,BSTR namespaceURI,IXMLDOMNode **node) = 0;
++    virtual HRESULT WINAPI nodeFromID(BSTR idString,IXMLDOMNode **node) = 0;
++    virtual HRESULT WINAPI load(VARIANT xmlSource,VARIANT_BOOL *isSuccessful) = 0;
++    virtual HRESULT WINAPI get_readyState(long *value) = 0;
++    virtual HRESULT WINAPI get_parseError(IXMLDOMParseError **errorObj) = 0;
++    virtual HRESULT WINAPI get_url(BSTR *urlString) = 0;
++    virtual HRESULT WINAPI get_async(VARIANT_BOOL *isAsync) = 0;
++    virtual HRESULT WINAPI put_async(VARIANT_BOOL isAsync) = 0;
++    virtual HRESULT WINAPI abort(void) = 0;
++    virtual HRESULT WINAPI loadXML(BSTR bstrXML,VARIANT_BOOL *isSuccessful) = 0;
++    virtual HRESULT WINAPI save(VARIANT destination) = 0;
++    virtual HRESULT WINAPI get_validateOnParse(VARIANT_BOOL *isValidating) = 0;
++    virtual HRESULT WINAPI put_validateOnParse(VARIANT_BOOL isValidating) = 0;
++    virtual HRESULT WINAPI get_resolveExternals(VARIANT_BOOL *isResolving) = 0;
++    virtual HRESULT WINAPI put_resolveExternals(VARIANT_BOOL isResolving) = 0;
++    virtual HRESULT WINAPI get_preserveWhiteSpace(VARIANT_BOOL *isPreserving) = 0;
++    virtual HRESULT WINAPI put_preserveWhiteSpace(VARIANT_BOOL isPreserving) = 0;
++    virtual HRESULT WINAPI put_onreadystatechange(VARIANT readystatechangeSink) = 0;
++    virtual HRESULT WINAPI put_ondataavailable(VARIANT ondataavailableSink) = 0;
++    virtual HRESULT WINAPI put_ontransformnode(VARIANT ontransformnodeSink) = 0;
++  };
++#else
++  typedef struct IXMLDOMDocumentVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMDocument *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMDocument *This);
++      ULONG (WINAPI *Release)(IXMLDOMDocument *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMDocument *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMDocument *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMDocument *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMDocument *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMDocument *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMDocument *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMDocument *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMDocument *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMDocument *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMDocument *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMDocument *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMDocument *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMDocument *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMDocument *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMDocument *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMDocument *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMDocument *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMDocument *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMDocument *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMDocument *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMDocument *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMDocument *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMDocument *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMDocument *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMDocument *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMDocument *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMDocument *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMDocument *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMDocument *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMDocument *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMDocument *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMDocument *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMDocument *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMDocument *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMDocument *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMDocument *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMDocument *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMDocument *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMDocument *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMDocument *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *get_doctype)(IXMLDOMDocument *This,IXMLDOMDocumentType **documentType);
++      HRESULT (WINAPI *get_implementation)(IXMLDOMDocument *This,IXMLDOMImplementation **impl);
++      HRESULT (WINAPI *get_documentElement)(IXMLDOMDocument *This,IXMLDOMElement **DOMElement);
++      HRESULT (WINAPI *putref_documentElement)(IXMLDOMDocument *This,IXMLDOMElement *DOMElement);
++      HRESULT (WINAPI *createElement)(IXMLDOMDocument *This,BSTR tagName,IXMLDOMElement **element);
++      HRESULT (WINAPI *createDocumentFragment)(IXMLDOMDocument *This,IXMLDOMDocumentFragment **docFrag);
++      HRESULT (WINAPI *createTextNode)(IXMLDOMDocument *This,BSTR data,IXMLDOMText **text);
++      HRESULT (WINAPI *createComment)(IXMLDOMDocument *This,BSTR data,IXMLDOMComment **comment);
++      HRESULT (WINAPI *createCDATASection)(IXMLDOMDocument *This,BSTR data,IXMLDOMCDATASection **cdata);
++      HRESULT (WINAPI *createProcessingInstruction)(IXMLDOMDocument *This,BSTR target,BSTR data,IXMLDOMProcessingInstruction **pi);
++      HRESULT (WINAPI *createAttribute)(IXMLDOMDocument *This,BSTR name,IXMLDOMAttribute **attribute);
++      HRESULT (WINAPI *createEntityReference)(IXMLDOMDocument *This,BSTR name,IXMLDOMEntityReference **entityRef);
++      HRESULT (WINAPI *getElementsByTagName)(IXMLDOMDocument *This,BSTR tagName,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *createNode)(IXMLDOMDocument *This,VARIANT Type,BSTR name,BSTR namespaceURI,IXMLDOMNode **node);
++      HRESULT (WINAPI *nodeFromID)(IXMLDOMDocument *This,BSTR idString,IXMLDOMNode **node);
++      HRESULT (WINAPI *load)(IXMLDOMDocument *This,VARIANT xmlSource,VARIANT_BOOL *isSuccessful);
++      HRESULT (WINAPI *get_readyState)(IXMLDOMDocument *This,long *value);
++      HRESULT (WINAPI *get_parseError)(IXMLDOMDocument *This,IXMLDOMParseError **errorObj);
++      HRESULT (WINAPI *get_url)(IXMLDOMDocument *This,BSTR *urlString);
++      HRESULT (WINAPI *get_async)(IXMLDOMDocument *This,VARIANT_BOOL *isAsync);
++      HRESULT (WINAPI *put_async)(IXMLDOMDocument *This,VARIANT_BOOL isAsync);
++      HRESULT (WINAPI *abort)(IXMLDOMDocument *This);
++      HRESULT (WINAPI *loadXML)(IXMLDOMDocument *This,BSTR bstrXML,VARIANT_BOOL *isSuccessful);
++      HRESULT (WINAPI *save)(IXMLDOMDocument *This,VARIANT destination);
++      HRESULT (WINAPI *get_validateOnParse)(IXMLDOMDocument *This,VARIANT_BOOL *isValidating);
++      HRESULT (WINAPI *put_validateOnParse)(IXMLDOMDocument *This,VARIANT_BOOL isValidating);
++      HRESULT (WINAPI *get_resolveExternals)(IXMLDOMDocument *This,VARIANT_BOOL *isResolving);
++      HRESULT (WINAPI *put_resolveExternals)(IXMLDOMDocument *This,VARIANT_BOOL isResolving);
++      HRESULT (WINAPI *get_preserveWhiteSpace)(IXMLDOMDocument *This,VARIANT_BOOL *isPreserving);
++      HRESULT (WINAPI *put_preserveWhiteSpace)(IXMLDOMDocument *This,VARIANT_BOOL isPreserving);
++      HRESULT (WINAPI *put_onreadystatechange)(IXMLDOMDocument *This,VARIANT readystatechangeSink);
++      HRESULT (WINAPI *put_ondataavailable)(IXMLDOMDocument *This,VARIANT ondataavailableSink);
++      HRESULT (WINAPI *put_ontransformnode)(IXMLDOMDocument *This,VARIANT ontransformnodeSink);
++    END_INTERFACE
++  } IXMLDOMDocumentVtbl;
++  struct IXMLDOMDocument {
++    CONST_VTBL struct IXMLDOMDocumentVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMDocument_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMDocument_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMDocument_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMDocument_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMDocument_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMDocument_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMDocument_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMDocument_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMDocument_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMDocument_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMDocument_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMDocument_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMDocument_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMDocument_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMDocument_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMDocument_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMDocument_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMDocument_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMDocument_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMDocument_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMDocument_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMDocument_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMDocument_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMDocument_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMDocument_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMDocument_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMDocument_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMDocument_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMDocument_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMDocument_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMDocument_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMDocument_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMDocument_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMDocument_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMDocument_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMDocument_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMDocument_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMDocument_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMDocument_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMDocument_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMDocument_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMDocument_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMDocument_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXMLDOMDocument_get_doctype(This,documentType) (This)->lpVtbl->get_doctype(This,documentType)
++#define IXMLDOMDocument_get_implementation(This,impl) (This)->lpVtbl->get_implementation(This,impl)
++#define IXMLDOMDocument_get_documentElement(This,DOMElement) (This)->lpVtbl->get_documentElement(This,DOMElement)
++#define IXMLDOMDocument_putref_documentElement(This,DOMElement) (This)->lpVtbl->putref_documentElement(This,DOMElement)
++#define IXMLDOMDocument_createElement(This,tagName,element) (This)->lpVtbl->createElement(This,tagName,element)
++#define IXMLDOMDocument_createDocumentFragment(This,docFrag) (This)->lpVtbl->createDocumentFragment(This,docFrag)
++#define IXMLDOMDocument_createTextNode(This,data,text) (This)->lpVtbl->createTextNode(This,data,text)
++#define IXMLDOMDocument_createComment(This,data,comment) (This)->lpVtbl->createComment(This,data,comment)
++#define IXMLDOMDocument_createCDATASection(This,data,cdata) (This)->lpVtbl->createCDATASection(This,data,cdata)
++#define IXMLDOMDocument_createProcessingInstruction(This,target,data,pi) (This)->lpVtbl->createProcessingInstruction(This,target,data,pi)
++#define IXMLDOMDocument_createAttribute(This,name,attribute) (This)->lpVtbl->createAttribute(This,name,attribute)
++#define IXMLDOMDocument_createEntityReference(This,name,entityRef) (This)->lpVtbl->createEntityReference(This,name,entityRef)
++#define IXMLDOMDocument_getElementsByTagName(This,tagName,resultList) (This)->lpVtbl->getElementsByTagName(This,tagName,resultList)
++#define IXMLDOMDocument_createNode(This,Type,name,namespaceURI,node) (This)->lpVtbl->createNode(This,Type,name,namespaceURI,node)
++#define IXMLDOMDocument_nodeFromID(This,idString,node) (This)->lpVtbl->nodeFromID(This,idString,node)
++#define IXMLDOMDocument_load(This,xmlSource,isSuccessful) (This)->lpVtbl->load(This,xmlSource,isSuccessful)
++#define IXMLDOMDocument_get_readyState(This,value) (This)->lpVtbl->get_readyState(This,value)
++#define IXMLDOMDocument_get_parseError(This,errorObj) (This)->lpVtbl->get_parseError(This,errorObj)
++#define IXMLDOMDocument_get_url(This,urlString) (This)->lpVtbl->get_url(This,urlString)
++#define IXMLDOMDocument_get_async(This,isAsync) (This)->lpVtbl->get_async(This,isAsync)
++#define IXMLDOMDocument_put_async(This,isAsync) (This)->lpVtbl->put_async(This,isAsync)
++#define IXMLDOMDocument_abort(This) (This)->lpVtbl->abort(This)
++#define IXMLDOMDocument_loadXML(This,bstrXML,isSuccessful) (This)->lpVtbl->loadXML(This,bstrXML,isSuccessful)
++#define IXMLDOMDocument_save(This,destination) (This)->lpVtbl->save(This,destination)
++#define IXMLDOMDocument_get_validateOnParse(This,isValidating) (This)->lpVtbl->get_validateOnParse(This,isValidating)
++#define IXMLDOMDocument_put_validateOnParse(This,isValidating) (This)->lpVtbl->put_validateOnParse(This,isValidating)
++#define IXMLDOMDocument_get_resolveExternals(This,isResolving) (This)->lpVtbl->get_resolveExternals(This,isResolving)
++#define IXMLDOMDocument_put_resolveExternals(This,isResolving) (This)->lpVtbl->put_resolveExternals(This,isResolving)
++#define IXMLDOMDocument_get_preserveWhiteSpace(This,isPreserving) (This)->lpVtbl->get_preserveWhiteSpace(This,isPreserving)
++#define IXMLDOMDocument_put_preserveWhiteSpace(This,isPreserving) (This)->lpVtbl->put_preserveWhiteSpace(This,isPreserving)
++#define IXMLDOMDocument_put_onreadystatechange(This,readystatechangeSink) (This)->lpVtbl->put_onreadystatechange(This,readystatechangeSink)
++#define IXMLDOMDocument_put_ondataavailable(This,ondataavailableSink) (This)->lpVtbl->put_ondataavailable(This,ondataavailableSink)
++#define IXMLDOMDocument_put_ontransformnode(This,ontransformnodeSink) (This)->lpVtbl->put_ontransformnode(This,ontransformnodeSink)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMDocument_get_doctype_Proxy(IXMLDOMDocument *This,IXMLDOMDocumentType **documentType);
++  void __RPC_STUB IXMLDOMDocument_get_doctype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_get_implementation_Proxy(IXMLDOMDocument *This,IXMLDOMImplementation **impl);
++  void __RPC_STUB IXMLDOMDocument_get_implementation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_get_documentElement_Proxy(IXMLDOMDocument *This,IXMLDOMElement **DOMElement);
++  void __RPC_STUB IXMLDOMDocument_get_documentElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_putref_documentElement_Proxy(IXMLDOMDocument *This,IXMLDOMElement *DOMElement);
++  void __RPC_STUB IXMLDOMDocument_putref_documentElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_createElement_Proxy(IXMLDOMDocument *This,BSTR tagName,IXMLDOMElement **element);
++  void __RPC_STUB IXMLDOMDocument_createElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_createDocumentFragment_Proxy(IXMLDOMDocument *This,IXMLDOMDocumentFragment **docFrag);
++  void __RPC_STUB IXMLDOMDocument_createDocumentFragment_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_createTextNode_Proxy(IXMLDOMDocument *This,BSTR data,IXMLDOMText **text);
++  void __RPC_STUB IXMLDOMDocument_createTextNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_createComment_Proxy(IXMLDOMDocument *This,BSTR data,IXMLDOMComment **comment);
++  void __RPC_STUB IXMLDOMDocument_createComment_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_createCDATASection_Proxy(IXMLDOMDocument *This,BSTR data,IXMLDOMCDATASection **cdata);
++  void __RPC_STUB IXMLDOMDocument_createCDATASection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_createProcessingInstruction_Proxy(IXMLDOMDocument *This,BSTR target,BSTR data,IXMLDOMProcessingInstruction **pi);
++  void __RPC_STUB IXMLDOMDocument_createProcessingInstruction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_createAttribute_Proxy(IXMLDOMDocument *This,BSTR name,IXMLDOMAttribute **attribute);
++  void __RPC_STUB IXMLDOMDocument_createAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_createEntityReference_Proxy(IXMLDOMDocument *This,BSTR name,IXMLDOMEntityReference **entityRef);
++  void __RPC_STUB IXMLDOMDocument_createEntityReference_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_getElementsByTagName_Proxy(IXMLDOMDocument *This,BSTR tagName,IXMLDOMNodeList **resultList);
++  void __RPC_STUB IXMLDOMDocument_getElementsByTagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_createNode_Proxy(IXMLDOMDocument *This,VARIANT Type,BSTR name,BSTR namespaceURI,IXMLDOMNode **node);
++  void __RPC_STUB IXMLDOMDocument_createNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_nodeFromID_Proxy(IXMLDOMDocument *This,BSTR idString,IXMLDOMNode **node);
++  void __RPC_STUB IXMLDOMDocument_nodeFromID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_load_Proxy(IXMLDOMDocument *This,VARIANT xmlSource,VARIANT_BOOL *isSuccessful);
++  void __RPC_STUB IXMLDOMDocument_load_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_get_readyState_Proxy(IXMLDOMDocument *This,long *value);
++  void __RPC_STUB IXMLDOMDocument_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_get_parseError_Proxy(IXMLDOMDocument *This,IXMLDOMParseError **errorObj);
++  void __RPC_STUB IXMLDOMDocument_get_parseError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_get_url_Proxy(IXMLDOMDocument *This,BSTR *urlString);
++  void __RPC_STUB IXMLDOMDocument_get_url_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_get_async_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isAsync);
++  void __RPC_STUB IXMLDOMDocument_get_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_put_async_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isAsync);
++  void __RPC_STUB IXMLDOMDocument_put_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_abort_Proxy(IXMLDOMDocument *This);
++  void __RPC_STUB IXMLDOMDocument_abort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_loadXML_Proxy(IXMLDOMDocument *This,BSTR bstrXML,VARIANT_BOOL *isSuccessful);
++  void __RPC_STUB IXMLDOMDocument_loadXML_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_save_Proxy(IXMLDOMDocument *This,VARIANT destination);
++  void __RPC_STUB IXMLDOMDocument_save_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_get_validateOnParse_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isValidating);
++  void __RPC_STUB IXMLDOMDocument_get_validateOnParse_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_put_validateOnParse_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isValidating);
++  void __RPC_STUB IXMLDOMDocument_put_validateOnParse_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_get_resolveExternals_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isResolving);
++  void __RPC_STUB IXMLDOMDocument_get_resolveExternals_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_put_resolveExternals_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isResolving);
++  void __RPC_STUB IXMLDOMDocument_put_resolveExternals_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_get_preserveWhiteSpace_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isPreserving);
++  void __RPC_STUB IXMLDOMDocument_get_preserveWhiteSpace_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_put_preserveWhiteSpace_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isPreserving);
++  void __RPC_STUB IXMLDOMDocument_put_preserveWhiteSpace_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_put_onreadystatechange_Proxy(IXMLDOMDocument *This,VARIANT readystatechangeSink);
++  void __RPC_STUB IXMLDOMDocument_put_onreadystatechange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_put_ondataavailable_Proxy(IXMLDOMDocument *This,VARIANT ondataavailableSink);
++  void __RPC_STUB IXMLDOMDocument_put_ondataavailable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocument_put_ontransformnode_Proxy(IXMLDOMDocument *This,VARIANT ontransformnodeSink);
++  void __RPC_STUB IXMLDOMDocument_put_ontransformnode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMNodeList_INTERFACE_DEFINED__
++#define __IXMLDOMNodeList_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMNodeList;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMNodeList : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_item(long index,IXMLDOMNode **listItem) = 0;
++    virtual HRESULT WINAPI get_length(long *listLength) = 0;
++    virtual HRESULT WINAPI nextNode(IXMLDOMNode **nextItem) = 0;
++    virtual HRESULT WINAPI reset(void) = 0;
++    virtual HRESULT WINAPI get__newEnum(IUnknown **ppUnk) = 0;
++  };
++#else
++  typedef struct IXMLDOMNodeListVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMNodeList *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMNodeList *This);
++      ULONG (WINAPI *Release)(IXMLDOMNodeList *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMNodeList *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMNodeList *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMNodeList *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMNodeList *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_item)(IXMLDOMNodeList *This,long index,IXMLDOMNode **listItem);
++      HRESULT (WINAPI *get_length)(IXMLDOMNodeList *This,long *listLength);
++      HRESULT (WINAPI *nextNode)(IXMLDOMNodeList *This,IXMLDOMNode **nextItem);
++      HRESULT (WINAPI *reset)(IXMLDOMNodeList *This);
++      HRESULT (WINAPI *get__newEnum)(IXMLDOMNodeList *This,IUnknown **ppUnk);
++    END_INTERFACE
++  } IXMLDOMNodeListVtbl;
++  struct IXMLDOMNodeList {
++    CONST_VTBL struct IXMLDOMNodeListVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMNodeList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMNodeList_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMNodeList_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMNodeList_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMNodeList_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMNodeList_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMNodeList_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMNodeList_get_item(This,index,listItem) (This)->lpVtbl->get_item(This,index,listItem)
++#define IXMLDOMNodeList_get_length(This,listLength) (This)->lpVtbl->get_length(This,listLength)
++#define IXMLDOMNodeList_nextNode(This,nextItem) (This)->lpVtbl->nextNode(This,nextItem)
++#define IXMLDOMNodeList_reset(This) (This)->lpVtbl->reset(This)
++#define IXMLDOMNodeList_get__newEnum(This,ppUnk) (This)->lpVtbl->get__newEnum(This,ppUnk)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMNodeList_get_item_Proxy(IXMLDOMNodeList *This,long index,IXMLDOMNode **listItem);
++  void __RPC_STUB IXMLDOMNodeList_get_item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNodeList_get_length_Proxy(IXMLDOMNodeList *This,long *listLength);
++  void __RPC_STUB IXMLDOMNodeList_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNodeList_nextNode_Proxy(IXMLDOMNodeList *This,IXMLDOMNode **nextItem);
++  void __RPC_STUB IXMLDOMNodeList_nextNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNodeList_reset_Proxy(IXMLDOMNodeList *This);
++  void __RPC_STUB IXMLDOMNodeList_reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNodeList_get__newEnum_Proxy(IXMLDOMNodeList *This,IUnknown **ppUnk);
++  void __RPC_STUB IXMLDOMNodeList_get__newEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMNamedNodeMap_INTERFACE_DEFINED__
++#define __IXMLDOMNamedNodeMap_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMNamedNodeMap;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMNamedNodeMap : public IDispatch {
++  public:
++    virtual HRESULT WINAPI getNamedItem(BSTR name,IXMLDOMNode **namedItem) = 0;
++    virtual HRESULT WINAPI setNamedItem(IXMLDOMNode *newItem,IXMLDOMNode **nameItem) = 0;
++    virtual HRESULT WINAPI removeNamedItem(BSTR name,IXMLDOMNode **namedItem) = 0;
++    virtual HRESULT WINAPI get_item(long index,IXMLDOMNode **listItem) = 0;
++    virtual HRESULT WINAPI get_length(long *listLength) = 0;
++    virtual HRESULT WINAPI getQualifiedItem(BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem) = 0;
++    virtual HRESULT WINAPI removeQualifiedItem(BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem) = 0;
++    virtual HRESULT WINAPI nextNode(IXMLDOMNode **nextItem) = 0;
++    virtual HRESULT WINAPI reset(void) = 0;
++    virtual HRESULT WINAPI get__newEnum(IUnknown **ppUnk) = 0;
++  };
++#else
++  typedef struct IXMLDOMNamedNodeMapVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMNamedNodeMap *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMNamedNodeMap *This);
++      ULONG (WINAPI *Release)(IXMLDOMNamedNodeMap *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMNamedNodeMap *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMNamedNodeMap *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMNamedNodeMap *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMNamedNodeMap *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *getNamedItem)(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);
++      HRESULT (WINAPI *setNamedItem)(IXMLDOMNamedNodeMap *This,IXMLDOMNode *newItem,IXMLDOMNode **nameItem);
++      HRESULT (WINAPI *removeNamedItem)(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);
++      HRESULT (WINAPI *get_item)(IXMLDOMNamedNodeMap *This,long index,IXMLDOMNode **listItem);
++      HRESULT (WINAPI *get_length)(IXMLDOMNamedNodeMap *This,long *listLength);
++      HRESULT (WINAPI *getQualifiedItem)(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);
++      HRESULT (WINAPI *removeQualifiedItem)(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);
++      HRESULT (WINAPI *nextNode)(IXMLDOMNamedNodeMap *This,IXMLDOMNode **nextItem);
++      HRESULT (WINAPI *reset)(IXMLDOMNamedNodeMap *This);
++      HRESULT (WINAPI *get__newEnum)(IXMLDOMNamedNodeMap *This,IUnknown **ppUnk);
++    END_INTERFACE
++  } IXMLDOMNamedNodeMapVtbl;
++  struct IXMLDOMNamedNodeMap {
++    CONST_VTBL struct IXMLDOMNamedNodeMapVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMNamedNodeMap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMNamedNodeMap_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMNamedNodeMap_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMNamedNodeMap_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMNamedNodeMap_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMNamedNodeMap_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMNamedNodeMap_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMNamedNodeMap_getNamedItem(This,name,namedItem) (This)->lpVtbl->getNamedItem(This,name,namedItem)
++#define IXMLDOMNamedNodeMap_setNamedItem(This,newItem,nameItem) (This)->lpVtbl->setNamedItem(This,newItem,nameItem)
++#define IXMLDOMNamedNodeMap_removeNamedItem(This,name,namedItem) (This)->lpVtbl->removeNamedItem(This,name,namedItem)
++#define IXMLDOMNamedNodeMap_get_item(This,index,listItem) (This)->lpVtbl->get_item(This,index,listItem)
++#define IXMLDOMNamedNodeMap_get_length(This,listLength) (This)->lpVtbl->get_length(This,listLength)
++#define IXMLDOMNamedNodeMap_getQualifiedItem(This,baseName,namespaceURI,qualifiedItem) (This)->lpVtbl->getQualifiedItem(This,baseName,namespaceURI,qualifiedItem)
++#define IXMLDOMNamedNodeMap_removeQualifiedItem(This,baseName,namespaceURI,qualifiedItem) (This)->lpVtbl->removeQualifiedItem(This,baseName,namespaceURI,qualifiedItem)
++#define IXMLDOMNamedNodeMap_nextNode(This,nextItem) (This)->lpVtbl->nextNode(This,nextItem)
++#define IXMLDOMNamedNodeMap_reset(This) (This)->lpVtbl->reset(This)
++#define IXMLDOMNamedNodeMap_get__newEnum(This,ppUnk) (This)->lpVtbl->get__newEnum(This,ppUnk)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMNamedNodeMap_getNamedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);
++  void __RPC_STUB IXMLDOMNamedNodeMap_getNamedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNamedNodeMap_setNamedItem_Proxy(IXMLDOMNamedNodeMap *This,IXMLDOMNode *newItem,IXMLDOMNode **nameItem);
++  void __RPC_STUB IXMLDOMNamedNodeMap_setNamedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNamedNodeMap_removeNamedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);
++  void __RPC_STUB IXMLDOMNamedNodeMap_removeNamedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNamedNodeMap_get_item_Proxy(IXMLDOMNamedNodeMap *This,long index,IXMLDOMNode **listItem);
++  void __RPC_STUB IXMLDOMNamedNodeMap_get_item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNamedNodeMap_get_length_Proxy(IXMLDOMNamedNodeMap *This,long *listLength);
++  void __RPC_STUB IXMLDOMNamedNodeMap_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNamedNodeMap_getQualifiedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);
++  void __RPC_STUB IXMLDOMNamedNodeMap_getQualifiedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNamedNodeMap_removeQualifiedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);
++  void __RPC_STUB IXMLDOMNamedNodeMap_removeQualifiedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNamedNodeMap_nextNode_Proxy(IXMLDOMNamedNodeMap *This,IXMLDOMNode **nextItem);
++  void __RPC_STUB IXMLDOMNamedNodeMap_nextNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNamedNodeMap_reset_Proxy(IXMLDOMNamedNodeMap *This);
++  void __RPC_STUB IXMLDOMNamedNodeMap_reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNamedNodeMap_get__newEnum_Proxy(IXMLDOMNamedNodeMap *This,IUnknown **ppUnk);
++  void __RPC_STUB IXMLDOMNamedNodeMap_get__newEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMCharacterData_INTERFACE_DEFINED__
++#define __IXMLDOMCharacterData_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMCharacterData;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMCharacterData : public IXMLDOMNode {
++  public:
++    virtual HRESULT WINAPI get_data(BSTR *data) = 0;
++    virtual HRESULT WINAPI put_data(BSTR data) = 0;
++    virtual HRESULT WINAPI get_length(long *dataLength) = 0;
++    virtual HRESULT WINAPI substringData(long offset,long count,BSTR *data) = 0;
++    virtual HRESULT WINAPI appendData(BSTR data) = 0;
++    virtual HRESULT WINAPI insertData(long offset,BSTR data) = 0;
++    virtual HRESULT WINAPI deleteData(long offset,long count) = 0;
++    virtual HRESULT WINAPI replaceData(long offset,long count,BSTR data) = 0;
++  };
++#else
++  typedef struct IXMLDOMCharacterDataVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMCharacterData *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMCharacterData *This);
++      ULONG (WINAPI *Release)(IXMLDOMCharacterData *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMCharacterData *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMCharacterData *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMCharacterData *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMCharacterData *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMCharacterData *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMCharacterData *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMCharacterData *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMCharacterData *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMCharacterData *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMCharacterData *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMCharacterData *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMCharacterData *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMCharacterData *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMCharacterData *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMCharacterData *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMCharacterData *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMCharacterData *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMCharacterData *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMCharacterData *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMCharacterData *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMCharacterData *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMCharacterData *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMCharacterData *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMCharacterData *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMCharacterData *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMCharacterData *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMCharacterData *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMCharacterData *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMCharacterData *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMCharacterData *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMCharacterData *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMCharacterData *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMCharacterData *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMCharacterData *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMCharacterData *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMCharacterData *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMCharacterData *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMCharacterData *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMCharacterData *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMCharacterData *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *get_data)(IXMLDOMCharacterData *This,BSTR *data);
++      HRESULT (WINAPI *put_data)(IXMLDOMCharacterData *This,BSTR data);
++      HRESULT (WINAPI *get_length)(IXMLDOMCharacterData *This,long *dataLength);
++      HRESULT (WINAPI *substringData)(IXMLDOMCharacterData *This,long offset,long count,BSTR *data);
++      HRESULT (WINAPI *appendData)(IXMLDOMCharacterData *This,BSTR data);
++      HRESULT (WINAPI *insertData)(IXMLDOMCharacterData *This,long offset,BSTR data);
++      HRESULT (WINAPI *deleteData)(IXMLDOMCharacterData *This,long offset,long count);
++      HRESULT (WINAPI *replaceData)(IXMLDOMCharacterData *This,long offset,long count,BSTR data);
++    END_INTERFACE
++  } IXMLDOMCharacterDataVtbl;
++  struct IXMLDOMCharacterData {
++    CONST_VTBL struct IXMLDOMCharacterDataVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMCharacterData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMCharacterData_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMCharacterData_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMCharacterData_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMCharacterData_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMCharacterData_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMCharacterData_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMCharacterData_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMCharacterData_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMCharacterData_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMCharacterData_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMCharacterData_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMCharacterData_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMCharacterData_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMCharacterData_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMCharacterData_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMCharacterData_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMCharacterData_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMCharacterData_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMCharacterData_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMCharacterData_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMCharacterData_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMCharacterData_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMCharacterData_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMCharacterData_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMCharacterData_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMCharacterData_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMCharacterData_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMCharacterData_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMCharacterData_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMCharacterData_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMCharacterData_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMCharacterData_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMCharacterData_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMCharacterData_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMCharacterData_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMCharacterData_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMCharacterData_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMCharacterData_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMCharacterData_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMCharacterData_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMCharacterData_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMCharacterData_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXMLDOMCharacterData_get_data(This,data) (This)->lpVtbl->get_data(This,data)
++#define IXMLDOMCharacterData_put_data(This,data) (This)->lpVtbl->put_data(This,data)
++#define IXMLDOMCharacterData_get_length(This,dataLength) (This)->lpVtbl->get_length(This,dataLength)
++#define IXMLDOMCharacterData_substringData(This,offset,count,data) (This)->lpVtbl->substringData(This,offset,count,data)
++#define IXMLDOMCharacterData_appendData(This,data) (This)->lpVtbl->appendData(This,data)
++#define IXMLDOMCharacterData_insertData(This,offset,data) (This)->lpVtbl->insertData(This,offset,data)
++#define IXMLDOMCharacterData_deleteData(This,offset,count) (This)->lpVtbl->deleteData(This,offset,count)
++#define IXMLDOMCharacterData_replaceData(This,offset,count,data) (This)->lpVtbl->replaceData(This,offset,count,data)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMCharacterData_get_data_Proxy(IXMLDOMCharacterData *This,BSTR *data);
++  void __RPC_STUB IXMLDOMCharacterData_get_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMCharacterData_put_data_Proxy(IXMLDOMCharacterData *This,BSTR data);
++  void __RPC_STUB IXMLDOMCharacterData_put_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMCharacterData_get_length_Proxy(IXMLDOMCharacterData *This,long *dataLength);
++  void __RPC_STUB IXMLDOMCharacterData_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMCharacterData_substringData_Proxy(IXMLDOMCharacterData *This,long offset,long count,BSTR *data);
++  void __RPC_STUB IXMLDOMCharacterData_substringData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMCharacterData_appendData_Proxy(IXMLDOMCharacterData *This,BSTR data);
++  void __RPC_STUB IXMLDOMCharacterData_appendData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMCharacterData_insertData_Proxy(IXMLDOMCharacterData *This,long offset,BSTR data);
++  void __RPC_STUB IXMLDOMCharacterData_insertData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMCharacterData_deleteData_Proxy(IXMLDOMCharacterData *This,long offset,long count);
++  void __RPC_STUB IXMLDOMCharacterData_deleteData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMCharacterData_replaceData_Proxy(IXMLDOMCharacterData *This,long offset,long count,BSTR data);
++  void __RPC_STUB IXMLDOMCharacterData_replaceData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMAttribute_INTERFACE_DEFINED__
++#define __IXMLDOMAttribute_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMAttribute;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMAttribute : public IXMLDOMNode {
++  public:
++    virtual HRESULT WINAPI get_name(BSTR *attributeName) = 0;
++    virtual HRESULT WINAPI get_value(VARIANT *attributeValue) = 0;
++    virtual HRESULT WINAPI put_value(VARIANT attributeValue) = 0;
++  };
++#else
++  typedef struct IXMLDOMAttributeVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMAttribute *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMAttribute *This);
++      ULONG (WINAPI *Release)(IXMLDOMAttribute *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMAttribute *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMAttribute *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMAttribute *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMAttribute *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMAttribute *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMAttribute *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMAttribute *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMAttribute *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMAttribute *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMAttribute *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMAttribute *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMAttribute *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMAttribute *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMAttribute *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMAttribute *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMAttribute *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMAttribute *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMAttribute *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMAttribute *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMAttribute *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMAttribute *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMAttribute *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMAttribute *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMAttribute *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMAttribute *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMAttribute *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMAttribute *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMAttribute *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMAttribute *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMAttribute *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMAttribute *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMAttribute *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMAttribute *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMAttribute *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMAttribute *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMAttribute *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMAttribute *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMAttribute *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMAttribute *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMAttribute *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *get_name)(IXMLDOMAttribute *This,BSTR *attributeName);
++      HRESULT (WINAPI *get_value)(IXMLDOMAttribute *This,VARIANT *attributeValue);
++      HRESULT (WINAPI *put_value)(IXMLDOMAttribute *This,VARIANT attributeValue);
++    END_INTERFACE
++  } IXMLDOMAttributeVtbl;
++  struct IXMLDOMAttribute {
++    CONST_VTBL struct IXMLDOMAttributeVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMAttribute_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMAttribute_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMAttribute_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMAttribute_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMAttribute_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMAttribute_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMAttribute_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMAttribute_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMAttribute_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMAttribute_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMAttribute_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMAttribute_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMAttribute_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMAttribute_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMAttribute_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMAttribute_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMAttribute_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMAttribute_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMAttribute_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMAttribute_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMAttribute_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMAttribute_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMAttribute_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMAttribute_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMAttribute_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMAttribute_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMAttribute_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMAttribute_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMAttribute_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMAttribute_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMAttribute_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMAttribute_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMAttribute_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMAttribute_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMAttribute_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMAttribute_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMAttribute_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMAttribute_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMAttribute_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMAttribute_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMAttribute_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMAttribute_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMAttribute_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXMLDOMAttribute_get_name(This,attributeName) (This)->lpVtbl->get_name(This,attributeName)
++#define IXMLDOMAttribute_get_value(This,attributeValue) (This)->lpVtbl->get_value(This,attributeValue)
++#define IXMLDOMAttribute_put_value(This,attributeValue) (This)->lpVtbl->put_value(This,attributeValue)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMAttribute_get_name_Proxy(IXMLDOMAttribute *This,BSTR *attributeName);
++  void __RPC_STUB IXMLDOMAttribute_get_name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMAttribute_get_value_Proxy(IXMLDOMAttribute *This,VARIANT *attributeValue);
++  void __RPC_STUB IXMLDOMAttribute_get_value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMAttribute_put_value_Proxy(IXMLDOMAttribute *This,VARIANT attributeValue);
++  void __RPC_STUB IXMLDOMAttribute_put_value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMElement_INTERFACE_DEFINED__
++#define __IXMLDOMElement_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMElement;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMElement : public IXMLDOMNode {
++  public:
++    virtual HRESULT WINAPI get_tagName(BSTR *tagName) = 0;
++    virtual HRESULT WINAPI getAttribute(BSTR name,VARIANT *value) = 0;
++    virtual HRESULT WINAPI setAttribute(BSTR name,VARIANT value) = 0;
++    virtual HRESULT WINAPI removeAttribute(BSTR name) = 0;
++    virtual HRESULT WINAPI getAttributeNode(BSTR name,IXMLDOMAttribute **attributeNode) = 0;
++    virtual HRESULT WINAPI setAttributeNode(IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode) = 0;
++    virtual HRESULT WINAPI removeAttributeNode(IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode) = 0;
++    virtual HRESULT WINAPI getElementsByTagName(BSTR tagName,IXMLDOMNodeList **resultList) = 0;
++    virtual HRESULT WINAPI normalize(void) = 0;
++  };
++#else
++  typedef struct IXMLDOMElementVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMElement *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMElement *This);
++      ULONG (WINAPI *Release)(IXMLDOMElement *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMElement *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMElement *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMElement *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMElement *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMElement *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMElement *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMElement *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMElement *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMElement *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMElement *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMElement *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMElement *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMElement *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMElement *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMElement *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMElement *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMElement *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMElement *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMElement *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMElement *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMElement *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMElement *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMElement *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMElement *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMElement *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMElement *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMElement *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMElement *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMElement *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMElement *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMElement *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMElement *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMElement *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMElement *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMElement *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMElement *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMElement *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMElement *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMElement *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMElement *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *get_tagName)(IXMLDOMElement *This,BSTR *tagName);
++      HRESULT (WINAPI *getAttribute)(IXMLDOMElement *This,BSTR name,VARIANT *value);
++      HRESULT (WINAPI *setAttribute)(IXMLDOMElement *This,BSTR name,VARIANT value);
++      HRESULT (WINAPI *removeAttribute)(IXMLDOMElement *This,BSTR name);
++      HRESULT (WINAPI *getAttributeNode)(IXMLDOMElement *This,BSTR name,IXMLDOMAttribute **attributeNode);
++      HRESULT (WINAPI *setAttributeNode)(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);
++      HRESULT (WINAPI *removeAttributeNode)(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);
++      HRESULT (WINAPI *getElementsByTagName)(IXMLDOMElement *This,BSTR tagName,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *normalize)(IXMLDOMElement *This);
++    END_INTERFACE
++  } IXMLDOMElementVtbl;
++  struct IXMLDOMElement {
++    CONST_VTBL struct IXMLDOMElementVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMElement_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMElement_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMElement_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMElement_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMElement_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMElement_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMElement_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMElement_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMElement_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMElement_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMElement_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMElement_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMElement_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMElement_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMElement_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMElement_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMElement_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMElement_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMElement_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMElement_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMElement_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMElement_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMElement_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMElement_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMElement_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMElement_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMElement_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMElement_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMElement_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMElement_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMElement_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMElement_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMElement_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMElement_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMElement_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMElement_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMElement_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMElement_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMElement_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMElement_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMElement_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMElement_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMElement_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXMLDOMElement_get_tagName(This,tagName) (This)->lpVtbl->get_tagName(This,tagName)
++#define IXMLDOMElement_getAttribute(This,name,value) (This)->lpVtbl->getAttribute(This,name,value)
++#define IXMLDOMElement_setAttribute(This,name,value) (This)->lpVtbl->setAttribute(This,name,value)
++#define IXMLDOMElement_removeAttribute(This,name) (This)->lpVtbl->removeAttribute(This,name)
++#define IXMLDOMElement_getAttributeNode(This,name,attributeNode) (This)->lpVtbl->getAttributeNode(This,name,attributeNode)
++#define IXMLDOMElement_setAttributeNode(This,DOMAttribute,attributeNode) (This)->lpVtbl->setAttributeNode(This,DOMAttribute,attributeNode)
++#define IXMLDOMElement_removeAttributeNode(This,DOMAttribute,attributeNode) (This)->lpVtbl->removeAttributeNode(This,DOMAttribute,attributeNode)
++#define IXMLDOMElement_getElementsByTagName(This,tagName,resultList) (This)->lpVtbl->getElementsByTagName(This,tagName,resultList)
++#define IXMLDOMElement_normalize(This) (This)->lpVtbl->normalize(This)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMElement_get_tagName_Proxy(IXMLDOMElement *This,BSTR *tagName);
++  void __RPC_STUB IXMLDOMElement_get_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMElement_getAttribute_Proxy(IXMLDOMElement *This,BSTR name,VARIANT *value);
++  void __RPC_STUB IXMLDOMElement_getAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMElement_setAttribute_Proxy(IXMLDOMElement *This,BSTR name,VARIANT value);
++  void __RPC_STUB IXMLDOMElement_setAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMElement_removeAttribute_Proxy(IXMLDOMElement *This,BSTR name);
++  void __RPC_STUB IXMLDOMElement_removeAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMElement_getAttributeNode_Proxy(IXMLDOMElement *This,BSTR name,IXMLDOMAttribute **attributeNode);
++  void __RPC_STUB IXMLDOMElement_getAttributeNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMElement_setAttributeNode_Proxy(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);
++  void __RPC_STUB IXMLDOMElement_setAttributeNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMElement_removeAttributeNode_Proxy(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);
++  void __RPC_STUB IXMLDOMElement_removeAttributeNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMElement_getElementsByTagName_Proxy(IXMLDOMElement *This,BSTR tagName,IXMLDOMNodeList **resultList);
++  void __RPC_STUB IXMLDOMElement_getElementsByTagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMElement_normalize_Proxy(IXMLDOMElement *This);
++  void __RPC_STUB IXMLDOMElement_normalize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMText_INTERFACE_DEFINED__
++#define __IXMLDOMText_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMText;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMText : public IXMLDOMCharacterData {
++  public:
++    virtual HRESULT WINAPI splitText(long offset,IXMLDOMText **rightHandTextNode) = 0;
++  };
++#else
++  typedef struct IXMLDOMTextVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMText *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMText *This);
++      ULONG (WINAPI *Release)(IXMLDOMText *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMText *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMText *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMText *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMText *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMText *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMText *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMText *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMText *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMText *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMText *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMText *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMText *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMText *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMText *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMText *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMText *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMText *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMText *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMText *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMText *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMText *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMText *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMText *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMText *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMText *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMText *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMText *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMText *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMText *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMText *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMText *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMText *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMText *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMText *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMText *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMText *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMText *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMText *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMText *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMText *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *get_data)(IXMLDOMText *This,BSTR *data);
++      HRESULT (WINAPI *put_data)(IXMLDOMText *This,BSTR data);
++      HRESULT (WINAPI *get_length)(IXMLDOMText *This,long *dataLength);
++      HRESULT (WINAPI *substringData)(IXMLDOMText *This,long offset,long count,BSTR *data);
++      HRESULT (WINAPI *appendData)(IXMLDOMText *This,BSTR data);
++      HRESULT (WINAPI *insertData)(IXMLDOMText *This,long offset,BSTR data);
++      HRESULT (WINAPI *deleteData)(IXMLDOMText *This,long offset,long count);
++      HRESULT (WINAPI *replaceData)(IXMLDOMText *This,long offset,long count,BSTR data);
++      HRESULT (WINAPI *splitText)(IXMLDOMText *This,long offset,IXMLDOMText **rightHandTextNode);
++    END_INTERFACE
++  } IXMLDOMTextVtbl;
++  struct IXMLDOMText {
++    CONST_VTBL struct IXMLDOMTextVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMText_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMText_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMText_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMText_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMText_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMText_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMText_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMText_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMText_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMText_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMText_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMText_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMText_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMText_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMText_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMText_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMText_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMText_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMText_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMText_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMText_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMText_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMText_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMText_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMText_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMText_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMText_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMText_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMText_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMText_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMText_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMText_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMText_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMText_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMText_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMText_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMText_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMText_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMText_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMText_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMText_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMText_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMText_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXMLDOMText_get_data(This,data) (This)->lpVtbl->get_data(This,data)
++#define IXMLDOMText_put_data(This,data) (This)->lpVtbl->put_data(This,data)
++#define IXMLDOMText_get_length(This,dataLength) (This)->lpVtbl->get_length(This,dataLength)
++#define IXMLDOMText_substringData(This,offset,count,data) (This)->lpVtbl->substringData(This,offset,count,data)
++#define IXMLDOMText_appendData(This,data) (This)->lpVtbl->appendData(This,data)
++#define IXMLDOMText_insertData(This,offset,data) (This)->lpVtbl->insertData(This,offset,data)
++#define IXMLDOMText_deleteData(This,offset,count) (This)->lpVtbl->deleteData(This,offset,count)
++#define IXMLDOMText_replaceData(This,offset,count,data) (This)->lpVtbl->replaceData(This,offset,count,data)
++#define IXMLDOMText_splitText(This,offset,rightHandTextNode) (This)->lpVtbl->splitText(This,offset,rightHandTextNode)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMText_splitText_Proxy(IXMLDOMText *This,long offset,IXMLDOMText **rightHandTextNode);
++  void __RPC_STUB IXMLDOMText_splitText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMComment_INTERFACE_DEFINED__
++#define __IXMLDOMComment_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMComment;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMComment : public IXMLDOMCharacterData {
++  };
++#else
++  typedef struct IXMLDOMCommentVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMComment *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMComment *This);
++      ULONG (WINAPI *Release)(IXMLDOMComment *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMComment *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMComment *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMComment *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMComment *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMComment *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMComment *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMComment *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMComment *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMComment *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMComment *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMComment *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMComment *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMComment *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMComment *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMComment *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMComment *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMComment *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMComment *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMComment *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMComment *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMComment *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMComment *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMComment *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMComment *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMComment *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMComment *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMComment *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMComment *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMComment *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMComment *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMComment *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMComment *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMComment *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMComment *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMComment *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMComment *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMComment *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMComment *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMComment *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMComment *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *get_data)(IXMLDOMComment *This,BSTR *data);
++      HRESULT (WINAPI *put_data)(IXMLDOMComment *This,BSTR data);
++      HRESULT (WINAPI *get_length)(IXMLDOMComment *This,long *dataLength);
++      HRESULT (WINAPI *substringData)(IXMLDOMComment *This,long offset,long count,BSTR *data);
++      HRESULT (WINAPI *appendData)(IXMLDOMComment *This,BSTR data);
++      HRESULT (WINAPI *insertData)(IXMLDOMComment *This,long offset,BSTR data);
++      HRESULT (WINAPI *deleteData)(IXMLDOMComment *This,long offset,long count);
++      HRESULT (WINAPI *replaceData)(IXMLDOMComment *This,long offset,long count,BSTR data);
++    END_INTERFACE
++  } IXMLDOMCommentVtbl;
++  struct IXMLDOMComment {
++    CONST_VTBL struct IXMLDOMCommentVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMComment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMComment_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMComment_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMComment_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMComment_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMComment_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMComment_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMComment_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMComment_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMComment_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMComment_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMComment_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMComment_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMComment_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMComment_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMComment_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMComment_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMComment_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMComment_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMComment_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMComment_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMComment_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMComment_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMComment_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMComment_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMComment_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMComment_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMComment_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMComment_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMComment_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMComment_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMComment_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMComment_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMComment_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMComment_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMComment_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMComment_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMComment_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMComment_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMComment_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMComment_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMComment_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMComment_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXMLDOMComment_get_data(This,data) (This)->lpVtbl->get_data(This,data)
++#define IXMLDOMComment_put_data(This,data) (This)->lpVtbl->put_data(This,data)
++#define IXMLDOMComment_get_length(This,dataLength) (This)->lpVtbl->get_length(This,dataLength)
++#define IXMLDOMComment_substringData(This,offset,count,data) (This)->lpVtbl->substringData(This,offset,count,data)
++#define IXMLDOMComment_appendData(This,data) (This)->lpVtbl->appendData(This,data)
++#define IXMLDOMComment_insertData(This,offset,data) (This)->lpVtbl->insertData(This,offset,data)
++#define IXMLDOMComment_deleteData(This,offset,count) (This)->lpVtbl->deleteData(This,offset,count)
++#define IXMLDOMComment_replaceData(This,offset,count,data) (This)->lpVtbl->replaceData(This,offset,count,data)
++#endif
++#endif
++#endif
++
++#ifndef __IXMLDOMProcessingInstruction_INTERFACE_DEFINED__
++#define __IXMLDOMProcessingInstruction_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMProcessingInstruction;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMProcessingInstruction : public IXMLDOMNode {
++  public:
++    virtual HRESULT WINAPI get_target(BSTR *name) = 0;
++    virtual HRESULT WINAPI get_data(BSTR *value) = 0;
++    virtual HRESULT WINAPI put_data(BSTR value) = 0;
++  };
++#else
++  typedef struct IXMLDOMProcessingInstructionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMProcessingInstruction *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMProcessingInstruction *This);
++      ULONG (WINAPI *Release)(IXMLDOMProcessingInstruction *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMProcessingInstruction *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMProcessingInstruction *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMProcessingInstruction *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMProcessingInstruction *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMProcessingInstruction *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMProcessingInstruction *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMProcessingInstruction *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMProcessingInstruction *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMProcessingInstruction *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMProcessingInstruction *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMProcessingInstruction *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMProcessingInstruction *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMProcessingInstruction *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMProcessingInstruction *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMProcessingInstruction *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMProcessingInstruction *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMProcessingInstruction *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMProcessingInstruction *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMProcessingInstruction *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMProcessingInstruction *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMProcessingInstruction *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMProcessingInstruction *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMProcessingInstruction *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMProcessingInstruction *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *get_target)(IXMLDOMProcessingInstruction *This,BSTR *name);
++      HRESULT (WINAPI *get_data)(IXMLDOMProcessingInstruction *This,BSTR *value);
++      HRESULT (WINAPI *put_data)(IXMLDOMProcessingInstruction *This,BSTR value);
++    END_INTERFACE
++  } IXMLDOMProcessingInstructionVtbl;
++  struct IXMLDOMProcessingInstruction {
++    CONST_VTBL struct IXMLDOMProcessingInstructionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMProcessingInstruction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMProcessingInstruction_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMProcessingInstruction_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMProcessingInstruction_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMProcessingInstruction_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMProcessingInstruction_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMProcessingInstruction_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMProcessingInstruction_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMProcessingInstruction_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMProcessingInstruction_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMProcessingInstruction_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMProcessingInstruction_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMProcessingInstruction_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMProcessingInstruction_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMProcessingInstruction_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMProcessingInstruction_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMProcessingInstruction_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMProcessingInstruction_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMProcessingInstruction_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMProcessingInstruction_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMProcessingInstruction_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMProcessingInstruction_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMProcessingInstruction_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMProcessingInstruction_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMProcessingInstruction_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMProcessingInstruction_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMProcessingInstruction_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMProcessingInstruction_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMProcessingInstruction_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMProcessingInstruction_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMProcessingInstruction_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMProcessingInstruction_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMProcessingInstruction_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMProcessingInstruction_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMProcessingInstruction_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMProcessingInstruction_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMProcessingInstruction_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMProcessingInstruction_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMProcessingInstruction_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMProcessingInstruction_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMProcessingInstruction_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMProcessingInstruction_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMProcessingInstruction_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXMLDOMProcessingInstruction_get_target(This,name) (This)->lpVtbl->get_target(This,name)
++#define IXMLDOMProcessingInstruction_get_data(This,value) (This)->lpVtbl->get_data(This,value)
++#define IXMLDOMProcessingInstruction_put_data(This,value) (This)->lpVtbl->put_data(This,value)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMProcessingInstruction_get_target_Proxy(IXMLDOMProcessingInstruction *This,BSTR *name);
++  void __RPC_STUB IXMLDOMProcessingInstruction_get_target_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMProcessingInstruction_get_data_Proxy(IXMLDOMProcessingInstruction *This,BSTR *value);
++  void __RPC_STUB IXMLDOMProcessingInstruction_get_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMProcessingInstruction_put_data_Proxy(IXMLDOMProcessingInstruction *This,BSTR value);
++  void __RPC_STUB IXMLDOMProcessingInstruction_put_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMCDATASection_INTERFACE_DEFINED__
++#define __IXMLDOMCDATASection_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMCDATASection;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMCDATASection : public IXMLDOMText {
++  };
++#else
++  typedef struct IXMLDOMCDATASectionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMCDATASection *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMCDATASection *This);
++      ULONG (WINAPI *Release)(IXMLDOMCDATASection *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMCDATASection *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMCDATASection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMCDATASection *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMCDATASection *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMCDATASection *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMCDATASection *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMCDATASection *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMCDATASection *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMCDATASection *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMCDATASection *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMCDATASection *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMCDATASection *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMCDATASection *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMCDATASection *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMCDATASection *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMCDATASection *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMCDATASection *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMCDATASection *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMCDATASection *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMCDATASection *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMCDATASection *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMCDATASection *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMCDATASection *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMCDATASection *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMCDATASection *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMCDATASection *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMCDATASection *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMCDATASection *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMCDATASection *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMCDATASection *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMCDATASection *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMCDATASection *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMCDATASection *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMCDATASection *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMCDATASection *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMCDATASection *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMCDATASection *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMCDATASection *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMCDATASection *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMCDATASection *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *get_data)(IXMLDOMCDATASection *This,BSTR *data);
++      HRESULT (WINAPI *put_data)(IXMLDOMCDATASection *This,BSTR data);
++      HRESULT (WINAPI *get_length)(IXMLDOMCDATASection *This,long *dataLength);
++      HRESULT (WINAPI *substringData)(IXMLDOMCDATASection *This,long offset,long count,BSTR *data);
++      HRESULT (WINAPI *appendData)(IXMLDOMCDATASection *This,BSTR data);
++      HRESULT (WINAPI *insertData)(IXMLDOMCDATASection *This,long offset,BSTR data);
++      HRESULT (WINAPI *deleteData)(IXMLDOMCDATASection *This,long offset,long count);
++      HRESULT (WINAPI *replaceData)(IXMLDOMCDATASection *This,long offset,long count,BSTR data);
++      HRESULT (WINAPI *splitText)(IXMLDOMCDATASection *This,long offset,IXMLDOMText **rightHandTextNode);
++    END_INTERFACE
++  } IXMLDOMCDATASectionVtbl;
++  struct IXMLDOMCDATASection {
++    CONST_VTBL struct IXMLDOMCDATASectionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMCDATASection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMCDATASection_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMCDATASection_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMCDATASection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMCDATASection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMCDATASection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMCDATASection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMCDATASection_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMCDATASection_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMCDATASection_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMCDATASection_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMCDATASection_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMCDATASection_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMCDATASection_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMCDATASection_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMCDATASection_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMCDATASection_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMCDATASection_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMCDATASection_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMCDATASection_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMCDATASection_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMCDATASection_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMCDATASection_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMCDATASection_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMCDATASection_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMCDATASection_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMCDATASection_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMCDATASection_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMCDATASection_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMCDATASection_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMCDATASection_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMCDATASection_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMCDATASection_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMCDATASection_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMCDATASection_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMCDATASection_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMCDATASection_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMCDATASection_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMCDATASection_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMCDATASection_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMCDATASection_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMCDATASection_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMCDATASection_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXMLDOMCDATASection_get_data(This,data) (This)->lpVtbl->get_data(This,data)
++#define IXMLDOMCDATASection_put_data(This,data) (This)->lpVtbl->put_data(This,data)
++#define IXMLDOMCDATASection_get_length(This,dataLength) (This)->lpVtbl->get_length(This,dataLength)
++#define IXMLDOMCDATASection_substringData(This,offset,count,data) (This)->lpVtbl->substringData(This,offset,count,data)
++#define IXMLDOMCDATASection_appendData(This,data) (This)->lpVtbl->appendData(This,data)
++#define IXMLDOMCDATASection_insertData(This,offset,data) (This)->lpVtbl->insertData(This,offset,data)
++#define IXMLDOMCDATASection_deleteData(This,offset,count) (This)->lpVtbl->deleteData(This,offset,count)
++#define IXMLDOMCDATASection_replaceData(This,offset,count,data) (This)->lpVtbl->replaceData(This,offset,count,data)
++#define IXMLDOMCDATASection_splitText(This,offset,rightHandTextNode) (This)->lpVtbl->splitText(This,offset,rightHandTextNode)
++#endif
++#endif
++#endif
++
++#ifndef __IXMLDOMDocumentType_INTERFACE_DEFINED__
++#define __IXMLDOMDocumentType_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMDocumentType;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMDocumentType : public IXMLDOMNode {
++  public:
++    virtual HRESULT WINAPI get_name(BSTR *rootName) = 0;
++    virtual HRESULT WINAPI get_entities(IXMLDOMNamedNodeMap **entityMap) = 0;
++    virtual HRESULT WINAPI get_notations(IXMLDOMNamedNodeMap **notationMap) = 0;
++  };
++#else
++  typedef struct IXMLDOMDocumentTypeVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMDocumentType *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMDocumentType *This);
++      ULONG (WINAPI *Release)(IXMLDOMDocumentType *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMDocumentType *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMDocumentType *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMDocumentType *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMDocumentType *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMDocumentType *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMDocumentType *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMDocumentType *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMDocumentType *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMDocumentType *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMDocumentType *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMDocumentType *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMDocumentType *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMDocumentType *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMDocumentType *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMDocumentType *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMDocumentType *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMDocumentType *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMDocumentType *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMDocumentType *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMDocumentType *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMDocumentType *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMDocumentType *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMDocumentType *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMDocumentType *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMDocumentType *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMDocumentType *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMDocumentType *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMDocumentType *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMDocumentType *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMDocumentType *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMDocumentType *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMDocumentType *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMDocumentType *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMDocumentType *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMDocumentType *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMDocumentType *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMDocumentType *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMDocumentType *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMDocumentType *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *get_name)(IXMLDOMDocumentType *This,BSTR *rootName);
++      HRESULT (WINAPI *get_entities)(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **entityMap);
++      HRESULT (WINAPI *get_notations)(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **notationMap);
++    END_INTERFACE
++  } IXMLDOMDocumentTypeVtbl;
++  struct IXMLDOMDocumentType {
++    CONST_VTBL struct IXMLDOMDocumentTypeVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMDocumentType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMDocumentType_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMDocumentType_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMDocumentType_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMDocumentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMDocumentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMDocumentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMDocumentType_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMDocumentType_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMDocumentType_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMDocumentType_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMDocumentType_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMDocumentType_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMDocumentType_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMDocumentType_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMDocumentType_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMDocumentType_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMDocumentType_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMDocumentType_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMDocumentType_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMDocumentType_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMDocumentType_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMDocumentType_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMDocumentType_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMDocumentType_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMDocumentType_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMDocumentType_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMDocumentType_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMDocumentType_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMDocumentType_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMDocumentType_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMDocumentType_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMDocumentType_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMDocumentType_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMDocumentType_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMDocumentType_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMDocumentType_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMDocumentType_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMDocumentType_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMDocumentType_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMDocumentType_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMDocumentType_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMDocumentType_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXMLDOMDocumentType_get_name(This,rootName) (This)->lpVtbl->get_name(This,rootName)
++#define IXMLDOMDocumentType_get_entities(This,entityMap) (This)->lpVtbl->get_entities(This,entityMap)
++#define IXMLDOMDocumentType_get_notations(This,notationMap) (This)->lpVtbl->get_notations(This,notationMap)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMDocumentType_get_name_Proxy(IXMLDOMDocumentType *This,BSTR *rootName);
++  void __RPC_STUB IXMLDOMDocumentType_get_name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocumentType_get_entities_Proxy(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **entityMap);
++  void __RPC_STUB IXMLDOMDocumentType_get_entities_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMDocumentType_get_notations_Proxy(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **notationMap);
++  void __RPC_STUB IXMLDOMDocumentType_get_notations_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMNotation_INTERFACE_DEFINED__
++#define __IXMLDOMNotation_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMNotation;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMNotation : public IXMLDOMNode {
++  public:
++    virtual HRESULT WINAPI get_publicId(VARIANT *publicID) = 0;
++    virtual HRESULT WINAPI get_systemId(VARIANT *systemID) = 0;
++  };
++#else
++  typedef struct IXMLDOMNotationVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMNotation *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMNotation *This);
++      ULONG (WINAPI *Release)(IXMLDOMNotation *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMNotation *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMNotation *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMNotation *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMNotation *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMNotation *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMNotation *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMNotation *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMNotation *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMNotation *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMNotation *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMNotation *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMNotation *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMNotation *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMNotation *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMNotation *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMNotation *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMNotation *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMNotation *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMNotation *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMNotation *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMNotation *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMNotation *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMNotation *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMNotation *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMNotation *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMNotation *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMNotation *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMNotation *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMNotation *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMNotation *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMNotation *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMNotation *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMNotation *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMNotation *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMNotation *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMNotation *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMNotation *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMNotation *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMNotation *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMNotation *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *get_publicId)(IXMLDOMNotation *This,VARIANT *publicID);
++      HRESULT (WINAPI *get_systemId)(IXMLDOMNotation *This,VARIANT *systemID);
++    END_INTERFACE
++  } IXMLDOMNotationVtbl;
++  struct IXMLDOMNotation {
++    CONST_VTBL struct IXMLDOMNotationVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMNotation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMNotation_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMNotation_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMNotation_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMNotation_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMNotation_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMNotation_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMNotation_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMNotation_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMNotation_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMNotation_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMNotation_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMNotation_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMNotation_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMNotation_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMNotation_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMNotation_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMNotation_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMNotation_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMNotation_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMNotation_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMNotation_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMNotation_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMNotation_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMNotation_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMNotation_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMNotation_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMNotation_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMNotation_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMNotation_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMNotation_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMNotation_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMNotation_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMNotation_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMNotation_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMNotation_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMNotation_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMNotation_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMNotation_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMNotation_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMNotation_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMNotation_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMNotation_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXMLDOMNotation_get_publicId(This,publicID) (This)->lpVtbl->get_publicId(This,publicID)
++#define IXMLDOMNotation_get_systemId(This,systemID) (This)->lpVtbl->get_systemId(This,systemID)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMNotation_get_publicId_Proxy(IXMLDOMNotation *This,VARIANT *publicID);
++  void __RPC_STUB IXMLDOMNotation_get_publicId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMNotation_get_systemId_Proxy(IXMLDOMNotation *This,VARIANT *systemID);
++  void __RPC_STUB IXMLDOMNotation_get_systemId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMEntity_INTERFACE_DEFINED__
++#define __IXMLDOMEntity_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMEntity;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMEntity : public IXMLDOMNode {
++  public:
++    virtual HRESULT WINAPI get_publicId(VARIANT *publicID) = 0;
++    virtual HRESULT WINAPI get_systemId(VARIANT *systemID) = 0;
++    virtual HRESULT WINAPI get_notationName(BSTR *name) = 0;
++  };
++#else
++  typedef struct IXMLDOMEntityVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMEntity *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMEntity *This);
++      ULONG (WINAPI *Release)(IXMLDOMEntity *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMEntity *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMEntity *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMEntity *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMEntity *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMEntity *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMEntity *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMEntity *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMEntity *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMEntity *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMEntity *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMEntity *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMEntity *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMEntity *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMEntity *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMEntity *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMEntity *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMEntity *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMEntity *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMEntity *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMEntity *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMEntity *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMEntity *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMEntity *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMEntity *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMEntity *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMEntity *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMEntity *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMEntity *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMEntity *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMEntity *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMEntity *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMEntity *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMEntity *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMEntity *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMEntity *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMEntity *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMEntity *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMEntity *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMEntity *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMEntity *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *get_publicId)(IXMLDOMEntity *This,VARIANT *publicID);
++      HRESULT (WINAPI *get_systemId)(IXMLDOMEntity *This,VARIANT *systemID);
++      HRESULT (WINAPI *get_notationName)(IXMLDOMEntity *This,BSTR *name);
++    END_INTERFACE
++  } IXMLDOMEntityVtbl;
++  struct IXMLDOMEntity {
++    CONST_VTBL struct IXMLDOMEntityVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMEntity_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMEntity_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMEntity_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMEntity_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMEntity_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMEntity_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMEntity_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMEntity_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMEntity_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMEntity_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMEntity_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMEntity_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMEntity_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMEntity_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMEntity_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMEntity_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMEntity_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMEntity_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMEntity_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMEntity_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMEntity_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMEntity_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMEntity_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMEntity_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMEntity_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMEntity_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMEntity_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMEntity_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMEntity_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMEntity_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMEntity_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMEntity_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMEntity_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMEntity_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMEntity_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMEntity_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMEntity_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMEntity_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMEntity_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMEntity_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMEntity_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMEntity_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMEntity_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXMLDOMEntity_get_publicId(This,publicID) (This)->lpVtbl->get_publicId(This,publicID)
++#define IXMLDOMEntity_get_systemId(This,systemID) (This)->lpVtbl->get_systemId(This,systemID)
++#define IXMLDOMEntity_get_notationName(This,name) (This)->lpVtbl->get_notationName(This,name)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMEntity_get_publicId_Proxy(IXMLDOMEntity *This,VARIANT *publicID);
++  void __RPC_STUB IXMLDOMEntity_get_publicId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMEntity_get_systemId_Proxy(IXMLDOMEntity *This,VARIANT *systemID);
++  void __RPC_STUB IXMLDOMEntity_get_systemId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMEntity_get_notationName_Proxy(IXMLDOMEntity *This,BSTR *name);
++  void __RPC_STUB IXMLDOMEntity_get_notationName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDOMEntityReference_INTERFACE_DEFINED__
++#define __IXMLDOMEntityReference_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMEntityReference;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMEntityReference : public IXMLDOMNode {
++  };
++#else
++  typedef struct IXMLDOMEntityReferenceVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMEntityReference *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMEntityReference *This);
++      ULONG (WINAPI *Release)(IXMLDOMEntityReference *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMEntityReference *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMEntityReference *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMEntityReference *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMEntityReference *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXMLDOMEntityReference *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXMLDOMEntityReference *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXMLDOMEntityReference *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXMLDOMEntityReference *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXMLDOMEntityReference *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXMLDOMEntityReference *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXMLDOMEntityReference *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXMLDOMEntityReference *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXMLDOMEntityReference *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXMLDOMEntityReference *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXMLDOMEntityReference *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXMLDOMEntityReference *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXMLDOMEntityReference *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXMLDOMEntityReference *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXMLDOMEntityReference *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXMLDOMEntityReference *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMEntityReference *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXMLDOMEntityReference *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMEntityReference *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXMLDOMEntityReference *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXMLDOMEntityReference *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXMLDOMEntityReference *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXMLDOMEntityReference *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMEntityReference *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMEntityReference *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXMLDOMEntityReference *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXMLDOMEntityReference *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXMLDOMEntityReference *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXMLDOMEntityReference *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXMLDOMEntityReference *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXMLDOMEntityReference *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXMLDOMEntityReference *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMEntityReference *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXMLDOMEntityReference *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXMLDOMEntityReference *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMEntityReference *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++    END_INTERFACE
++  } IXMLDOMEntityReferenceVtbl;
++  struct IXMLDOMEntityReference {
++    CONST_VTBL struct IXMLDOMEntityReferenceVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMEntityReference_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMEntityReference_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMEntityReference_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMEntityReference_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMEntityReference_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMEntityReference_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMEntityReference_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMEntityReference_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXMLDOMEntityReference_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXMLDOMEntityReference_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXMLDOMEntityReference_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXMLDOMEntityReference_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXMLDOMEntityReference_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXMLDOMEntityReference_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXMLDOMEntityReference_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXMLDOMEntityReference_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXMLDOMEntityReference_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXMLDOMEntityReference_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXMLDOMEntityReference_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXMLDOMEntityReference_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXMLDOMEntityReference_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXMLDOMEntityReference_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXMLDOMEntityReference_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXMLDOMEntityReference_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXMLDOMEntityReference_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXMLDOMEntityReference_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXMLDOMEntityReference_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXMLDOMEntityReference_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXMLDOMEntityReference_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXMLDOMEntityReference_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXMLDOMEntityReference_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXMLDOMEntityReference_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXMLDOMEntityReference_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXMLDOMEntityReference_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXMLDOMEntityReference_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXMLDOMEntityReference_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXMLDOMEntityReference_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXMLDOMEntityReference_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXMLDOMEntityReference_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXMLDOMEntityReference_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXMLDOMEntityReference_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXMLDOMEntityReference_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXMLDOMEntityReference_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#endif
++#endif
++#endif
++
++#ifndef __IXMLDOMParseError_INTERFACE_DEFINED__
++#define __IXMLDOMParseError_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDOMParseError;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDOMParseError : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_errorCode(long *errorCode) = 0;
++    virtual HRESULT WINAPI get_url(BSTR *urlString) = 0;
++    virtual HRESULT WINAPI get_reason(BSTR *reasonString) = 0;
++    virtual HRESULT WINAPI get_srcText(BSTR *sourceString) = 0;
++    virtual HRESULT WINAPI get_line(long *lineNumber) = 0;
++    virtual HRESULT WINAPI get_linepos(long *linePosition) = 0;
++    virtual HRESULT WINAPI get_filepos(long *filePosition) = 0;
++  };
++#else
++  typedef struct IXMLDOMParseErrorVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDOMParseError *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDOMParseError *This);
++      ULONG (WINAPI *Release)(IXMLDOMParseError *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMParseError *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMParseError *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMParseError *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDOMParseError *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_errorCode)(IXMLDOMParseError *This,long *errorCode);
++      HRESULT (WINAPI *get_url)(IXMLDOMParseError *This,BSTR *urlString);
++      HRESULT (WINAPI *get_reason)(IXMLDOMParseError *This,BSTR *reasonString);
++      HRESULT (WINAPI *get_srcText)(IXMLDOMParseError *This,BSTR *sourceString);
++      HRESULT (WINAPI *get_line)(IXMLDOMParseError *This,long *lineNumber);
++      HRESULT (WINAPI *get_linepos)(IXMLDOMParseError *This,long *linePosition);
++      HRESULT (WINAPI *get_filepos)(IXMLDOMParseError *This,long *filePosition);
++    END_INTERFACE
++  } IXMLDOMParseErrorVtbl;
++  struct IXMLDOMParseError {
++    CONST_VTBL struct IXMLDOMParseErrorVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDOMParseError_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDOMParseError_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDOMParseError_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDOMParseError_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDOMParseError_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDOMParseError_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDOMParseError_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDOMParseError_get_errorCode(This,errorCode) (This)->lpVtbl->get_errorCode(This,errorCode)
++#define IXMLDOMParseError_get_url(This,urlString) (This)->lpVtbl->get_url(This,urlString)
++#define IXMLDOMParseError_get_reason(This,reasonString) (This)->lpVtbl->get_reason(This,reasonString)
++#define IXMLDOMParseError_get_srcText(This,sourceString) (This)->lpVtbl->get_srcText(This,sourceString)
++#define IXMLDOMParseError_get_line(This,lineNumber) (This)->lpVtbl->get_line(This,lineNumber)
++#define IXMLDOMParseError_get_linepos(This,linePosition) (This)->lpVtbl->get_linepos(This,linePosition)
++#define IXMLDOMParseError_get_filepos(This,filePosition) (This)->lpVtbl->get_filepos(This,filePosition)
++#endif
++#endif
++  HRESULT WINAPI IXMLDOMParseError_get_errorCode_Proxy(IXMLDOMParseError *This,long *errorCode);
++  void __RPC_STUB IXMLDOMParseError_get_errorCode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMParseError_get_url_Proxy(IXMLDOMParseError *This,BSTR *urlString);
++  void __RPC_STUB IXMLDOMParseError_get_url_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMParseError_get_reason_Proxy(IXMLDOMParseError *This,BSTR *reasonString);
++  void __RPC_STUB IXMLDOMParseError_get_reason_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMParseError_get_srcText_Proxy(IXMLDOMParseError *This,BSTR *sourceString);
++  void __RPC_STUB IXMLDOMParseError_get_srcText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMParseError_get_line_Proxy(IXMLDOMParseError *This,long *lineNumber);
++  void __RPC_STUB IXMLDOMParseError_get_line_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMParseError_get_linepos_Proxy(IXMLDOMParseError *This,long *linePosition);
++  void __RPC_STUB IXMLDOMParseError_get_linepos_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDOMParseError_get_filepos_Proxy(IXMLDOMParseError *This,long *filePosition);
++  void __RPC_STUB IXMLDOMParseError_get_filepos_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXTLRuntime_INTERFACE_DEFINED__
++#define __IXTLRuntime_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXTLRuntime;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXTLRuntime : public IXMLDOMNode {
++  public:
++    virtual HRESULT WINAPI uniqueID(IXMLDOMNode *pNode,long *pID) = 0;
++    virtual HRESULT WINAPI depth(IXMLDOMNode *pNode,long *pDepth) = 0;
++    virtual HRESULT WINAPI childNumber(IXMLDOMNode *pNode,long *pNumber) = 0;
++    virtual HRESULT WINAPI ancestorChildNumber(BSTR bstrNodeName,IXMLDOMNode *pNode,long *pNumber) = 0;
++    virtual HRESULT WINAPI absoluteChildNumber(IXMLDOMNode *pNode,long *pNumber) = 0;
++    virtual HRESULT WINAPI formatIndex(long lIndex,BSTR bstrFormat,BSTR *pbstrFormattedString) = 0;
++    virtual HRESULT WINAPI formatNumber(double dblNumber,BSTR bstrFormat,BSTR *pbstrFormattedString) = 0;
++    virtual HRESULT WINAPI formatDate(VARIANT varDate,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString) = 0;
++    virtual HRESULT WINAPI formatTime(VARIANT varTime,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString) = 0;
++  };
++#else
++  typedef struct IXTLRuntimeVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXTLRuntime *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXTLRuntime *This);
++      ULONG (WINAPI *Release)(IXTLRuntime *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXTLRuntime *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXTLRuntime *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXTLRuntime *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXTLRuntime *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_nodeName)(IXTLRuntime *This,BSTR *name);
++      HRESULT (WINAPI *get_nodeValue)(IXTLRuntime *This,VARIANT *value);
++      HRESULT (WINAPI *put_nodeValue)(IXTLRuntime *This,VARIANT value);
++      HRESULT (WINAPI *get_nodeType)(IXTLRuntime *This,DOMNodeType *type);
++      HRESULT (WINAPI *get_parentNode)(IXTLRuntime *This,IXMLDOMNode **parent);
++      HRESULT (WINAPI *get_childNodes)(IXTLRuntime *This,IXMLDOMNodeList **childList);
++      HRESULT (WINAPI *get_firstChild)(IXTLRuntime *This,IXMLDOMNode **firstChild);
++      HRESULT (WINAPI *get_lastChild)(IXTLRuntime *This,IXMLDOMNode **lastChild);
++      HRESULT (WINAPI *get_previousSibling)(IXTLRuntime *This,IXMLDOMNode **previousSibling);
++      HRESULT (WINAPI *get_nextSibling)(IXTLRuntime *This,IXMLDOMNode **nextSibling);
++      HRESULT (WINAPI *get_attributes)(IXTLRuntime *This,IXMLDOMNamedNodeMap **attributeMap);
++      HRESULT (WINAPI *insertBefore)(IXTLRuntime *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *replaceChild)(IXTLRuntime *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
++      HRESULT (WINAPI *removeChild)(IXTLRuntime *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
++      HRESULT (WINAPI *appendChild)(IXTLRuntime *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
++      HRESULT (WINAPI *hasChildNodes)(IXTLRuntime *This,VARIANT_BOOL *hasChild);
++      HRESULT (WINAPI *get_ownerDocument)(IXTLRuntime *This,IXMLDOMDocument **DOMDocument);
++      HRESULT (WINAPI *cloneNode)(IXTLRuntime *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
++      HRESULT (WINAPI *get_nodeTypeString)(IXTLRuntime *This,BSTR *nodeType);
++      HRESULT (WINAPI *get_text)(IXTLRuntime *This,BSTR *text);
++      HRESULT (WINAPI *put_text)(IXTLRuntime *This,BSTR text);
++      HRESULT (WINAPI *get_specified)(IXTLRuntime *This,VARIANT_BOOL *isSpecified);
++      HRESULT (WINAPI *get_definition)(IXTLRuntime *This,IXMLDOMNode **definitionNode);
++      HRESULT (WINAPI *get_nodeTypedValue)(IXTLRuntime *This,VARIANT *typedValue);
++      HRESULT (WINAPI *put_nodeTypedValue)(IXTLRuntime *This,VARIANT typedValue);
++      HRESULT (WINAPI *get_dataType)(IXTLRuntime *This,VARIANT *dataTypeName);
++      HRESULT (WINAPI *put_dataType)(IXTLRuntime *This,BSTR dataTypeName);
++      HRESULT (WINAPI *get_xml)(IXTLRuntime *This,BSTR *xmlString);
++      HRESULT (WINAPI *transformNode)(IXTLRuntime *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
++      HRESULT (WINAPI *selectNodes)(IXTLRuntime *This,BSTR queryString,IXMLDOMNodeList **resultList);
++      HRESULT (WINAPI *selectSingleNode)(IXTLRuntime *This,BSTR queryString,IXMLDOMNode **resultNode);
++      HRESULT (WINAPI *get_parsed)(IXTLRuntime *This,VARIANT_BOOL *isParsed);
++      HRESULT (WINAPI *get_namespaceURI)(IXTLRuntime *This,BSTR *namespaceURI);
++      HRESULT (WINAPI *get_prefix)(IXTLRuntime *This,BSTR *prefixString);
++      HRESULT (WINAPI *get_baseName)(IXTLRuntime *This,BSTR *nameString);
++      HRESULT (WINAPI *transformNodeToObject)(IXTLRuntime *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
++      HRESULT (WINAPI *uniqueID)(IXTLRuntime *This,IXMLDOMNode *pNode,long *pID);
++      HRESULT (WINAPI *depth)(IXTLRuntime *This,IXMLDOMNode *pNode,long *pDepth);
++      HRESULT (WINAPI *childNumber)(IXTLRuntime *This,IXMLDOMNode *pNode,long *pNumber);
++      HRESULT (WINAPI *ancestorChildNumber)(IXTLRuntime *This,BSTR bstrNodeName,IXMLDOMNode *pNode,long *pNumber);
++      HRESULT (WINAPI *absoluteChildNumber)(IXTLRuntime *This,IXMLDOMNode *pNode,long *pNumber);
++      HRESULT (WINAPI *formatIndex)(IXTLRuntime *This,long lIndex,BSTR bstrFormat,BSTR *pbstrFormattedString);
++      HRESULT (WINAPI *formatNumber)(IXTLRuntime *This,double dblNumber,BSTR bstrFormat,BSTR *pbstrFormattedString);
++      HRESULT (WINAPI *formatDate)(IXTLRuntime *This,VARIANT varDate,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);
++      HRESULT (WINAPI *formatTime)(IXTLRuntime *This,VARIANT varTime,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);
++    END_INTERFACE
++  } IXTLRuntimeVtbl;
++  struct IXTLRuntime {
++    CONST_VTBL struct IXTLRuntimeVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXTLRuntime_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXTLRuntime_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXTLRuntime_Release(This) (This)->lpVtbl->Release(This)
++#define IXTLRuntime_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXTLRuntime_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXTLRuntime_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXTLRuntime_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXTLRuntime_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)
++#define IXTLRuntime_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)
++#define IXTLRuntime_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)
++#define IXTLRuntime_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)
++#define IXTLRuntime_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)
++#define IXTLRuntime_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)
++#define IXTLRuntime_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)
++#define IXTLRuntime_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)
++#define IXTLRuntime_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)
++#define IXTLRuntime_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)
++#define IXTLRuntime_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)
++#define IXTLRuntime_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)
++#define IXTLRuntime_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)
++#define IXTLRuntime_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)
++#define IXTLRuntime_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)
++#define IXTLRuntime_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)
++#define IXTLRuntime_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)
++#define IXTLRuntime_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)
++#define IXTLRuntime_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)
++#define IXTLRuntime_get_text(This,text) (This)->lpVtbl->get_text(This,text)
++#define IXTLRuntime_put_text(This,text) (This)->lpVtbl->put_text(This,text)
++#define IXTLRuntime_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)
++#define IXTLRuntime_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)
++#define IXTLRuntime_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)
++#define IXTLRuntime_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)
++#define IXTLRuntime_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)
++#define IXTLRuntime_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)
++#define IXTLRuntime_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)
++#define IXTLRuntime_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)
++#define IXTLRuntime_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)
++#define IXTLRuntime_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)
++#define IXTLRuntime_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)
++#define IXTLRuntime_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)
++#define IXTLRuntime_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)
++#define IXTLRuntime_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)
++#define IXTLRuntime_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)
++#define IXTLRuntime_uniqueID(This,pNode,pID) (This)->lpVtbl->uniqueID(This,pNode,pID)
++#define IXTLRuntime_depth(This,pNode,pDepth) (This)->lpVtbl->depth(This,pNode,pDepth)
++#define IXTLRuntime_childNumber(This,pNode,pNumber) (This)->lpVtbl->childNumber(This,pNode,pNumber)
++#define IXTLRuntime_ancestorChildNumber(This,bstrNodeName,pNode,pNumber) (This)->lpVtbl->ancestorChildNumber(This,bstrNodeName,pNode,pNumber)
++#define IXTLRuntime_absoluteChildNumber(This,pNode,pNumber) (This)->lpVtbl->absoluteChildNumber(This,pNode,pNumber)
++#define IXTLRuntime_formatIndex(This,lIndex,bstrFormat,pbstrFormattedString) (This)->lpVtbl->formatIndex(This,lIndex,bstrFormat,pbstrFormattedString)
++#define IXTLRuntime_formatNumber(This,dblNumber,bstrFormat,pbstrFormattedString) (This)->lpVtbl->formatNumber(This,dblNumber,bstrFormat,pbstrFormattedString)
++#define IXTLRuntime_formatDate(This,varDate,bstrFormat,varDestLocale,pbstrFormattedString) (This)->lpVtbl->formatDate(This,varDate,bstrFormat,varDestLocale,pbstrFormattedString)
++#define IXTLRuntime_formatTime(This,varTime,bstrFormat,varDestLocale,pbstrFormattedString) (This)->lpVtbl->formatTime(This,varTime,bstrFormat,varDestLocale,pbstrFormattedString)
++#endif
++#endif
++  HRESULT WINAPI IXTLRuntime_uniqueID_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,long *pID);
++  void __RPC_STUB IXTLRuntime_uniqueID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXTLRuntime_depth_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,long *pDepth);
++  void __RPC_STUB IXTLRuntime_depth_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXTLRuntime_childNumber_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,long *pNumber);
++  void __RPC_STUB IXTLRuntime_childNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXTLRuntime_ancestorChildNumber_Proxy(IXTLRuntime *This,BSTR bstrNodeName,IXMLDOMNode *pNode,long *pNumber);
++  void __RPC_STUB IXTLRuntime_ancestorChildNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXTLRuntime_absoluteChildNumber_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,long *pNumber);
++  void __RPC_STUB IXTLRuntime_absoluteChildNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXTLRuntime_formatIndex_Proxy(IXTLRuntime *This,long lIndex,BSTR bstrFormat,BSTR *pbstrFormattedString);
++  void __RPC_STUB IXTLRuntime_formatIndex_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXTLRuntime_formatNumber_Proxy(IXTLRuntime *This,double dblNumber,BSTR bstrFormat,BSTR *pbstrFormattedString);
++  void __RPC_STUB IXTLRuntime_formatNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXTLRuntime_formatDate_Proxy(IXTLRuntime *This,VARIANT varDate,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);
++  void __RPC_STUB IXTLRuntime_formatDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXTLRuntime_formatTime_Proxy(IXTLRuntime *This,VARIANT varTime,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);
++  void __RPC_STUB IXTLRuntime_formatTime_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __XMLDOMDocumentEvents_DISPINTERFACE_DEFINED__
++#define __XMLDOMDocumentEvents_DISPINTERFACE_DEFINED__
++  EXTERN_C const IID DIID_XMLDOMDocumentEvents;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct XMLDOMDocumentEvents : public IDispatch {
++  };
++#else
++  typedef struct XMLDOMDocumentEventsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(XMLDOMDocumentEvents *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(XMLDOMDocumentEvents *This);
++      ULONG (WINAPI *Release)(XMLDOMDocumentEvents *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(XMLDOMDocumentEvents *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(XMLDOMDocumentEvents *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(XMLDOMDocumentEvents *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(XMLDOMDocumentEvents *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++    END_INTERFACE
++  } XMLDOMDocumentEventsVtbl;
++  struct XMLDOMDocumentEvents {
++    CONST_VTBL struct XMLDOMDocumentEventsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define XMLDOMDocumentEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define XMLDOMDocumentEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define XMLDOMDocumentEvents_Release(This) (This)->lpVtbl->Release(This)
++#define XMLDOMDocumentEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define XMLDOMDocumentEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define XMLDOMDocumentEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define XMLDOMDocumentEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#endif
++#endif
++#endif
++
++  EXTERN_C const CLSID CLSID_DOMDocument;
++#ifdef __cplusplus
++  class DOMDocument;
++#endif
++  EXTERN_C const CLSID CLSID_DOMFreeThreadedDocument;
++#ifdef __cplusplus
++  class DOMFreeThreadedDocument;
++#endif
++
++#ifndef __IXMLHttpRequest_INTERFACE_DEFINED__
++#define __IXMLHttpRequest_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLHttpRequest;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLHttpRequest : public IDispatch {
++  public:
++    virtual HRESULT WINAPI open(BSTR bstrMethod,BSTR bstrUrl,VARIANT varAsync,VARIANT bstrUser,VARIANT bstrPassword) = 0;
++    virtual HRESULT WINAPI setRequestHeader(BSTR bstrHeader,BSTR bstrValue) = 0;
++    virtual HRESULT WINAPI getResponseHeader(BSTR bstrHeader,BSTR *pbstrValue) = 0;
++    virtual HRESULT WINAPI getAllResponseHeaders(BSTR *pbstrHeaders) = 0;
++    virtual HRESULT WINAPI send(VARIANT varBody) = 0;
++    virtual HRESULT WINAPI abort(void) = 0;
++    virtual HRESULT WINAPI get_status(long *plStatus) = 0;
++    virtual HRESULT WINAPI get_statusText(BSTR *pbstrStatus) = 0;
++    virtual HRESULT WINAPI get_responseXML(IDispatch **ppBody) = 0;
++    virtual HRESULT WINAPI get_responseText(BSTR *pbstrBody) = 0;
++    virtual HRESULT WINAPI get_responseBody(VARIANT *pvarBody) = 0;
++    virtual HRESULT WINAPI get_responseStream(VARIANT *pvarBody) = 0;
++    virtual HRESULT WINAPI get_readyState(long *plState) = 0;
++    virtual HRESULT WINAPI put_onreadystatechange(IDispatch *pReadyStateSink) = 0;
++  };
++#else
++  typedef struct IXMLHttpRequestVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLHttpRequest *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLHttpRequest *This);
++      ULONG (WINAPI *Release)(IXMLHttpRequest *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLHttpRequest *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLHttpRequest *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLHttpRequest *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLHttpRequest *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *open)(IXMLHttpRequest *This,BSTR bstrMethod,BSTR bstrUrl,VARIANT varAsync,VARIANT bstrUser,VARIANT bstrPassword);
++      HRESULT (WINAPI *setRequestHeader)(IXMLHttpRequest *This,BSTR bstrHeader,BSTR bstrValue);
++      HRESULT (WINAPI *getResponseHeader)(IXMLHttpRequest *This,BSTR bstrHeader,BSTR *pbstrValue);
++      HRESULT (WINAPI *getAllResponseHeaders)(IXMLHttpRequest *This,BSTR *pbstrHeaders);
++      HRESULT (WINAPI *send)(IXMLHttpRequest *This,VARIANT varBody);
++      HRESULT (WINAPI *abort)(IXMLHttpRequest *This);
++      HRESULT (WINAPI *get_status)(IXMLHttpRequest *This,long *plStatus);
++      HRESULT (WINAPI *get_statusText)(IXMLHttpRequest *This,BSTR *pbstrStatus);
++      HRESULT (WINAPI *get_responseXML)(IXMLHttpRequest *This,IDispatch **ppBody);
++      HRESULT (WINAPI *get_responseText)(IXMLHttpRequest *This,BSTR *pbstrBody);
++      HRESULT (WINAPI *get_responseBody)(IXMLHttpRequest *This,VARIANT *pvarBody);
++      HRESULT (WINAPI *get_responseStream)(IXMLHttpRequest *This,VARIANT *pvarBody);
++      HRESULT (WINAPI *get_readyState)(IXMLHttpRequest *This,long *plState);
++      HRESULT (WINAPI *put_onreadystatechange)(IXMLHttpRequest *This,IDispatch *pReadyStateSink);
++    END_INTERFACE
++  } IXMLHttpRequestVtbl;
++  struct IXMLHttpRequest {
++    CONST_VTBL struct IXMLHttpRequestVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLHttpRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLHttpRequest_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLHttpRequest_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLHttpRequest_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLHttpRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLHttpRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLHttpRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLHttpRequest_open(This,bstrMethod,bstrUrl,varAsync,bstrUser,bstrPassword) (This)->lpVtbl->open(This,bstrMethod,bstrUrl,varAsync,bstrUser,bstrPassword)
++#define IXMLHttpRequest_setRequestHeader(This,bstrHeader,bstrValue) (This)->lpVtbl->setRequestHeader(This,bstrHeader,bstrValue)
++#define IXMLHttpRequest_getResponseHeader(This,bstrHeader,pbstrValue) (This)->lpVtbl->getResponseHeader(This,bstrHeader,pbstrValue)
++#define IXMLHttpRequest_getAllResponseHeaders(This,pbstrHeaders) (This)->lpVtbl->getAllResponseHeaders(This,pbstrHeaders)
++#define IXMLHttpRequest_send(This,varBody) (This)->lpVtbl->send(This,varBody)
++#define IXMLHttpRequest_abort(This) (This)->lpVtbl->abort(This)
++#define IXMLHttpRequest_get_status(This,plStatus) (This)->lpVtbl->get_status(This,plStatus)
++#define IXMLHttpRequest_get_statusText(This,pbstrStatus) (This)->lpVtbl->get_statusText(This,pbstrStatus)
++#define IXMLHttpRequest_get_responseXML(This,ppBody) (This)->lpVtbl->get_responseXML(This,ppBody)
++#define IXMLHttpRequest_get_responseText(This,pbstrBody) (This)->lpVtbl->get_responseText(This,pbstrBody)
++#define IXMLHttpRequest_get_responseBody(This,pvarBody) (This)->lpVtbl->get_responseBody(This,pvarBody)
++#define IXMLHttpRequest_get_responseStream(This,pvarBody) (This)->lpVtbl->get_responseStream(This,pvarBody)
++#define IXMLHttpRequest_get_readyState(This,plState) (This)->lpVtbl->get_readyState(This,plState)
++#define IXMLHttpRequest_put_onreadystatechange(This,pReadyStateSink) (This)->lpVtbl->put_onreadystatechange(This,pReadyStateSink)
++#endif
++#endif
++  HRESULT WINAPI IXMLHttpRequest_open_Proxy(IXMLHttpRequest *This,BSTR bstrMethod,BSTR bstrUrl,VARIANT varAsync,VARIANT bstrUser,VARIANT bstrPassword);
++  void __RPC_STUB IXMLHttpRequest_open_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_setRequestHeader_Proxy(IXMLHttpRequest *This,BSTR bstrHeader,BSTR bstrValue);
++  void __RPC_STUB IXMLHttpRequest_setRequestHeader_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_getResponseHeader_Proxy(IXMLHttpRequest *This,BSTR bstrHeader,BSTR *pbstrValue);
++  void __RPC_STUB IXMLHttpRequest_getResponseHeader_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_getAllResponseHeaders_Proxy(IXMLHttpRequest *This,BSTR *pbstrHeaders);
++  void __RPC_STUB IXMLHttpRequest_getAllResponseHeaders_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_send_Proxy(IXMLHttpRequest *This,VARIANT varBody);
++  void __RPC_STUB IXMLHttpRequest_send_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_abort_Proxy(IXMLHttpRequest *This);
++  void __RPC_STUB IXMLHttpRequest_abort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_get_status_Proxy(IXMLHttpRequest *This,long *plStatus);
++  void __RPC_STUB IXMLHttpRequest_get_status_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_get_statusText_Proxy(IXMLHttpRequest *This,BSTR *pbstrStatus);
++  void __RPC_STUB IXMLHttpRequest_get_statusText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_get_responseXML_Proxy(IXMLHttpRequest *This,IDispatch **ppBody);
++  void __RPC_STUB IXMLHttpRequest_get_responseXML_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_get_responseText_Proxy(IXMLHttpRequest *This,BSTR *pbstrBody);
++  void __RPC_STUB IXMLHttpRequest_get_responseText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_get_responseBody_Proxy(IXMLHttpRequest *This,VARIANT *pvarBody);
++  void __RPC_STUB IXMLHttpRequest_get_responseBody_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_get_responseStream_Proxy(IXMLHttpRequest *This,VARIANT *pvarBody);
++  void __RPC_STUB IXMLHttpRequest_get_responseStream_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_get_readyState_Proxy(IXMLHttpRequest *This,long *plState);
++  void __RPC_STUB IXMLHttpRequest_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLHttpRequest_put_onreadystatechange_Proxy(IXMLHttpRequest *This,IDispatch *pReadyStateSink);
++  void __RPC_STUB IXMLHttpRequest_put_onreadystatechange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++  EXTERN_C const CLSID CLSID_XMLHTTPRequest;
++#ifdef __cplusplus
++  class XMLHTTPRequest;
++#endif
++
++#ifndef __IXMLDSOControl_INTERFACE_DEFINED__
++#define __IXMLDSOControl_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDSOControl;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDSOControl : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_XMLDocument(IXMLDOMDocument **ppDoc) = 0;
++    virtual HRESULT WINAPI put_XMLDocument(IXMLDOMDocument *ppDoc) = 0;
++    virtual HRESULT WINAPI get_JavaDSOCompatible(WINBOOL *fJavaDSOCompatible) = 0;
++    virtual HRESULT WINAPI put_JavaDSOCompatible(WINBOOL fJavaDSOCompatible) = 0;
++    virtual HRESULT WINAPI get_readyState(long *state) = 0;
++  };
++#else
++  typedef struct IXMLDSOControlVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDSOControl *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDSOControl *This);
++      ULONG (WINAPI *Release)(IXMLDSOControl *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDSOControl *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDSOControl *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDSOControl *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDSOControl *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_XMLDocument)(IXMLDSOControl *This,IXMLDOMDocument **ppDoc);
++      HRESULT (WINAPI *put_XMLDocument)(IXMLDSOControl *This,IXMLDOMDocument *ppDoc);
++      HRESULT (WINAPI *get_JavaDSOCompatible)(IXMLDSOControl *This,WINBOOL *fJavaDSOCompatible);
++      HRESULT (WINAPI *put_JavaDSOCompatible)(IXMLDSOControl *This,WINBOOL fJavaDSOCompatible);
++      HRESULT (WINAPI *get_readyState)(IXMLDSOControl *This,long *state);
++    END_INTERFACE
++  } IXMLDSOControlVtbl;
++  struct IXMLDSOControl {
++    CONST_VTBL struct IXMLDSOControlVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDSOControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDSOControl_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDSOControl_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDSOControl_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDSOControl_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDSOControl_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDSOControl_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDSOControl_get_XMLDocument(This,ppDoc) (This)->lpVtbl->get_XMLDocument(This,ppDoc)
++#define IXMLDSOControl_put_XMLDocument(This,ppDoc) (This)->lpVtbl->put_XMLDocument(This,ppDoc)
++#define IXMLDSOControl_get_JavaDSOCompatible(This,fJavaDSOCompatible) (This)->lpVtbl->get_JavaDSOCompatible(This,fJavaDSOCompatible)
++#define IXMLDSOControl_put_JavaDSOCompatible(This,fJavaDSOCompatible) (This)->lpVtbl->put_JavaDSOCompatible(This,fJavaDSOCompatible)
++#define IXMLDSOControl_get_readyState(This,state) (This)->lpVtbl->get_readyState(This,state)
++#endif
++#endif
++  HRESULT WINAPI IXMLDSOControl_get_XMLDocument_Proxy(IXMLDSOControl *This,IXMLDOMDocument **ppDoc);
++  void __RPC_STUB IXMLDSOControl_get_XMLDocument_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDSOControl_put_XMLDocument_Proxy(IXMLDSOControl *This,IXMLDOMDocument *ppDoc);
++  void __RPC_STUB IXMLDSOControl_put_XMLDocument_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDSOControl_get_JavaDSOCompatible_Proxy(IXMLDSOControl *This,WINBOOL *fJavaDSOCompatible);
++  void __RPC_STUB IXMLDSOControl_get_JavaDSOCompatible_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDSOControl_put_JavaDSOCompatible_Proxy(IXMLDSOControl *This,WINBOOL fJavaDSOCompatible);
++  void __RPC_STUB IXMLDSOControl_put_JavaDSOCompatible_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDSOControl_get_readyState_Proxy(IXMLDSOControl *This,long *state);
++  void __RPC_STUB IXMLDSOControl_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++  EXTERN_C const CLSID CLSID_XMLDSOControl;
++#ifdef __cplusplus
++  class XMLDSOControl;
++#endif
++
++#ifndef __IXMLElementCollection_INTERFACE_DEFINED__
++#define __IXMLElementCollection_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLElementCollection;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLElementCollection : public IDispatch {
++  public:
++    virtual HRESULT WINAPI put_length(long v) = 0;
++    virtual HRESULT WINAPI get_length(long *p) = 0;
++    virtual HRESULT WINAPI get__newEnum(IUnknown **ppUnk) = 0;
++    virtual HRESULT WINAPI item(VARIANT var1,VARIANT var2,IDispatch **ppDisp) = 0;
++  };
++#else
++  typedef struct IXMLElementCollectionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLElementCollection *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLElementCollection *This);
++      ULONG (WINAPI *Release)(IXMLElementCollection *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLElementCollection *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLElementCollection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLElementCollection *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLElementCollection *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *put_length)(IXMLElementCollection *This,long v);
++      HRESULT (WINAPI *get_length)(IXMLElementCollection *This,long *p);
++      HRESULT (WINAPI *get__newEnum)(IXMLElementCollection *This,IUnknown **ppUnk);
++      HRESULT (WINAPI *item)(IXMLElementCollection *This,VARIANT var1,VARIANT var2,IDispatch **ppDisp);
++    END_INTERFACE
++  } IXMLElementCollectionVtbl;
++  struct IXMLElementCollection {
++    CONST_VTBL struct IXMLElementCollectionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLElementCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLElementCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLElementCollection_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLElementCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLElementCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLElementCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLElementCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLElementCollection_put_length(This,v) (This)->lpVtbl->put_length(This,v)
++#define IXMLElementCollection_get_length(This,p) (This)->lpVtbl->get_length(This,p)
++#define IXMLElementCollection_get__newEnum(This,ppUnk) (This)->lpVtbl->get__newEnum(This,ppUnk)
++#define IXMLElementCollection_item(This,var1,var2,ppDisp) (This)->lpVtbl->item(This,var1,var2,ppDisp)
++#endif
++#endif
++  HRESULT WINAPI IXMLElementCollection_put_length_Proxy(IXMLElementCollection *This,long v);
++  void __RPC_STUB IXMLElementCollection_put_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElementCollection_get_length_Proxy(IXMLElementCollection *This,long *p);
++  void __RPC_STUB IXMLElementCollection_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElementCollection_get__newEnum_Proxy(IXMLElementCollection *This,IUnknown **ppUnk);
++  void __RPC_STUB IXMLElementCollection_get__newEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElementCollection_item_Proxy(IXMLElementCollection *This,VARIANT var1,VARIANT var2,IDispatch **ppDisp);
++  void __RPC_STUB IXMLElementCollection_item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDocument_INTERFACE_DEFINED__
++#define __IXMLDocument_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDocument;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDocument : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_root(IXMLElement **p) = 0;
++    virtual HRESULT WINAPI get_fileSize(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_fileModifiedDate(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_fileUpdatedDate(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_URL(BSTR *p) = 0;
++    virtual HRESULT WINAPI put_URL(BSTR p) = 0;
++    virtual HRESULT WINAPI get_mimeType(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_readyState(long *pl) = 0;
++    virtual HRESULT WINAPI get_charset(BSTR *p) = 0;
++    virtual HRESULT WINAPI put_charset(BSTR p) = 0;
++    virtual HRESULT WINAPI get_version(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_doctype(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_dtdURL(BSTR *p) = 0;
++    virtual HRESULT WINAPI createElement(VARIANT vType,VARIANT var1,IXMLElement **ppElem) = 0;
++  };
++#else
++  typedef struct IXMLDocumentVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDocument *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDocument *This);
++      ULONG (WINAPI *Release)(IXMLDocument *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDocument *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDocument *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDocument *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDocument *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_root)(IXMLDocument *This,IXMLElement **p);
++      HRESULT (WINAPI *get_fileSize)(IXMLDocument *This,BSTR *p);
++      HRESULT (WINAPI *get_fileModifiedDate)(IXMLDocument *This,BSTR *p);
++      HRESULT (WINAPI *get_fileUpdatedDate)(IXMLDocument *This,BSTR *p);
++      HRESULT (WINAPI *get_URL)(IXMLDocument *This,BSTR *p);
++      HRESULT (WINAPI *put_URL)(IXMLDocument *This,BSTR p);
++      HRESULT (WINAPI *get_mimeType)(IXMLDocument *This,BSTR *p);
++      HRESULT (WINAPI *get_readyState)(IXMLDocument *This,long *pl);
++      HRESULT (WINAPI *get_charset)(IXMLDocument *This,BSTR *p);
++      HRESULT (WINAPI *put_charset)(IXMLDocument *This,BSTR p);
++      HRESULT (WINAPI *get_version)(IXMLDocument *This,BSTR *p);
++      HRESULT (WINAPI *get_doctype)(IXMLDocument *This,BSTR *p);
++      HRESULT (WINAPI *get_dtdURL)(IXMLDocument *This,BSTR *p);
++      HRESULT (WINAPI *createElement)(IXMLDocument *This,VARIANT vType,VARIANT var1,IXMLElement **ppElem);
++    END_INTERFACE
++  } IXMLDocumentVtbl;
++  struct IXMLDocument {
++    CONST_VTBL struct IXMLDocumentVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDocument_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDocument_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDocument_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDocument_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDocument_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDocument_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDocument_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDocument_get_root(This,p) (This)->lpVtbl->get_root(This,p)
++#define IXMLDocument_get_fileSize(This,p) (This)->lpVtbl->get_fileSize(This,p)
++#define IXMLDocument_get_fileModifiedDate(This,p) (This)->lpVtbl->get_fileModifiedDate(This,p)
++#define IXMLDocument_get_fileUpdatedDate(This,p) (This)->lpVtbl->get_fileUpdatedDate(This,p)
++#define IXMLDocument_get_URL(This,p) (This)->lpVtbl->get_URL(This,p)
++#define IXMLDocument_put_URL(This,p) (This)->lpVtbl->put_URL(This,p)
++#define IXMLDocument_get_mimeType(This,p) (This)->lpVtbl->get_mimeType(This,p)
++#define IXMLDocument_get_readyState(This,pl) (This)->lpVtbl->get_readyState(This,pl)
++#define IXMLDocument_get_charset(This,p) (This)->lpVtbl->get_charset(This,p)
++#define IXMLDocument_put_charset(This,p) (This)->lpVtbl->put_charset(This,p)
++#define IXMLDocument_get_version(This,p) (This)->lpVtbl->get_version(This,p)
++#define IXMLDocument_get_doctype(This,p) (This)->lpVtbl->get_doctype(This,p)
++#define IXMLDocument_get_dtdURL(This,p) (This)->lpVtbl->get_dtdURL(This,p)
++#define IXMLDocument_createElement(This,vType,var1,ppElem) (This)->lpVtbl->createElement(This,vType,var1,ppElem)
++#endif
++#endif
++  HRESULT WINAPI IXMLDocument_get_root_Proxy(IXMLDocument *This,IXMLElement **p);
++  void __RPC_STUB IXMLDocument_get_root_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_get_fileSize_Proxy(IXMLDocument *This,BSTR *p);
++  void __RPC_STUB IXMLDocument_get_fileSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_get_fileModifiedDate_Proxy(IXMLDocument *This,BSTR *p);
++  void __RPC_STUB IXMLDocument_get_fileModifiedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_get_fileUpdatedDate_Proxy(IXMLDocument *This,BSTR *p);
++  void __RPC_STUB IXMLDocument_get_fileUpdatedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_get_URL_Proxy(IXMLDocument *This,BSTR *p);
++  void __RPC_STUB IXMLDocument_get_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_put_URL_Proxy(IXMLDocument *This,BSTR p);
++  void __RPC_STUB IXMLDocument_put_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_get_mimeType_Proxy(IXMLDocument *This,BSTR *p);
++  void __RPC_STUB IXMLDocument_get_mimeType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_get_readyState_Proxy(IXMLDocument *This,long *pl);
++  void __RPC_STUB IXMLDocument_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_get_charset_Proxy(IXMLDocument *This,BSTR *p);
++  void __RPC_STUB IXMLDocument_get_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_put_charset_Proxy(IXMLDocument *This,BSTR p);
++  void __RPC_STUB IXMLDocument_put_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_get_version_Proxy(IXMLDocument *This,BSTR *p);
++  void __RPC_STUB IXMLDocument_get_version_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_get_doctype_Proxy(IXMLDocument *This,BSTR *p);
++  void __RPC_STUB IXMLDocument_get_doctype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_get_dtdURL_Proxy(IXMLDocument *This,BSTR *p);
++  void __RPC_STUB IXMLDocument_get_dtdURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument_createElement_Proxy(IXMLDocument *This,VARIANT vType,VARIANT var1,IXMLElement **ppElem);
++  void __RPC_STUB IXMLDocument_createElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLDocument2_INTERFACE_DEFINED__
++#define __IXMLDocument2_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLDocument2;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLDocument2 : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_root(IXMLElement2 **p) = 0;
++    virtual HRESULT WINAPI get_fileSize(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_fileModifiedDate(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_fileUpdatedDate(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_URL(BSTR *p) = 0;
++    virtual HRESULT WINAPI put_URL(BSTR p) = 0;
++    virtual HRESULT WINAPI get_mimeType(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_readyState(long *pl) = 0;
++    virtual HRESULT WINAPI get_charset(BSTR *p) = 0;
++    virtual HRESULT WINAPI put_charset(BSTR p) = 0;
++    virtual HRESULT WINAPI get_version(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_doctype(BSTR *p) = 0;
++    virtual HRESULT WINAPI get_dtdURL(BSTR *p) = 0;
++    virtual HRESULT WINAPI createElement(VARIANT vType,VARIANT var1,IXMLElement2 **ppElem) = 0;
++    virtual HRESULT WINAPI get_async(VARIANT_BOOL *pf) = 0;
++    virtual HRESULT WINAPI put_async(VARIANT_BOOL f) = 0;
++  };
++#else
++  typedef struct IXMLDocument2Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLDocument2 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLDocument2 *This);
++      ULONG (WINAPI *Release)(IXMLDocument2 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDocument2 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLDocument2 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLDocument2 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLDocument2 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_root)(IXMLDocument2 *This,IXMLElement2 **p);
++      HRESULT (WINAPI *get_fileSize)(IXMLDocument2 *This,BSTR *p);
++      HRESULT (WINAPI *get_fileModifiedDate)(IXMLDocument2 *This,BSTR *p);
++      HRESULT (WINAPI *get_fileUpdatedDate)(IXMLDocument2 *This,BSTR *p);
++      HRESULT (WINAPI *get_URL)(IXMLDocument2 *This,BSTR *p);
++      HRESULT (WINAPI *put_URL)(IXMLDocument2 *This,BSTR p);
++      HRESULT (WINAPI *get_mimeType)(IXMLDocument2 *This,BSTR *p);
++      HRESULT (WINAPI *get_readyState)(IXMLDocument2 *This,long *pl);
++      HRESULT (WINAPI *get_charset)(IXMLDocument2 *This,BSTR *p);
++      HRESULT (WINAPI *put_charset)(IXMLDocument2 *This,BSTR p);
++      HRESULT (WINAPI *get_version)(IXMLDocument2 *This,BSTR *p);
++      HRESULT (WINAPI *get_doctype)(IXMLDocument2 *This,BSTR *p);
++      HRESULT (WINAPI *get_dtdURL)(IXMLDocument2 *This,BSTR *p);
++      HRESULT (WINAPI *createElement)(IXMLDocument2 *This,VARIANT vType,VARIANT var1,IXMLElement2 **ppElem);
++      HRESULT (WINAPI *get_async)(IXMLDocument2 *This,VARIANT_BOOL *pf);
++      HRESULT (WINAPI *put_async)(IXMLDocument2 *This,VARIANT_BOOL f);
++    END_INTERFACE
++  } IXMLDocument2Vtbl;
++  struct IXMLDocument2 {
++    CONST_VTBL struct IXMLDocument2Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLDocument2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLDocument2_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLDocument2_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLDocument2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLDocument2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLDocument2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLDocument2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLDocument2_get_root(This,p) (This)->lpVtbl->get_root(This,p)
++#define IXMLDocument2_get_fileSize(This,p) (This)->lpVtbl->get_fileSize(This,p)
++#define IXMLDocument2_get_fileModifiedDate(This,p) (This)->lpVtbl->get_fileModifiedDate(This,p)
++#define IXMLDocument2_get_fileUpdatedDate(This,p) (This)->lpVtbl->get_fileUpdatedDate(This,p)
++#define IXMLDocument2_get_URL(This,p) (This)->lpVtbl->get_URL(This,p)
++#define IXMLDocument2_put_URL(This,p) (This)->lpVtbl->put_URL(This,p)
++#define IXMLDocument2_get_mimeType(This,p) (This)->lpVtbl->get_mimeType(This,p)
++#define IXMLDocument2_get_readyState(This,pl) (This)->lpVtbl->get_readyState(This,pl)
++#define IXMLDocument2_get_charset(This,p) (This)->lpVtbl->get_charset(This,p)
++#define IXMLDocument2_put_charset(This,p) (This)->lpVtbl->put_charset(This,p)
++#define IXMLDocument2_get_version(This,p) (This)->lpVtbl->get_version(This,p)
++#define IXMLDocument2_get_doctype(This,p) (This)->lpVtbl->get_doctype(This,p)
++#define IXMLDocument2_get_dtdURL(This,p) (This)->lpVtbl->get_dtdURL(This,p)
++#define IXMLDocument2_createElement(This,vType,var1,ppElem) (This)->lpVtbl->createElement(This,vType,var1,ppElem)
++#define IXMLDocument2_get_async(This,pf) (This)->lpVtbl->get_async(This,pf)
++#define IXMLDocument2_put_async(This,f) (This)->lpVtbl->put_async(This,f)
++#endif
++#endif
++  HRESULT WINAPI IXMLDocument2_get_root_Proxy(IXMLDocument2 *This,IXMLElement2 **p);
++  void __RPC_STUB IXMLDocument2_get_root_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_get_fileSize_Proxy(IXMLDocument2 *This,BSTR *p);
++  void __RPC_STUB IXMLDocument2_get_fileSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_get_fileModifiedDate_Proxy(IXMLDocument2 *This,BSTR *p);
++  void __RPC_STUB IXMLDocument2_get_fileModifiedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_get_fileUpdatedDate_Proxy(IXMLDocument2 *This,BSTR *p);
++  void __RPC_STUB IXMLDocument2_get_fileUpdatedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_get_URL_Proxy(IXMLDocument2 *This,BSTR *p);
++  void __RPC_STUB IXMLDocument2_get_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_put_URL_Proxy(IXMLDocument2 *This,BSTR p);
++  void __RPC_STUB IXMLDocument2_put_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_get_mimeType_Proxy(IXMLDocument2 *This,BSTR *p);
++  void __RPC_STUB IXMLDocument2_get_mimeType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_get_readyState_Proxy(IXMLDocument2 *This,long *pl);
++  void __RPC_STUB IXMLDocument2_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_get_charset_Proxy(IXMLDocument2 *This,BSTR *p);
++  void __RPC_STUB IXMLDocument2_get_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_put_charset_Proxy(IXMLDocument2 *This,BSTR p);
++  void __RPC_STUB IXMLDocument2_put_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_get_version_Proxy(IXMLDocument2 *This,BSTR *p);
++  void __RPC_STUB IXMLDocument2_get_version_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_get_doctype_Proxy(IXMLDocument2 *This,BSTR *p);
++  void __RPC_STUB IXMLDocument2_get_doctype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_get_dtdURL_Proxy(IXMLDocument2 *This,BSTR *p);
++  void __RPC_STUB IXMLDocument2_get_dtdURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_createElement_Proxy(IXMLDocument2 *This,VARIANT vType,VARIANT var1,IXMLElement2 **ppElem);
++  void __RPC_STUB IXMLDocument2_createElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_get_async_Proxy(IXMLDocument2 *This,VARIANT_BOOL *pf);
++  void __RPC_STUB IXMLDocument2_get_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLDocument2_put_async_Proxy(IXMLDocument2 *This,VARIANT_BOOL f);
++  void __RPC_STUB IXMLDocument2_put_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLElement_INTERFACE_DEFINED__
++#define __IXMLElement_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLElement;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLElement : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_tagName(BSTR *p) = 0;
++    virtual HRESULT WINAPI put_tagName(BSTR p) = 0;
++    virtual HRESULT WINAPI get_parent(IXMLElement **ppParent) = 0;
++    virtual HRESULT WINAPI setAttribute(BSTR strPropertyName,VARIANT PropertyValue) = 0;
++    virtual HRESULT WINAPI getAttribute(BSTR strPropertyName,VARIANT *PropertyValue) = 0;
++    virtual HRESULT WINAPI removeAttribute(BSTR strPropertyName) = 0;
++    virtual HRESULT WINAPI get_children(IXMLElementCollection **pp) = 0;
++    virtual HRESULT WINAPI get_type(long *plType) = 0;
++    virtual HRESULT WINAPI get_text(BSTR *p) = 0;
++    virtual HRESULT WINAPI put_text(BSTR p) = 0;
++    virtual HRESULT WINAPI addChild(IXMLElement *pChildElem,long lIndex,long lReserved) = 0;
++    virtual HRESULT WINAPI removeChild(IXMLElement *pChildElem) = 0;
++  };
++#else
++  typedef struct IXMLElementVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLElement *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLElement *This);
++      ULONG (WINAPI *Release)(IXMLElement *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLElement *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLElement *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLElement *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLElement *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_tagName)(IXMLElement *This,BSTR *p);
++      HRESULT (WINAPI *put_tagName)(IXMLElement *This,BSTR p);
++      HRESULT (WINAPI *get_parent)(IXMLElement *This,IXMLElement **ppParent);
++      HRESULT (WINAPI *setAttribute)(IXMLElement *This,BSTR strPropertyName,VARIANT PropertyValue);
++      HRESULT (WINAPI *getAttribute)(IXMLElement *This,BSTR strPropertyName,VARIANT *PropertyValue);
++      HRESULT (WINAPI *removeAttribute)(IXMLElement *This,BSTR strPropertyName);
++      HRESULT (WINAPI *get_children)(IXMLElement *This,IXMLElementCollection **pp);
++      HRESULT (WINAPI *get_type)(IXMLElement *This,long *plType);
++      HRESULT (WINAPI *get_text)(IXMLElement *This,BSTR *p);
++      HRESULT (WINAPI *put_text)(IXMLElement *This,BSTR p);
++      HRESULT (WINAPI *addChild)(IXMLElement *This,IXMLElement *pChildElem,long lIndex,long lReserved);
++      HRESULT (WINAPI *removeChild)(IXMLElement *This,IXMLElement *pChildElem);
++    END_INTERFACE
++  } IXMLElementVtbl;
++  struct IXMLElement {
++    CONST_VTBL struct IXMLElementVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLElement_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLElement_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLElement_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLElement_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLElement_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLElement_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLElement_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLElement_get_tagName(This,p) (This)->lpVtbl->get_tagName(This,p)
++#define IXMLElement_put_tagName(This,p) (This)->lpVtbl->put_tagName(This,p)
++#define IXMLElement_get_parent(This,ppParent) (This)->lpVtbl->get_parent(This,ppParent)
++#define IXMLElement_setAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->setAttribute(This,strPropertyName,PropertyValue)
++#define IXMLElement_getAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->getAttribute(This,strPropertyName,PropertyValue)
++#define IXMLElement_removeAttribute(This,strPropertyName) (This)->lpVtbl->removeAttribute(This,strPropertyName)
++#define IXMLElement_get_children(This,pp) (This)->lpVtbl->get_children(This,pp)
++#define IXMLElement_get_type(This,plType) (This)->lpVtbl->get_type(This,plType)
++#define IXMLElement_get_text(This,p) (This)->lpVtbl->get_text(This,p)
++#define IXMLElement_put_text(This,p) (This)->lpVtbl->put_text(This,p)
++#define IXMLElement_addChild(This,pChildElem,lIndex,lReserved) (This)->lpVtbl->addChild(This,pChildElem,lIndex,lReserved)
++#define IXMLElement_removeChild(This,pChildElem) (This)->lpVtbl->removeChild(This,pChildElem)
++#endif
++#endif
++  HRESULT WINAPI IXMLElement_get_tagName_Proxy(IXMLElement *This,BSTR *p);
++  void __RPC_STUB IXMLElement_get_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement_put_tagName_Proxy(IXMLElement *This,BSTR p);
++  void __RPC_STUB IXMLElement_put_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement_get_parent_Proxy(IXMLElement *This,IXMLElement **ppParent);
++  void __RPC_STUB IXMLElement_get_parent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement_setAttribute_Proxy(IXMLElement *This,BSTR strPropertyName,VARIANT PropertyValue);
++  void __RPC_STUB IXMLElement_setAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement_getAttribute_Proxy(IXMLElement *This,BSTR strPropertyName,VARIANT *PropertyValue);
++  void __RPC_STUB IXMLElement_getAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement_removeAttribute_Proxy(IXMLElement *This,BSTR strPropertyName);
++  void __RPC_STUB IXMLElement_removeAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement_get_children_Proxy(IXMLElement *This,IXMLElementCollection **pp);
++  void __RPC_STUB IXMLElement_get_children_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement_get_type_Proxy(IXMLElement *This,long *plType);
++  void __RPC_STUB IXMLElement_get_type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement_get_text_Proxy(IXMLElement *This,BSTR *p);
++  void __RPC_STUB IXMLElement_get_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement_put_text_Proxy(IXMLElement *This,BSTR p);
++  void __RPC_STUB IXMLElement_put_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement_addChild_Proxy(IXMLElement *This,IXMLElement *pChildElem,long lIndex,long lReserved);
++  void __RPC_STUB IXMLElement_addChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement_removeChild_Proxy(IXMLElement *This,IXMLElement *pChildElem);
++  void __RPC_STUB IXMLElement_removeChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLElement2_INTERFACE_DEFINED__
++#define __IXMLElement2_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLElement2;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLElement2 : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_tagName(BSTR *p) = 0;
++    virtual HRESULT WINAPI put_tagName(BSTR p) = 0;
++    virtual HRESULT WINAPI get_parent(IXMLElement2 **ppParent) = 0;
++    virtual HRESULT WINAPI setAttribute(BSTR strPropertyName,VARIANT PropertyValue) = 0;
++    virtual HRESULT WINAPI getAttribute(BSTR strPropertyName,VARIANT *PropertyValue) = 0;
++    virtual HRESULT WINAPI removeAttribute(BSTR strPropertyName) = 0;
++    virtual HRESULT WINAPI get_children(IXMLElementCollection **pp) = 0;
++    virtual HRESULT WINAPI get_type(long *plType) = 0;
++    virtual HRESULT WINAPI get_text(BSTR *p) = 0;
++    virtual HRESULT WINAPI put_text(BSTR p) = 0;
++    virtual HRESULT WINAPI addChild(IXMLElement2 *pChildElem,long lIndex,long lReserved) = 0;
++    virtual HRESULT WINAPI removeChild(IXMLElement2 *pChildElem) = 0;
++    virtual HRESULT WINAPI get_attributes(IXMLElementCollection **pp) = 0;
++  };
++#else
++  typedef struct IXMLElement2Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLElement2 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLElement2 *This);
++      ULONG (WINAPI *Release)(IXMLElement2 *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLElement2 *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLElement2 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLElement2 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLElement2 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_tagName)(IXMLElement2 *This,BSTR *p);
++      HRESULT (WINAPI *put_tagName)(IXMLElement2 *This,BSTR p);
++      HRESULT (WINAPI *get_parent)(IXMLElement2 *This,IXMLElement2 **ppParent);
++      HRESULT (WINAPI *setAttribute)(IXMLElement2 *This,BSTR strPropertyName,VARIANT PropertyValue);
++      HRESULT (WINAPI *getAttribute)(IXMLElement2 *This,BSTR strPropertyName,VARIANT *PropertyValue);
++      HRESULT (WINAPI *removeAttribute)(IXMLElement2 *This,BSTR strPropertyName);
++      HRESULT (WINAPI *get_children)(IXMLElement2 *This,IXMLElementCollection **pp);
++      HRESULT (WINAPI *get_type)(IXMLElement2 *This,long *plType);
++      HRESULT (WINAPI *get_text)(IXMLElement2 *This,BSTR *p);
++      HRESULT (WINAPI *put_text)(IXMLElement2 *This,BSTR p);
++      HRESULT (WINAPI *addChild)(IXMLElement2 *This,IXMLElement2 *pChildElem,long lIndex,long lReserved);
++      HRESULT (WINAPI *removeChild)(IXMLElement2 *This,IXMLElement2 *pChildElem);
++      HRESULT (WINAPI *get_attributes)(IXMLElement2 *This,IXMLElementCollection **pp);
++    END_INTERFACE
++  } IXMLElement2Vtbl;
++  struct IXMLElement2 {
++    CONST_VTBL struct IXMLElement2Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLElement2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLElement2_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLElement2_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLElement2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLElement2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLElement2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLElement2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLElement2_get_tagName(This,p) (This)->lpVtbl->get_tagName(This,p)
++#define IXMLElement2_put_tagName(This,p) (This)->lpVtbl->put_tagName(This,p)
++#define IXMLElement2_get_parent(This,ppParent) (This)->lpVtbl->get_parent(This,ppParent)
++#define IXMLElement2_setAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->setAttribute(This,strPropertyName,PropertyValue)
++#define IXMLElement2_getAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->getAttribute(This,strPropertyName,PropertyValue)
++#define IXMLElement2_removeAttribute(This,strPropertyName) (This)->lpVtbl->removeAttribute(This,strPropertyName)
++#define IXMLElement2_get_children(This,pp) (This)->lpVtbl->get_children(This,pp)
++#define IXMLElement2_get_type(This,plType) (This)->lpVtbl->get_type(This,plType)
++#define IXMLElement2_get_text(This,p) (This)->lpVtbl->get_text(This,p)
++#define IXMLElement2_put_text(This,p) (This)->lpVtbl->put_text(This,p)
++#define IXMLElement2_addChild(This,pChildElem,lIndex,lReserved) (This)->lpVtbl->addChild(This,pChildElem,lIndex,lReserved)
++#define IXMLElement2_removeChild(This,pChildElem) (This)->lpVtbl->removeChild(This,pChildElem)
++#define IXMLElement2_get_attributes(This,pp) (This)->lpVtbl->get_attributes(This,pp)
++#endif
++#endif
++  HRESULT WINAPI IXMLElement2_get_tagName_Proxy(IXMLElement2 *This,BSTR *p);
++  void __RPC_STUB IXMLElement2_get_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_put_tagName_Proxy(IXMLElement2 *This,BSTR p);
++  void __RPC_STUB IXMLElement2_put_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_get_parent_Proxy(IXMLElement2 *This,IXMLElement2 **ppParent);
++  void __RPC_STUB IXMLElement2_get_parent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_setAttribute_Proxy(IXMLElement2 *This,BSTR strPropertyName,VARIANT PropertyValue);
++  void __RPC_STUB IXMLElement2_setAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_getAttribute_Proxy(IXMLElement2 *This,BSTR strPropertyName,VARIANT *PropertyValue);
++  void __RPC_STUB IXMLElement2_getAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_removeAttribute_Proxy(IXMLElement2 *This,BSTR strPropertyName);
++  void __RPC_STUB IXMLElement2_removeAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_get_children_Proxy(IXMLElement2 *This,IXMLElementCollection **pp);
++  void __RPC_STUB IXMLElement2_get_children_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_get_type_Proxy(IXMLElement2 *This,long *plType);
++  void __RPC_STUB IXMLElement2_get_type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_get_text_Proxy(IXMLElement2 *This,BSTR *p);
++  void __RPC_STUB IXMLElement2_get_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_put_text_Proxy(IXMLElement2 *This,BSTR p);
++  void __RPC_STUB IXMLElement2_put_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_addChild_Proxy(IXMLElement2 *This,IXMLElement2 *pChildElem,long lIndex,long lReserved);
++  void __RPC_STUB IXMLElement2_addChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_removeChild_Proxy(IXMLElement2 *This,IXMLElement2 *pChildElem);
++  void __RPC_STUB IXMLElement2_removeChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLElement2_get_attributes_Proxy(IXMLElement2 *This,IXMLElementCollection **pp);
++  void __RPC_STUB IXMLElement2_get_attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLAttribute_INTERFACE_DEFINED__
++#define __IXMLAttribute_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLAttribute;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLAttribute : public IDispatch {
++  public:
++    virtual HRESULT WINAPI get_name(BSTR *n) = 0;
++    virtual HRESULT WINAPI get_value(BSTR *v) = 0;
++  };
++#else
++  typedef struct IXMLAttributeVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLAttribute *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLAttribute *This);
++      ULONG (WINAPI *Release)(IXMLAttribute *This);
++      HRESULT (WINAPI *GetTypeInfoCount)(IXMLAttribute *This,UINT *pctinfo);
++      HRESULT (WINAPI *GetTypeInfo)(IXMLAttribute *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
++      HRESULT (WINAPI *GetIDsOfNames)(IXMLAttribute *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
++      HRESULT (WINAPI *Invoke)(IXMLAttribute *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
++      HRESULT (WINAPI *get_name)(IXMLAttribute *This,BSTR *n);
++      HRESULT (WINAPI *get_value)(IXMLAttribute *This,BSTR *v);
++    END_INTERFACE
++  } IXMLAttributeVtbl;
++  struct IXMLAttribute {
++    CONST_VTBL struct IXMLAttributeVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLAttribute_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLAttribute_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLAttribute_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLAttribute_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
++#define IXMLAttribute_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
++#define IXMLAttribute_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
++#define IXMLAttribute_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
++#define IXMLAttribute_get_name(This,n) (This)->lpVtbl->get_name(This,n)
++#define IXMLAttribute_get_value(This,v) (This)->lpVtbl->get_value(This,v)
++#endif
++#endif
++  HRESULT WINAPI IXMLAttribute_get_name_Proxy(IXMLAttribute *This,BSTR *n);
++  void __RPC_STUB IXMLAttribute_get_name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IXMLAttribute_get_value_Proxy(IXMLAttribute *This,BSTR *v);
++  void __RPC_STUB IXMLAttribute_get_value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IXMLError_INTERFACE_DEFINED__
++#define __IXMLError_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IXMLError;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IXMLError : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetErrorInfo(XML_ERROR *pErrorReturn) = 0;
++  };
++#else
++  typedef struct IXMLErrorVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IXMLError *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IXMLError *This);
++      ULONG (WINAPI *Release)(IXMLError *This);
++      HRESULT (WINAPI *GetErrorInfo)(IXMLError *This,XML_ERROR *pErrorReturn);
++    END_INTERFACE
++  } IXMLErrorVtbl;
++  struct IXMLError {
++    CONST_VTBL struct IXMLErrorVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IXMLError_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IXMLError_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IXMLError_Release(This) (This)->lpVtbl->Release(This)
++#define IXMLError_GetErrorInfo(This,pErrorReturn) (This)->lpVtbl->GetErrorInfo(This,pErrorReturn)
++#endif
++#endif
++  HRESULT WINAPI IXMLError_GetErrorInfo_Proxy(IXMLError *This,XML_ERROR *pErrorReturn);
++  void __RPC_STUB IXMLError_GetErrorInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++  EXTERN_C const CLSID CLSID_XMLDocument;
++#ifdef __cplusplus
++  class XMLDocument;
++#endif
++#endif
++
++#ifdef __cplusplus
++}
++#endif
++#endif
+diff -urN /home/jesus/ooo-build/build/ooo310-m14/connectivity/source/drivers/ado/oledb.h connectivity/source/drivers/ado/oledb.h
+--- /dev/null	1970-01-01 01:00:00.000000000 +0100
++++ connectivity/source/drivers/ado/oledb.h	2009-07-22 17:25:50.000000000 +0200
+@@ -0,0 +1,5718 @@
++/**
++ * This file has no copyright assigned and is placed in the Public Domain.
++ * This file is part of the w64 mingw-runtime package.
++ * No warranty is given; refer to the file DISCLAIMER within this package.
++ */
++#ifndef __REQUIRED_RPCNDR_H_VERSION__
++#define __REQUIRED_RPCNDR_H_VERSION__ 440
++#endif
++
++#include "rpc.h"
++#include "rpcndr.h"
++
++#ifndef __RPCNDR_H_VERSION__
++#error This stub requires an updated version of <rpcndr.h>
++#endif
++
++#ifndef COM_NO_WINDOWS_H
++#include "windows.h"
++#include "ole2.h"
++#endif
++
++#ifndef __oledb_h__
++#define __oledb_h__
++
++#ifndef __IAccessor_FWD_DEFINED__
++#define __IAccessor_FWD_DEFINED__
++typedef struct IAccessor IAccessor;
++#endif
++
++#ifndef __IRowset_FWD_DEFINED__
++#define __IRowset_FWD_DEFINED__
++typedef struct IRowset IRowset;
++#endif
++
++#ifndef __IRowsetInfo_FWD_DEFINED__
++#define __IRowsetInfo_FWD_DEFINED__
++typedef struct IRowsetInfo IRowsetInfo;
++#endif
++
++#ifndef __IRowsetLocate_FWD_DEFINED__
++#define __IRowsetLocate_FWD_DEFINED__
++typedef struct IRowsetLocate IRowsetLocate;
++#endif
++
++#ifndef __IRowsetResynch_FWD_DEFINED__
++#define __IRowsetResynch_FWD_DEFINED__
++typedef struct IRowsetResynch IRowsetResynch;
++#endif
++
++#ifndef __IRowsetScroll_FWD_DEFINED__
++#define __IRowsetScroll_FWD_DEFINED__
++typedef struct IRowsetScroll IRowsetScroll;
++#endif
++
++#ifndef __IChapteredRowset_FWD_DEFINED__
++#define __IChapteredRowset_FWD_DEFINED__
++typedef struct IChapteredRowset IChapteredRowset;
++#endif
++
++#ifndef __IRowsetFind_FWD_DEFINED__
++#define __IRowsetFind_FWD_DEFINED__
++typedef struct IRowsetFind IRowsetFind;
++#endif
++
++#ifndef __IRowPosition_FWD_DEFINED__
++#define __IRowPosition_FWD_DEFINED__
++typedef struct IRowPosition IRowPosition;
++#endif
++
++#ifndef __IRowPositionChange_FWD_DEFINED__
++#define __IRowPositionChange_FWD_DEFINED__
++typedef struct IRowPositionChange IRowPositionChange;
++#endif
++
++#ifndef __IViewRowset_FWD_DEFINED__
++#define __IViewRowset_FWD_DEFINED__
++typedef struct IViewRowset IViewRowset;
++#endif
++
++#ifndef __IViewChapter_FWD_DEFINED__
++#define __IViewChapter_FWD_DEFINED__
++typedef struct IViewChapter IViewChapter;
++#endif
++
++#ifndef __IViewSort_FWD_DEFINED__
++#define __IViewSort_FWD_DEFINED__
++typedef struct IViewSort IViewSort;
++#endif
++
++#ifndef __IViewFilter_FWD_DEFINED__
++#define __IViewFilter_FWD_DEFINED__
++typedef struct IViewFilter IViewFilter;
++#endif
++
++#ifndef __IRowsetView_FWD_DEFINED__
++#define __IRowsetView_FWD_DEFINED__
++typedef struct IRowsetView IRowsetView;
++#endif
++
++#ifndef __IRowsetExactScroll_FWD_DEFINED__
++#define __IRowsetExactScroll_FWD_DEFINED__
++typedef struct IRowsetExactScroll IRowsetExactScroll;
++#endif
++
++#ifndef __IRowsetChange_FWD_DEFINED__
++#define __IRowsetChange_FWD_DEFINED__
++typedef struct IRowsetChange IRowsetChange;
++#endif
++
++#ifndef __IRowsetUpdate_FWD_DEFINED__
++#define __IRowsetUpdate_FWD_DEFINED__
++typedef struct IRowsetUpdate IRowsetUpdate;
++#endif
++
++#ifndef __IRowsetIdentity_FWD_DEFINED__
++#define __IRowsetIdentity_FWD_DEFINED__
++typedef struct IRowsetIdentity IRowsetIdentity;
++#endif
++
++#ifndef __IRowsetNotify_FWD_DEFINED__
++#define __IRowsetNotify_FWD_DEFINED__
++typedef struct IRowsetNotify IRowsetNotify;
++#endif
++
++#ifndef __IRowsetIndex_FWD_DEFINED__
++#define __IRowsetIndex_FWD_DEFINED__
++typedef struct IRowsetIndex IRowsetIndex;
++#endif
++
++#ifndef __ICommand_FWD_DEFINED__
++#define __ICommand_FWD_DEFINED__
++typedef struct ICommand ICommand;
++#endif
++
++#ifndef __IMultipleResults_FWD_DEFINED__
++#define __IMultipleResults_FWD_DEFINED__
++typedef struct IMultipleResults IMultipleResults;
++#endif
++
++#ifndef __IConvertType_FWD_DEFINED__
++#define __IConvertType_FWD_DEFINED__
++typedef struct IConvertType IConvertType;
++#endif
++
++#ifndef __ICommandPrepare_FWD_DEFINED__
++#define __ICommandPrepare_FWD_DEFINED__
++typedef struct ICommandPrepare ICommandPrepare;
++#endif
++
++#ifndef __ICommandProperties_FWD_DEFINED__
++#define __ICommandProperties_FWD_DEFINED__
++typedef struct ICommandProperties ICommandProperties;
++#endif
++
++#ifndef __ICommandText_FWD_DEFINED__
++#define __ICommandText_FWD_DEFINED__
++typedef struct ICommandText ICommandText;
++#endif
++
++#ifndef __ICommandWithParameters_FWD_DEFINED__
++#define __ICommandWithParameters_FWD_DEFINED__
++typedef struct ICommandWithParameters ICommandWithParameters;
++#endif
++
++#ifndef __IColumnsRowset_FWD_DEFINED__
++#define __IColumnsRowset_FWD_DEFINED__
++typedef struct IColumnsRowset IColumnsRowset;
++#endif
++
++#ifndef __IColumnsInfo_FWD_DEFINED__
++#define __IColumnsInfo_FWD_DEFINED__
++typedef struct IColumnsInfo IColumnsInfo;
++#endif
++
++#ifndef __IDBCreateCommand_FWD_DEFINED__
++#define __IDBCreateCommand_FWD_DEFINED__
++typedef struct IDBCreateCommand IDBCreateCommand;
++#endif
++
++#ifndef __IDBCreateSession_FWD_DEFINED__
++#define __IDBCreateSession_FWD_DEFINED__
++typedef struct IDBCreateSession IDBCreateSession;
++#endif
++
++#ifndef __ISourcesRowset_FWD_DEFINED__
++#define __ISourcesRowset_FWD_DEFINED__
++typedef struct ISourcesRowset ISourcesRowset;
++#endif
++
++#ifndef __IDBProperties_FWD_DEFINED__
++#define __IDBProperties_FWD_DEFINED__
++typedef struct IDBProperties IDBProperties;
++#endif
++
++#ifndef __IDBInitialize_FWD_DEFINED__
++#define __IDBInitialize_FWD_DEFINED__
++typedef struct IDBInitialize IDBInitialize;
++#endif
++
++#ifndef __IDBInfo_FWD_DEFINED__
++#define __IDBInfo_FWD_DEFINED__
++typedef struct IDBInfo IDBInfo;
++#endif
++
++#ifndef __IDBDataSourceAdmin_FWD_DEFINED__
++#define __IDBDataSourceAdmin_FWD_DEFINED__
++typedef struct IDBDataSourceAdmin IDBDataSourceAdmin;
++#endif
++
++#ifndef __IDBAsynchNotify_FWD_DEFINED__
++#define __IDBAsynchNotify_FWD_DEFINED__
++typedef struct IDBAsynchNotify IDBAsynchNotify;
++#endif
++
++#ifndef __IDBAsynchStatus_FWD_DEFINED__
++#define __IDBAsynchStatus_FWD_DEFINED__
++typedef struct IDBAsynchStatus IDBAsynchStatus;
++#endif
++
++#ifndef __ISessionProperties_FWD_DEFINED__
++#define __ISessionProperties_FWD_DEFINED__
++typedef struct ISessionProperties ISessionProperties;
++#endif
++
++#ifndef __IIndexDefinition_FWD_DEFINED__
++#define __IIndexDefinition_FWD_DEFINED__
++typedef struct IIndexDefinition IIndexDefinition;
++#endif
++
++#ifndef __ITableDefinition_FWD_DEFINED__
++#define __ITableDefinition_FWD_DEFINED__
++typedef struct ITableDefinition ITableDefinition;
++#endif
++
++#ifndef __IOpenRowset_FWD_DEFINED__
++#define __IOpenRowset_FWD_DEFINED__
++typedef struct IOpenRowset IOpenRowset;
++#endif
++
++#ifndef __IDBSchemaRowset_FWD_DEFINED__
++#define __IDBSchemaRowset_FWD_DEFINED__
++typedef struct IDBSchemaRowset IDBSchemaRowset;
++#endif
++
++#ifndef __IMDDataset_FWD_DEFINED__
++#define __IMDDataset_FWD_DEFINED__
++typedef struct IMDDataset IMDDataset;
++#endif
++
++#ifndef __IMDFind_FWD_DEFINED__
++#define __IMDFind_FWD_DEFINED__
++typedef struct IMDFind IMDFind;
++#endif
++
++#ifndef __IMDRangeRowset_FWD_DEFINED__
++#define __IMDRangeRowset_FWD_DEFINED__
++typedef struct IMDRangeRowset IMDRangeRowset;
++#endif
++
++#ifndef __IAlterTable_FWD_DEFINED__
++#define __IAlterTable_FWD_DEFINED__
++typedef struct IAlterTable IAlterTable;
++#endif
++
++#ifndef __IAlterIndex_FWD_DEFINED__
++#define __IAlterIndex_FWD_DEFINED__
++typedef struct IAlterIndex IAlterIndex;
++#endif
++
++#ifndef __IRowsetChapterMember_FWD_DEFINED__
++#define __IRowsetChapterMember_FWD_DEFINED__
++typedef struct IRowsetChapterMember IRowsetChapterMember;
++#endif
++
++#ifndef __ICommandPersist_FWD_DEFINED__
++#define __ICommandPersist_FWD_DEFINED__
++typedef struct ICommandPersist ICommandPersist;
++#endif
++
++#ifndef __IRowsetRefresh_FWD_DEFINED__
++#define __IRowsetRefresh_FWD_DEFINED__
++typedef struct IRowsetRefresh IRowsetRefresh;
++#endif
++
++#ifndef __IParentRowset_FWD_DEFINED__
++#define __IParentRowset_FWD_DEFINED__
++typedef struct IParentRowset IParentRowset;
++#endif
++
++#ifndef __IErrorRecords_FWD_DEFINED__
++#define __IErrorRecords_FWD_DEFINED__
++typedef struct IErrorRecords IErrorRecords;
++#endif
++
++#ifndef __IErrorLookup_FWD_DEFINED__
++#define __IErrorLookup_FWD_DEFINED__
++typedef struct IErrorLookup IErrorLookup;
++#endif
++
++#ifndef __ISQLErrorInfo_FWD_DEFINED__
++#define __ISQLErrorInfo_FWD_DEFINED__
++typedef struct ISQLErrorInfo ISQLErrorInfo;
++#endif
++
++#ifndef __IGetDataSource_FWD_DEFINED__
++#define __IGetDataSource_FWD_DEFINED__
++typedef struct IGetDataSource IGetDataSource;
++#endif
++
++#ifndef __ITransactionLocal_FWD_DEFINED__
++#define __ITransactionLocal_FWD_DEFINED__
++typedef struct ITransactionLocal ITransactionLocal;
++#endif
++
++#ifndef __ITransactionJoin_FWD_DEFINED__
++#define __ITransactionJoin_FWD_DEFINED__
++typedef struct ITransactionJoin ITransactionJoin;
++#endif
++
++#ifndef __ITransactionObject_FWD_DEFINED__
++#define __ITransactionObject_FWD_DEFINED__
++typedef struct ITransactionObject ITransactionObject;
++#endif
++
++#ifndef __ITrusteeAdmin_FWD_DEFINED__
++#define __ITrusteeAdmin_FWD_DEFINED__
++typedef struct ITrusteeAdmin ITrusteeAdmin;
++#endif
++
++#ifndef __ITrusteeGroupAdmin_FWD_DEFINED__
++#define __ITrusteeGroupAdmin_FWD_DEFINED__
++typedef struct ITrusteeGroupAdmin ITrusteeGroupAdmin;
++#endif
++
++#ifndef __IObjectAccessControl_FWD_DEFINED__
++#define __IObjectAccessControl_FWD_DEFINED__
++typedef struct IObjectAccessControl IObjectAccessControl;
++#endif
++
++#ifndef __ISecurityInfo_FWD_DEFINED__
++#define __ISecurityInfo_FWD_DEFINED__
++typedef struct ISecurityInfo ISecurityInfo;
++#endif
++
++#ifndef __ITableCreation_FWD_DEFINED__
++#define __ITableCreation_FWD_DEFINED__
++typedef struct ITableCreation ITableCreation;
++#endif
++
++#ifndef __ITableDefinitionWithConstraints_FWD_DEFINED__
++#define __ITableDefinitionWithConstraints_FWD_DEFINED__
++typedef struct ITableDefinitionWithConstraints ITableDefinitionWithConstraints;
++#endif
++
++#ifndef __IRow_FWD_DEFINED__
++#define __IRow_FWD_DEFINED__
++typedef struct IRow IRow;
++#endif
++
++#ifndef __IRowChange_FWD_DEFINED__
++#define __IRowChange_FWD_DEFINED__
++typedef struct IRowChange IRowChange;
++#endif
++
++#ifndef __IRowSchemaChange_FWD_DEFINED__
++#define __IRowSchemaChange_FWD_DEFINED__
++typedef struct IRowSchemaChange IRowSchemaChange;
++#endif
++
++#ifndef __IGetRow_FWD_DEFINED__
++#define __IGetRow_FWD_DEFINED__
++typedef struct IGetRow IGetRow;
++#endif
++
++#ifndef __IBindResource_FWD_DEFINED__
++#define __IBindResource_FWD_DEFINED__
++typedef struct IBindResource IBindResource;
++#endif
++
++#ifndef __IScopedOperations_FWD_DEFINED__
++#define __IScopedOperations_FWD_DEFINED__
++typedef struct IScopedOperations IScopedOperations;
++#endif
++
++#ifndef __ICreateRow_FWD_DEFINED__
++#define __ICreateRow_FWD_DEFINED__
++typedef struct ICreateRow ICreateRow;
++#endif
++
++#ifndef __IDBBinderProperties_FWD_DEFINED__
++#define __IDBBinderProperties_FWD_DEFINED__
++typedef struct IDBBinderProperties IDBBinderProperties;
++#endif
++
++#ifndef __IColumnsInfo2_FWD_DEFINED__
++#define __IColumnsInfo2_FWD_DEFINED__
++typedef struct IColumnsInfo2 IColumnsInfo2;
++#endif
++
++#ifndef __IRegisterProvider_FWD_DEFINED__
++#define __IRegisterProvider_FWD_DEFINED__
++typedef struct IRegisterProvider IRegisterProvider;
++#endif
++
++#ifndef __IGetSession_FWD_DEFINED__
++#define __IGetSession_FWD_DEFINED__
++typedef struct IGetSession IGetSession;
++#endif
++
++#ifndef __IGetSourceRow_FWD_DEFINED__
++#define __IGetSourceRow_FWD_DEFINED__
++typedef struct IGetSourceRow IGetSourceRow;
++#endif
++
++#ifndef __IRowsetCurrentIndex_FWD_DEFINED__
++#define __IRowsetCurrentIndex_FWD_DEFINED__
++typedef struct IRowsetCurrentIndex IRowsetCurrentIndex;
++#endif
++
++#ifndef __ICommandStream_FWD_DEFINED__
++#define __ICommandStream_FWD_DEFINED__
++typedef struct ICommandStream ICommandStream;
++#endif
++
++#ifndef __IRowsetBookmark_FWD_DEFINED__
++#define __IRowsetBookmark_FWD_DEFINED__
++typedef struct IRowsetBookmark IRowsetBookmark;
++#endif
++
++#include "wtypes.h"
++#include "oaidl.h"
++#include "ocidl.h"
++//#include "propidl.h"
++#include "transact.h"
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++  void *__RPC_API MIDL_user_allocate(size_t);
++  void __RPC_API MIDL_user_free(void *);
++
++#ifdef _WIN64
++#include <pshpack8.h>
++#else
++#include <pshpack2.h>
++#endif
++
++#ifndef OLEDBVER
++#define OLEDBVER 0x0270
++#endif
++
++#ifdef _WIN64
++  typedef ULONGLONG DBLENGTH;
++  typedef LONGLONG DBROWOFFSET;
++  typedef LONGLONG DBROWCOUNT;
++  typedef ULONGLONG DBCOUNTITEM;
++  typedef ULONGLONG DBORDINAL;
++  typedef LONGLONG DB_LORDINAL;
++  typedef ULONGLONG DBBKMARK;
++  typedef ULONGLONG DBBYTEOFFSET;
++  typedef ULONG DBREFCOUNT;
++  typedef ULONGLONG DB_UPARAMS;
++  typedef LONGLONG DB_LPARAMS;
++  typedef DWORDLONG DBHASHVALUE;
++  typedef DWORDLONG DB_DWRESERVE;
++  typedef LONGLONG DB_LRESERVE;
++  typedef ULONGLONG DB_URESERVE;
++#else
++  typedef ULONG DBLENGTH;
++  typedef LONG DBROWOFFSET;
++  typedef LONG DBROWCOUNT;
++  typedef ULONG DBCOUNTITEM;
++  typedef ULONG DBORDINAL;
++  typedef LONG DB_LORDINAL;
++  typedef ULONG DBBKMARK;
++  typedef ULONG DBBYTEOFFSET;
++  typedef ULONG DBREFCOUNT;
++  typedef ULONG DB_UPARAMS;
++  typedef LONG DB_LPARAMS;
++  typedef DWORD DBHASHVALUE;
++  typedef DWORD DB_DWRESERVE;
++  typedef LONG DB_LRESERVE;
++  typedef ULONG DB_URESERVE;
++#endif
++
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0000_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0000_v0_0_s_ifspec;
++
++#ifndef __DBStructureDefinitions_INTERFACE_DEFINED__
++#define __DBStructureDefinitions_INTERFACE_DEFINED__
++#undef OLEDBDECLSPEC
++#define OLEDBDECLSPEC __declspec(selectany)
++  typedef DWORD DBKIND;
++
++  enum DBKINDENUM {
++    DBKIND_GUID_NAME = 0,DBKIND_GUID_PROPID = DBKIND_GUID_NAME + 1,DBKIND_NAME = DBKIND_GUID_PROPID + 1,DBKIND_PGUID_NAME = DBKIND_NAME + 1,
++    DBKIND_PGUID_PROPID = DBKIND_PGUID_NAME + 1,DBKIND_PROPID = DBKIND_PGUID_PROPID + 1,DBKIND_GUID = DBKIND_PROPID + 1
++  };
++
++  typedef struct tagDBID {
++    union {
++      GUID guid;
++      GUID *pguid;
++    } uGuid;
++    DBKIND eKind;
++    union {
++      LPOLESTR pwszName;
++      ULONG ulPropid;
++    } uName;
++  } DBID;
++
++  typedef struct tagDB_NUMERIC {
++    BYTE precision;
++    BYTE scale;
++    BYTE sign;
++    BYTE val[16 ];
++  } DB_NUMERIC;
++
++#ifndef _ULONGLONG_
++  typedef hyper LONGLONG;
++  typedef MIDL_uhyper ULONGLONG;
++  typedef LONGLONG *PLONGLONG;
++  typedef ULONGLONG *PULONGLONG;
++#endif
++
++#ifndef DECIMAL_NEG
++#ifndef DECIMAL_SETZERO
++  typedef struct tagDEC {
++    USHORT wReserved;
++    union {
++      struct {
++	BYTE scale;
++	BYTE sign;
++      };
++      USHORT signscale;
++    };
++    ULONG Hi32;
++    union {
++      struct {
++	ULONG Lo32;
++	ULONG Mid32;
++      };
++      ULONGLONG Lo64;
++    };
++  } DECIMAL;
++
++#define DECIMAL_NEG ((BYTE)0x80)
++#define DECIMAL_SETZERO(dec) {(dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0;}
++#endif
++#endif
++
++  typedef struct tagDBVECTOR {
++    DBLENGTH size;
++    void *ptr;
++  } DBVECTOR;
++
++  typedef struct tagDBDATE {
++    SHORT year;
++    USHORT month;
++    USHORT day;
++  } DBDATE;
++
++  typedef struct tagDBTIME {
++    USHORT hour;
++    USHORT minute;
++    USHORT second;
++  } DBTIME;
++
++  typedef struct tagDBTIMESTAMP {
++    SHORT year;
++    USHORT month;
++    USHORT day;
++    USHORT hour;
++    USHORT minute;
++    USHORT second;
++    ULONG fraction;
++  } DBTIMESTAMP;
++
++#if (OLEDBVER >= 0x0200)
++#if !defined(_WINBASE_) && !defined(_FILETIME_)
++#define _FILETIME_
++//  typedef struct _FILETIME {
++//    DWORD dwLowDateTime;
++//    DWORD dwHighDateTime;
++//  } FILETIME;
++#endif
++  typedef signed char SBYTE;
++
++  typedef struct tagDB_VARNUMERIC {
++    BYTE precision;
++    SBYTE scale;
++    BYTE sign;
++    BYTE val[1 ];
++  } DB_VARNUMERIC;
++#endif
++
++#if (OLEDBVER >= 0x0210)
++  typedef struct _SEC_OBJECT_ELEMENT {
++    GUID guidObjectType;
++    DBID ObjectID;
++  } SEC_OBJECT_ELEMENT;
++
++  typedef struct _SEC_OBJECT {
++    DWORD cObjects;
++    SEC_OBJECT_ELEMENT *prgObjects;
++  } SEC_OBJECT;
++
++  typedef struct tagDBIMPLICITSESSION {
++    IUnknown *pUnkOuter;
++    IID *piid;
++    IUnknown *pSession;
++  } DBIMPLICITSESSION;
++#endif
++
++  typedef WORD DBTYPE;
++
++  enum DBTYPEENUM {
++    DBTYPE_EMPTY = 0,DBTYPE_NULL = 1,DBTYPE_I2 = 2,DBTYPE_I4 = 3,DBTYPE_R4 = 4,DBTYPE_R8 = 5,DBTYPE_CY = 6,DBTYPE_DATE = 7,
++    DBTYPE_BSTR = 8,DBTYPE_IDISPATCH = 9,DBTYPE_ERROR = 10,DBTYPE_BOOL = 11,DBTYPE_VARIANT = 12,DBTYPE_IUNKNOWN = 13,DBTYPE_DECIMAL = 14,
++    DBTYPE_UI1 = 17,DBTYPE_ARRAY = 0x2000,DBTYPE_BYREF = 0x4000,DBTYPE_I1 = 16,DBTYPE_UI2 = 18,DBTYPE_UI4 = 19,DBTYPE_I8 = 20,DBTYPE_UI8 = 21,
++    DBTYPE_GUID = 72,DBTYPE_VECTOR = 0x1000,DBTYPE_RESERVED = 0x8000,DBTYPE_BYTES = 128,DBTYPE_STR = 129,DBTYPE_WSTR = 130,DBTYPE_NUMERIC = 131,
++    DBTYPE_UDT = 132,DBTYPE_DBDATE = 133,DBTYPE_DBTIME = 134,DBTYPE_DBTIMESTAMP = 135
++  };
++
++#ifdef _WIN64
++#define DBTYPEFOR_DBLENGTH DBTYPE_UI8
++#define DBTYPEFOR_DBROWCOUNT DBTYPE_I8
++#define DBTYPEFOR_DBORDINAL DBTYPE_UI8
++#else
++#define DBTYPEFOR_DBLENGTH DBTYPE_UI4
++#define DBTYPEFOR_DBROWCOUNT DBTYPE_I4
++#define DBTYPEFOR_DBORDINAL DBTYPE_UI4
++#endif
++
++#if (OLEDBVER >= 0x0150)
++  enum DBTYPEENUM15 {
++    DBTYPE_HCHAPTER = 136
++  };
++#endif
++
++#if (OLEDBVER >= 0x0200)
++  enum DBTYPEENUM20 {
++    DBTYPE_FILETIME = 64,DBTYPE_PROPVARIANT = 138,DBTYPE_VARNUMERIC = 139
++  };
++#endif
++
++  typedef DWORD DBPART;
++
++  enum DBPARTENUM {
++    DBPART_INVALID = 0,DBPART_VALUE = 0x1,DBPART_LENGTH = 0x2,DBPART_STATUS = 0x4
++  };
++  typedef DWORD DBPARAMIO;
++
++  enum DBPARAMIOENUM {
++    DBPARAMIO_NOTPARAM = 0,DBPARAMIO_INPUT = 0x1,DBPARAMIO_OUTPUT = 0x2
++  };
++
++#if (OLEDBVER >= 0x0150)
++  typedef DWORD DBBINDFLAG;
++
++  enum DBBINDFLAGENUM {
++    DBBINDFLAG_HTML = 0x1
++  };
++#endif
++
++  typedef DWORD DBMEMOWNER;
++
++  enum DBMEMOWNERENUM {
++    DBMEMOWNER_CLIENTOWNED = 0,DBMEMOWNER_PROVIDEROWNED = 0x1
++  };
++
++  typedef struct tagDBOBJECT {
++    DWORD dwFlags;
++    IID iid;
++  } DBOBJECT;
++
++  typedef DWORD DBSTATUS;
++
++  enum DBSTATUSENUM {
++    DBSTATUS_S_OK = 0,DBSTATUS_E_BADACCESSOR = 1,DBSTATUS_E_CANTCONVERTVALUE = 2,DBSTATUS_S_ISNULL = 3,DBSTATUS_S_TRUNCATED = 4,
++    DBSTATUS_E_SIGNMISMATCH = 5,DBSTATUS_E_DATAOVERFLOW = 6,DBSTATUS_E_CANTCREATE = 7,DBSTATUS_E_UNAVAILABLE = 8,DBSTATUS_E_PERMISSIONDENIED = 9,
++    DBSTATUS_E_INTEGRITYVIOLATION = 10,DBSTATUS_E_SCHEMAVIOLATION = 11,DBSTATUS_E_BADSTATUS = 12,DBSTATUS_S_DEFAULT = 13
++  };
++
++#if (OLEDBVER >= 0x0200)
++  enum DBSTATUSENUM20 {
++    MDSTATUS_S_CELLEMPTY = 14,DBSTATUS_S_IGNORE = 15
++  };
++#endif
++
++#if (OLEDBVER >= 0x0210)
++  enum DBSTATUSENUM21 {
++    DBSTATUS_E_DOESNOTEXIST = 16,DBSTATUS_E_INVALIDURL = 17,DBSTATUS_E_RESOURCELOCKED = 18,DBSTATUS_E_RESOURCEEXISTS = 19,
++    DBSTATUS_E_CANNOTCOMPLETE = 20,DBSTATUS_E_VOLUMENOTFOUND = 21,DBSTATUS_E_OUTOFSPACE = 22,DBSTATUS_S_CANNOTDELETESOURCE = 23,
++    DBSTATUS_E_READONLY = 24,DBSTATUS_E_RESOURCEOUTOFSCOPE = 25,DBSTATUS_S_ALREADYEXISTS = 26
++  };
++  typedef DWORD DBBINDURLFLAG;
++
++  enum DBBINDURLFLAGENUM {
++    DBBINDURLFLAG_READ = 0x1L,DBBINDURLFLAG_WRITE = 0x2L,DBBINDURLFLAG_READWRITE = 0x3L,DBBINDURLFLAG_SHARE_DENY_READ = 0x4L,
++    DBBINDURLFLAG_SHARE_DENY_WRITE = 0x8L,DBBINDURLFLAG_SHARE_EXCLUSIVE = 0xcL,DBBINDURLFLAG_SHARE_DENY_NONE = 0x10L,
++    DBBINDURLFLAG_ASYNCHRONOUS = 0x1000L,DBBINDURLFLAG_COLLECTION = 0x2000L,DBBINDURLFLAG_DELAYFETCHSTREAM = 0x4000L,
++    DBBINDURLFLAG_DELAYFETCHCOLUMNS = 0x8000L,DBBINDURLFLAG_RECURSIVE = 0x400000L,DBBINDURLFLAG_OUTPUT = 0x800000L,
++    DBBINDURLFLAG_WAITFORINIT = 0x1000000L,DBBINDURLFLAG_OPENIFEXISTS = 0x2000000L,DBBINDURLFLAG_OVERWRITE = 0x4000000L,
++    DBBINDURLFLAG_ISSTRUCTUREDDOCUMENT = 0x8000000L
++  };
++  typedef DWORD DBBINDURLSTATUS;
++
++  enum DBBINDURLSTATUSENUM {
++    DBBINDURLSTATUS_S_OK = 0L,DBBINDURLSTATUS_S_DENYNOTSUPPORTED = 0x1L,DBBINDURLSTATUS_S_DENYTYPENOTSUPPORTED = 0x4L,
++    DBBINDURLSTATUS_S_REDIRECTED = 0x8L
++  };
++#endif
++
++#if (OLEDBVER >= 0x0250)
++  enum DBSTATUSENUM25 {
++    DBSTATUS_E_CANCELED = 27,DBSTATUS_E_NOTCOLLECTION = 28
++  };
++#endif
++
++  typedef struct tagDBBINDEXT {
++    BYTE *pExtension;
++    DBCOUNTITEM ulExtension;
++  } DBBINDEXT;
++
++  typedef struct tagDBBINDING {
++    DBORDINAL iOrdinal;
++    DBBYTEOFFSET obValue;
++    DBBYTEOFFSET obLength;
++    DBBYTEOFFSET obStatus;
++    ITypeInfo *pTypeInfo;
++    DBOBJECT *pObject;
++    DBBINDEXT *pBindExt;
++    DBPART dwPart;
++    DBMEMOWNER dwMemOwner;
++    DBPARAMIO eParamIO;
++    DBLENGTH cbMaxLen;
++    DWORD dwFlags;
++    DBTYPE wType;
++    BYTE bPrecision;
++    BYTE bScale;
++  } DBBINDING;
++
++  typedef DWORD DBROWSTATUS;
++
++  enum DBROWSTATUSENUM {
++    DBROWSTATUS_S_OK = 0,DBROWSTATUS_S_MULTIPLECHANGES = 2,DBROWSTATUS_S_PENDINGCHANGES = 3,DBROWSTATUS_E_CANCELED = 4,DBROWSTATUS_E_CANTRELEASE = 6,
++    DBROWSTATUS_E_CONCURRENCYVIOLATION = 7,DBROWSTATUS_E_DELETED = 8,DBROWSTATUS_E_PENDINGINSERT = 9,DBROWSTATUS_E_NEWLYINSERTED = 10,
++    DBROWSTATUS_E_INTEGRITYVIOLATION = 11,DBROWSTATUS_E_INVALID = 12,DBROWSTATUS_E_MAXPENDCHANGESEXCEEDED = 13,DBROWSTATUS_E_OBJECTOPEN = 14,
++    DBROWSTATUS_E_OUTOFMEMORY = 15,DBROWSTATUS_E_PERMISSIONDENIED = 16,DBROWSTATUS_E_LIMITREACHED = 17,DBROWSTATUS_E_SCHEMAVIOLATION = 18,
++    DBROWSTATUS_E_FAIL = 19
++  };
++
++#if (OLEDBVER >= 0x0200)
++  enum DBROWSTATUSENUM20 {
++    DBROWSTATUS_S_NOCHANGE = 20
++  };
++#endif
++
++#if (OLEDBVER >= 0x0260)
++  enum DBSTATUSENUM26 {
++    DBSTATUS_S_ROWSETCOLUMN = 29
++  };
++#endif
++
++  typedef ULONG_PTR HACCESSOR;
++
++#define DB_NULL_HACCESSOR 0x00
++#define DB_INVALID_HACCESSOR 0x00
++  typedef ULONG_PTR HROW;
++
++#define DB_NULL_HROW 0x00
++  typedef ULONG_PTR HWATCHREGION;
++
++#define DBWATCHREGION_NULL NULL
++  typedef ULONG_PTR HCHAPTER;
++
++#define DB_NULL_HCHAPTER 0x00
++#define DB_INVALID_HCHAPTER 0x00
++  typedef struct tagDBFAILUREINFO {
++    HROW hRow;
++    DBORDINAL iColumn;
++    HRESULT failure;
++  } DBFAILUREINFO;
++
++  typedef DWORD DBCOLUMNFLAGS;
++
++  enum DBCOLUMNFLAGSENUM {
++    DBCOLUMNFLAGS_ISBOOKMARK = 0x1,DBCOLUMNFLAGS_MAYDEFER = 0x2,DBCOLUMNFLAGS_WRITE = 0x4,DBCOLUMNFLAGS_WRITEUNKNOWN = 0x8,
++    DBCOLUMNFLAGS_ISFIXEDLENGTH = 0x10,DBCOLUMNFLAGS_ISNULLABLE = 0x20,DBCOLUMNFLAGS_MAYBENULL = 0x40,DBCOLUMNFLAGS_ISLONG = 0x80,
++    DBCOLUMNFLAGS_ISROWID = 0x100,DBCOLUMNFLAGS_ISROWVER = 0x200,DBCOLUMNFLAGS_CACHEDEFERRED = 0x1000
++  };
++
++#if (OLEDBVER >= 0x0200)
++  enum DBCOLUMNFLAGSENUM20 {
++    DBCOLUMNFLAGS_SCALEISNEGATIVE = 0x4000,DBCOLUMNFLAGS_RESERVED = 0x8000
++  };
++#endif
++
++#ifdef deprecated
++#if (OLEDBVER >= 0x0200)
++  enum DBCOLUMNFLAGSDEPRECATED {
++    DBCOLUMNFLAGS_KEYCOLUMN = 0x8000
++  };
++#endif
++#endif
++
++#if (OLEDBVER >= 0x0150)
++  enum DBCOLUMNFLAGS15ENUM {
++    DBCOLUMNFLAGS_ISCHAPTER = 0x2000
++  };
++#endif
++
++#if (OLEDBVER >= 0x0210)
++  enum DBCOLUMNFLAGSENUM21 {
++    DBCOLUMNFLAGS_ISROWURL = 0x10000,DBCOLUMNFLAGS_ISDEFAULTSTREAM = 0x20000,DBCOLUMNFLAGS_ISCOLLECTION = 0x40000
++  };
++#endif
++
++#if (OLEDBVER >= 0x0260)
++  enum DBCOLUMNFLAGSENUM26 {
++    DBCOLUMNFLAGS_ISSTREAM = 0x80000,DBCOLUMNFLAGS_ISROWSET = 0x100000,DBCOLUMNFLAGS_ISROW = 0x200000,DBCOLUMNFLAGS_ROWSPECIFICCOLUMN = 0x400000
++  };
++
++  enum DBTABLESTATISTICSTYPE26 {
++    DBSTAT_HISTOGRAM = 0x1,DBSTAT_COLUMN_CARDINALITY = 0x2,DBSTAT_TUPLE_CARDINALITY = 0x4
++  };
++#endif
++
++  typedef struct tagDBCOLUMNINFO {
++    LPOLESTR pwszName;
++    ITypeInfo *pTypeInfo;
++    DBORDINAL iOrdinal;
++    DBCOLUMNFLAGS dwFlags;
++    DBLENGTH ulColumnSize;
++    DBTYPE wType;
++    BYTE bPrecision;
++    BYTE bScale;
++    DBID columnid;
++  } DBCOLUMNINFO;
++
++  typedef enum tagDBBOOKMARK {
++    DBBMK_INVALID = 0,DBBMK_FIRST = DBBMK_INVALID + 1,DBBMK_LAST = DBBMK_FIRST + 1
++  } DBBOOKMARK;
++
++#define STD_BOOKMARKLENGTH 1
++#ifdef __cplusplus
++  static inline WINBOOL IsEqualGUIDBase(const GUID &rguid1,const GUID &rguid2) { return !memcmp(&(rguid1.Data2),&(rguid2.Data2),sizeof(GUID) - sizeof(rguid1.Data1)); }
++#else
++#define IsEqualGuidBase(rguid1,rguid2) (!memcmp(&((rguid1).Data2),&((rguid2).Data2),sizeof(GUID) - sizeof((rguid1).Data1)))
++#endif
++#ifdef _WIN64
++#define DB_INVALIDCOLUMN _UI64_MAX
++#else
++#define DB_INVALIDCOLUMN ULONG_MAX
++#endif
++#define DBCIDGUID {0x0C733A81L,0x2A1C,0x11CE,{0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D}}
++#define DB_NULLGUID {0x00000000L,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
++#ifdef DBINITCONSTANTS
++  extern const OLEDBDECLSPEC DBID DB_NULLID = {DB_NULLGUID,0,(LPOLESTR)0};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_IDNAME = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)2};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_NAME = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)3};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_NUMBER = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)4};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_TYPE = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)5};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_PRECISION = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)7};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_SCALE = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)8};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_FLAGS = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)9};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_BASECOLUMNNAME = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)10};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_BASETABLENAME = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)11};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_COLLATINGSEQUENCE = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)12};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_COMPUTEMODE = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)13};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_DEFAULTVALUE = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)14};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_DOMAINNAME = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)15};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_HASDEFAULT = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)16};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_ISAUTOINCREMENT = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)17};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_ISCASESENSITIVE = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)18};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_ISSEARCHABLE = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)20};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_ISUNIQUE = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)21};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_BASECATALOGNAME = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)23};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_BASESCHEMANAME = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)24};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_GUID = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)29};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_PROPID = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)30};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_TYPEINFO = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)31};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_DOMAINCATALOG = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)32};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_DOMAINSCHEMA = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)33};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_DATETIMEPRECISION = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)34};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_NUMERICPRECISIONRADIX = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)35};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_OCTETLENGTH = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)36};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_COLUMNSIZE = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)37};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_CLSID = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)38};
++
++#if (OLEDBVER >= 0x0150)
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_MAYSORT = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)39};
++#endif
++#else
++  extern const DBID DB_NULLID;
++  extern const DBID DBCOLUMN_IDNAME;
++  extern const DBID DBCOLUMN_NAME;
++  extern const DBID DBCOLUMN_NUMBER;
++  extern const DBID DBCOLUMN_TYPE;
++  extern const DBID DBCOLUMN_PRECISION;
++  extern const DBID DBCOLUMN_SCALE;
++  extern const DBID DBCOLUMN_FLAGS;
++  extern const DBID DBCOLUMN_BASECOLUMNNAME;
++  extern const DBID DBCOLUMN_BASETABLENAME;
++  extern const DBID DBCOLUMN_COLLATINGSEQUENCE;
++  extern const DBID DBCOLUMN_COMPUTEMODE;
++  extern const DBID DBCOLUMN_DEFAULTVALUE;
++  extern const DBID DBCOLUMN_DOMAINNAME;
++  extern const DBID DBCOLUMN_HASDEFAULT;
++  extern const DBID DBCOLUMN_ISAUTOINCREMENT;
++  extern const DBID DBCOLUMN_ISCASESENSITIVE;
++  extern const DBID DBCOLUMN_ISSEARCHABLE;
++  extern const DBID DBCOLUMN_ISUNIQUE;
++  extern const DBID DBCOLUMN_BASECATALOGNAME;
++  extern const DBID DBCOLUMN_BASESCHEMANAME;
++  extern const DBID DBCOLUMN_GUID;
++  extern const DBID DBCOLUMN_PROPID;
++  extern const DBID DBCOLUMN_TYPEINFO;
++  extern const DBID DBCOLUMN_DOMAINCATALOG;
++  extern const DBID DBCOLUMN_DOMAINSCHEMA;
++  extern const DBID DBCOLUMN_DATETIMEPRECISION;
++  extern const DBID DBCOLUMN_NUMERICPRECISIONRADIX;
++  extern const DBID DBCOLUMN_OCTETLENGTH;
++  extern const DBID DBCOLUMN_COLUMNSIZE;
++  extern const DBID DBCOLUMN_CLSID;
++
++#if (OLEDBVER >= 0x0150)
++  extern const DBID DBCOLUMN_MAYSORT;
++#endif
++#endif
++#ifdef DBINITCONSTANTS
++
++#if (OLEDBVER >= 0x0260)
++  extern const OLEDBDECLSPEC GUID MDSCHEMA_FUNCTIONS = {0xa07ccd07,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};
++  extern const OLEDBDECLSPEC GUID MDSCHEMA_ACTIONS = {0xa07ccd08,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};
++  extern const OLEDBDECLSPEC GUID MDSCHEMA_COMMANDS = {0xa07ccd09,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};
++  extern const OLEDBDECLSPEC GUID MDSCHEMA_SETS = {0xa07ccd0b,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};
++#endif
++
++#if (OLEDBVER >= 0x0200)
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_TABLES_INFO = {0xc8b522e0,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID MDGUID_MDX = {0xa07cccd0,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};
++  extern const OLEDBDECLSPEC GUID DBGUID_MDX = {0xa07cccd0,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};
++  extern const OLEDBDECLSPEC GUID MDSCHEMA_CUBES = {0xc8b522d8,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID MDSCHEMA_DIMENSIONS = {0xc8b522d9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID MDSCHEMA_HIERARCHIES = {0xc8b522da,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID MDSCHEMA_LEVELS = {0xc8b522db,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID MDSCHEMA_MEASURES = {0xc8b522dc,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID MDSCHEMA_PROPERTIES = {0xc8b522dd,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID MDSCHEMA_MEMBERS = {0xc8b522de,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_BASETABLEVERSION = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)40};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_KEYCOLUMN = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)41};
++#endif
++
++#if (OLEDBVER >= 0x0210)
++#define DBGUID_ROWURL {0x0C733AB6L,0x2A1C,0x11CE,{0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D}}
++#define DBGUID_ROWDEFAULTSTREAM {0x0C733AB7L,0x2A1C,0x11CE,{0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D}}
++  extern const OLEDBDECLSPEC GUID DBPROPSET_TRUSTEE = {0xc8b522e1,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_TABLE = {0xc8b522e2,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_COLUMN = {0xc8b522e4,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_DATABASE = {0xc8b522e5,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_PROCEDURE = {0xc8b522e6,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_VIEW = {0xc8b522e7,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_SCHEMA = {0xc8b522e8,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_DOMAIN = {0xc8b522e9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_COLLATION = {0xc8b522ea,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_TRUSTEE = {0xc8b522eb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_SCHEMAROWSET = {0xc8b522ec,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_CHARACTERSET = {0xc8b522ed,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBOBJECT_TRANSLATION = {0xc8b522ee,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_TRUSTEE = {0xc8b522ef,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_COLUMNALL = {0xc8b522f0,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_INDEXALL = {0xc8b522f1,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_TABLEALL = {0xc8b522f2,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_TRUSTEEALL = {0xc8b522f3,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_CONSTRAINTALL = {0xc8b522fa,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBGUID_DSO = {0xc8b522f4,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBGUID_SESSION = {0xc8b522f5,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBGUID_ROWSET = {0xc8b522f6,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBGUID_ROW = {0xc8b522f7,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBGUID_COMMAND = {0xc8b522f8,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBGUID_STREAM = {0xc8b522f9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_ROWURL = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)0};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_PARSENAME = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)2};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_PARENTNAME = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)3};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_ABSOLUTEPARSENAME = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)4};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_ISHIDDEN = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)5};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_ISREADONLY = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)6};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_CONTENTTYPE = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)7};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_CONTENTCLASS = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)8};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_CONTENTLANGUAGE = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)9};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_CREATIONTIME = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)10};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_LASTACCESSTIME = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)11};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_LASTWRITETIME = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)12};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_STREAMSIZE = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)13};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_ISCOLLECTION = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)14};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_ISSTRUCTUREDDOCUMENT = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)15};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_DEFAULTDOCUMENT = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)16};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_DISPLAYNAME = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)17};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_ISROOT = {DBGUID_ROWURL,DBKIND_GUID_PROPID,(LPOLESTR)18};
++  extern const OLEDBDECLSPEC DBID DBROWCOL_DEFAULTSTREAM = {DBGUID_ROWDEFAULTSTREAM,DBKIND_GUID_PROPID,(LPOLESTR)0};
++  extern const OLEDBDECLSPEC GUID DBGUID_CONTAINEROBJECT = {0xc8b522fb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++#endif
++
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_ASSERTIONS = {0xc8b52210,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_CATALOGS = {0xc8b52211,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_CHARACTER_SETS = {0xc8b52212,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_COLLATIONS = {0xc8b52213,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_COLUMNS = {0xc8b52214,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_CHECK_CONSTRAINTS = {0xc8b52215,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_CONSTRAINT_COLUMN_USAGE = {0xc8b52216,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_CONSTRAINT_TABLE_USAGE = {0xc8b52217,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_KEY_COLUMN_USAGE = {0xc8b52218,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_REFERENTIAL_CONSTRAINTS = {0xc8b52219,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_TABLE_CONSTRAINTS = {0xc8b5221a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_COLUMN_DOMAIN_USAGE = {0xc8b5221b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_INDEXES = {0xc8b5221e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_COLUMN_PRIVILEGES = {0xc8b52221,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_TABLE_PRIVILEGES = {0xc8b52222,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_USAGE_PRIVILEGES = {0xc8b52223,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_PROCEDURES = {0xc8b52224,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_SCHEMATA = {0xc8b52225,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_SQL_LANGUAGES = {0xc8b52226,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_STATISTICS = {0xc8b52227,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_TABLES = {0xc8b52229,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_TRANSLATIONS = {0xc8b5222a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_PROVIDER_TYPES = {0xc8b5222c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_VIEWS = {0xc8b5222d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_VIEW_COLUMN_USAGE = {0xc8b5222e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_VIEW_TABLE_USAGE = {0xc8b5222f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_PROCEDURE_PARAMETERS = {0xc8b522b8,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_FOREIGN_KEYS = {0xc8b522c4,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_PRIMARY_KEYS = {0xc8b522c5,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_PROCEDURE_COLUMNS = {0xc8b522c9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBCOL_SELFCOLUMNS = {0xc8b52231,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBCOL_SPECIALCOL = {0xc8b52232,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID PSGUID_QUERY = {0x49691c90,0x7e17,0x101a,{0xa9,0x1c,0x08,0x00,0x2b,0x2e,0xcd,0xa9}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_COLUMN = {0xc8b522b9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_DATASOURCE = {0xc8b522ba,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_DATASOURCEINFO = {0xc8b522bb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_DBINIT = {0xc8b522bc,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_INDEX = {0xc8b522bd,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_ROWSET = {0xc8b522be,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_TABLE = {0xc8b522bf,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_DATASOURCEALL = {0xc8b522c0,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_DATASOURCEINFOALL = {0xc8b522c1,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_ROWSETALL = {0xc8b522c2,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_SESSION = {0xc8b522c6,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_SESSIONALL = {0xc8b522c7,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_DBINITALL = {0xc8b522ca,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_PROPERTIESINERROR = {0xc8b522d4,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++
++#if (OLEDBVER >= 0x0150)
++  extern const OLEDBDECLSPEC GUID DBPROPSET_VIEW = {0xc8b522df,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++#endif
++
++#if (OLEDBVER >= 0x0250)
++  extern const OLEDBDECLSPEC GUID DBPROPSET_VIEWALL = {0xc8b522fc,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++#endif
++
++#if (OLEDBVER >= 0x0260)
++  extern const OLEDBDECLSPEC GUID DBPROPSET_STREAM = {0xc8b522fd,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBPROPSET_STREAMALL = {0xc8b522fe,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_TABLE_STATISTICS = {0xc8b522ff,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE = {0xc8b52301,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBGUID_HISTOGRAM_ROWSET = {0xc8b52300,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC DBID DBCOLUMN_DERIVEDCOLUMNNAME = {DBCIDGUID,DBKIND_GUID_PROPID,(LPOLESTR)43};
++#endif
++
++  extern const OLEDBDECLSPEC GUID DBGUID_DBSQL = {0xc8b521fb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBGUID_DEFAULT = {0xc8b521fb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++  extern const OLEDBDECLSPEC GUID DBGUID_SQL = {0xc8b522d7,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
++#else
++
++#if (OLEDBVER >= 0x0200)
++  extern const GUID DBSCHEMA_TABLES_INFO;
++  extern const GUID MDGUID_MDX;
++  extern const GUID DBGUID_MDX;
++  extern const GUID MDSCHEMA_CUBES;
++  extern const GUID MDSCHEMA_DIMENSIONS;
++  extern const GUID MDSCHEMA_HIERARCHIES;
++  extern const GUID MDSCHEMA_LEVELS;
++  extern const GUID MDSCHEMA_MEASURES;
++  extern const GUID MDSCHEMA_PROPERTIES;
++  extern const GUID MDSCHEMA_MEMBERS;
++  extern const DBID DBCOLUMN_BASETABLEVERSION;
++  extern const DBID DBCOLUMN_KEYCOLUMN;
++#endif
++
++#if (OLEDBVER >= 0x0210)
++  extern const GUID DBPROPSET_TRUSTEE;
++  extern const GUID DBOBJECT_TABLE;
++  extern const GUID DBOBJECT_COLUMN;
++  extern const GUID DBOBJECT_DATABASE;
++  extern const GUID DBOBJECT_PROCEDURE;
++  extern const GUID DBOBJECT_VIEW;
++  extern const GUID DBOBJECT_SCHEMA;
++  extern const GUID DBOBJECT_DOMAIN;
++  extern const GUID DBOBJECT_COLLATION;
++  extern const GUID DBOBJECT_TRUSTEE;
++  extern const GUID DBOBJECT_SCHEMAROWSET;
++  extern const GUID DBOBJECT_CHARACTERSET;
++  extern const GUID DBOBJECT_TRANSLATION;
++  extern const GUID DBSCHEMA_TRUSTEE;
++  extern const GUID DBPROPSET_COLUMNALL;
++  extern const GUID DBPROPSET_INDEXALL;
++  extern const GUID DBPROPSET_TABLEALL;
++  extern const GUID DBPROPSET_TRUSTEEALL;
++  extern const GUID DBPROPSET_CONSTRAINTALL;
++  extern const GUID DBGUID_DSO;
++  extern const GUID DBGUID_SESSION;
++  extern const GUID DBGUID_ROWSET;
++  extern const GUID DBGUID_ROW;
++  extern const GUID DBGUID_COMMAND;
++  extern const GUID DBGUID_STREAM;
++  extern const DBID DBROWCOL_ROWURL;
++  extern const DBID DBROWCOL_PARSENAME;
++  extern const DBID DBROWCOL_PARENTNAME;
++  extern const DBID DBROWCOL_ABSOLUTEPARSENAME;
++  extern const DBID DBROWCOL_ISHIDDEN;
++  extern const DBID DBROWCOL_ISREADONLY;
++  extern const DBID DBROWCOL_CONTENTTYPE;
++  extern const DBID DBROWCOL_CONTENTCLASS;
++  extern const DBID DBROWCOL_CONTENTLANGUAGE;
++  extern const DBID DBROWCOL_CREATIONTIME;
++  extern const DBID DBROWCOL_LASTACCESSTIME;
++  extern const DBID DBROWCOL_LASTWRITETIME;
++  extern const DBID DBROWCOL_STREAMSIZE;
++  extern const DBID DBROWCOL_ISCOLLECTION;
++  extern const DBID DBROWCOL_ISSTRUCTUREDDOCUMENT;
++  extern const DBID DBROWCOL_DEFAULTDOCUMENT;
++  extern const DBID DBROWCOL_DISPLAYNAME;
++  extern const DBID DBROWCOL_ISROOT;
++  extern const DBID DBROWCOL_DEFAULTSTREAM;
++  extern const GUID DBGUID_CONTAINEROBJECT;
++#endif
++
++  extern const GUID DBSCHEMA_ASSERTIONS;
++  extern const GUID DBSCHEMA_CATALOGS;
++  extern const GUID DBSCHEMA_CHARACTER_SETS;
++  extern const GUID DBSCHEMA_COLLATIONS;
++  extern const GUID DBSCHEMA_COLUMNS;
++  extern const GUID DBSCHEMA_CHECK_CONSTRAINTS;
++  extern const GUID DBSCHEMA_CONSTRAINT_COLUMN_USAGE;
++  extern const GUID DBSCHEMA_CONSTRAINT_TABLE_USAGE;
++  extern const GUID DBSCHEMA_KEY_COLUMN_USAGE;
++  extern const GUID DBSCHEMA_REFERENTIAL_CONSTRAINTS;
++  extern const GUID DBSCHEMA_TABLE_CONSTRAINTS;
++  extern const GUID DBSCHEMA_COLUMN_DOMAIN_USAGE;
++  extern const GUID DBSCHEMA_INDEXES;
++  extern const GUID DBSCHEMA_COLUMN_PRIVILEGES;
++  extern const GUID DBSCHEMA_TABLE_PRIVILEGES;
++  extern const GUID DBSCHEMA_USAGE_PRIVILEGES;
++  extern const GUID DBSCHEMA_PROCEDURES;
++  extern const GUID DBSCHEMA_SCHEMATA;
++  extern const GUID DBSCHEMA_SQL_LANGUAGES;
++  extern const GUID DBSCHEMA_STATISTICS;
++  extern const GUID DBSCHEMA_TABLES;
++  extern const GUID DBSCHEMA_TRANSLATIONS;
++  extern const GUID DBSCHEMA_PROVIDER_TYPES;
++  extern const GUID DBSCHEMA_VIEWS;
++  extern const GUID DBSCHEMA_VIEW_COLUMN_USAGE;
++  extern const GUID DBSCHEMA_VIEW_TABLE_USAGE;
++  extern const GUID DBSCHEMA_PROCEDURE_PARAMETERS;
++  extern const GUID DBSCHEMA_FOREIGN_KEYS;
++  extern const GUID DBSCHEMA_PRIMARY_KEYS;
++  extern const GUID DBSCHEMA_PROCEDURE_COLUMNS;
++  extern const GUID DBCOL_SELFCOLUMNS;
++  extern const GUID DBCOL_SPECIALCOL;
++  extern const GUID PSGUID_QUERY;
++  extern const GUID DBPROPSET_COLUMN;
++  extern const GUID DBPROPSET_DATASOURCE;
++  extern const GUID DBPROPSET_DATASOURCEINFO;
++  extern const GUID DBPROPSET_DBINIT;
++  extern const GUID DBPROPSET_INDEX;
++  extern const GUID DBPROPSET_ROWSET;
++  extern const GUID DBPROPSET_TABLE;
++  extern const GUID DBPROPSET_DATASOURCEALL;
++  extern const GUID DBPROPSET_DATASOURCEINFOALL;
++  extern const GUID DBPROPSET_ROWSETALL;
++  extern const GUID DBPROPSET_SESSION;
++  extern const GUID DBPROPSET_SESSIONALL;
++  extern const GUID DBPROPSET_DBINITALL;
++  extern const GUID DBPROPSET_PROPERTIESINERROR;
++
++#if (OLEDBVER >= 0x0150)
++  extern const GUID DBPROPSET_VIEW;
++#endif
++
++#if (OLEDBVER >= 0x0250)
++  extern const GUID DBPROPSET_VIEWALL;
++#endif
++
++#if (OLEDBVER >= 0x0260)
++  extern const GUID DBPROPSET_STREAM;
++  extern const GUID DBPROPSET_STREAMALL;
++  extern const GUID DBSCHEMA_TABLE_STATISTICS;
++  extern const GUID DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE;
++  extern const GUID DBGUID_HISTOGRAM_ROWSET;
++  extern const DBID DBCOLUMN_DERIVEDCOLUMNNAME;
++  extern const GUID MDSCHEMA_FUNCTIONS;
++  extern const GUID MDSCHEMA_ACTIONS;
++  extern const GUID MDSCHEMA_COMMANDS;
++  extern const GUID MDSCHEMA_SETS;
++#endif
++
++  extern const GUID DBGUID_DBSQL;
++  extern const GUID DBGUID_DEFAULT;
++  extern const GUID DBGUID_SQL;
++#endif
++
++  enum DBPROPENUM {
++    DBPROP_ABORTPRESERVE = 0x2L,DBPROP_ACTIVESESSIONS = 0x3L,DBPROP_APPENDONLY = 0xbbL,DBPROP_ASYNCTXNABORT = 0xa8L,DBPROP_ASYNCTXNCOMMIT = 0x4L,
++    DBPROP_AUTH_CACHE_AUTHINFO = 0x5L,DBPROP_AUTH_ENCRYPT_PASSWORD = 0x6L,DBPROP_AUTH_INTEGRATED = 0x7L,DBPROP_AUTH_MASK_PASSWORD = 0x8L,
++    DBPROP_AUTH_PASSWORD = 0x9L,DBPROP_AUTH_PERSIST_ENCRYPTED = 0xaL,DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO = 0xbL,DBPROP_AUTH_USERID = 0xcL,
++    DBPROP_BLOCKINGSTORAGEOBJECTS = 0xdL,DBPROP_BOOKMARKS = 0xeL,DBPROP_BOOKMARKSKIPPED = 0xfL,DBPROP_BOOKMARKTYPE = 0x10L,DBPROP_BYREFACCESSORS = 0x78L,
++    DBPROP_CACHEDEFERRED = 0x11L,DBPROP_CANFETCHBACKWARDS = 0x12L,DBPROP_CANHOLDROWS = 0x13L,DBPROP_CANSCROLLBACKWARDS = 0x15L,
++    DBPROP_CATALOGLOCATION = 0x16L,DBPROP_CATALOGTERM = 0x17L,DBPROP_CATALOGUSAGE = 0x18L,DBPROP_CHANGEINSERTEDROWS = 0xbcL,
++    DBPROP_COL_AUTOINCREMENT = 0x1aL,DBPROP_COL_DEFAULT = 0x1bL,DBPROP_COL_DESCRIPTION = 0x1cL,DBPROP_COL_FIXEDLENGTH = 0xa7L,
++    DBPROP_COL_NULLABLE = 0x1dL,DBPROP_COL_PRIMARYKEY = 0x1eL,DBPROP_COL_UNIQUE = 0x1fL,DBPROP_COLUMNDEFINITION = 0x20L,DBPROP_COLUMNRESTRICT = 0x21L,
++    DBPROP_COMMANDTIMEOUT = 0x22L,DBPROP_COMMITPRESERVE = 0x23L,DBPROP_CONCATNULLBEHAVIOR = 0x24L,DBPROP_CURRENTCATALOG = 0x25L,
++    DBPROP_DATASOURCENAME = 0x26L,DBPROP_DATASOURCEREADONLY = 0x27L,DBPROP_DBMSNAME = 0x28L,DBPROP_DBMSVER = 0x29L,DBPROP_DEFERRED = 0x2aL,
++    DBPROP_DELAYSTORAGEOBJECTS = 0x2bL,DBPROP_DSOTHREADMODEL = 0xa9L,DBPROP_GROUPBY = 0x2cL,DBPROP_HETEROGENEOUSTABLES = 0x2dL,DBPROP_IAccessor = 0x79L,
++    DBPROP_IColumnsInfo = 0x7aL,DBPROP_IColumnsRowset = 0x7bL,DBPROP_IConnectionPointContainer = 0x7cL,DBPROP_IConvertType = 0xc2L,
++    DBPROP_IRowset = 0x7eL,DBPROP_IRowsetChange = 0x7fL,DBPROP_IRowsetIdentity = 0x80L,DBPROP_IRowsetIndex = 0x9fL,DBPROP_IRowsetInfo = 0x81L,
++    DBPROP_IRowsetLocate = 0x82L,DBPROP_IRowsetResynch = 0x84L,DBPROP_IRowsetScroll = 0x85L,DBPROP_IRowsetUpdate = 0x86L,
++    DBPROP_ISupportErrorInfo = 0x87L,DBPROP_ILockBytes = 0x88L,DBPROP_ISequentialStream = 0x89L,DBPROP_IStorage = 0x8aL,DBPROP_IStream = 0x8bL,
++    DBPROP_IDENTIFIERCASE = 0x2eL,DBPROP_IMMOBILEROWS = 0x2fL,DBPROP_INDEX_AUTOUPDATE = 0x30L,DBPROP_INDEX_CLUSTERED = 0x31L,
++    DBPROP_INDEX_FILLFACTOR = 0x32L,DBPROP_INDEX_INITIALSIZE = 0x33L,DBPROP_INDEX_NULLCOLLATION = 0x34L,DBPROP_INDEX_NULLS = 0x35L,
++    DBPROP_INDEX_PRIMARYKEY = 0x36L,DBPROP_INDEX_SORTBOOKMARKS = 0x37L,DBPROP_INDEX_TEMPINDEX = 0xa3L,DBPROP_INDEX_TYPE = 0x38L,
++    DBPROP_INDEX_UNIQUE = 0x39L,DBPROP_INIT_DATASOURCE = 0x3bL,DBPROP_INIT_HWND = 0x3cL,DBPROP_INIT_IMPERSONATION_LEVEL = 0x3dL,
++    DBPROP_INIT_LCID = 0xbaL,DBPROP_INIT_LOCATION = 0x3eL,DBPROP_INIT_MODE = 0x3fL,DBPROP_INIT_PROMPT = 0x40L,DBPROP_INIT_PROTECTION_LEVEL = 0x41L,
++    DBPROP_INIT_PROVIDERSTRING = 0xa0L,DBPROP_INIT_TIMEOUT = 0x42L,DBPROP_LITERALBOOKMARKS = 0x43L,DBPROP_LITERALIDENTITY = 0x44L,
++    DBPROP_MAXINDEXSIZE = 0x46L,DBPROP_MAXOPENROWS = 0x47L,DBPROP_MAXPENDINGROWS = 0x48L,DBPROP_MAXROWS = 0x49L,DBPROP_MAXROWSIZE = 0x4aL,
++    DBPROP_MAXROWSIZEINCLUDESBLOB = 0x4bL,DBPROP_MAXTABLESINSELECT = 0x4cL,DBPROP_MAYWRITECOLUMN = 0x4dL,DBPROP_MEMORYUSAGE = 0x4eL,
++    DBPROP_MULTIPLEPARAMSETS = 0xbfL,DBPROP_MULTIPLERESULTS = 0xc4L,DBPROP_MULTIPLESTORAGEOBJECTS = 0x50L,DBPROP_MULTITABLEUPDATE = 0x51L,
++    DBPROP_NOTIFICATIONGRANULARITY = 0xc6L,DBPROP_NOTIFICATIONPHASES = 0x52L,DBPROP_NOTIFYCOLUMNSET = 0xabL,DBPROP_NOTIFYROWDELETE = 0xadL,
++    DBPROP_NOTIFYROWFIRSTCHANGE = 0xaeL,DBPROP_NOTIFYROWINSERT = 0xafL,DBPROP_NOTIFYROWRESYNCH = 0xb1L,DBPROP_NOTIFYROWSETCHANGED = 0xd3L,
++    DBPROP_NOTIFYROWSETRELEASE = 0xb2L,DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE = 0xb3L,DBPROP_NOTIFYROWUNDOCHANGE = 0xb4L,
++    DBPROP_NOTIFYROWUNDODELETE = 0xb5L,DBPROP_NOTIFYROWUNDOINSERT = 0xb6L,DBPROP_NOTIFYROWUPDATE = 0xb7L,DBPROP_NULLCOLLATION = 0x53L,
++    DBPROP_OLEOBJECTS = 0x54L,DBPROP_ORDERBYCOLUMNSINSELECT = 0x55L,DBPROP_ORDEREDBOOKMARKS = 0x56L,DBPROP_OTHERINSERT = 0x57L,
++    DBPROP_OTHERUPDATEDELETE = 0x58L,DBPROP_OUTPUTPARAMETERAVAILABILITY = 0xb8L,DBPROP_OWNINSERT = 0x59L,DBPROP_OWNUPDATEDELETE = 0x5aL,
++    DBPROP_PERSISTENTIDTYPE = 0xb9L,DBPROP_PREPAREABORTBEHAVIOR = 0x5bL,DBPROP_PREPARECOMMITBEHAVIOR = 0x5cL,DBPROP_PROCEDURETERM = 0x5dL,
++    DBPROP_PROVIDERNAME = 0x60L,DBPROP_PROVIDEROLEDBVER = 0x61L,DBPROP_PROVIDERVER = 0x62L,DBPROP_QUICKRESTART = 0x63L,
++    DBPROP_QUOTEDIDENTIFIERCASE = 0x64L,DBPROP_REENTRANTEVENTS = 0x65L,DBPROP_REMOVEDELETED = 0x66L,DBPROP_REPORTMULTIPLECHANGES = 0x67L,
++    DBPROP_RETURNPENDINGINSERTS = 0xbdL,DBPROP_ROWRESTRICT = 0x68L,DBPROP_ROWSETCONVERSIONSONCOMMAND = 0xc0L,DBPROP_ROWTHREADMODEL = 0x69L,
++    DBPROP_SCHEMATERM = 0x6aL,DBPROP_SCHEMAUSAGE = 0x6bL,DBPROP_SERVERCURSOR = 0x6cL,DBPROP_SESS_AUTOCOMMITISOLEVELS = 0xbeL,
++    DBPROP_SQLSUPPORT = 0x6dL,DBPROP_STRONGIDENTITY = 0x77L,DBPROP_STRUCTUREDSTORAGE = 0x6fL,DBPROP_SUBQUERIES = 0x70L,DBPROP_SUPPORTEDTXNDDL = 0xa1L,
++    DBPROP_SUPPORTEDTXNISOLEVELS = 0x71L,DBPROP_SUPPORTEDTXNISORETAIN = 0x72L,DBPROP_TABLETERM = 0x73L,DBPROP_TBL_TEMPTABLE = 0x8cL,
++    DBPROP_TRANSACTEDOBJECT = 0x74L,DBPROP_UPDATABILITY = 0x75L,DBPROP_USERNAME = 0x76L
++  };
++
++#if (OLEDBVER >= 0x0150)
++  enum DBPROPENUM15 {
++    DBPROP_FILTERCOMPAREOPS = 0xd1L,DBPROP_FINDCOMPAREOPS = 0xd2L,DBPROP_IChapteredRowset = 0xcaL,DBPROP_IDBAsynchStatus = 0xcbL,
++    DBPROP_IRowsetFind = 0xccL,DBPROP_IRowsetView = 0xd4L,DBPROP_IViewChapter = 0xd5L,DBPROP_IViewFilter = 0xd6L,DBPROP_IViewRowset = 0xd7L,
++    DBPROP_IViewSort = 0xd8L,DBPROP_INIT_ASYNCH = 0xc8L,DBPROP_MAXOPENCHAPTERS = 0xc7L,DBPROP_MAXORSINFILTER = 0xcdL,DBPROP_MAXSORTCOLUMNS = 0xceL,
++    DBPROP_ROWSET_ASYNCH = 0xc9L,DBPROP_SORTONINDEX = 0xcfL
++  };
++#endif
++
++#if (OLEDBVER >= 0x0200)
++#define DBPROP_PROVIDERFILENAME DBPROP_PROVIDERNAME
++#define DBPROP_SERVER_NAME DBPROP_SERVERNAME
++
++  enum DBPROPENUM20 {
++    DBPROP_IMultipleResults = 0xd9L,DBPROP_DATASOURCE_TYPE = 0xfbL,MDPROP_AXES = 0xfcL,MDPROP_FLATTENING_SUPPORT = 0xfdL,MDPROP_MDX_JOINCUBES = 0xfeL,
++    MDPROP_NAMED_LEVELS = 0xffL,MDPROP_RANGEROWSET = 0x100L,MDPROP_MDX_SLICER = 0xdaL,MDPROP_MDX_CUBEQUALIFICATION = 0xdbL,
++    MDPROP_MDX_OUTERREFERENCE = 0xdcL,MDPROP_MDX_QUERYBYPROPERTY = 0xddL,MDPROP_MDX_CASESUPPORT = 0xdeL,MDPROP_MDX_STRING_COMPOP = 0xe0L,
++    MDPROP_MDX_DESCFLAGS = 0xe1L,MDPROP_MDX_SET_FUNCTIONS = 0xe2L,MDPROP_MDX_MEMBER_FUNCTIONS = 0xe3L,MDPROP_MDX_NUMERIC_FUNCTIONS = 0xe4L,
++    MDPROP_MDX_FORMULAS = 0xe5L,MDPROP_AGGREGATECELL_UPDATE = 0xe6L,MDPROP_MDX_AGGREGATECELL_UPDATE = MDPROP_AGGREGATECELL_UPDATE,
++    MDPROP_MDX_OBJQUALIFICATION = 0x105L,MDPROP_MDX_NONMEASURE_EXPRESSIONS = 0x106L,DBPROP_ACCESSORDER = 0xe7L,DBPROP_BOOKMARKINFO = 0xe8L,
++    DBPROP_INIT_CATALOG = 0xe9L,DBPROP_ROW_BULKOPS = 0xeaL,DBPROP_PROVIDERFRIENDLYNAME = 0xebL,DBPROP_LOCKMODE = 0xecL,
++    DBPROP_MULTIPLECONNECTIONS = 0xedL,DBPROP_UNIQUEROWS = 0xeeL,DBPROP_SERVERDATAONINSERT = 0xefL,DBPROP_STORAGEFLAGS = 0xf0L,
++    DBPROP_CONNECTIONSTATUS = 0xf4L,DBPROP_ALTERCOLUMN = 0xf5L,DBPROP_COLUMNLCID = 0xf6L,DBPROP_RESETDATASOURCE = 0xf7L,
++    DBPROP_INIT_OLEDBSERVICES = 0xf8L,DBPROP_IRowsetRefresh = 0xf9L,DBPROP_SERVERNAME = 0xfaL,DBPROP_IParentRowset = 0x101L,
++    DBPROP_HIDDENCOLUMNS = 0x102L,DBPROP_PROVIDERMEMORY = 0x103L,DBPROP_CLIENTCURSOR = 0x104L
++  };
++#endif
++
++#if (OLEDBVER >= 0x0210)
++  enum DBPROPENUM21 {
++    DBPROP_TRUSTEE_USERNAME = 0xf1L,DBPROP_TRUSTEE_AUTHENTICATION = 0xf2L,DBPROP_TRUSTEE_NEWAUTHENTICATION = 0xf3L,DBPROP_IRow = 0x107L,
++    DBPROP_IRowChange = 0x108L,DBPROP_IRowSchemaChange = 0x109L,DBPROP_IGetRow = 0x10aL,DBPROP_IScopedOperations = 0x10bL,
++    DBPROP_IBindResource = 0x10cL,DBPROP_ICreateRow = 0x10dL,DBPROP_INIT_BINDFLAGS = 0x10eL,DBPROP_INIT_LOCKOWNER = 0x10fL,
++    DBPROP_GENERATEURL = 0x111L,DBPROP_IDBBinderProperties = 0x112L,DBPROP_IColumnsInfo2 = 0x113L,DBPROP_IRegisterProvider = 0x114L,
++    DBPROP_IGetSession = 0x115L,DBPROP_IGetSourceRow = 0x116L,DBPROP_IRowsetCurrentIndex = 0x117L,DBPROP_OPENROWSETSUPPORT = 0x118L,
++    DBPROP_COL_ISLONG = 0x119L
++  };
++#endif
++
++#if (OLEDBVER >= 0x0250)
++  enum DBPROPENUM25 {
++    DBPROP_COL_SEED = 0x11aL,DBPROP_COL_INCREMENT = 0x11bL,DBPROP_INIT_GENERALTIMEOUT = 0x11cL,DBPROP_COMSERVICES = 0x11dL
++  };
++#endif
++
++#if (OLEDBVER >= 0x0260)
++  enum DBPROPENUM26 {
++    DBPROP_OUTPUTSTREAM = 0x11eL,DBPROP_OUTPUTENCODING = 0x11fL,DBPROP_TABLESTATISTICS = 0x120L,DBPROP_SKIPROWCOUNTRESULTS = 0x123L,
++    DBPROP_IRowsetBookmark = 0x124L,MDPROP_VISUALMODE = 0x125L
++  };
++#endif
++
++#ifdef deprecated
++  enum DBPROPENUMDEPRECATED {
++    DBPROP_IRowsetExactScroll = 0x9aL,DBPROP_MARSHALLABLE = 0xc5L,DBPROP_FILTEROPS = 0xd0L
++  };
++#endif
++
++#define DBPROPVAL_BMK_NUMERIC 0x00000001L
++#define DBPROPVAL_BMK_KEY 0x00000002L
++#define DBPROPVAL_CL_START 0x00000001L
++#define DBPROPVAL_CL_END 0x00000002L
++#define DBPROPVAL_CU_DML_STATEMENTS 0x00000001L
++#define DBPROPVAL_CU_TABLE_DEFINITION 0x00000002L
++#define DBPROPVAL_CU_INDEX_DEFINITION 0x00000004L
++#define DBPROPVAL_CU_PRIVILEGE_DEFINITION 0x00000008L
++#define DBPROPVAL_CD_NOTNULL 0x00000001L
++#define DBPROPVAL_CB_NULL 0x00000001L
++#define DBPROPVAL_CB_NON_NULL 0x00000002L
++#define DBPROPVAL_FU_NOT_SUPPORTED 0x00000001L
++#define DBPROPVAL_FU_COLUMN 0x00000002L
++#define DBPROPVAL_FU_TABLE 0x00000004L
++#define DBPROPVAL_FU_CATALOG 0x00000008L
++#define DBPROPVAL_GB_NOT_SUPPORTED 0x00000001L
++#define DBPROPVAL_GB_EQUALS_SELECT 0x00000002L
++#define DBPROPVAL_GB_CONTAINS_SELECT 0x00000004L
++#define DBPROPVAL_GB_NO_RELATION 0x00000008L
++#define DBPROPVAL_HT_DIFFERENT_CATALOGS 0x00000001L
++#define DBPROPVAL_HT_DIFFERENT_PROVIDERS 0x00000002L
++#define DBPROPVAL_IC_UPPER 0x00000001L
++#define DBPROPVAL_IC_LOWER 0x00000002L
++#define DBPROPVAL_IC_SENSITIVE 0x00000004L
++#define DBPROPVAL_IC_MIXED 0x00000008L
++
++#ifdef deprecated
++#define DBPROPVAL_LM_NONE 0x00000001L
++#define DBPROPVAL_LM_READ 0x00000002L
++#define DBPROPVAL_LM_INTENT 0x00000004L
++#define DBPROPVAL_LM_RITE 0x00000008L
++#endif
++
++#define DBPROPVAL_NP_OKTODO 0x00000001L
++#define DBPROPVAL_NP_ABOUTTODO 0x00000002L
++#define DBPROPVAL_NP_SYNCHAFTER 0x00000004L
++#define DBPROPVAL_NP_FAILEDTODO 0x00000008L
++#define DBPROPVAL_NP_DIDEVENT 0x00000010L
++#define DBPROPVAL_NC_END 0x00000001L
++#define DBPROPVAL_NC_HIGH 0x00000002L
++#define DBPROPVAL_NC_LOW 0x00000004L
++#define DBPROPVAL_NC_START 0x00000008L
++#define DBPROPVAL_OO_BLOB 0x00000001L
++#define DBPROPVAL_OO_IPERSIST 0x00000002L
++#define DBPROPVAL_CB_DELETE 0x00000001L
++#define DBPROPVAL_CB_PRESERVE 0x00000002L
++#define DBPROPVAL_SU_DML_STATEMENTS 0x00000001L
++#define DBPROPVAL_SU_TABLE_DEFINITION 0x00000002L
++#define DBPROPVAL_SU_INDEX_DEFINITION 0x00000004L
++#define DBPROPVAL_SU_PRIVILEGE_DEFINITION 0x00000008L
++#define DBPROPVAL_SQ_CORRELATEDSUBQUERIES 0x00000001L
++#define DBPROPVAL_SQ_COMPARISON 0x00000002L
++#define DBPROPVAL_SQ_EXISTS 0x00000004L
++#define DBPROPVAL_SQ_IN 0x00000008L
++#define DBPROPVAL_SQ_QUANTIFIED 0x00000010L
++#define DBPROPVAL_SQ_TABLE 0x00000020L
++#define DBPROPVAL_SS_ISEQUENTIALSTREAM 0x00000001L
++#define DBPROPVAL_SS_ISTREAM 0x00000002L
++#define DBPROPVAL_SS_ISTORAGE 0x00000004L
++#define DBPROPVAL_SS_ILOCKBYTES 0x00000008L
++#define DBPROPVAL_TI_CHAOS 0x00000010L
++#define DBPROPVAL_TI_READUNCOMMITTED 0x00000100L
++#define DBPROPVAL_TI_BROWSE 0x00000100L
++#define DBPROPVAL_TI_CURSORSTABILITY 0x00001000L
++#define DBPROPVAL_TI_READCOMMITTED 0x00001000L
++#define DBPROPVAL_TI_REPEATABLEREAD 0x00010000L
++#define DBPROPVAL_TI_SERIALIZABLE 0x00100000L
++#define DBPROPVAL_TI_ISOLATED 0x00100000L
++#define DBPROPVAL_TR_COMMIT_DC 0x00000001L
++#define DBPROPVAL_TR_COMMIT 0x00000002L
++#define DBPROPVAL_TR_COMMIT_NO 0x00000004L
++#define DBPROPVAL_TR_ABORT_DC 0x00000008L
++#define DBPROPVAL_TR_ABORT 0x00000010L
++#define DBPROPVAL_TR_ABORT_NO 0x00000020L
++#define DBPROPVAL_TR_DONTCARE 0x00000040L
++#define DBPROPVAL_TR_BOTH 0x00000080L
++#define DBPROPVAL_TR_NONE 0x00000100L
++#define DBPROPVAL_TR_OPTIMISTIC 0x00000200L
++#define DBPROPVAL_RT_FREETHREAD 0x00000001L
++#define DBPROPVAL_RT_APTMTTHREAD 0x00000002L
++#define DBPROPVAL_RT_SINGLETHREAD 0x00000004L
++#define DBPROPVAL_UP_CHANGE 0x00000001L
++#define DBPROPVAL_UP_DELETE 0x00000002L
++#define DBPROPVAL_UP_INSERT 0x00000004L
++#define DBPROPVAL_SQL_NONE 0x00000000L
++#define DBPROPVAL_SQL_ODBC_MINIMUM 0x00000001L
++#define DBPROPVAL_SQL_ODBC_CORE 0x00000002L
++#define DBPROPVAL_SQL_ODBC_EXTENDED 0x00000004L
++#define DBPROPVAL_SQL_ANSI89_IEF 0x00000008L
++#define DBPROPVAL_SQL_ANSI92_ENTRY 0x00000010L
++#define DBPROPVAL_SQL_FIPS_TRANSITIONAL 0x00000020L
++#define DBPROPVAL_SQL_ANSI92_INTERMEDIATE 0x00000040L
++#define DBPROPVAL_SQL_ANSI92_FULL 0x00000080L
++#define DBPROPVAL_SQL_ESCAPECLAUSES 0x00000100L
++#define DBPROPVAL_IT_BTREE 0x00000001L
++#define DBPROPVAL_IT_HASH 0x00000002L
++#define DBPROPVAL_IT_CONTENT 0x00000003L
++#define DBPROPVAL_IT_OTHER 0x00000004L
++#define DBPROPVAL_IN_DISALLOWNULL 0x00000001L
++#define DBPROPVAL_IN_IGNORENULL 0x00000002L
++#define DBPROPVAL_IN_IGNOREANYNULL 0x00000004L
++#define DBPROPVAL_TC_NONE 0x00000000L
++#define DBPROPVAL_TC_DML 0x00000001L
++#define DBPROPVAL_TC_DDL_COMMIT 0x00000002L
++#define DBPROPVAL_TC_DDL_IGNORE 0x00000004L
++#define DBPROPVAL_TC_ALL 0x00000008L
++#define DBPROPVAL_NP_OKTODO 0x00000001L
++#define DBPROPVAL_NP_ABOUTTODO 0x00000002L
++#define DBPROPVAL_NP_SYNCHAFTER 0x00000004L
++#define DBPROPVAL_OA_NOTSUPPORTED 0x00000001L
++#define DBPROPVAL_OA_ATEXECUTE 0x00000002L
++#define DBPROPVAL_OA_ATROWRELEASE 0x00000004L
++#define DBPROPVAL_MR_NOTSUPPORTED 0x00000000L
++#define DBPROPVAL_MR_SUPPORTED 0x00000001L
++#define DBPROPVAL_MR_CONCURRENT 0x00000002L
++#define DBPROPVAL_PT_GUID_NAME 0x00000001L
++#define DBPROPVAL_PT_GUID_PROPID 0x00000002L
++#define DBPROPVAL_PT_NAME 0x00000004L
++#define DBPROPVAL_PT_GUID 0x00000008L
++#define DBPROPVAL_PT_PROPID 0x00000010L
++#define DBPROPVAL_PT_PGUID_NAME 0x00000020L
++#define DBPROPVAL_PT_PGUID_PROPID 0x00000040L
++#define DBPROPVAL_NT_SINGLEROW 0x00000001L
++#define DBPROPVAL_NT_MULTIPLEROWS 0x00000002L
++
++#if (OLEDBVER >= 0x0150)
++#define DBPROPVAL_ASYNCH_INITIALIZE 0x00000001L
++#define DBPROPVAL_ASYNCH_SEQUENTIALPOPULATION 0x00000002L
++#define DBPROPVAL_ASYNCH_RANDOMPOPULATION 0x00000004L
++#define DBPROPVAL_OP_EQUAL 0x00000001L
++#define DBPROPVAL_OP_RELATIVE 0x00000002L
++#define DBPROPVAL_OP_STRING 0x00000004L
++#define DBPROPVAL_CO_EQUALITY 0x00000001L
++#define DBPROPVAL_CO_STRING 0x00000002L
++#define DBPROPVAL_CO_CASESENSITIVE 0x00000004L
++#define DBPROPVAL_CO_CASEINSENSITIVE 0x00000008L
++#endif
++
++#if (OLEDBVER >= 0x0200)
++#define DBPROPVAL_CO_CONTAINS 0x00000010L
++#define DBPROPVAL_CO_BEGINSWITH 0x00000020L
++#define DBPROPVAL_ASYNCH_BACKGROUNDPOPULATION 0x00000008L
++#define DBPROPVAL_ASYNCH_PREPOPULATE 0x00000010L
++#define DBPROPVAL_ASYNCH_POPULATEONDEMAND 0x00000020L
++#define DBPROPVAL_LM_NONE 0x00000001L
++#define DBPROPVAL_LM_SINGLEROW 0x00000002L
++#define DBPROPVAL_SQL_SUBMINIMUM 0x00000200L
++#define DBPROPVAL_DST_TDP 0x00000001L
++#define DBPROPVAL_DST_MDP 0x00000002L
++#define DBPROPVAL_DST_TDPANDMDP 0x00000003L
++#define MDPROPVAL_AU_UNSUPPORTED 0x00000000L
++#define MDPROPVAL_AU_UNCHANGED 0x00000001L
++#define MDPROPVAL_AU_UNKNOWN 0x00000002L
++#define MDPROPVAL_MF_WITH_CALCMEMBERS 0x00000001L
++#define MDPROPVAL_MF_WITH_NAMEDSETS 0x00000002L
++#define MDPROPVAL_MF_CREATE_CALCMEMBERS 0x00000004L
++#define MDPROPVAL_MF_CREATE_NAMEDSETS 0x00000008L
++#define MDPROPVAL_MF_SCOPE_SESSION 0x00000010L
++#define MDPROPVAL_MF_SCOPE_GLOBAL 0x00000020L
++#define MDPROPVAL_MMF_COUSIN 0x00000001L
++#define MDPROPVAL_MMF_PARALLELPERIOD 0x00000002L
++#define MDPROPVAL_MMF_OPENINGPERIOD 0x00000004L
++#define MDPROPVAL_MMF_CLOSINGPERIOD 0x00000008L
++#define MDPROPVAL_MNF_MEDIAN 0x00000001L
++#define MDPROPVAL_MNF_VAR 0x00000002L
++#define MDPROPVAL_MNF_STDDEV 0x00000004L
++#define MDPROPVAL_MNF_RANK 0x00000008L
++#define MDPROPVAL_MNF_AGGREGATE 0x00000010L
++#define MDPROPVAL_MNF_COVARIANCE 0x00000020L
++#define MDPROPVAL_MNF_CORRELATION 0x00000040L
++#define MDPROPVAL_MNF_LINREGSLOPE 0x00000080L
++#define MDPROPVAL_MNF_LINREGVARIANCE 0x00000100L
++#define MDPROPVAL_MNF_LINREG2 0x00000200L
++#define MDPROPVAL_MNF_LINREGPOINT 0x00000400L
++#define MDPROPVAL_MNF_DRILLDOWNLEVEL 0x00000800L
++#define MDPROPVAL_MNF_DRILLDOWNMEMBERTOP 0x00001000L
++#define MDPROPVAL_MNF_DRILLDOWNMEMBERBOTTOM 0x00002000L
++#define MDPROPVAL_MNF_DRILLDOWNLEVELTOP 0x00004000L
++#define MDPROPVAL_MNF_DRILLDOWNLEVELBOTTOM 0x00008000L
++#define MDPROPVAL_MNF_DRILLUPMEMBER 0x00010000L
++#define MDPROPVAL_MNF_DRILLUPLEVEL 0x00020000L
++#define MDPROPVAL_MMF_COUSIN 0x00000001L
++#define MDPROPVAL_MMF_PARALLELPERIOD 0x00000002L
++#define MDPROPVAL_MMF_OPENINGPERIOD 0x00000004L
++#define MDPROPVAL_MMF_CLOSINGPERIOD 0x00000008L
++#define MDPROPVAL_MSF_TOPPERCENT 0x00000001L
++#define MDPROPVAL_MSF_BOTTOMPERCENT 0x00000002L
++#define MDPROPVAL_MSF_TOPSUM 0x00000004L
++#define MDPROPVAL_MSF_BOTTOMSUM 0x00000008L
++#define MDPROPVAL_MSF_PERIODSTODATE 0x00000010L
++#define MDPROPVAL_MSF_LASTPERIODS 0x00000020L
++#define MDPROPVAL_MSF_YTD 0x00000040L
++#define MDPROPVAL_MSF_QTD 0x00000080L
++#define MDPROPVAL_MSF_MTD 0x00000100L
++#define MDPROPVAL_MSF_WTD 0x00000200L
++#define MDPROPVAL_MSF_DRILLDOWNMEMBBER 0x00000400L
++#define MDPROPVAL_MSF_DRILLDOWNLEVEL 0x00000800L
++#define MDPROPVAL_MSF_DRILLDOWNMEMBERTOP 0x00001000L
++#define MDPROPVAL_MSF_DRILLDOWNMEMBERBOTTOM 0x00002000L
++#define MDPROPVAL_MSF_DRILLDOWNLEVELTOP 0x00004000L
++#define MDPROPVAL_MSF_DRILLDOWNLEVELBOTTOM 0x00008000L
++#define MDPROPVAL_MSF_DRILLUPMEMBER 0x00010000L
++#define MDPROPVAL_MSF_DRILLUPLEVEL 0x00020000L
++#define MDPROPVAL_MSF_TOGGLEDRILLSTATE 0x00040000L
++
++#define MDPROPVAL_MD_SELF 0x00000001L
++#define MDPROPVAL_MD_BEFORE 0x00000002L
++#define MDPROPVAL_MD_AFTER 0x00000004L
++
++#define MDPROPVAL_MSC_LESSTHAN 0x00000001L
++#define MDPROPVAL_MSC_GREATERTHAN 0x00000002L
++#define MDPROPVAL_MSC_LESSTHANEQUAL 0x00000004L
++#define MDPROPVAL_MSC_GREATERTHANEQUAL 0x00000008L
++#define MDPROPVAL_MC_SINGLECASE 0x00000001L
++#define MDPROPVAL_MC_SEARCHEDCASE 0x00000002L
++#define MDPROPVAL_MOQ_OUTERREFERENCE 0x00000001L
++#define MDPROPVAL_MOQ_DATASOURCE_CUBE 0x00000001L
++#define MDPROPVAL_MOQ_CATALOG_CUBE 0x00000002L
++#define MDPROPVAL_MOQ_SCHEMA_CUBE 0x00000004L
++#define MDPROPVAL_MOQ_CUBE_DIM 0x00000008L
++#define MDPROPVAL_MOQ_DIM_HIER 0x00000010L
++#define MDPROPVAL_MOQ_DIMHIER_LEVEL 0x00000020L
++#define MDPROPVAL_MOQ_LEVEL_MEMBER 0x00000040L
++#define MDPROPVAL_MOQ_MEMBER_MEMBER 0x00000080L
++#define MDPROPVAL_MOQ_DIMHIER_MEMBER 0x00000100L
++#define MDPROPVAL_FS_FULL_SUPPORT 0x00000001L
++#define MDPROPVAL_FS_GENERATED_COLUMN 0x00000002L
++#define MDPROPVAL_FS_GENERATED_DIMENSION 0x00000003L
++#define MDPROPVAL_FS_NO_SUPPORT 0x00000004L
++#define MDPROPVAL_NL_NAMEDLEVELS 0x00000001L
++#define MDPROPVAL_NL_NUMBEREDLEVELS 0x00000002L
++#define MDPROPVAL_MJC_SINGLECUBE 0x00000001L
++#define MDPROPVAL_MJC_MULTICUBES 0x00000002L
++#define MDPROPVAL_MJC_IMPLICITCUBE 0x00000004L
++#define MDPROPVAL_RR_NORANGEROWSET 0x00000001L
++#define MDPROPVAL_RR_READONLY 0x00000002L
++#define MDPROPVAL_RR_UPDATE 0x00000004L
++#define MDPROPVAL_MS_MULTIPLETUPLES 0x00000001L
++#define MDPROPVAL_MS_SINGLETUPLE 0x00000002L
++#define MDPROPVAL_NME_ALLDIMENSIONS 0x00000000L
++#define MDPROPVAL_NME_MEASURESONLY 0x00000001L
++#define DBPROPVAL_AO_SEQUENTIAL 0x00000000L
++#define DBPROPVAL_AO_SEQUENTIALSTORAGEOBJECTS 0x00000001L
++#define DBPROPVAL_AO_RANDOM 0x00000002L
++#define DBPROPVAL_BD_ROWSET 0x00000000L
++#define DBPROPVAL_BD_INTRANSACTION 0x00000001L
++#define DBPROPVAL_BD_XTRANSACTION 0x00000002L
++#define DBPROPVAL_BD_REORGANIZATION 0x00000003L
++#define BMK_DURABILITY_ROWSET DBPROPVAL_BD_ROWSET
++#define BMK_DURABILITY_INTRANSACTION DBPROPVAL_BD_INTRANSACTION
++#define BMK_DURABILITY_XTRANSACTION DBPROPVAL_BD_XTRANSACTION
++#define BMK_DURABILITY_REORGANIZATION DBPROPVAL_BD_REORGANIZATION
++#define DBPROPVAL_BO_NOLOG 0x00000000L
++#define DBPROPVAL_BO_NOINDEXUPDATE 0x00000001L
++#define DBPROPVAL_BO_REFINTEGRITY 0x00000002L
++#if !defined(_WINBASE_)
++#define OF_READ 0x00000000
++#define OF_WRITE 0x00000001
++#define OF_READWRITE 0x00000002
++#define OF_SHARE_COMPAT 0x00000000
++#define OF_SHARE_EXCLUSIVE 0x00000010
++#define OF_SHARE_DENY_WRITE 0x00000020
++#define OF_SHARE_DENY_READ 0x00000030
++#define OF_SHARE_DENY_NONE 0x00000040
++#define OF_PARSE 0x00000100
++#define OF_DELETE 0x00000200
++#define OF_VERIFY 0x00000400
++#define OF_CANCEL 0x00000800
++#define OF_CREATE 0x00001000
++#define OF_PROMPT 0x00002000
++#define OF_EXIST 0x00004000
++#define OF_REOPEN 0x00008000
++#endif
++#define DBPROPVAL_STGM_READ OF_READ
++#define DBPROPVAL_STGM_WRITE OF_WRITE
++#define DBPROPVAL_STGM_READWRITE OF_READWRITE
++#define DBPROPVAL_STGM_SHARE_DENY_NONE OF_SHARE_DENY_NONE
++#define DBPROPVAL_STGM_SHARE_DENY_READ OF_SHARE_DENY_READ
++#define DBPROPVAL_STGM_SHARE_DENY_WRITE OF_SHARE_DENY_WRITE
++#define DBPROPVAL_STGM_SHARE_EXCLUSIVE OF_SHARE_EXCLUSIVE
++#define DBPROPVAL_STGM_DIRECT 0x00010000
++#define DBPROPVAL_STGM_TRANSACTED 0x00020000
++#define DBPROPVAL_STGM_CREATE OF_CREATE
++#define DBPROPVAL_STGM_CONVERT 0x00040000
++#define DBPROPVAL_STGM_FAILIFTHERE 0x00080000
++#define DBPROPVAL_STGM_PRIORITY 0x00100000
++#define DBPROPVAL_STGM_DELETEONRELEASE 0x00200000
++#define DBPROPVAL_GB_COLLATE 0x00000010L
++#define DBPROPVAL_CS_UNINITIALIZED 0x00000000L
++#define DBPROPVAL_CS_INITIALIZED 0x00000001L
++#define DBPROPVAL_CS_COMMUNICATIONFAILURE 0x00000002L
++#define DBPROPVAL_RD_RESETALL 0xffffffffL
++#define DBPROPVAL_OS_RESOURCEPOOLING 0x00000001L
++#define DBPROPVAL_OS_TXNENLISTMENT 0x00000002L
++#define DBPROPVAL_OS_CLIENTCURSOR 0x00000004L
++#define DBPROPVAL_OS_ENABLEALL 0xffffffffL
++#define DBPROPVAL_BI_CROSSROWSET 0x00000001L
++#endif
++
++#if (OLEDBVER >= 0x0210)
++#define MDPROPVAL_NL_SCHEMAONLY 0x00000004L
++#define DBPROPVAL_OS_DISABLEALL 0x00000000L
++#define DBPROPVAL_OO_ROWOBJECT 0x00000004L
++#define DBPROPVAL_OO_SCOPED 0x00000008L
++#define DBPROPVAL_OO_DIRECTBIND 0x00000010L
++#define DBPROPVAL_DST_DOCSOURCE 0x00000004L
++#define DBPROPVAL_GU_NOTSUPPORTED 0x00000001L
++#define DBPROPVAL_GU_SUFFIX 0x00000002L
++#define DB_BINDFLAGS_DELAYFETCHCOLUMNS 0x00000001L
++#define DB_BINDFLAGS_DELAYFETCHSTREAM 0x00000002L
++#define DB_BINDFLAGS_RECURSIVE 0x00000004L
++#define DB_BINDFLAGS_OUTPUT 0x00000008L
++#define DB_BINDFLAGS_COLLECTION 0x00000010L
++#define DB_BINDFLAGS_OPENIFEXISTS 0x00000020L
++#define DB_BINDFLAGS_OVERWRITE 0x00000040L
++#define DB_BINDFLAGS_ISSTRUCTUREDDOCUMENT 0x00000080L
++#define DBPROPVAL_ORS_TABLE 0x00000000L
++#define DBPROPVAL_ORS_INDEX 0x00000001L
++#define DBPROPVAL_ORS_INTEGRATEDINDEX 0x00000002L
++#define DBPROPVAL_TC_DDL_LOCK 0x00000010L
++#define DBPROPVAL_ORS_STOREDPROC 0x00000004L
++#define DBPROPVAL_IN_ALLOWNULL 0x00000000L
++#endif
++
++#if (OLEDBVER >= 0x0250)
++#define DBPROPVAL_OO_SINGLETON 0x00000020L
++#define DBPROPVAL_OS_AGR_AFTERSESSION 0x00000008L
++#define DBPROPVAL_CM_TRANSACTIONS 0x00000001L
++#endif
++
++#if (OLEDBVER >= 0x0260)
++#define DBPROPVAL_TS_CARDINALITY 0x00000001L
++#define DBPROPVAL_TS_HISTOGRAM 0x00000002L
++#define DBPROPVAL_ORS_HISTOGRAM 0x00000008L
++#define MDPROPVAL_VISUAL_MODE_DEFAULT 0x00000000L
++#define MDPROPVAL_VISUAL_MODE_VISUAL 0x00000001L
++#define MDPROPVAL_VISUAL_MODE_VISUAL_OFF 0x00000002L
++#endif
++
++#define DB_IMP_LEVEL_ANONYMOUS 0x00
++#define DB_IMP_LEVEL_IDENTIFY 0x01
++#define DB_IMP_LEVEL_IMPERSONATE 0x02
++#define DB_IMP_LEVEL_DELEGATE 0x03
++#define DBPROMPT_PROMPT 0x01
++#define DBPROMPT_COMPLETE 0x02
++#define DBPROMPT_COMPLETEREQUIRED 0x03
++#define DBPROMPT_NOPROMPT 0x04
++#define DB_PROT_LEVEL_NONE 0x00
++#define DB_PROT_LEVEL_CONNECT 0x01
++#define DB_PROT_LEVEL_CALL 0x02
++#define DB_PROT_LEVEL_PKT 0x03
++#define DB_PROT_LEVEL_PKT_INTEGRITY 0x04
++#define DB_PROT_LEVEL_PKT_PRIVACY 0x05
++#define DB_MODE_READ 0x01
++#define DB_MODE_WRITE 0x02
++#define DB_MODE_READWRITE 0x03
++#define DB_MODE_SHARE_DENY_READ 0x04
++#define DB_MODE_SHARE_DENY_WRITE 0x08
++#define DB_MODE_SHARE_EXCLUSIVE 0x0c
++#define DB_MODE_SHARE_DENY_NONE 0x10
++#define DBCOMPUTEMODE_COMPUTED 0x01
++#define DBCOMPUTEMODE_DYNAMIC 0x02
++#define DBCOMPUTEMODE_NOTCOMPUTED 0x03
++#define DBPROPVAL_DF_INITIALLY_DEFERRED 0x01
++#define DBPROPVAL_DF_INITIALLY_IMMEDIATE 0x02
++#define DBPROPVAL_DF_NOT_DEFERRABLE 0x03
++
++  typedef struct tagDBPARAMS {
++    void *pData;
++    DB_UPARAMS cParamSets;
++    HACCESSOR hAccessor;
++  } DBPARAMS;
++
++  typedef DWORD DBPARAMFLAGS;
++
++  enum DBPARAMFLAGSENUM {
++    DBPARAMFLAGS_ISINPUT = 0x1,DBPARAMFLAGS_ISOUTPUT = 0x2,DBPARAMFLAGS_ISSIGNED = 0x10,DBPARAMFLAGS_ISNULLABLE = 0x40,DBPARAMFLAGS_ISLONG = 0x80
++  };
++
++#if (OLEDBVER >= 0x0200)
++  enum DBPARAMFLAGSENUM20 {
++    DBPARAMFLAGS_SCALEISNEGATIVE = 0x100
++  };
++#endif
++
++  typedef struct tagDBPARAMINFO {
++    DBPARAMFLAGS dwFlags;
++    DBORDINAL iOrdinal;
++    LPOLESTR pwszName;
++    ITypeInfo *pTypeInfo;
++    DBLENGTH ulParamSize;
++    DBTYPE wType;
++    BYTE bPrecision;
++    BYTE bScale;
++  } DBPARAMINFO;
++
++  typedef DWORD DBPROPID;
++
++  typedef struct tagDBPROPIDSET {
++    DBPROPID *rgPropertyIDs;
++    ULONG cPropertyIDs;
++    GUID guidPropertySet;
++  } DBPROPIDSET;
++
++  typedef DWORD DBPROPFLAGS;
++
++  enum DBPROPFLAGSENUM {
++    DBPROPFLAGS_NOTSUPPORTED = 0,DBPROPFLAGS_COLUMN = 0x1,DBPROPFLAGS_DATASOURCE = 0x2,DBPROPFLAGS_DATASOURCECREATE = 0x4,
++    DBPROPFLAGS_DATASOURCEINFO = 0x8,DBPROPFLAGS_DBINIT = 0x10,DBPROPFLAGS_INDEX = 0x20,DBPROPFLAGS_ROWSET = 0x40,DBPROPFLAGS_TABLE = 0x80,
++    DBPROPFLAGS_COLUMNOK = 0x100,DBPROPFLAGS_READ = 0x200,DBPROPFLAGS_WRITE = 0x400,DBPROPFLAGS_REQUIRED = 0x800,DBPROPFLAGS_SESSION = 0x1000
++  };
++
++#if (OLEDBVER >= 0x0210)
++  enum DBPROPFLAGSENUM21 {
++    DBPROPFLAGS_TRUSTEE = 0x2000
++  };
++#endif
++
++#if (OLEDBVER >= 0x0250)
++  enum DBPROPFLAGSENUM25 {
++    DBPROPFLAGS_VIEW = 0x4000
++  };
++#endif
++
++#if (OLEDBVER >= 0x0260)
++  enum DBPROPFLAGSENUM26 {
++    DBPROPFLAGS_STREAM = 0x8000
++  };
++#endif
++
++  typedef struct tagDBPROPINFO {
++    LPOLESTR pwszDescription;
++    DBPROPID dwPropertyID;
++    DBPROPFLAGS dwFlags;
++    VARTYPE vtType;
++    VARIANT vValues;
++  } DBPROPINFO;
++
++  typedef DBPROPINFO *PDBPROPINFO;
++
++  typedef struct tagDBPROPINFOSET {
++    PDBPROPINFO rgPropertyInfos;
++    ULONG cPropertyInfos;
++    GUID guidPropertySet;
++  } DBPROPINFOSET;
++
++  typedef DWORD DBPROPOPTIONS;
++
++  enum DBPROPOPTIONSENUM {
++    DBPROPOPTIONS_REQUIRED = 0,DBPROPOPTIONS_SETIFCHEAP = 0x1,DBPROPOPTIONS_OPTIONAL = 0x1
++  };
++  typedef DWORD DBPROPSTATUS;
++
++  enum DBPROPSTATUSENUM {
++    DBPROPSTATUS_OK = 0,DBPROPSTATUS_NOTSUPPORTED = 1,DBPROPSTATUS_BADVALUE = 2,DBPROPSTATUS_BADOPTION = 3,DBPROPSTATUS_BADCOLUMN = 4,
++    DBPROPSTATUS_NOTALLSETTABLE = 5,DBPROPSTATUS_NOTSETTABLE = 6,DBPROPSTATUS_NOTSET = 7,DBPROPSTATUS_CONFLICTING = 8
++  };
++
++#if (OLEDBVER >= 0x0210)
++  enum DBPROPSTATUSENUM21 {
++    DBPROPSTATUS_NOTAVAILABLE = 9
++  };
++#endif
++
++  typedef struct tagDBPROP {
++    DBPROPID dwPropertyID;
++    DBPROPOPTIONS dwOptions;
++    DBPROPSTATUS dwStatus;
++    DBID colid;
++    VARIANT vValue;
++  } DBPROP;
++
++  typedef struct tagDBPROPSET {
++    DBPROP *rgProperties;
++    ULONG cProperties;
++    GUID guidPropertySet;
++  } DBPROPSET;
++
++#define DBPARAMTYPE_INPUT 0x01
++#define DBPARAMTYPE_INPUTOUTPUT 0x02
++#define DBPARAMTYPE_OUTPUT 0x03
++#define DBPARAMTYPE_RETURNVALUE 0x04
++#define DB_PT_UNKNOWN 0x01
++#define DB_PT_PROCEDURE 0x02
++#define DB_PT_FUNCTION 0x03
++#define DB_REMOTE 0x01
++#define DB_LOCAL_SHARED 0x02
++#define DB_LOCAL_EXCLUSIVE 0x03
++#define DB_COLLATION_ASC 0x01
++#define DB_COLLATION_DESC 0x02
++#define DB_UNSEARCHABLE 0x01
++#define DB_LIKE_ONLY 0x02
++#define DB_ALL_EXCEPT_LIKE 0x03
++#define DB_SEARCHABLE 0x04
++
++#if (OLEDBVER >= 0x0200)
++#define MDTREEOP_CHILDREN 0x01
++#define MDTREEOP_SIBLINGS 0x02
++#define MDTREEOP_PARENT 0x04
++#define MDTREEOP_SELF 0x08
++#define MDTREEOP_DESCENDANTS 0x10
++#define MDTREEOP_ANCESTORS 0x20
++#define MD_DIMTYPE_UNKNOWN 0x00
++#define MD_DIMTYPE_TIME 0x01
++#define MD_DIMTYPE_MEASURE 0x02
++#define MD_DIMTYPE_OTHER 0x03
++#define MDLEVEL_TYPE_UNKNOWN 0x0000
++#define MDLEVEL_TYPE_REGULAR 0x0000
++#define MDLEVEL_TYPE_ALL 0x0001
++#define MDLEVEL_TYPE_CALCULATED 0x0002
++#define MDLEVEL_TYPE_TIME 0x0004
++#define MDLEVEL_TYPE_RESERVED1 0x0008
++#define MDLEVEL_TYPE_TIME_YEARS 0x0014
++#define MDLEVEL_TYPE_TIME_HALF_YEAR 0x0024
++#define MDLEVEL_TYPE_TIME_QUARTERS 0x0044
++#define MDLEVEL_TYPE_TIME_MONTHS 0x0084
++#define MDLEVEL_TYPE_TIME_WEEKS 0x0104
++#define MDLEVEL_TYPE_TIME_DAYS 0x0204
++#define MDLEVEL_TYPE_TIME_HOURS 0x0304
++#define MDLEVEL_TYPE_TIME_MINUTES 0x0404
++#define MDLEVEL_TYPE_TIME_SECONDS 0x0804
++#define MDLEVEL_TYPE_TIME_UNDEFINED 0x1004
++#define MDMEASURE_AGGR_UNKNOWN 0x00
++#define MDMEASURE_AGGR_SUM 0x01
++#define MDMEASURE_AGGR_COUNT 0x02
++#define MDMEASURE_AGGR_MIN 0x03
++#define MDMEASURE_AGGR_MAX 0x04
++#define MDMEASURE_AGGR_AVG 0x05
++#define MDMEASURE_AGGR_VAR 0x06
++#define MDMEASURE_AGGR_STD 0x07
++#define MDMEASURE_AGGR_CALCULATED 0x7f
++#define MDPROP_MEMBER 0x01
++#define MDPROP_CELL 0x02
++#define MDMEMBER_TYPE_UNKNOWN 0x00
++#define MDMEMBER_TYPE_REGULAR 0x01
++#define MDMEMBER_TYPE_ALL 0x02
++#define MDMEMBER_TYPE_MEASURE 0x03
++#define MDMEMBER_TYPE_FORMULA 0x04
++#define MDMEMBER_TYPE_RESERVE1 0x05
++#define MDMEMBER_TYPE_RESERVE2 0x06
++#define MDMEMBER_TYPE_RESERVE3 0x07
++#define MDMEMBER_TYPE_RESERVE4 0x08
++#define MDDISPINFO_DRILLED_DOWN 0x00010000
++#define MDDISPINFO_PARENT_SAME_AS_PREV 0x00020000
++#endif
++
++  typedef DWORD DBINDEX_COL_ORDER;
++
++  enum DBINDEX_COL_ORDERENUM {
++    DBINDEX_COL_ORDER_ASC = 0,DBINDEX_COL_ORDER_DESC = DBINDEX_COL_ORDER_ASC + 1
++  };
++  typedef struct tagDBINDEXCOLUMNDESC {
++    DBID *pColumnID;
++    DBINDEX_COL_ORDER eIndexColOrder;
++  } DBINDEXCOLUMNDESC;
++
++  typedef struct tagDBCOLUMNDESC {
++    LPOLESTR pwszTypeName;
++    ITypeInfo *pTypeInfo;
++    DBPROPSET *rgPropertySets;
++    CLSID *pclsid;
++    ULONG cPropertySets;
++    DBLENGTH ulColumnSize;
++    DBID dbcid;
++    DBTYPE wType;
++    BYTE bPrecision;
++    BYTE bScale;
++  } DBCOLUMNDESC;
++
++#if (OLEDBVER >= 0x0210)
++  typedef struct tagDBCOLUMNACCESS {
++    void *pData;
++    DBID columnid;
++    DBLENGTH cbDataLen;
++    DBSTATUS dwStatus;
++    DBLENGTH cbMaxLen;
++    DB_DWRESERVE dwReserved;
++    DBTYPE wType;
++    BYTE bPrecision;
++    BYTE bScale;
++  } DBCOLUMNACCESS;
++#endif
++
++#if (OLEDBVER >= 0x0200)
++  typedef DWORD DBCOLUMNDESCFLAGS;
++
++  enum DBCOLUMNDESCFLAGSENUM {
++    DBCOLUMNDESCFLAGS_TYPENAME = 0x1,DBCOLUMNDESCFLAGS_ITYPEINFO = 0x2,DBCOLUMNDESCFLAGS_PROPERTIES = 0x4,DBCOLUMNDESCFLAGS_CLSID = 0x8,
++    DBCOLUMNDESCFLAGS_COLSIZE = 0x10,DBCOLUMNDESCFLAGS_DBCID = 0x20,DBCOLUMNDESCFLAGS_WTYPE = 0x40,DBCOLUMNDESCFLAGS_PRECISION = 0x80,
++    DBCOLUMNDESCFLAGS_SCALE = 0x100
++  };
++#endif
++  typedef DWORD DBEVENTPHASE;
++
++  enum DBEVENTPHASEENUM {
++    DBEVENTPHASE_OKTODO = 0,DBEVENTPHASE_ABOUTTODO = DBEVENTPHASE_OKTODO + 1,DBEVENTPHASE_SYNCHAFTER = DBEVENTPHASE_ABOUTTODO + 1,
++    DBEVENTPHASE_FAILEDTODO = DBEVENTPHASE_SYNCHAFTER + 1,DBEVENTPHASE_DIDEVENT = DBEVENTPHASE_FAILEDTODO + 1
++  };
++  typedef DWORD DBREASON;
++
++  enum DBREASONENUM {
++    DBREASON_ROWSET_FETCHPOSITIONCHANGE = 0,DBREASON_ROWSET_RELEASE = DBREASON_ROWSET_FETCHPOSITIONCHANGE + 1,
++    DBREASON_COLUMN_SET = DBREASON_ROWSET_RELEASE + 1,DBREASON_COLUMN_RECALCULATED = DBREASON_COLUMN_SET + 1,
++    DBREASON_ROW_ACTIVATE = DBREASON_COLUMN_RECALCULATED + 1,DBREASON_ROW_RELEASE = DBREASON_ROW_ACTIVATE + 1,
++    DBREASON_ROW_DELETE = DBREASON_ROW_RELEASE + 1,DBREASON_ROW_FIRSTCHANGE = DBREASON_ROW_DELETE + 1,
++    DBREASON_ROW_INSERT = DBREASON_ROW_FIRSTCHANGE + 1,DBREASON_ROW_RESYNCH = DBREASON_ROW_INSERT + 1,
++    DBREASON_ROW_UNDOCHANGE = DBREASON_ROW_RESYNCH + 1,DBREASON_ROW_UNDOINSERT = DBREASON_ROW_UNDOCHANGE + 1,
++    DBREASON_ROW_UNDODELETE = DBREASON_ROW_UNDOINSERT + 1,DBREASON_ROW_UPDATE = DBREASON_ROW_UNDODELETE + 1,
++    DBREASON_ROWSET_CHANGED = DBREASON_ROW_UPDATE + 1
++  };
++
++#if (OLEDBVER >= 0x0150)
++  enum DBREASONENUM15 {
++    DBREASON_ROWPOSITION_CHANGED = DBREASON_ROWSET_CHANGED + 1,DBREASON_ROWPOSITION_CHAPTERCHANGED = DBREASON_ROWPOSITION_CHANGED + 1,
++    DBREASON_ROWPOSITION_CLEARED = DBREASON_ROWPOSITION_CHAPTERCHANGED + 1,DBREASON_ROW_ASYNCHINSERT = DBREASON_ROWPOSITION_CLEARED + 1
++  };
++#endif
++
++#if (OLEDBVER >= 0x0150)
++  typedef DWORD DBCOMPAREOP;
++
++  enum DBCOMPAREOPSENUM {
++    DBCOMPAREOPS_LT = 0,DBCOMPAREOPS_LE = 1,DBCOMPAREOPS_EQ = 2,DBCOMPAREOPS_GE = 3,DBCOMPAREOPS_GT = 4,DBCOMPAREOPS_BEGINSWITH = 5,
++    DBCOMPAREOPS_CONTAINS = 6,DBCOMPAREOPS_NE = 7,DBCOMPAREOPS_IGNORE = 8,DBCOMPAREOPS_CASESENSITIVE = 0x1000,DBCOMPAREOPS_CASEINSENSITIVE = 0x2000
++  };
++
++#if (OLEDBVER >= 0x0200)
++  enum DBCOMPAREOPSENUM20 {
++    DBCOMPAREOPS_NOTBEGINSWITH = 9,DBCOMPAREOPS_NOTCONTAINS = 10
++  };
++#endif
++
++  typedef DWORD DBASYNCHOP;
++
++  enum DBASYNCHOPENUM {
++    DBASYNCHOP_OPEN = 0
++  };
++  typedef DWORD DBASYNCHPHASE;
++
++  enum DBASYNCHPHASEENUM {
++    DBASYNCHPHASE_INITIALIZATION = 0,DBASYNCHPHASE_POPULATION = DBASYNCHPHASE_INITIALIZATION + 1,DBASYNCHPHASE_COMPLETE = DBASYNCHPHASE_POPULATION + 1,
++    DBASYNCHPHASE_CANCELED = DBASYNCHPHASE_COMPLETE + 1
++  };
++#define DB_COUNTUNAVAILABLE -1
++#endif
++
++  typedef DWORD DBSORT;
++
++  enum DBSORTENUM {
++    DBSORT_ASCENDING = 0,DBSORT_DESCENDING = DBSORT_ASCENDING + 1
++  };
++#if (OLEDBVER >= 0x0200)
++  typedef DWORD DBCOMMANDPERSISTFLAG;
++
++  enum DBCOMMANDPERSISTFLAGENUM {
++    DBCOMMANDPERSISTFLAG_NOSAVE = 0x1
++  };
++#endif
++
++#if (OLEDBVER >= 0x0210)
++  enum DBCOMMANDPERSISTFLAGENUM21 {
++    DBCOMMANDPERSISTFLAG_DEFAULT = 0,DBCOMMANDPERSISTFLAG_PERSISTVIEW = 0x2,DBCOMMANDPERSISTFLAG_PERSISTPROCEDURE = 0x4
++  };
++  typedef DWORD DBCONSTRAINTTYPE;
++
++  enum DBCONSTRAINTTYPEENUM {
++    DBCONSTRAINTTYPE_UNIQUE = 0,DBCONSTRAINTTYPE_FOREIGNKEY = 0x1,DBCONSTRAINTTYPE_PRIMARYKEY = 0x2,DBCONSTRAINTTYPE_CHECK = 0x3
++  };
++  typedef DWORD DBUPDELRULE;
++
++  enum DBUPDELRULEENUM {
++    DBUPDELRULE_NOACTION = 0,DBUPDELRULE_CASCADE = 0x1,DBUPDELRULE_SETNULL = 0x2,DBUPDELRULE_SETDEFAULT = 0x3
++  };
++  typedef DWORD DBMATCHTYPE;
++
++  enum DBMATCHTYPEENUM {
++    DBMATCHTYPE_FULL = 0,DBMATCHTYPE_NONE = 0x1,DBMATCHTYPE_PARTIAL = 0x2
++  };
++  typedef DWORD DBDEFERRABILITY;
++
++  enum DBDEFERRABILITYENUM {
++    DBDEFERRABILITY_DEFERRED = 0x1,DBDEFERRABILITY_DEFERRABLE = 0x2
++  };
++  typedef struct tagDBCONSTRAINTDESC {
++    DBID *pConstraintID;
++    DBCONSTRAINTTYPE ConstraintType;
++    DBORDINAL cColumns;
++    DBID *rgColumnList;
++    DBID *pReferencedTableID;
++    DBORDINAL cForeignKeyColumns;
++    DBID *rgForeignKeyColumnList;
++    OLECHAR *pwszConstraintText;
++    DBUPDELRULE UpdateRule;
++    DBUPDELRULE DeleteRule;
++    DBMATCHTYPE MatchType;
++    DBDEFERRABILITY Deferrability;
++    DB_URESERVE cReserved;
++    DBPROPSET *rgReserved;
++  } DBCONSTRAINTDESC;
++#endif
++
++#if (OLEDBVER >= 0x0200)
++#define MDFF_BOLD 0x01
++#define MDFF_ITALIC 0x02
++#define MDFF_UNDERLINE 0x04
++#define MDFF_STRIKEOUT 0x08
++
++  typedef struct tagMDAXISINFO {
++    DBLENGTH cbSize;
++    DBCOUNTITEM iAxis;
++    DBCOUNTITEM cDimensions;
++    DBCOUNTITEM cCoordinates;
++    DBORDINAL *rgcColumns;
++    LPOLESTR *rgpwszDimensionNames;
++  } MDAXISINFO;
++
++#define PMDAXISINFO_GETAT(rgAxisInfo,iAxis) ((MDAXISINFO *)(((BYTE *)(rgAxisInfo)) +((iAxis) *(rgAxisInfo)[0].cbSize)))
++#define MDAXISINFO_GETAT(rgAxisInfo,iAxis) (*PMDAXISINFO_GETAT((rgAxisInfo),(iAxis)))
++#define MDAXIS_COLUMNS 0x00000000
++#define MDAXIS_ROWS 0x00000001
++#define MDAXIS_PAGES 0x00000002
++#define MDAXIS_SECTIONS 0x00000003
++#define MDAXIS_CHAPTERS 0x00000004
++#define MDAXIS_SLICERS 0xffffffff
++#endif
++
++  typedef struct tagRMTPACK {
++    ISequentialStream *pISeqStream;
++    ULONG cbData;
++    ULONG cBSTR;
++    BSTR *rgBSTR;
++    ULONG cVARIANT;
++    VARIANT *rgVARIANT;
++    ULONG cIDISPATCH;
++    IDispatch **rgIDISPATCH;
++    ULONG cIUNKNOWN;
++    IUnknown **rgIUNKNOWN;
++    ULONG cPROPVARIANT;
++    PROPVARIANT *rgPROPVARIANT;
++    ULONG cArray;
++    VARIANT *rgArray;
++  } RMTPACK;
++
++  extern RPC_IF_HANDLE DBStructureDefinitions_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE DBStructureDefinitions_v0_0_s_ifspec;
++#endif
++
++#ifndef __IAccessor_INTERFACE_DEFINED__
++#define __IAccessor_INTERFACE_DEFINED__
++
++  typedef DWORD DBACCESSORFLAGS;
++
++  enum DBACCESSORFLAGSENUM {
++    DBACCESSOR_INVALID = 0,DBACCESSOR_PASSBYREF = 0x1,DBACCESSOR_ROWDATA = 0x2,DBACCESSOR_PARAMETERDATA = 0x4,DBACCESSOR_OPTIMIZED = 0x8,
++    DBACCESSOR_INHERITED = 0x10
++  };
++  typedef DWORD DBBINDSTATUS;
++
++  enum DBBINDSTATUSENUM {
++    DBBINDSTATUS_OK = 0,DBBINDSTATUS_BADORDINAL = 1,DBBINDSTATUS_UNSUPPORTEDCONVERSION = 2,DBBINDSTATUS_BADBINDINFO = 3,
++    DBBINDSTATUS_BADSTORAGEFLAGS = 4,DBBINDSTATUS_NOINTERFACE = 5,DBBINDSTATUS_MULTIPLESTORAGE = 6
++  };
++
++  EXTERN_C const IID IID_IAccessor;
++
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IAccessor : public IUnknown {
++  public:
++    virtual HRESULT WINAPI AddRefAccessor(HACCESSOR hAccessor,DBREFCOUNT *pcRefCount) = 0;
++    virtual HRESULT WINAPI CreateAccessor(DBACCESSORFLAGS dwAccessorFlags,DBCOUNTITEM cBindings,const DBBINDING rgBindings[],DBLENGTH cbRowSize,HACCESSOR *phAccessor,DBBINDSTATUS rgStatus[]) = 0;
++    virtual HRESULT WINAPI GetBindings(HACCESSOR hAccessor,DBACCESSORFLAGS *pdwAccessorFlags,DBCOUNTITEM *pcBindings,DBBINDING **prgBindings) = 0;
++    virtual HRESULT WINAPI ReleaseAccessor(HACCESSOR hAccessor,DBREFCOUNT *pcRefCount) = 0;
++  };
++#else
++  typedef struct IAccessorVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IAccessor *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IAccessor *This);
++      ULONG (WINAPI *Release)(IAccessor *This);
++      HRESULT (WINAPI *AddRefAccessor)(IAccessor *This,HACCESSOR hAccessor,DBREFCOUNT *pcRefCount);
++      HRESULT (WINAPI *CreateAccessor)(IAccessor *This,DBACCESSORFLAGS dwAccessorFlags,DBCOUNTITEM cBindings,const DBBINDING rgBindings[],DBLENGTH cbRowSize,HACCESSOR *phAccessor,DBBINDSTATUS rgStatus[]);
++      HRESULT (WINAPI *GetBindings)(IAccessor *This,HACCESSOR hAccessor,DBACCESSORFLAGS *pdwAccessorFlags,DBCOUNTITEM *pcBindings,DBBINDING **prgBindings);
++      HRESULT (WINAPI *ReleaseAccessor)(IAccessor *This,HACCESSOR hAccessor,DBREFCOUNT *pcRefCount);
++    END_INTERFACE
++  } IAccessorVtbl;
++  struct IAccessor {
++    CONST_VTBL struct IAccessorVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IAccessor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IAccessor_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IAccessor_Release(This) (This)->lpVtbl->Release(This)
++#define IAccessor_AddRefAccessor(This,hAccessor,pcRefCount) (This)->lpVtbl->AddRefAccessor(This,hAccessor,pcRefCount)
++#define IAccessor_CreateAccessor(This,dwAccessorFlags,cBindings,rgBindings,cbRowSize,phAccessor,rgStatus) (This)->lpVtbl->CreateAccessor(This,dwAccessorFlags,cBindings,rgBindings,cbRowSize,phAccessor,rgStatus)
++#define IAccessor_GetBindings(This,hAccessor,pdwAccessorFlags,pcBindings,prgBindings) (This)->lpVtbl->GetBindings(This,hAccessor,pdwAccessorFlags,pcBindings,prgBindings)
++#define IAccessor_ReleaseAccessor(This,hAccessor,pcRefCount) (This)->lpVtbl->ReleaseAccessor(This,hAccessor,pcRefCount)
++#endif
++#endif
++  HRESULT WINAPI IAccessor_RemoteAddRefAccessor_Proxy(IAccessor *This,HACCESSOR hAccessor,DBREFCOUNT *pcRefCount,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IAccessor_RemoteAddRefAccessor_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IAccessor_RemoteCreateAccessor_Proxy(IAccessor *This,DBACCESSORFLAGS dwAccessorFlags,DBCOUNTITEM cBindings,DBBINDING *rgBindings,DBLENGTH cbRowSize,HACCESSOR *phAccessor,DBBINDSTATUS *rgStatus,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IAccessor_RemoteCreateAccessor_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IAccessor_RemoteGetBindings_Proxy(IAccessor *This,HACCESSOR hAccessor,DBACCESSORFLAGS *pdwAccessorFlags,DBCOUNTITEM *pcBindings,DBBINDING **prgBindings,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IAccessor_RemoteGetBindings_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IAccessor_RemoteReleaseAccessor_Proxy(IAccessor *This,HACCESSOR hAccessor,DBREFCOUNT *pcRefCount,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IAccessor_RemoteReleaseAccessor_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowset_INTERFACE_DEFINED__
++#define __IRowset_INTERFACE_DEFINED__
++  typedef DWORD DBROWOPTIONS;
++
++  EXTERN_C const IID IID_IRowset;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowset : public IUnknown {
++  public:
++    virtual HRESULT WINAPI AddRefRows(DBCOUNTITEM cRows,const HROW rghRows[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]) = 0;
++    virtual HRESULT WINAPI GetData(HROW hRow,HACCESSOR hAccessor,void *pData) = 0;
++    virtual HRESULT WINAPI GetNextRows(HCHAPTER hReserved,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows) = 0;
++    virtual HRESULT WINAPI ReleaseRows(DBCOUNTITEM cRows,const HROW rghRows[],DBROWOPTIONS rgRowOptions[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]) = 0;
++    virtual HRESULT WINAPI RestartPosition(HCHAPTER hReserved) = 0;
++  };
++#else
++  typedef struct IRowsetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowset *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowset *This);
++      ULONG (WINAPI *Release)(IRowset *This);
++      HRESULT (WINAPI *AddRefRows)(IRowset *This,DBCOUNTITEM cRows,const HROW rghRows[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *GetData)(IRowset *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++      HRESULT (WINAPI *GetNextRows)(IRowset *This,HCHAPTER hReserved,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++      HRESULT (WINAPI *ReleaseRows)(IRowset *This,DBCOUNTITEM cRows,const HROW rghRows[],DBROWOPTIONS rgRowOptions[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *RestartPosition)(IRowset *This,HCHAPTER hReserved);
++    END_INTERFACE
++  } IRowsetVtbl;
++  struct IRowset {
++    CONST_VTBL struct IRowsetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowset_Release(This) (This)->lpVtbl->Release(This)
++#define IRowset_AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus) (This)->lpVtbl->AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus)
++#define IRowset_GetData(This,hRow,hAccessor,pData) (This)->lpVtbl->GetData(This,hRow,hAccessor,pData)
++#define IRowset_GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowsObtained,prghRows) (This)->lpVtbl->GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowsObtained,prghRows)
++#define IRowset_ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus) (This)->lpVtbl->ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus)
++#define IRowset_RestartPosition(This,hReserved) (This)->lpVtbl->RestartPosition(This,hReserved)
++#endif
++#endif
++  HRESULT WINAPI IRowset_AddRefRows_Proxy(IRowset *This,DBCOUNTITEM cRows,const HROW rghRows[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]);
++  void __RPC_STUB IRowset_AddRefRows_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowset_GetData_Proxy(IRowset *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++  void __RPC_STUB IRowset_GetData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowset_GetNextRows_Proxy(IRowset *This,HCHAPTER hReserved,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++  void __RPC_STUB IRowset_GetNextRows_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowset_ReleaseRows_Proxy(IRowset *This,DBCOUNTITEM cRows,const HROW rghRows[],DBROWOPTIONS rgRowOptions[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]);
++  void __RPC_STUB IRowset_ReleaseRows_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowset_RestartPosition_Proxy(IRowset *This,HCHAPTER hReserved);
++  void __RPC_STUB IRowset_RestartPosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetInfo_INTERFACE_DEFINED__
++#define __IRowsetInfo_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetInfo;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetInfo : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetProperties(const ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets) = 0;
++    virtual HRESULT WINAPI GetReferencedRowset(DBORDINAL iOrdinal,REFIID riid,IUnknown **ppReferencedRowset) = 0;
++    virtual HRESULT WINAPI GetSpecification(REFIID riid,IUnknown **ppSpecification) = 0;
++  };
++#else
++  typedef struct IRowsetInfoVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetInfo *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetInfo *This);
++      ULONG (WINAPI *Release)(IRowsetInfo *This);
++      HRESULT (WINAPI *GetProperties)(IRowsetInfo *This,const ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets);
++      HRESULT (WINAPI *GetReferencedRowset)(IRowsetInfo *This,DBORDINAL iOrdinal,REFIID riid,IUnknown **ppReferencedRowset);
++      HRESULT (WINAPI *GetSpecification)(IRowsetInfo *This,REFIID riid,IUnknown **ppSpecification);
++    END_INTERFACE
++  } IRowsetInfoVtbl;
++  struct IRowsetInfo {
++    CONST_VTBL struct IRowsetInfoVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetInfo_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetInfo_GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets) (This)->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets)
++#define IRowsetInfo_GetReferencedRowset(This,iOrdinal,riid,ppReferencedRowset) (This)->lpVtbl->GetReferencedRowset(This,iOrdinal,riid,ppReferencedRowset)
++#define IRowsetInfo_GetSpecification(This,riid,ppSpecification) (This)->lpVtbl->GetSpecification(This,riid,ppSpecification)
++#endif
++#endif
++  HRESULT WINAPI IRowsetInfo_RemoteGetProperties_Proxy(IRowsetInfo *This,ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertySets,DBPROPSET **prgPropertySets,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowsetInfo_RemoteGetProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetInfo_RemoteGetReferencedRowset_Proxy(IRowsetInfo *This,DBORDINAL iOrdinal,REFIID riid,IUnknown **ppReferencedRowset,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowsetInfo_RemoteGetReferencedRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetInfo_RemoteGetSpecification_Proxy(IRowsetInfo *This,REFIID riid,IUnknown **ppSpecification,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowsetInfo_RemoteGetSpecification_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetLocate_INTERFACE_DEFINED__
++#define __IRowsetLocate_INTERFACE_DEFINED__
++  typedef DWORD DBCOMPARE;
++
++  enum DBCOMPAREENUM {
++    DBCOMPARE_LT = 0,DBCOMPARE_EQ = DBCOMPARE_LT + 1,DBCOMPARE_GT = DBCOMPARE_EQ + 1,DBCOMPARE_NE = DBCOMPARE_GT + 1,
++    DBCOMPARE_NOTCOMPARABLE = DBCOMPARE_NE + 1
++  };
++
++  EXTERN_C const IID IID_IRowsetLocate;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetLocate : public IRowset {
++  public:
++    virtual HRESULT WINAPI Compare(HCHAPTER hReserved,DBBKMARK cbBookmark1,const BYTE *pBookmark1,DBBKMARK cbBookmark2,const BYTE *pBookmark2,DBCOMPARE *pComparison) = 0;
++    virtual HRESULT WINAPI GetRowsAt(HWATCHREGION hReserved1,HCHAPTER hReserved2,DBBKMARK cbBookmark,const BYTE *pBookmark,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows) = 0;
++    virtual HRESULT WINAPI GetRowsByBookmark(HCHAPTER hReserved,DBCOUNTITEM cRows,const DBBKMARK rgcbBookmarks[],const BYTE *rgpBookmarks[],HROW rghRows[],DBROWSTATUS rgRowStatus[]) = 0;
++    virtual HRESULT WINAPI Hash(HCHAPTER hReserved,DBBKMARK cBookmarks,const DBBKMARK rgcbBookmarks[],const BYTE *rgpBookmarks[],DBHASHVALUE rgHashedValues[],DBROWSTATUS rgBookmarkStatus[]) = 0;
++  };
++#else
++  typedef struct IRowsetLocateVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetLocate *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetLocate *This);
++      ULONG (WINAPI *Release)(IRowsetLocate *This);
++      HRESULT (WINAPI *AddRefRows)(IRowsetLocate *This,DBCOUNTITEM cRows,const HROW rghRows[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *GetData)(IRowsetLocate *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++      HRESULT (WINAPI *GetNextRows)(IRowsetLocate *This,HCHAPTER hReserved,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++      HRESULT (WINAPI *ReleaseRows)(IRowsetLocate *This,DBCOUNTITEM cRows,const HROW rghRows[],DBROWOPTIONS rgRowOptions[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *RestartPosition)(IRowsetLocate *This,HCHAPTER hReserved);
++      HRESULT (WINAPI *Compare)(IRowsetLocate *This,HCHAPTER hReserved,DBBKMARK cbBookmark1,const BYTE *pBookmark1,DBBKMARK cbBookmark2,const BYTE *pBookmark2,DBCOMPARE *pComparison);
++      HRESULT (WINAPI *GetRowsAt)(IRowsetLocate *This,HWATCHREGION hReserved1,HCHAPTER hReserved2,DBBKMARK cbBookmark,const BYTE *pBookmark,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++      HRESULT (WINAPI *GetRowsByBookmark)(IRowsetLocate *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const DBBKMARK rgcbBookmarks[],const BYTE *rgpBookmarks[],HROW rghRows[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *Hash)(IRowsetLocate *This,HCHAPTER hReserved,DBBKMARK cBookmarks,const DBBKMARK rgcbBookmarks[],const BYTE *rgpBookmarks[],DBHASHVALUE rgHashedValues[],DBROWSTATUS rgBookmarkStatus[]);
++    END_INTERFACE
++  } IRowsetLocateVtbl;
++  struct IRowsetLocate {
++    CONST_VTBL struct IRowsetLocateVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetLocate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetLocate_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetLocate_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetLocate_AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus) (This)->lpVtbl->AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus)
++#define IRowsetLocate_GetData(This,hRow,hAccessor,pData) (This)->lpVtbl->GetData(This,hRow,hAccessor,pData)
++#define IRowsetLocate_GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowsObtained,prghRows) (This)->lpVtbl->GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowsObtained,prghRows)
++#define IRowsetLocate_ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus) (This)->lpVtbl->ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus)
++#define IRowsetLocate_RestartPosition(This,hReserved) (This)->lpVtbl->RestartPosition(This,hReserved)
++#define IRowsetLocate_Compare(This,hReserved,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pComparison) (This)->lpVtbl->Compare(This,hReserved,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pComparison)
++#define IRowsetLocate_GetRowsAt(This,hReserved1,hReserved2,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows) (This)->lpVtbl->GetRowsAt(This,hReserved1,hReserved2,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows)
++#define IRowsetLocate_GetRowsByBookmark(This,hReserved,cRows,rgcbBookmarks,rgpBookmarks,rghRows,rgRowStatus) (This)->lpVtbl->GetRowsByBookmark(This,hReserved,cRows,rgcbBookmarks,rgpBookmarks,rghRows,rgRowStatus)
++#define IRowsetLocate_Hash(This,hReserved,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,rgBookmarkStatus) (This)->lpVtbl->Hash(This,hReserved,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,rgBookmarkStatus)
++#endif
++#endif
++  HRESULT WINAPI IRowsetLocate_Compare_Proxy(IRowsetLocate *This,HCHAPTER hReserved,DBBKMARK cbBookmark1,const BYTE *pBookmark1,DBBKMARK cbBookmark2,const BYTE *pBookmark2,DBCOMPARE *pComparison);
++  void __RPC_STUB IRowsetLocate_Compare_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetLocate_GetRowsAt_Proxy(IRowsetLocate *This,HWATCHREGION hReserved1,HCHAPTER hReserved2,DBBKMARK cbBookmark,const BYTE *pBookmark,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++  void __RPC_STUB IRowsetLocate_GetRowsAt_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetLocate_GetRowsByBookmark_Proxy(IRowsetLocate *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const DBBKMARK rgcbBookmarks[],const BYTE *rgpBookmarks[],HROW rghRows[],DBROWSTATUS rgRowStatus[]);
++  void __RPC_STUB IRowsetLocate_GetRowsByBookmark_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetLocate_Hash_Proxy(IRowsetLocate *This,HCHAPTER hReserved,DBBKMARK cBookmarks,const DBBKMARK rgcbBookmarks[],const BYTE *rgpBookmarks[],DBHASHVALUE rgHashedValues[],DBROWSTATUS rgBookmarkStatus[]);
++  void __RPC_STUB IRowsetLocate_Hash_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetResynch_INTERFACE_DEFINED__
++#define __IRowsetResynch_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetResynch;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetResynch : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetVisibleData(HROW hRow,HACCESSOR hAccessor,void *pData) = 0;
++    virtual HRESULT WINAPI ResynchRows(DBCOUNTITEM cRows,const HROW rghRows[],DBCOUNTITEM *pcRowsResynched,HROW **prghRowsResynched,DBROWSTATUS **prgRowStatus) = 0;
++  };
++#else
++  typedef struct IRowsetResynchVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetResynch *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetResynch *This);
++      ULONG (WINAPI *Release)(IRowsetResynch *This);
++      HRESULT (WINAPI *GetVisibleData)(IRowsetResynch *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++      HRESULT (WINAPI *ResynchRows)(IRowsetResynch *This,DBCOUNTITEM cRows,const HROW rghRows[],DBCOUNTITEM *pcRowsResynched,HROW **prghRowsResynched,DBROWSTATUS **prgRowStatus);
++    END_INTERFACE
++  } IRowsetResynchVtbl;
++  struct IRowsetResynch {
++    CONST_VTBL struct IRowsetResynchVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetResynch_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetResynch_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetResynch_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetResynch_GetVisibleData(This,hRow,hAccessor,pData) (This)->lpVtbl->GetVisibleData(This,hRow,hAccessor,pData)
++#define IRowsetResynch_ResynchRows(This,cRows,rghRows,pcRowsResynched,prghRowsResynched,prgRowStatus) (This)->lpVtbl->ResynchRows(This,cRows,rghRows,pcRowsResynched,prghRowsResynched,prgRowStatus)
++#endif
++#endif
++  HRESULT WINAPI IRowsetResynch_GetVisibleData_Proxy(IRowsetResynch *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++  void __RPC_STUB IRowsetResynch_GetVisibleData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetResynch_ResynchRows_Proxy(IRowsetResynch *This,DBCOUNTITEM cRows,const HROW rghRows[],DBCOUNTITEM *pcRowsResynched,HROW **prghRowsResynched,DBROWSTATUS **prgRowStatus);
++  void __RPC_STUB IRowsetResynch_ResynchRows_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetScroll_INTERFACE_DEFINED__
++#define __IRowsetScroll_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetScroll;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetScroll : public IRowsetLocate {
++  public:
++    virtual HRESULT WINAPI GetApproximatePosition(HCHAPTER hReserved,DBBKMARK cbBookmark,const BYTE *pBookmark,DBCOUNTITEM *pulPosition,DBCOUNTITEM *pcRows) = 0;
++    virtual HRESULT WINAPI GetRowsAtRatio(HWATCHREGION hReserved1,HCHAPTER hReserved2,DBCOUNTITEM ulNumerator,DBCOUNTITEM ulDenominator,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows) = 0;
++  };
++#else
++  typedef struct IRowsetScrollVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetScroll *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetScroll *This);
++      ULONG (WINAPI *Release)(IRowsetScroll *This);
++      HRESULT (WINAPI *AddRefRows)(IRowsetScroll *This,DBCOUNTITEM cRows,const HROW rghRows[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *GetData)(IRowsetScroll *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++      HRESULT (WINAPI *GetNextRows)(IRowsetScroll *This,HCHAPTER hReserved,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++      HRESULT (WINAPI *ReleaseRows)(IRowsetScroll *This,DBCOUNTITEM cRows,const HROW rghRows[],DBROWOPTIONS rgRowOptions[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *RestartPosition)(IRowsetScroll *This,HCHAPTER hReserved);
++      HRESULT (WINAPI *Compare)(IRowsetScroll *This,HCHAPTER hReserved,DBBKMARK cbBookmark1,const BYTE *pBookmark1,DBBKMARK cbBookmark2,const BYTE *pBookmark2,DBCOMPARE *pComparison);
++      HRESULT (WINAPI *GetRowsAt)(IRowsetScroll *This,HWATCHREGION hReserved1,HCHAPTER hReserved2,DBBKMARK cbBookmark,const BYTE *pBookmark,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++      HRESULT (WINAPI *GetRowsByBookmark)(IRowsetScroll *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const DBBKMARK rgcbBookmarks[],const BYTE *rgpBookmarks[],HROW rghRows[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *Hash)(IRowsetScroll *This,HCHAPTER hReserved,DBBKMARK cBookmarks,const DBBKMARK rgcbBookmarks[],const BYTE *rgpBookmarks[],DBHASHVALUE rgHashedValues[],DBROWSTATUS rgBookmarkStatus[]);
++      HRESULT (WINAPI *GetApproximatePosition)(IRowsetScroll *This,HCHAPTER hReserved,DBBKMARK cbBookmark,const BYTE *pBookmark,DBCOUNTITEM *pulPosition,DBCOUNTITEM *pcRows);
++      HRESULT (WINAPI *GetRowsAtRatio)(IRowsetScroll *This,HWATCHREGION hReserved1,HCHAPTER hReserved2,DBCOUNTITEM ulNumerator,DBCOUNTITEM ulDenominator,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++    END_INTERFACE
++  } IRowsetScrollVtbl;
++  struct IRowsetScroll {
++    CONST_VTBL struct IRowsetScrollVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetScroll_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetScroll_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetScroll_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetScroll_AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus) (This)->lpVtbl->AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus)
++#define IRowsetScroll_GetData(This,hRow,hAccessor,pData) (This)->lpVtbl->GetData(This,hRow,hAccessor,pData)
++#define IRowsetScroll_GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowsObtained,prghRows) (This)->lpVtbl->GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowsObtained,prghRows)
++#define IRowsetScroll_ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus) (This)->lpVtbl->ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus)
++#define IRowsetScroll_RestartPosition(This,hReserved) (This)->lpVtbl->RestartPosition(This,hReserved)
++#define IRowsetScroll_Compare(This,hReserved,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pComparison) (This)->lpVtbl->Compare(This,hReserved,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pComparison)
++#define IRowsetScroll_GetRowsAt(This,hReserved1,hReserved2,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows) (This)->lpVtbl->GetRowsAt(This,hReserved1,hReserved2,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows)
++#define IRowsetScroll_GetRowsByBookmark(This,hReserved,cRows,rgcbBookmarks,rgpBookmarks,rghRows,rgRowStatus) (This)->lpVtbl->GetRowsByBookmark(This,hReserved,cRows,rgcbBookmarks,rgpBookmarks,rghRows,rgRowStatus)
++#define IRowsetScroll_Hash(This,hReserved,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,rgBookmarkStatus) (This)->lpVtbl->Hash(This,hReserved,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,rgBookmarkStatus)
++#define IRowsetScroll_GetApproximatePosition(This,hReserved,cbBookmark,pBookmark,pulPosition,pcRows) (This)->lpVtbl->GetApproximatePosition(This,hReserved,cbBookmark,pBookmark,pulPosition,pcRows)
++#define IRowsetScroll_GetRowsAtRatio(This,hReserved1,hReserved2,ulNumerator,ulDenominator,cRows,pcRowsObtained,prghRows) (This)->lpVtbl->GetRowsAtRatio(This,hReserved1,hReserved2,ulNumerator,ulDenominator,cRows,pcRowsObtained,prghRows)
++#endif
++#endif
++  HRESULT WINAPI IRowsetScroll_GetApproximatePosition_Proxy(IRowsetScroll *This,HCHAPTER hReserved,DBBKMARK cbBookmark,const BYTE *pBookmark,DBCOUNTITEM *pulPosition,DBCOUNTITEM *pcRows);
++  void __RPC_STUB IRowsetScroll_GetApproximatePosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetScroll_GetRowsAtRatio_Proxy(IRowsetScroll *This,HWATCHREGION hReserved1,HCHAPTER hReserved2,DBCOUNTITEM ulNumerator,DBCOUNTITEM ulDenominator,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++  void __RPC_STUB IRowsetScroll_GetRowsAtRatio_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#if (OLEDBVER >= 0x0150)
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0273_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0273_v0_0_s_ifspec;
++#ifndef __IChapteredRowset_INTERFACE_DEFINED__
++#define __IChapteredRowset_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IChapteredRowset;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IChapteredRowset : public IUnknown {
++  public:
++    virtual HRESULT WINAPI AddRefChapter(HCHAPTER hChapter,DBREFCOUNT *pcRefCount) = 0;
++    virtual HRESULT WINAPI ReleaseChapter(HCHAPTER hChapter,DBREFCOUNT *pcRefCount) = 0;
++  };
++#else
++  typedef struct IChapteredRowsetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IChapteredRowset *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IChapteredRowset *This);
++      ULONG (WINAPI *Release)(IChapteredRowset *This);
++      HRESULT (WINAPI *AddRefChapter)(IChapteredRowset *This,HCHAPTER hChapter,DBREFCOUNT *pcRefCount);
++      HRESULT (WINAPI *ReleaseChapter)(IChapteredRowset *This,HCHAPTER hChapter,DBREFCOUNT *pcRefCount);
++    END_INTERFACE
++  } IChapteredRowsetVtbl;
++  struct IChapteredRowset {
++    CONST_VTBL struct IChapteredRowsetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IChapteredRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IChapteredRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IChapteredRowset_Release(This) (This)->lpVtbl->Release(This)
++#define IChapteredRowset_AddRefChapter(This,hChapter,pcRefCount) (This)->lpVtbl->AddRefChapter(This,hChapter,pcRefCount)
++#define IChapteredRowset_ReleaseChapter(This,hChapter,pcRefCount) (This)->lpVtbl->ReleaseChapter(This,hChapter,pcRefCount)
++#endif
++#endif
++  HRESULT WINAPI IChapteredRowset_RemoteAddRefChapter_Proxy(IChapteredRowset *This,HCHAPTER hChapter,DBREFCOUNT *pcRefCount,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IChapteredRowset_RemoteAddRefChapter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IChapteredRowset_RemoteReleaseChapter_Proxy(IChapteredRowset *This,HCHAPTER hChapter,DBREFCOUNT *pcRefCount,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IChapteredRowset_RemoteReleaseChapter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetFind_INTERFACE_DEFINED__
++#define __IRowsetFind_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetFind;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetFind : public IUnknown {
++  public:
++    virtual HRESULT WINAPI FindNextRow(HCHAPTER hChapter,HACCESSOR hAccessor,void *pFindValue,DBCOMPAREOP CompareOp,DBBKMARK cbBookmark,const BYTE *pBookmark,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows) = 0;
++  };
++#else
++  typedef struct IRowsetFindVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetFind *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetFind *This);
++      ULONG (WINAPI *Release)(IRowsetFind *This);
++      HRESULT (WINAPI *FindNextRow)(IRowsetFind *This,HCHAPTER hChapter,HACCESSOR hAccessor,void *pFindValue,DBCOMPAREOP CompareOp,DBBKMARK cbBookmark,const BYTE *pBookmark,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++    END_INTERFACE
++  } IRowsetFindVtbl;
++  struct IRowsetFind {
++    CONST_VTBL struct IRowsetFindVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetFind_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetFind_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetFind_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetFind_FindNextRow(This,hChapter,hAccessor,pFindValue,CompareOp,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows) (This)->lpVtbl->FindNextRow(This,hChapter,hAccessor,pFindValue,CompareOp,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows)
++#endif
++#endif
++  HRESULT WINAPI IRowsetFind_FindNextRow_Proxy(IRowsetFind *This,HCHAPTER hChapter,HACCESSOR hAccessor,void *pFindValue,DBCOMPAREOP CompareOp,DBBKMARK cbBookmark,const BYTE *pBookmark,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++  void __RPC_STUB IRowsetFind_FindNextRow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowPosition_INTERFACE_DEFINED__
++#define __IRowPosition_INTERFACE_DEFINED__
++  typedef DWORD DBPOSITIONFLAGS;
++
++  enum DBPOSITIONFLAGSENUM {
++    DBPOSITION_OK = 0,DBPOSITION_NOROW = DBPOSITION_OK + 1,DBPOSITION_BOF = DBPOSITION_NOROW + 1,DBPOSITION_EOF = DBPOSITION_BOF + 1
++  };
++
++  EXTERN_C const IID IID_IRowPosition;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowPosition : public IUnknown {
++  public:
++    virtual HRESULT WINAPI ClearRowPosition(void) = 0;
++    virtual HRESULT WINAPI GetRowPosition(HCHAPTER *phChapter,HROW *phRow,DBPOSITIONFLAGS *pdwPositionFlags) = 0;
++    virtual HRESULT WINAPI GetRowset(REFIID riid,IUnknown **ppRowset) = 0;
++    virtual HRESULT WINAPI Initialize(IUnknown *pRowset) = 0;
++    virtual HRESULT WINAPI SetRowPosition(HCHAPTER hChapter,HROW hRow,DBPOSITIONFLAGS dwPositionFlags) = 0;
++  };
++#else
++  typedef struct IRowPositionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowPosition *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowPosition *This);
++      ULONG (WINAPI *Release)(IRowPosition *This);
++      HRESULT (WINAPI *ClearRowPosition)(IRowPosition *This);
++      HRESULT (WINAPI *GetRowPosition)(IRowPosition *This,HCHAPTER *phChapter,HROW *phRow,DBPOSITIONFLAGS *pdwPositionFlags);
++      HRESULT (WINAPI *GetRowset)(IRowPosition *This,REFIID riid,IUnknown **ppRowset);
++      HRESULT (WINAPI *Initialize)(IRowPosition *This,IUnknown *pRowset);
++      HRESULT (WINAPI *SetRowPosition)(IRowPosition *This,HCHAPTER hChapter,HROW hRow,DBPOSITIONFLAGS dwPositionFlags);
++    END_INTERFACE
++  } IRowPositionVtbl;
++  struct IRowPosition {
++    CONST_VTBL struct IRowPositionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowPosition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowPosition_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowPosition_Release(This) (This)->lpVtbl->Release(This)
++#define IRowPosition_ClearRowPosition(This) (This)->lpVtbl->ClearRowPosition(This)
++#define IRowPosition_GetRowPosition(This,phChapter,phRow,pdwPositionFlags) (This)->lpVtbl->GetRowPosition(This,phChapter,phRow,pdwPositionFlags)
++#define IRowPosition_GetRowset(This,riid,ppRowset) (This)->lpVtbl->GetRowset(This,riid,ppRowset)
++#define IRowPosition_Initialize(This,pRowset) (This)->lpVtbl->Initialize(This,pRowset)
++#define IRowPosition_SetRowPosition(This,hChapter,hRow,dwPositionFlags) (This)->lpVtbl->SetRowPosition(This,hChapter,hRow,dwPositionFlags)
++#endif
++#endif
++  HRESULT WINAPI IRowPosition_RemoteClearRowPosition_Proxy(IRowPosition *This,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowPosition_RemoteClearRowPosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowPosition_RemoteGetRowPosition_Proxy(IRowPosition *This,HCHAPTER *phChapter,HROW *phRow,DBPOSITIONFLAGS *pdwPositionFlags,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowPosition_RemoteGetRowPosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowPosition_RemoteGetRowset_Proxy(IRowPosition *This,REFIID riid,IUnknown **ppRowset,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowPosition_RemoteGetRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowPosition_RemoteInitialize_Proxy(IRowPosition *This,IUnknown *pRowset,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowPosition_RemoteInitialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowPosition_RemoteSetRowPosition_Proxy(IRowPosition *This,HCHAPTER hChapter,HROW hRow,DBPOSITIONFLAGS dwPositionFlags,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowPosition_RemoteSetRowPosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowPositionChange_INTERFACE_DEFINED__
++#define __IRowPositionChange_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowPositionChange;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowPositionChange : public IUnknown {
++  public:
++    virtual HRESULT WINAPI OnRowPositionChange(DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny) = 0;
++  };
++#else
++  typedef struct IRowPositionChangeVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowPositionChange *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowPositionChange *This);
++      ULONG (WINAPI *Release)(IRowPositionChange *This);
++      HRESULT (WINAPI *OnRowPositionChange)(IRowPositionChange *This,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++    END_INTERFACE
++  } IRowPositionChangeVtbl;
++  struct IRowPositionChange {
++    CONST_VTBL struct IRowPositionChangeVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowPositionChange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowPositionChange_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowPositionChange_Release(This) (This)->lpVtbl->Release(This)
++#define IRowPositionChange_OnRowPositionChange(This,eReason,ePhase,fCantDeny) (This)->lpVtbl->OnRowPositionChange(This,eReason,ePhase,fCantDeny)
++#endif
++#endif
++  HRESULT WINAPI IRowPositionChange_RemoteOnRowPositionChange_Proxy(IRowPositionChange *This,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowPositionChange_RemoteOnRowPositionChange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IViewRowset_INTERFACE_DEFINED__
++#define __IViewRowset_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IViewRowset;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IViewRowset : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetSpecification(REFIID riid,IUnknown **ppObject) = 0;
++    virtual HRESULT WINAPI OpenViewRowset(IUnknown *pUnkOuter,REFIID riid,IUnknown **ppRowset) = 0;
++  };
++#else
++  typedef struct IViewRowsetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IViewRowset *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IViewRowset *This);
++      ULONG (WINAPI *Release)(IViewRowset *This);
++      HRESULT (WINAPI *GetSpecification)(IViewRowset *This,REFIID riid,IUnknown **ppObject);
++      HRESULT (WINAPI *OpenViewRowset)(IViewRowset *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppRowset);
++    END_INTERFACE
++  } IViewRowsetVtbl;
++  struct IViewRowset {
++    CONST_VTBL struct IViewRowsetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IViewRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IViewRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IViewRowset_Release(This) (This)->lpVtbl->Release(This)
++#define IViewRowset_GetSpecification(This,riid,ppObject) (This)->lpVtbl->GetSpecification(This,riid,ppObject)
++#define IViewRowset_OpenViewRowset(This,pUnkOuter,riid,ppRowset) (This)->lpVtbl->OpenViewRowset(This,pUnkOuter,riid,ppRowset)
++#endif
++#endif
++  HRESULT WINAPI IViewRowset_RemoteGetSpecification_Proxy(IViewRowset *This,REFIID riid,IUnknown **ppObject,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IViewRowset_RemoteGetSpecification_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IViewRowset_RemoteOpenViewRowset_Proxy(IViewRowset *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppRowset,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IViewRowset_RemoteOpenViewRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IViewChapter_INTERFACE_DEFINED__
++#define __IViewChapter_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IViewChapter;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IViewChapter : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetSpecification(REFIID riid,IUnknown **ppRowset) = 0;
++    virtual HRESULT WINAPI OpenViewChapter(HCHAPTER hSource,HCHAPTER *phViewChapter) = 0;
++  };
++#else
++  typedef struct IViewChapterVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IViewChapter *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IViewChapter *This);
++      ULONG (WINAPI *Release)(IViewChapter *This);
++      HRESULT (WINAPI *GetSpecification)(IViewChapter *This,REFIID riid,IUnknown **ppRowset);
++      HRESULT (WINAPI *OpenViewChapter)(IViewChapter *This,HCHAPTER hSource,HCHAPTER *phViewChapter);
++    END_INTERFACE
++  } IViewChapterVtbl;
++  struct IViewChapter {
++    CONST_VTBL struct IViewChapterVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IViewChapter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IViewChapter_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IViewChapter_Release(This) (This)->lpVtbl->Release(This)
++#define IViewChapter_GetSpecification(This,riid,ppRowset) (This)->lpVtbl->GetSpecification(This,riid,ppRowset)
++#define IViewChapter_OpenViewChapter(This,hSource,phViewChapter) (This)->lpVtbl->OpenViewChapter(This,hSource,phViewChapter)
++#endif
++#endif
++  HRESULT WINAPI IViewChapter_RemoteGetSpecification_Proxy(IViewChapter *This,REFIID riid,IUnknown **ppRowset,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IViewChapter_RemoteGetSpecification_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IViewChapter_RemoteOpenViewChapter_Proxy(IViewChapter *This,HCHAPTER hSource,HCHAPTER *phViewChapter,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IViewChapter_RemoteOpenViewChapter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IViewSort_INTERFACE_DEFINED__
++#define __IViewSort_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IViewSort;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IViewSort : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetSortOrder(DBORDINAL *pcValues,DBORDINAL *prgColumns[],DBSORT *prgOrders[]) = 0;
++    virtual HRESULT WINAPI SetSortOrder(DBORDINAL cValues,const DBORDINAL rgColumns[],const DBSORT rgOrders[]) = 0;
++  };
++#else
++  typedef struct IViewSortVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IViewSort *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IViewSort *This);
++      ULONG (WINAPI *Release)(IViewSort *This);
++      HRESULT (WINAPI *GetSortOrder)(IViewSort *This,DBORDINAL *pcValues,DBORDINAL *prgColumns[],DBSORT *prgOrders[]);
++      HRESULT (WINAPI *SetSortOrder)(IViewSort *This,DBORDINAL cValues,const DBORDINAL rgColumns[],const DBSORT rgOrders[]);
++    END_INTERFACE
++  } IViewSortVtbl;
++  struct IViewSort {
++    CONST_VTBL struct IViewSortVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IViewSort_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IViewSort_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IViewSort_Release(This) (This)->lpVtbl->Release(This)
++#define IViewSort_GetSortOrder(This,pcValues,prgColumns,prgOrders) (This)->lpVtbl->GetSortOrder(This,pcValues,prgColumns,prgOrders)
++#define IViewSort_SetSortOrder(This,cValues,rgColumns,rgOrders) (This)->lpVtbl->SetSortOrder(This,cValues,rgColumns,rgOrders)
++#endif
++#endif
++  HRESULT WINAPI IViewSort_RemoteGetSortOrder_Proxy(IViewSort *This,DBORDINAL *pcValues,DBORDINAL **prgColumns,DBSORT **prgOrders,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IViewSort_RemoteGetSortOrder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IViewSort_RemoteSetSortOrder_Proxy(IViewSort *This,DBORDINAL cValues,const DBORDINAL *rgColumns,const DBSORT *rgOrders,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IViewSort_RemoteSetSortOrder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IViewFilter_INTERFACE_DEFINED__
++#define __IViewFilter_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IViewFilter;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IViewFilter : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetFilter(HACCESSOR hAccessor,DBCOUNTITEM *pcRows,DBCOMPAREOP *pCompareOps[],void *pCriteriaData) = 0;
++    virtual HRESULT WINAPI GetFilterBindings(DBCOUNTITEM *pcBindings,DBBINDING **prgBindings) = 0;
++    virtual HRESULT WINAPI SetFilter(HACCESSOR hAccessor,DBCOUNTITEM cRows,DBCOMPAREOP CompareOps[],void *pCriteriaData) = 0;
++  };
++#else
++  typedef struct IViewFilterVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IViewFilter *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IViewFilter *This);
++      ULONG (WINAPI *Release)(IViewFilter *This);
++      HRESULT (WINAPI *GetFilter)(IViewFilter *This,HACCESSOR hAccessor,DBCOUNTITEM *pcRows,DBCOMPAREOP *pCompareOps[],void *pCriteriaData);
++      HRESULT (WINAPI *GetFilterBindings)(IViewFilter *This,DBCOUNTITEM *pcBindings,DBBINDING **prgBindings);
++      HRESULT (WINAPI *SetFilter)(IViewFilter *This,HACCESSOR hAccessor,DBCOUNTITEM cRows,DBCOMPAREOP CompareOps[],void *pCriteriaData);
++    END_INTERFACE
++  } IViewFilterVtbl;
++  struct IViewFilter {
++    CONST_VTBL struct IViewFilterVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IViewFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IViewFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IViewFilter_Release(This) (This)->lpVtbl->Release(This)
++#define IViewFilter_GetFilter(This,hAccessor,pcRows,pCompareOps,pCriteriaData) (This)->lpVtbl->GetFilter(This,hAccessor,pcRows,pCompareOps,pCriteriaData)
++#define IViewFilter_GetFilterBindings(This,pcBindings,prgBindings) (This)->lpVtbl->GetFilterBindings(This,pcBindings,prgBindings)
++#define IViewFilter_SetFilter(This,hAccessor,cRows,CompareOps,pCriteriaData) (This)->lpVtbl->SetFilter(This,hAccessor,cRows,CompareOps,pCriteriaData)
++#endif
++#endif
++  HRESULT WINAPI IViewFilter_GetFilter_Proxy(IViewFilter *This,HACCESSOR hAccessor,DBCOUNTITEM *pcRows,DBCOMPAREOP *pCompareOps[],void *pCriteriaData);
++  void __RPC_STUB IViewFilter_GetFilter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IViewFilter_RemoteGetFilterBindings_Proxy(IViewFilter *This,DBCOUNTITEM *pcBindings,DBBINDING **prgBindings,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IViewFilter_RemoteGetFilterBindings_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IViewFilter_SetFilter_Proxy(IViewFilter *This,HACCESSOR hAccessor,DBCOUNTITEM cRows,DBCOMPAREOP CompareOps[],void *pCriteriaData);
++  void __RPC_STUB IViewFilter_SetFilter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetView_INTERFACE_DEFINED__
++#define __IRowsetView_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetView;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetView : public IUnknown {
++  public:
++    virtual HRESULT WINAPI CreateView(IUnknown *pUnkOuter,REFIID riid,IUnknown **ppView) = 0;
++    virtual HRESULT WINAPI GetView(HCHAPTER hChapter,REFIID riid,HCHAPTER *phChapterSource,IUnknown **ppView) = 0;
++  };
++#else
++  typedef struct IRowsetViewVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetView *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetView *This);
++      ULONG (WINAPI *Release)(IRowsetView *This);
++      HRESULT (WINAPI *CreateView)(IRowsetView *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppView);
++      HRESULT (WINAPI *GetView)(IRowsetView *This,HCHAPTER hChapter,REFIID riid,HCHAPTER *phChapterSource,IUnknown **ppView);
++    END_INTERFACE
++  } IRowsetViewVtbl;
++  struct IRowsetView {
++    CONST_VTBL struct IRowsetViewVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetView_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetView_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetView_CreateView(This,pUnkOuter,riid,ppView) (This)->lpVtbl->CreateView(This,pUnkOuter,riid,ppView)
++#define IRowsetView_GetView(This,hChapter,riid,phChapterSource,ppView) (This)->lpVtbl->GetView(This,hChapter,riid,phChapterSource,ppView)
++#endif
++#endif
++  HRESULT WINAPI IRowsetView_RemoteCreateView_Proxy(IRowsetView *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppView,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowsetView_RemoteCreateView_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetView_RemoteGetView_Proxy(IRowsetView *This,HCHAPTER hChapter,REFIID riid,HCHAPTER *phChapterSource,IUnknown **ppView,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowsetView_RemoteGetView_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifdef deprecated
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0282_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0282_v0_0_s_ifspec;
++#ifndef __IRowsetExactScroll_INTERFACE_DEFINED__
++#define __IRowsetExactScroll_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetExactScroll;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetExactScroll : public IRowsetScroll {
++  public:
++    virtual HRESULT WINAPI GetExactPosition(HCHAPTER hChapter,DBBKMARK cbBookmark,const BYTE *pBookmark,DBCOUNTITEM *pulPosition,DBCOUNTITEM *pcRows) = 0;
++  };
++#else
++  typedef struct IRowsetExactScrollVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetExactScroll *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetExactScroll *This);
++      ULONG (WINAPI *Release)(IRowsetExactScroll *This);
++      HRESULT (WINAPI *AddRefRows)(IRowsetExactScroll *This,DBCOUNTITEM cRows,const HROW rghRows[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *GetData)(IRowsetExactScroll *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++      HRESULT (WINAPI *GetNextRows)(IRowsetExactScroll *This,HCHAPTER hReserved,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++      HRESULT (WINAPI *ReleaseRows)(IRowsetExactScroll *This,DBCOUNTITEM cRows,const HROW rghRows[],DBROWOPTIONS rgRowOptions[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *RestartPosition)(IRowsetExactScroll *This,HCHAPTER hReserved);
++      HRESULT (WINAPI *Compare)(IRowsetExactScroll *This,HCHAPTER hReserved,DBBKMARK cbBookmark1,const BYTE *pBookmark1,DBBKMARK cbBookmark2,const BYTE *pBookmark2,DBCOMPARE *pComparison);
++      HRESULT (WINAPI *GetRowsAt)(IRowsetExactScroll *This,HWATCHREGION hReserved1,HCHAPTER hReserved2,DBBKMARK cbBookmark,const BYTE *pBookmark,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++      HRESULT (WINAPI *GetRowsByBookmark)(IRowsetExactScroll *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const DBBKMARK rgcbBookmarks[],const BYTE *rgpBookmarks[],HROW rghRows[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *Hash)(IRowsetExactScroll *This,HCHAPTER hReserved,DBBKMARK cBookmarks,const DBBKMARK rgcbBookmarks[],const BYTE *rgpBookmarks[],DBHASHVALUE rgHashedValues[],DBROWSTATUS rgBookmarkStatus[]);
++      HRESULT (WINAPI *GetApproximatePosition)(IRowsetExactScroll *This,HCHAPTER hReserved,DBBKMARK cbBookmark,const BYTE *pBookmark,DBCOUNTITEM *pulPosition,DBCOUNTITEM *pcRows);
++      HRESULT (WINAPI *GetRowsAtRatio)(IRowsetExactScroll *This,HWATCHREGION hReserved1,HCHAPTER hReserved2,DBCOUNTITEM ulNumerator,DBCOUNTITEM ulDenominator,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows);
++      HRESULT (WINAPI *GetExactPosition)(IRowsetExactScroll *This,HCHAPTER hChapter,DBBKMARK cbBookmark,const BYTE *pBookmark,DBCOUNTITEM *pulPosition,DBCOUNTITEM *pcRows);
++    END_INTERFACE
++  } IRowsetExactScrollVtbl;
++  struct IRowsetExactScroll {
++    CONST_VTBL struct IRowsetExactScrollVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetExactScroll_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetExactScroll_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetExactScroll_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetExactScroll_AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus) (This)->lpVtbl->AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus)
++#define IRowsetExactScroll_GetData(This,hRow,hAccessor,pData) (This)->lpVtbl->GetData(This,hRow,hAccessor,pData)
++#define IRowsetExactScroll_GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowsObtained,prghRows) (This)->lpVtbl->GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowsObtained,prghRows)
++#define IRowsetExactScroll_ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus) (This)->lpVtbl->ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus)
++#define IRowsetExactScroll_RestartPosition(This,hReserved) (This)->lpVtbl->RestartPosition(This,hReserved)
++#define IRowsetExactScroll_Compare(This,hReserved,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pComparison) (This)->lpVtbl->Compare(This,hReserved,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pComparison)
++#define IRowsetExactScroll_GetRowsAt(This,hReserved1,hReserved2,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows) (This)->lpVtbl->GetRowsAt(This,hReserved1,hReserved2,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows)
++#define IRowsetExactScroll_GetRowsByBookmark(This,hReserved,cRows,rgcbBookmarks,rgpBookmarks,rghRows,rgRowStatus) (This)->lpVtbl->GetRowsByBookmark(This,hReserved,cRows,rgcbBookmarks,rgpBookmarks,rghRows,rgRowStatus)
++#define IRowsetExactScroll_Hash(This,hReserved,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,rgBookmarkStatus) (This)->lpVtbl->Hash(This,hReserved,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,rgBookmarkStatus)
++#define IRowsetExactScroll_GetApproximatePosition(This,hReserved,cbBookmark,pBookmark,pulPosition,pcRows) (This)->lpVtbl->GetApproximatePosition(This,hReserved,cbBookmark,pBookmark,pulPosition,pcRows)
++#define IRowsetExactScroll_GetRowsAtRatio(This,hReserved1,hReserved2,ulNumerator,ulDenominator,cRows,pcRowsObtained,prghRows) (This)->lpVtbl->GetRowsAtRatio(This,hReserved1,hReserved2,ulNumerator,ulDenominator,cRows,pcRowsObtained,prghRows)
++#define IRowsetExactScroll_GetExactPosition(This,hChapter,cbBookmark,pBookmark,pulPosition,pcRows) (This)->lpVtbl->GetExactPosition(This,hChapter,cbBookmark,pBookmark,pulPosition,pcRows)
++#endif
++#endif
++  HRESULT WINAPI IRowsetExactScroll_GetExactPosition_Proxy(IRowsetExactScroll *This,HCHAPTER hChapter,DBBKMARK cbBookmark,const BYTE *pBookmark,DBCOUNTITEM *pulPosition,DBCOUNTITEM *pcRows);
++  void __RPC_STUB IRowsetExactScroll_GetExactPosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0283_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0283_v0_0_s_ifspec;
++#ifndef __IRowsetChange_INTERFACE_DEFINED__
++#define __IRowsetChange_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetChange;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetChange : public IUnknown {
++  public:
++    virtual HRESULT WINAPI DeleteRows(HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBROWSTATUS rgRowStatus[]) = 0;
++    virtual HRESULT WINAPI SetData(HROW hRow,HACCESSOR hAccessor,void *pData) = 0;
++    virtual HRESULT WINAPI InsertRow(HCHAPTER hReserved,HACCESSOR hAccessor,void *pData,HROW *phRow) = 0;
++  };
++#else
++  typedef struct IRowsetChangeVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetChange *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetChange *This);
++      ULONG (WINAPI *Release)(IRowsetChange *This);
++      HRESULT (WINAPI *DeleteRows)(IRowsetChange *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *SetData)(IRowsetChange *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++      HRESULT (WINAPI *InsertRow)(IRowsetChange *This,HCHAPTER hReserved,HACCESSOR hAccessor,void *pData,HROW *phRow);
++    END_INTERFACE
++  } IRowsetChangeVtbl;
++  struct IRowsetChange {
++    CONST_VTBL struct IRowsetChangeVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetChange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetChange_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetChange_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetChange_DeleteRows(This,hReserved,cRows,rghRows,rgRowStatus) (This)->lpVtbl->DeleteRows(This,hReserved,cRows,rghRows,rgRowStatus)
++#define IRowsetChange_SetData(This,hRow,hAccessor,pData) (This)->lpVtbl->SetData(This,hRow,hAccessor,pData)
++#define IRowsetChange_InsertRow(This,hReserved,hAccessor,pData,phRow) (This)->lpVtbl->InsertRow(This,hReserved,hAccessor,pData,phRow)
++#endif
++#endif
++  HRESULT WINAPI IRowsetChange_DeleteRows_Proxy(IRowsetChange *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBROWSTATUS rgRowStatus[]);
++  void __RPC_STUB IRowsetChange_DeleteRows_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetChange_SetData_Proxy(IRowsetChange *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++  void __RPC_STUB IRowsetChange_SetData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetChange_InsertRow_Proxy(IRowsetChange *This,HCHAPTER hReserved,HACCESSOR hAccessor,void *pData,HROW *phRow);
++  void __RPC_STUB IRowsetChange_InsertRow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetUpdate_INTERFACE_DEFINED__
++#define __IRowsetUpdate_INTERFACE_DEFINED__
++  typedef DWORD DBPENDINGSTATUS;
++  enum DBPENDINGSTATUSENUM {
++    DBPENDINGSTATUS_NEW = 0x1,DBPENDINGSTATUS_CHANGED = 0x2,DBPENDINGSTATUS_DELETED = 0x4,DBPENDINGSTATUS_UNCHANGED = 0x8,
++    DBPENDINGSTATUS_INVALIDROW = 0x10
++  };
++
++  EXTERN_C const IID IID_IRowsetUpdate;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetUpdate : public IRowsetChange {
++  public:
++    virtual HRESULT WINAPI GetOriginalData(HROW hRow,HACCESSOR hAccessor,void *pData) = 0;
++    virtual HRESULT WINAPI GetPendingRows(HCHAPTER hReserved,DBPENDINGSTATUS dwRowStatus,DBCOUNTITEM *pcPendingRows,HROW **prgPendingRows,DBPENDINGSTATUS **prgPendingStatus) = 0;
++    virtual HRESULT WINAPI GetRowStatus(HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBPENDINGSTATUS rgPendingStatus[]) = 0;
++    virtual HRESULT WINAPI Undo(HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBCOUNTITEM *pcRowsUndone,HROW **prgRowsUndone,DBROWSTATUS **prgRowStatus) = 0;
++    virtual HRESULT WINAPI Update(HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBCOUNTITEM *pcRows,HROW **prgRows,DBROWSTATUS **prgRowStatus) = 0;
++  };
++#else
++  typedef struct IRowsetUpdateVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetUpdate *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetUpdate *This);
++      ULONG (WINAPI *Release)(IRowsetUpdate *This);
++      HRESULT (WINAPI *DeleteRows)(IRowsetUpdate *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBROWSTATUS rgRowStatus[]);
++      HRESULT (WINAPI *SetData)(IRowsetUpdate *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++      HRESULT (WINAPI *InsertRow)(IRowsetUpdate *This,HCHAPTER hReserved,HACCESSOR hAccessor,void *pData,HROW *phRow);
++      HRESULT (WINAPI *GetOriginalData)(IRowsetUpdate *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++      HRESULT (WINAPI *GetPendingRows)(IRowsetUpdate *This,HCHAPTER hReserved,DBPENDINGSTATUS dwRowStatus,DBCOUNTITEM *pcPendingRows,HROW **prgPendingRows,DBPENDINGSTATUS **prgPendingStatus);
++      HRESULT (WINAPI *GetRowStatus)(IRowsetUpdate *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBPENDINGSTATUS rgPendingStatus[]);
++      HRESULT (WINAPI *Undo)(IRowsetUpdate *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBCOUNTITEM *pcRowsUndone,HROW **prgRowsUndone,DBROWSTATUS **prgRowStatus);
++      HRESULT (WINAPI *Update)(IRowsetUpdate *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBCOUNTITEM *pcRows,HROW **prgRows,DBROWSTATUS **prgRowStatus);
++    END_INTERFACE
++  } IRowsetUpdateVtbl;
++  struct IRowsetUpdate {
++    CONST_VTBL struct IRowsetUpdateVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetUpdate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetUpdate_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetUpdate_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetUpdate_DeleteRows(This,hReserved,cRows,rghRows,rgRowStatus) (This)->lpVtbl->DeleteRows(This,hReserved,cRows,rghRows,rgRowStatus)
++#define IRowsetUpdate_SetData(This,hRow,hAccessor,pData) (This)->lpVtbl->SetData(This,hRow,hAccessor,pData)
++#define IRowsetUpdate_InsertRow(This,hReserved,hAccessor,pData,phRow) (This)->lpVtbl->InsertRow(This,hReserved,hAccessor,pData,phRow)
++#define IRowsetUpdate_GetOriginalData(This,hRow,hAccessor,pData) (This)->lpVtbl->GetOriginalData(This,hRow,hAccessor,pData)
++#define IRowsetUpdate_GetPendingRows(This,hReserved,dwRowStatus,pcPendingRows,prgPendingRows,prgPendingStatus) (This)->lpVtbl->GetPendingRows(This,hReserved,dwRowStatus,pcPendingRows,prgPendingRows,prgPendingStatus)
++#define IRowsetUpdate_GetRowStatus(This,hReserved,cRows,rghRows,rgPendingStatus) (This)->lpVtbl->GetRowStatus(This,hReserved,cRows,rghRows,rgPendingStatus)
++#define IRowsetUpdate_Undo(This,hReserved,cRows,rghRows,pcRowsUndone,prgRowsUndone,prgRowStatus) (This)->lpVtbl->Undo(This,hReserved,cRows,rghRows,pcRowsUndone,prgRowsUndone,prgRowStatus)
++#define IRowsetUpdate_Update(This,hReserved,cRows,rghRows,pcRows,prgRows,prgRowStatus) (This)->lpVtbl->Update(This,hReserved,cRows,rghRows,pcRows,prgRows,prgRowStatus)
++#endif
++#endif
++  HRESULT WINAPI IRowsetUpdate_GetOriginalData_Proxy(IRowsetUpdate *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++  void __RPC_STUB IRowsetUpdate_GetOriginalData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetUpdate_GetPendingRows_Proxy(IRowsetUpdate *This,HCHAPTER hReserved,DBPENDINGSTATUS dwRowStatus,DBCOUNTITEM *pcPendingRows,HROW **prgPendingRows,DBPENDINGSTATUS **prgPendingStatus);
++  void __RPC_STUB IRowsetUpdate_GetPendingRows_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetUpdate_GetRowStatus_Proxy(IRowsetUpdate *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBPENDINGSTATUS rgPendingStatus[]);
++  void __RPC_STUB IRowsetUpdate_GetRowStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetUpdate_Undo_Proxy(IRowsetUpdate *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBCOUNTITEM *pcRowsUndone,HROW **prgRowsUndone,DBROWSTATUS **prgRowStatus);
++  void __RPC_STUB IRowsetUpdate_Undo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetUpdate_Update_Proxy(IRowsetUpdate *This,HCHAPTER hReserved,DBCOUNTITEM cRows,const HROW rghRows[],DBCOUNTITEM *pcRows,HROW **prgRows,DBROWSTATUS **prgRowStatus);
++  void __RPC_STUB IRowsetUpdate_Update_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetIdentity_INTERFACE_DEFINED__
++#define __IRowsetIdentity_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetIdentity;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetIdentity : public IUnknown {
++  public:
++    virtual HRESULT WINAPI IsSameRow(HROW hThisRow,HROW hThatRow) = 0;
++  };
++#else
++  typedef struct IRowsetIdentityVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetIdentity *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetIdentity *This);
++      ULONG (WINAPI *Release)(IRowsetIdentity *This);
++      HRESULT (WINAPI *IsSameRow)(IRowsetIdentity *This,HROW hThisRow,HROW hThatRow);
++    END_INTERFACE
++  } IRowsetIdentityVtbl;
++  struct IRowsetIdentity {
++    CONST_VTBL struct IRowsetIdentityVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetIdentity_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetIdentity_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetIdentity_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetIdentity_IsSameRow(This,hThisRow,hThatRow) (This)->lpVtbl->IsSameRow(This,hThisRow,hThatRow)
++#endif
++#endif
++  HRESULT WINAPI IRowsetIdentity_RemoteIsSameRow_Proxy(IRowsetIdentity *This,HROW hThisRow,HROW hThatRow,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IRowsetIdentity_RemoteIsSameRow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetNotify_INTERFACE_DEFINED__
++#define __IRowsetNotify_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetNotify;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetNotify : public IUnknown {
++  public:
++    virtual HRESULT WINAPI OnFieldChange(IRowset *pRowset,HROW hRow,DBORDINAL cColumns,DBORDINAL rgColumns[],DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny) = 0;
++    virtual HRESULT WINAPI OnRowChange(IRowset *pRowset,DBCOUNTITEM cRows,const HROW rghRows[],DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny) = 0;
++    virtual HRESULT WINAPI OnRowsetChange(IRowset *pRowset,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny) = 0;
++  };
++#else
++  typedef struct IRowsetNotifyVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetNotify *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetNotify *This);
++      ULONG (WINAPI *Release)(IRowsetNotify *This);
++      HRESULT (WINAPI *OnFieldChange)(IRowsetNotify *This,IRowset *pRowset,HROW hRow,DBORDINAL cColumns,DBORDINAL rgColumns[],DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++      HRESULT (WINAPI *OnRowChange)(IRowsetNotify *This,IRowset *pRowset,DBCOUNTITEM cRows,const HROW rghRows[],DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++      HRESULT (WINAPI *OnRowsetChange)(IRowsetNotify *This,IRowset *pRowset,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++    END_INTERFACE
++  } IRowsetNotifyVtbl;
++  struct IRowsetNotify {
++    CONST_VTBL struct IRowsetNotifyVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetNotify_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetNotify_OnFieldChange(This,pRowset,hRow,cColumns,rgColumns,eReason,ePhase,fCantDeny) (This)->lpVtbl->OnFieldChange(This,pRowset,hRow,cColumns,rgColumns,eReason,ePhase,fCantDeny)
++#define IRowsetNotify_OnRowChange(This,pRowset,cRows,rghRows,eReason,ePhase,fCantDeny) (This)->lpVtbl->OnRowChange(This,pRowset,cRows,rghRows,eReason,ePhase,fCantDeny)
++#define IRowsetNotify_OnRowsetChange(This,pRowset,eReason,ePhase,fCantDeny) (This)->lpVtbl->OnRowsetChange(This,pRowset,eReason,ePhase,fCantDeny)
++#endif
++#endif
++  HRESULT WINAPI IRowsetNotify_RemoteOnFieldChange_Proxy(IRowsetNotify *This,IRowset *pRowset,HROW hRow,DBORDINAL cColumns,DBORDINAL *rgColumns,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++  void __RPC_STUB IRowsetNotify_RemoteOnFieldChange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetNotify_RemoteOnRowChange_Proxy(IRowsetNotify *This,IRowset *pRowset,DBCOUNTITEM cRows,const HROW *rghRows,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++  void __RPC_STUB IRowsetNotify_RemoteOnRowChange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetNotify_RemoteOnRowsetChange_Proxy(IRowsetNotify *This,IRowset *pRowset,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++  void __RPC_STUB IRowsetNotify_RemoteOnRowsetChange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetIndex_INTERFACE_DEFINED__
++#define __IRowsetIndex_INTERFACE_DEFINED__
++  typedef DWORD DBSEEK;
++
++  enum DBSEEKENUM {
++    DBSEEK_INVALID = 0,DBSEEK_FIRSTEQ = 0x1,DBSEEK_LASTEQ = 0x2,DBSEEK_AFTEREQ = 0x4,DBSEEK_AFTER = 0x8,DBSEEK_BEFOREEQ = 0x10,
++    DBSEEK_BEFORE = 0x20
++  };
++#define DBSEEK_GE DBSEEK_AFTEREQ
++#define DBSEEK_GT DBSEEK_AFTER
++#define DBSEEK_LE DBSEEK_BEFOREEQ
++#define DBSEEK_LT DBSEEK_BEFORE
++  typedef DWORD DBRANGE;
++
++  enum DBRANGEENUM {
++    DBRANGE_INCLUSIVESTART = 0,DBRANGE_INCLUSIVEEND = 0,DBRANGE_EXCLUSIVESTART = 0x1,DBRANGE_EXCLUSIVEEND = 0x2,
++    DBRANGE_EXCLUDENULLS = 0x4,DBRANGE_PREFIX = 0x8,DBRANGE_MATCH = 0x10
++  };
++
++#if (OLEDBVER >= 0x0200)
++
++  enum DBRANGEENUM20 {
++    DBRANGE_MATCH_N_SHIFT = 0x18,DBRANGE_MATCH_N_MASK = 0xff
++  };
++#endif
++
++  EXTERN_C const IID IID_IRowsetIndex;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetIndex : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetIndexInfo(DBORDINAL *pcKeyColumns,DBINDEXCOLUMNDESC **prgIndexColumnDesc,ULONG *pcIndexPropertySets,DBPROPSET **prgIndexPropertySets) = 0;
++    virtual HRESULT WINAPI Seek(HACCESSOR hAccessor,DBORDINAL cKeyValues,void *pData,DBSEEK dwSeekOptions) = 0;
++    virtual HRESULT WINAPI SetRange(HACCESSOR hAccessor,DBORDINAL cStartKeyColumns,void *pStartData,DBORDINAL cEndKeyColumns,void *pEndData,DBRANGE dwRangeOptions) = 0;
++  };
++#else
++  typedef struct IRowsetIndexVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetIndex *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetIndex *This);
++      ULONG (WINAPI *Release)(IRowsetIndex *This);
++      HRESULT (WINAPI *GetIndexInfo)(IRowsetIndex *This,DBORDINAL *pcKeyColumns,DBINDEXCOLUMNDESC **prgIndexColumnDesc,ULONG *pcIndexPropertySets,DBPROPSET **prgIndexPropertySets);
++      HRESULT (WINAPI *Seek)(IRowsetIndex *This,HACCESSOR hAccessor,DBORDINAL cKeyValues,void *pData,DBSEEK dwSeekOptions);
++      HRESULT (WINAPI *SetRange)(IRowsetIndex *This,HACCESSOR hAccessor,DBORDINAL cStartKeyColumns,void *pStartData,DBORDINAL cEndKeyColumns,void *pEndData,DBRANGE dwRangeOptions);
++    END_INTERFACE
++  } IRowsetIndexVtbl;
++  struct IRowsetIndex {
++    CONST_VTBL struct IRowsetIndexVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetIndex_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetIndex_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetIndex_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetIndex_GetIndexInfo(This,pcKeyColumns,prgIndexColumnDesc,pcIndexPropertySets,prgIndexPropertySets) (This)->lpVtbl->GetIndexInfo(This,pcKeyColumns,prgIndexColumnDesc,pcIndexPropertySets,prgIndexPropertySets)
++#define IRowsetIndex_Seek(This,hAccessor,cKeyValues,pData,dwSeekOptions) (This)->lpVtbl->Seek(This,hAccessor,cKeyValues,pData,dwSeekOptions)
++#define IRowsetIndex_SetRange(This,hAccessor,cStartKeyColumns,pStartData,cEndKeyColumns,pEndData,dwRangeOptions) (This)->lpVtbl->SetRange(This,hAccessor,cStartKeyColumns,pStartData,cEndKeyColumns,pEndData,dwRangeOptions)
++#endif
++#endif
++  HRESULT WINAPI IRowsetIndex_GetIndexInfo_Proxy(IRowsetIndex *This,DBORDINAL *pcKeyColumns,DBINDEXCOLUMNDESC **prgIndexColumnDesc,ULONG *pcIndexPropertySets,DBPROPSET **prgIndexPropertySets);
++  void __RPC_STUB IRowsetIndex_GetIndexInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetIndex_Seek_Proxy(IRowsetIndex *This,HACCESSOR hAccessor,DBORDINAL cKeyValues,void *pData,DBSEEK dwSeekOptions);
++  void __RPC_STUB IRowsetIndex_Seek_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetIndex_SetRange_Proxy(IRowsetIndex *This,HACCESSOR hAccessor,DBORDINAL cStartKeyColumns,void *pStartData,DBORDINAL cEndKeyColumns,void *pEndData,DBRANGE dwRangeOptions);
++  void __RPC_STUB IRowsetIndex_SetRange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ICommand_INTERFACE_DEFINED__
++#define __ICommand_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ICommand;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ICommand : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Cancel(void) = 0;
++    virtual HRESULT WINAPI Execute(IUnknown *pUnkOuter,REFIID riid,DBPARAMS *pParams,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset) = 0;
++    virtual HRESULT WINAPI GetDBSession(REFIID riid,IUnknown **ppSession) = 0;
++  };
++#else
++  typedef struct ICommandVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ICommand *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ICommand *This);
++      ULONG (WINAPI *Release)(ICommand *This);
++      HRESULT (WINAPI *Cancel)(ICommand *This);
++      HRESULT (WINAPI *Execute)(ICommand *This,IUnknown *pUnkOuter,REFIID riid,DBPARAMS *pParams,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset);
++      HRESULT (WINAPI *GetDBSession)(ICommand *This,REFIID riid,IUnknown **ppSession);
++    END_INTERFACE
++  } ICommandVtbl;
++  struct ICommand {
++    CONST_VTBL struct ICommandVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ICommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ICommand_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ICommand_Release(This) (This)->lpVtbl->Release(This)
++#define ICommand_Cancel(This) (This)->lpVtbl->Cancel(This)
++#define ICommand_Execute(This,pUnkOuter,riid,pParams,pcRowsAffected,ppRowset) (This)->lpVtbl->Execute(This,pUnkOuter,riid,pParams,pcRowsAffected,ppRowset)
++#define ICommand_GetDBSession(This,riid,ppSession) (This)->lpVtbl->GetDBSession(This,riid,ppSession)
++#endif
++#endif
++  HRESULT WINAPI ICommand_RemoteCancel_Proxy(ICommand *This,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ICommand_RemoteCancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICommand_RemoteExecute_Proxy(ICommand *This,IUnknown *pUnkOuter,REFIID riid,HACCESSOR hAccessor,DB_UPARAMS cParamSets,GUID *pGuid,ULONG ulGuidOffset,RMTPACK *pInputParams,RMTPACK *pOutputParams,DBCOUNTITEM cBindings,DBBINDING *rgBindings,DBSTATUS *rgStatus,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset);
++  void __RPC_STUB ICommand_RemoteExecute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICommand_RemoteGetDBSession_Proxy(ICommand *This,REFIID riid,IUnknown **ppSession,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ICommand_RemoteGetDBSession_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IMultipleResults_INTERFACE_DEFINED__
++#define __IMultipleResults_INTERFACE_DEFINED__
++  typedef DB_LRESERVE DBRESULTFLAG;
++
++  enum DBRESULTFLAGENUM {
++    DBRESULTFLAG_DEFAULT = 0,DBRESULTFLAG_ROWSET = 1,DBRESULTFLAG_ROW = 2
++  };
++
++  EXTERN_C const IID IID_IMultipleResults;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IMultipleResults : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetResult(IUnknown *pUnkOuter,DBRESULTFLAG lResultFlag,REFIID riid,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset) = 0;
++  };
++#else
++  typedef struct IMultipleResultsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IMultipleResults *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IMultipleResults *This);
++      ULONG (WINAPI *Release)(IMultipleResults *This);
++      HRESULT (WINAPI *GetResult)(IMultipleResults *This,IUnknown *pUnkOuter,DBRESULTFLAG lResultFlag,REFIID riid,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset);
++    END_INTERFACE
++  } IMultipleResultsVtbl;
++  struct IMultipleResults {
++    CONST_VTBL struct IMultipleResultsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IMultipleResults_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IMultipleResults_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IMultipleResults_Release(This) (This)->lpVtbl->Release(This)
++#define IMultipleResults_GetResult(This,pUnkOuter,lResultFlag,riid,pcRowsAffected,ppRowset) (This)->lpVtbl->GetResult(This,pUnkOuter,lResultFlag,riid,pcRowsAffected,ppRowset)
++#endif
++#endif
++  HRESULT WINAPI IMultipleResults_RemoteGetResult_Proxy(IMultipleResults *This,IUnknown *pUnkOuter,DBRESULTFLAG lResultFlag,REFIID riid,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IMultipleResults_RemoteGetResult_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IConvertType_INTERFACE_DEFINED__
++#define __IConvertType_INTERFACE_DEFINED__
++  typedef DWORD DBCONVERTFLAGS;
++
++  enum DBCONVERTFLAGSENUM {
++    DBCONVERTFLAGS_COLUMN = 0,DBCONVERTFLAGS_PARAMETER = 0x1
++  };
++#if (OLEDBVER >= 0x0200)
++  enum DBCONVERTFLAGSENUM20 {
++    DBCONVERTFLAGS_ISLONG = 0x2,DBCONVERTFLAGS_ISFIXEDLENGTH = 0x4,DBCONVERTFLAGS_FROMVARIANT = 0x8
++  };
++#endif
++
++  EXTERN_C const IID IID_IConvertType;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IConvertType : public IUnknown {
++  public:
++    virtual HRESULT WINAPI CanConvert(DBTYPE wFromType,DBTYPE wToType,DBCONVERTFLAGS dwConvertFlags) = 0;
++  };
++#else
++  typedef struct IConvertTypeVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IConvertType *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IConvertType *This);
++      ULONG (WINAPI *Release)(IConvertType *This);
++      HRESULT (WINAPI *CanConvert)(IConvertType *This,DBTYPE wFromType,DBTYPE wToType,DBCONVERTFLAGS dwConvertFlags);
++    END_INTERFACE
++  } IConvertTypeVtbl;
++  struct IConvertType {
++    CONST_VTBL struct IConvertTypeVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IConvertType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IConvertType_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IConvertType_Release(This) (This)->lpVtbl->Release(This)
++#define IConvertType_CanConvert(This,wFromType,wToType,dwConvertFlags) (This)->lpVtbl->CanConvert(This,wFromType,wToType,dwConvertFlags)
++#endif
++#endif
++  HRESULT WINAPI IConvertType_RemoteCanConvert_Proxy(IConvertType *This,DBTYPE wFromType,DBTYPE wToType,DBCONVERTFLAGS dwConvertFlags,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IConvertType_RemoteCanConvert_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ICommandPrepare_INTERFACE_DEFINED__
++#define __ICommandPrepare_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ICommandPrepare;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ICommandPrepare : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Prepare(ULONG cExpectedRuns) = 0;
++    virtual HRESULT WINAPI Unprepare(void) = 0;
++  };
++#else
++  typedef struct ICommandPrepareVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ICommandPrepare *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ICommandPrepare *This);
++      ULONG (WINAPI *Release)(ICommandPrepare *This);
++      HRESULT (WINAPI *Prepare)(ICommandPrepare *This,ULONG cExpectedRuns);
++      HRESULT (WINAPI *Unprepare)(ICommandPrepare *This);
++    END_INTERFACE
++  } ICommandPrepareVtbl;
++  struct ICommandPrepare {
++    CONST_VTBL struct ICommandPrepareVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ICommandPrepare_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ICommandPrepare_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ICommandPrepare_Release(This) (This)->lpVtbl->Release(This)
++#define ICommandPrepare_Prepare(This,cExpectedRuns) (This)->lpVtbl->Prepare(This,cExpectedRuns)
++#define ICommandPrepare_Unprepare(This) (This)->lpVtbl->Unprepare(This)
++#endif
++#endif
++  HRESULT WINAPI ICommandPrepare_RemotePrepare_Proxy(ICommandPrepare *This,ULONG cExpectedRuns,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ICommandPrepare_RemotePrepare_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICommandPrepare_RemoteUnprepare_Proxy(ICommandPrepare *This,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ICommandPrepare_RemoteUnprepare_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ICommandProperties_INTERFACE_DEFINED__
++#define __ICommandProperties_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ICommandProperties;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ICommandProperties : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetProperties(const ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets) = 0;
++    virtual HRESULT WINAPI SetProperties(ULONG cPropertySets,DBPROPSET rgPropertySets[]) = 0;
++  };
++#else
++  typedef struct ICommandPropertiesVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ICommandProperties *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ICommandProperties *This);
++      ULONG (WINAPI *Release)(ICommandProperties *This);
++      HRESULT (WINAPI *GetProperties)(ICommandProperties *This,const ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets);
++      HRESULT (WINAPI *SetProperties)(ICommandProperties *This,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++    END_INTERFACE
++  } ICommandPropertiesVtbl;
++  struct ICommandProperties {
++    CONST_VTBL struct ICommandPropertiesVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ICommandProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ICommandProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ICommandProperties_Release(This) (This)->lpVtbl->Release(This)
++#define ICommandProperties_GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets) (This)->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets)
++#define ICommandProperties_SetProperties(This,cPropertySets,rgPropertySets) (This)->lpVtbl->SetProperties(This,cPropertySets,rgPropertySets)
++#endif
++#endif
++  HRESULT WINAPI ICommandProperties_RemoteGetProperties_Proxy(ICommandProperties *This,const ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertySets,DBPROPSET **prgPropertySets,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ICommandProperties_RemoteGetProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICommandProperties_RemoteSetProperties_Proxy(ICommandProperties *This,ULONG cPropertySets,DBPROPSET *rgPropertySets,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ICommandProperties_RemoteSetProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ICommandText_INTERFACE_DEFINED__
++#define __ICommandText_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ICommandText;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ICommandText : public ICommand {
++  public:
++    virtual HRESULT WINAPI GetCommandText(GUID *pguidDialect,LPOLESTR *ppwszCommand) = 0;
++    virtual HRESULT WINAPI SetCommandText(REFGUID rguidDialect,LPCOLESTR pwszCommand) = 0;
++  };
++#else
++  typedef struct ICommandTextVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ICommandText *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ICommandText *This);
++      ULONG (WINAPI *Release)(ICommandText *This);
++      HRESULT (WINAPI *Cancel)(ICommandText *This);
++      HRESULT (WINAPI *Execute)(ICommandText *This,IUnknown *pUnkOuter,REFIID riid,DBPARAMS *pParams,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset);
++      HRESULT (WINAPI *GetDBSession)(ICommandText *This,REFIID riid,IUnknown **ppSession);
++      HRESULT (WINAPI *GetCommandText)(ICommandText *This,GUID *pguidDialect,LPOLESTR *ppwszCommand);
++      HRESULT (WINAPI *SetCommandText)(ICommandText *This,REFGUID rguidDialect,LPCOLESTR pwszCommand);
++    END_INTERFACE
++  } ICommandTextVtbl;
++  struct ICommandText {
++    CONST_VTBL struct ICommandTextVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ICommandText_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ICommandText_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ICommandText_Release(This) (This)->lpVtbl->Release(This)
++#define ICommandText_Cancel(This) (This)->lpVtbl->Cancel(This)
++#define ICommandText_Execute(This,pUnkOuter,riid,pParams,pcRowsAffected,ppRowset) (This)->lpVtbl->Execute(This,pUnkOuter,riid,pParams,pcRowsAffected,ppRowset)
++#define ICommandText_GetDBSession(This,riid,ppSession) (This)->lpVtbl->GetDBSession(This,riid,ppSession)
++#define ICommandText_GetCommandText(This,pguidDialect,ppwszCommand) (This)->lpVtbl->GetCommandText(This,pguidDialect,ppwszCommand)
++#define ICommandText_SetCommandText(This,rguidDialect,pwszCommand) (This)->lpVtbl->SetCommandText(This,rguidDialect,pwszCommand)
++#endif
++#endif
++  HRESULT WINAPI ICommandText_RemoteGetCommandText_Proxy(ICommandText *This,GUID *pguidDialect,LPOLESTR *ppwszCommand,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ICommandText_RemoteGetCommandText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICommandText_RemoteSetCommandText_Proxy(ICommandText *This,REFGUID rguidDialect,LPCOLESTR pwszCommand,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ICommandText_RemoteSetCommandText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ICommandWithParameters_INTERFACE_DEFINED__
++#define __ICommandWithParameters_INTERFACE_DEFINED__
++  typedef struct tagDBPARAMBINDINFO {
++    LPOLESTR pwszDataSourceType;
++    LPOLESTR pwszName;
++    DBLENGTH ulParamSize;
++    DBPARAMFLAGS dwFlags;
++    BYTE bPrecision;
++    BYTE bScale;
++  } DBPARAMBINDINFO;
++
++  EXTERN_C const IID IID_ICommandWithParameters;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ICommandWithParameters : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetParameterInfo(DB_UPARAMS *pcParams,DBPARAMINFO **prgParamInfo,OLECHAR **ppNamesBuffer) = 0;
++    virtual HRESULT WINAPI MapParameterNames(DB_UPARAMS cParamNames,const OLECHAR *rgParamNames[],DB_LPARAMS rgParamOrdinals[]) = 0;
++    virtual HRESULT WINAPI SetParameterInfo(DB_UPARAMS cParams,const DB_UPARAMS rgParamOrdinals[],const DBPARAMBINDINFO rgParamBindInfo[]) = 0;
++  };
++#else
++  typedef struct ICommandWithParametersVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ICommandWithParameters *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ICommandWithParameters *This);
++      ULONG (WINAPI *Release)(ICommandWithParameters *This);
++      HRESULT (WINAPI *GetParameterInfo)(ICommandWithParameters *This,DB_UPARAMS *pcParams,DBPARAMINFO **prgParamInfo,OLECHAR **ppNamesBuffer);
++      HRESULT (WINAPI *MapParameterNames)(ICommandWithParameters *This,DB_UPARAMS cParamNames,const OLECHAR *rgParamNames[],DB_LPARAMS rgParamOrdinals[]);
++      HRESULT (WINAPI *SetParameterInfo)(ICommandWithParameters *This,DB_UPARAMS cParams,const DB_UPARAMS rgParamOrdinals[],const DBPARAMBINDINFO rgParamBindInfo[]);
++    END_INTERFACE
++  } ICommandWithParametersVtbl;
++  struct ICommandWithParameters {
++    CONST_VTBL struct ICommandWithParametersVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ICommandWithParameters_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ICommandWithParameters_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ICommandWithParameters_Release(This) (This)->lpVtbl->Release(This)
++#define ICommandWithParameters_GetParameterInfo(This,pcParams,prgParamInfo,ppNamesBuffer) (This)->lpVtbl->GetParameterInfo(This,pcParams,prgParamInfo,ppNamesBuffer)
++#define ICommandWithParameters_MapParameterNames(This,cParamNames,rgParamNames,rgParamOrdinals) (This)->lpVtbl->MapParameterNames(This,cParamNames,rgParamNames,rgParamOrdinals)
++#define ICommandWithParameters_SetParameterInfo(This,cParams,rgParamOrdinals,rgParamBindInfo) (This)->lpVtbl->SetParameterInfo(This,cParams,rgParamOrdinals,rgParamBindInfo)
++#endif
++#endif
++  HRESULT WINAPI ICommandWithParameters_RemoteGetParameterInfo_Proxy(ICommandWithParameters *This,DB_UPARAMS *pcParams,DBPARAMINFO **prgParamInfo,DBBYTEOFFSET **prgNameOffsets,DBLENGTH *pcbNamesBuffer,OLECHAR **ppNamesBuffer,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ICommandWithParameters_RemoteGetParameterInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICommandWithParameters_RemoteMapParameterNames_Proxy(ICommandWithParameters *This,DB_UPARAMS cParamNames,LPCOLESTR *rgParamNames,DB_LPARAMS *rgParamOrdinals,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ICommandWithParameters_RemoteMapParameterNames_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICommandWithParameters_RemoteSetParameterInfo_Proxy(ICommandWithParameters *This,DB_UPARAMS cParams,const DB_UPARAMS *rgParamOrdinals,const DBPARAMBINDINFO *rgParamBindInfo,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ICommandWithParameters_RemoteSetParameterInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IColumnsRowset_INTERFACE_DEFINED__
++#define __IColumnsRowset_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IColumnsRowset;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IColumnsRowset : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetAvailableColumns(DBORDINAL *pcOptColumns,DBID **prgOptColumns) = 0;
++    virtual HRESULT WINAPI GetColumnsRowset(IUnknown *pUnkOuter,DBORDINAL cOptColumns,const DBID rgOptColumns[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppColRowset) = 0;
++  };
++#else
++  typedef struct IColumnsRowsetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IColumnsRowset *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IColumnsRowset *This);
++      ULONG (WINAPI *Release)(IColumnsRowset *This);
++      HRESULT (WINAPI *GetAvailableColumns)(IColumnsRowset *This,DBORDINAL *pcOptColumns,DBID **prgOptColumns);
++      HRESULT (WINAPI *GetColumnsRowset)(IColumnsRowset *This,IUnknown *pUnkOuter,DBORDINAL cOptColumns,const DBID rgOptColumns[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppColRowset);
++    END_INTERFACE
++  } IColumnsRowsetVtbl;
++  struct IColumnsRowset {
++    CONST_VTBL struct IColumnsRowsetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IColumnsRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IColumnsRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IColumnsRowset_Release(This) (This)->lpVtbl->Release(This)
++#define IColumnsRowset_GetAvailableColumns(This,pcOptColumns,prgOptColumns) (This)->lpVtbl->GetAvailableColumns(This,pcOptColumns,prgOptColumns)
++#define IColumnsRowset_GetColumnsRowset(This,pUnkOuter,cOptColumns,rgOptColumns,riid,cPropertySets,rgPropertySets,ppColRowset) (This)->lpVtbl->GetColumnsRowset(This,pUnkOuter,cOptColumns,rgOptColumns,riid,cPropertySets,rgPropertySets,ppColRowset)
++#endif
++#endif
++  HRESULT WINAPI IColumnsRowset_RemoteGetAvailableColumns_Proxy(IColumnsRowset *This,DBORDINAL *pcOptColumns,DBID **prgOptColumns,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IColumnsRowset_RemoteGetAvailableColumns_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IColumnsRowset_RemoteGetColumnsRowset_Proxy(IColumnsRowset *This,IUnknown *pUnkOuter,DBORDINAL cOptColumns,const DBID *rgOptColumns,REFIID riid,ULONG cPropertySets,DBPROPSET *rgPropertySets,IUnknown **ppColRowset,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IColumnsRowset_RemoteGetColumnsRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IColumnsInfo_INTERFACE_DEFINED__
++#define __IColumnsInfo_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IColumnsInfo;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IColumnsInfo : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetColumnInfo(DBORDINAL *pcColumns,DBCOLUMNINFO **prgInfo,OLECHAR **ppStringsBuffer) = 0;
++    virtual HRESULT WINAPI MapColumnIDs(DBORDINAL cColumnIDs,const DBID rgColumnIDs[],DBORDINAL rgColumns[]) = 0;
++  };
++#else
++  typedef struct IColumnsInfoVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IColumnsInfo *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IColumnsInfo *This);
++      ULONG (WINAPI *Release)(IColumnsInfo *This);
++      HRESULT (WINAPI *GetColumnInfo)(IColumnsInfo *This,DBORDINAL *pcColumns,DBCOLUMNINFO **prgInfo,OLECHAR **ppStringsBuffer);
++      HRESULT (WINAPI *MapColumnIDs)(IColumnsInfo *This,DBORDINAL cColumnIDs,const DBID rgColumnIDs[],DBORDINAL rgColumns[]);
++    END_INTERFACE
++  } IColumnsInfoVtbl;
++  struct IColumnsInfo {
++    CONST_VTBL struct IColumnsInfoVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IColumnsInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IColumnsInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IColumnsInfo_Release(This) (This)->lpVtbl->Release(This)
++#define IColumnsInfo_GetColumnInfo(This,pcColumns,prgInfo,ppStringsBuffer) (This)->lpVtbl->GetColumnInfo(This,pcColumns,prgInfo,ppStringsBuffer)
++#define IColumnsInfo_MapColumnIDs(This,cColumnIDs,rgColumnIDs,rgColumns) (This)->lpVtbl->MapColumnIDs(This,cColumnIDs,rgColumnIDs,rgColumns)
++#endif
++#endif
++  HRESULT WINAPI IColumnsInfo_RemoteGetColumnInfo_Proxy(IColumnsInfo *This,DBORDINAL *pcColumns,DBCOLUMNINFO **prgInfo,DBBYTEOFFSET **prgNameOffsets,DBBYTEOFFSET **prgcolumnidOffsets,DBLENGTH *pcbStringsBuffer,OLECHAR **ppStringsBuffer,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IColumnsInfo_RemoteGetColumnInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IColumnsInfo_RemoteMapColumnIDs_Proxy(IColumnsInfo *This,DBORDINAL cColumnIDs,const DBID *rgColumnIDs,DBORDINAL *rgColumns,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IColumnsInfo_RemoteMapColumnIDs_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IDBCreateCommand_INTERFACE_DEFINED__
++#define __IDBCreateCommand_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IDBCreateCommand;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IDBCreateCommand : public IUnknown {
++  public:
++    virtual HRESULT WINAPI CreateCommand(IUnknown *pUnkOuter,REFIID riid,IUnknown **ppCommand) = 0;
++  };
++#else
++  typedef struct IDBCreateCommandVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IDBCreateCommand *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IDBCreateCommand *This);
++      ULONG (WINAPI *Release)(IDBCreateCommand *This);
++      HRESULT (WINAPI *CreateCommand)(IDBCreateCommand *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppCommand);
++    END_INTERFACE
++  } IDBCreateCommandVtbl;
++  struct IDBCreateCommand {
++    CONST_VTBL struct IDBCreateCommandVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IDBCreateCommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IDBCreateCommand_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IDBCreateCommand_Release(This) (This)->lpVtbl->Release(This)
++#define IDBCreateCommand_CreateCommand(This,pUnkOuter,riid,ppCommand) (This)->lpVtbl->CreateCommand(This,pUnkOuter,riid,ppCommand)
++#endif
++#endif
++  HRESULT WINAPI IDBCreateCommand_RemoteCreateCommand_Proxy(IDBCreateCommand *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppCommand,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBCreateCommand_RemoteCreateCommand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IDBCreateSession_INTERFACE_DEFINED__
++#define __IDBCreateSession_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IDBCreateSession;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IDBCreateSession : public IUnknown {
++  public:
++    virtual HRESULT WINAPI CreateSession(IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession) = 0;
++  };
++#else
++  typedef struct IDBCreateSessionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IDBCreateSession *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IDBCreateSession *This);
++      ULONG (WINAPI *Release)(IDBCreateSession *This);
++      HRESULT (WINAPI *CreateSession)(IDBCreateSession *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession);
++    END_INTERFACE
++  } IDBCreateSessionVtbl;
++  struct IDBCreateSession {
++    CONST_VTBL struct IDBCreateSessionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IDBCreateSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IDBCreateSession_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IDBCreateSession_Release(This) (This)->lpVtbl->Release(This)
++#define IDBCreateSession_CreateSession(This,pUnkOuter,riid,ppDBSession) (This)->lpVtbl->CreateSession(This,pUnkOuter,riid,ppDBSession)
++#endif
++#endif
++  HRESULT WINAPI IDBCreateSession_RemoteCreateSession_Proxy(IDBCreateSession *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBCreateSession_RemoteCreateSession_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ISourcesRowset_INTERFACE_DEFINED__
++#define __ISourcesRowset_INTERFACE_DEFINED__
++  typedef DWORD DBSOURCETYPE;
++
++  enum DBSOURCETYPEENUM {
++    DBSOURCETYPE_DATASOURCE = 1,DBSOURCETYPE_ENUMERATOR = 2
++  };
++
++#if (OLEDBVER >= 0x0200)
++  enum DBSOURCETYPEENUM20 {
++    DBSOURCETYPE_DATASOURCE_TDP = 1,DBSOURCETYPE_DATASOURCE_MDP = 3
++  };
++#endif
++
++#if (OLEDBVER >= 0x0250)
++  enum DBSOURCETYPEENUM25 {
++    DBSOURCETYPE_BINDER = 4
++  };
++#endif
++
++  EXTERN_C const IID IID_ISourcesRowset;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ISourcesRowset : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetSourcesRowset(IUnknown *pUnkOuter,REFIID riid,ULONG cPropertySets,DBPROPSET rgProperties[],IUnknown **ppSourcesRowset) = 0;
++  };
++#else
++  typedef struct ISourcesRowsetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ISourcesRowset *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ISourcesRowset *This);
++      ULONG (WINAPI *Release)(ISourcesRowset *This);
++      HRESULT (WINAPI *GetSourcesRowset)(ISourcesRowset *This,IUnknown *pUnkOuter,REFIID riid,ULONG cPropertySets,DBPROPSET rgProperties[],IUnknown **ppSourcesRowset);
++    END_INTERFACE
++  } ISourcesRowsetVtbl;
++  struct ISourcesRowset {
++    CONST_VTBL struct ISourcesRowsetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ISourcesRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ISourcesRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ISourcesRowset_Release(This) (This)->lpVtbl->Release(This)
++#define ISourcesRowset_GetSourcesRowset(This,pUnkOuter,riid,cPropertySets,rgProperties,ppSourcesRowset) (This)->lpVtbl->GetSourcesRowset(This,pUnkOuter,riid,cPropertySets,rgProperties,ppSourcesRowset)
++#endif
++#endif
++  HRESULT WINAPI ISourcesRowset_RemoteGetSourcesRowset_Proxy(ISourcesRowset *This,IUnknown *pUnkOuter,REFIID riid,ULONG cPropertySets,DBPROPSET *rgProperties,IUnknown **ppSourcesRowset,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ISourcesRowset_RemoteGetSourcesRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IDBProperties_INTERFACE_DEFINED__
++#define __IDBProperties_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IDBProperties;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IDBProperties : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetProperties(ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets) = 0;
++    virtual HRESULT WINAPI GetPropertyInfo(ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,OLECHAR **ppDescBuffer) = 0;
++    virtual HRESULT WINAPI SetProperties(ULONG cPropertySets,DBPROPSET rgPropertySets[]) = 0;
++  };
++#else
++  typedef struct IDBPropertiesVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IDBProperties *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IDBProperties *This);
++      ULONG (WINAPI *Release)(IDBProperties *This);
++      HRESULT (WINAPI *GetProperties)(IDBProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets);
++      HRESULT (WINAPI *GetPropertyInfo)(IDBProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,OLECHAR **ppDescBuffer);
++      HRESULT (WINAPI *SetProperties)(IDBProperties *This,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++    END_INTERFACE
++  } IDBPropertiesVtbl;
++  struct IDBProperties {
++    CONST_VTBL struct IDBPropertiesVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IDBProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IDBProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IDBProperties_Release(This) (This)->lpVtbl->Release(This)
++#define IDBProperties_GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets) (This)->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets)
++#define IDBProperties_GetPropertyInfo(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer) (This)->lpVtbl->GetPropertyInfo(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer)
++#define IDBProperties_SetProperties(This,cPropertySets,rgPropertySets) (This)->lpVtbl->SetProperties(This,cPropertySets,rgPropertySets)
++#endif
++#endif
++  HRESULT WINAPI IDBProperties_RemoteGetProperties_Proxy(IDBProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertySets,DBPROPSET **prgPropertySets,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBProperties_RemoteGetProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDBProperties_RemoteGetPropertyInfo_Proxy(IDBProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,ULONG *pcOffsets,DBBYTEOFFSET **prgDescOffsets,ULONG *pcbDescBuffer,OLECHAR **ppDescBuffer,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBProperties_RemoteGetPropertyInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDBProperties_RemoteSetProperties_Proxy(IDBProperties *This,ULONG cPropertySets,DBPROPSET *rgPropertySets,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBProperties_RemoteSetProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IDBInitialize_INTERFACE_DEFINED__
++#define __IDBInitialize_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IDBInitialize;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IDBInitialize : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Initialize(void) = 0;
++    virtual HRESULT WINAPI Uninitialize(void) = 0;
++  };
++#else
++  typedef struct IDBInitializeVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IDBInitialize *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IDBInitialize *This);
++      ULONG (WINAPI *Release)(IDBInitialize *This);
++      HRESULT (WINAPI *Initialize)(IDBInitialize *This);
++      HRESULT (WINAPI *Uninitialize)(IDBInitialize *This);
++    END_INTERFACE
++  } IDBInitializeVtbl;
++  struct IDBInitialize {
++    CONST_VTBL struct IDBInitializeVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IDBInitialize_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IDBInitialize_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IDBInitialize_Release(This) (This)->lpVtbl->Release(This)
++#define IDBInitialize_Initialize(This) (This)->lpVtbl->Initialize(This)
++#define IDBInitialize_Uninitialize(This) (This)->lpVtbl->Uninitialize(This)
++#endif
++#endif
++  HRESULT WINAPI IDBInitialize_RemoteInitialize_Proxy(IDBInitialize *This,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBInitialize_RemoteInitialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDBInitialize_RemoteUninitialize_Proxy(IDBInitialize *This,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBInitialize_RemoteUninitialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IDBInfo_INTERFACE_DEFINED__
++#define __IDBInfo_INTERFACE_DEFINED__
++  typedef DWORD DBLITERAL;
++
++  enum DBLITERALENUM {
++    DBLITERAL_INVALID = 0,DBLITERAL_BINARY_LITERAL = 1,DBLITERAL_CATALOG_NAME = 2,DBLITERAL_CATALOG_SEPARATOR = 3,DBLITERAL_CHAR_LITERAL = 4,
++    DBLITERAL_COLUMN_ALIAS = 5,DBLITERAL_COLUMN_NAME = 6,DBLITERAL_CORRELATION_NAME = 7,DBLITERAL_CURSOR_NAME = 8,DBLITERAL_ESCAPE_PERCENT = 9,
++    DBLITERAL_ESCAPE_UNDERSCORE = 10,DBLITERAL_INDEX_NAME = 11,DBLITERAL_LIKE_PERCENT = 12,DBLITERAL_LIKE_UNDERSCORE = 13,DBLITERAL_PROCEDURE_NAME = 14,
++    DBLITERAL_QUOTE = 15,DBLITERAL_SCHEMA_NAME = 16,DBLITERAL_TABLE_NAME = 17,DBLITERAL_TEXT_COMMAND = 18,DBLITERAL_USER_NAME = 19,
++    DBLITERAL_VIEW_NAME = 20
++  };
++
++#if (OLEDBVER >= 0x0200)
++#define DBLITERAL_QUOTE_PREFIX DBLITERAL_QUOTE
++  enum DBLITERALENUM20 {
++    DBLITERAL_CUBE_NAME = 21,DBLITERAL_DIMENSION_NAME = 22,DBLITERAL_HIERARCHY_NAME = 23,DBLITERAL_LEVEL_NAME = 24,DBLITERAL_MEMBER_NAME = 25,
++    DBLITERAL_PROPERTY_NAME = 26,DBLITERAL_SCHEMA_SEPARATOR = 27,DBLITERAL_QUOTE_SUFFIX = 28
++  };
++#endif
++
++#if (OLEDBVER >= 0x0210)
++#define DBLITERAL_ESCAPE_PERCENT_PREFIX DBLITERAL_ESCAPE_PERCENT
++#define DBLITERAL_ESCAPE_UNDERSCORE_PREFIX DBLITERAL_ESCAPE_UNDERSCORE
++
++  enum DBLITERALENUM21 {
++    DBLITERAL_ESCAPE_PERCENT_SUFFIX = 29,DBLITERAL_ESCAPE_UNDERSCORE_SUFFIX = 30
++  };
++#endif
++
++  typedef struct tagDBLITERALINFO {
++    LPOLESTR pwszLiteralValue;
++    LPOLESTR pwszInvalidChars;
++    LPOLESTR pwszInvalidStartingChars;
++    DBLITERAL lt;
++    WINBOOL fSupported;
++    ULONG cchMaxLen;
++  } DBLITERALINFO;
++
++  EXTERN_C const IID IID_IDBInfo;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IDBInfo : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetKeywords(LPOLESTR *ppwszKeywords) = 0;
++    virtual HRESULT WINAPI GetLiteralInfo(ULONG cLiterals,const DBLITERAL rgLiterals[],ULONG *pcLiteralInfo,DBLITERALINFO **prgLiteralInfo,OLECHAR **ppCharBuffer) = 0;
++  };
++#else
++  typedef struct IDBInfoVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IDBInfo *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IDBInfo *This);
++      ULONG (WINAPI *Release)(IDBInfo *This);
++      HRESULT (WINAPI *GetKeywords)(IDBInfo *This,LPOLESTR *ppwszKeywords);
++      HRESULT (WINAPI *GetLiteralInfo)(IDBInfo *This,ULONG cLiterals,const DBLITERAL rgLiterals[],ULONG *pcLiteralInfo,DBLITERALINFO **prgLiteralInfo,OLECHAR **ppCharBuffer);
++    END_INTERFACE
++  } IDBInfoVtbl;
++  struct IDBInfo {
++    CONST_VTBL struct IDBInfoVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IDBInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IDBInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IDBInfo_Release(This) (This)->lpVtbl->Release(This)
++#define IDBInfo_GetKeywords(This,ppwszKeywords) (This)->lpVtbl->GetKeywords(This,ppwszKeywords)
++#define IDBInfo_GetLiteralInfo(This,cLiterals,rgLiterals,pcLiteralInfo,prgLiteralInfo,ppCharBuffer) (This)->lpVtbl->GetLiteralInfo(This,cLiterals,rgLiterals,pcLiteralInfo,prgLiteralInfo,ppCharBuffer)
++#endif
++#endif
++  HRESULT WINAPI IDBInfo_RemoteGetKeywords_Proxy(IDBInfo *This,LPOLESTR *ppwszKeywords,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBInfo_RemoteGetKeywords_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDBInfo_RemoteGetLiteralInfo_Proxy(IDBInfo *This,ULONG cLiterals,const DBLITERAL *rgLiterals,ULONG *pcLiteralInfo,DBLITERALINFO **prgLiteralInfo,DB_UPARAMS **prgLVOffsets,DB_UPARAMS **prgICOffsets,DB_UPARAMS **prgISCOffsets,ULONG *pcbCharBuffer,OLECHAR **ppCharBuffer,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBInfo_RemoteGetLiteralInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IDBDataSourceAdmin_INTERFACE_DEFINED__
++#define __IDBDataSourceAdmin_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IDBDataSourceAdmin;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IDBDataSourceAdmin : public IUnknown {
++  public:
++    virtual HRESULT WINAPI CreateDataSource(ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession) = 0;
++    virtual HRESULT WINAPI DestroyDataSource(void) = 0;
++    virtual HRESULT WINAPI GetCreationProperties(ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,OLECHAR **ppDescBuffer) = 0;
++    virtual HRESULT WINAPI ModifyDataSource(ULONG cPropertySets,DBPROPSET rgPropertySets[]) = 0;
++  };
++#else
++  typedef struct IDBDataSourceAdminVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IDBDataSourceAdmin *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IDBDataSourceAdmin *This);
++      ULONG (WINAPI *Release)(IDBDataSourceAdmin *This);
++      HRESULT (WINAPI *CreateDataSource)(IDBDataSourceAdmin *This,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession);
++      HRESULT (WINAPI *DestroyDataSource)(IDBDataSourceAdmin *This);
++      HRESULT (WINAPI *GetCreationProperties)(IDBDataSourceAdmin *This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,OLECHAR **ppDescBuffer);
++      HRESULT (WINAPI *ModifyDataSource)(IDBDataSourceAdmin *This,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++    END_INTERFACE
++  } IDBDataSourceAdminVtbl;
++  struct IDBDataSourceAdmin {
++    CONST_VTBL struct IDBDataSourceAdminVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IDBDataSourceAdmin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IDBDataSourceAdmin_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IDBDataSourceAdmin_Release(This) (This)->lpVtbl->Release(This)
++#define IDBDataSourceAdmin_CreateDataSource(This,cPropertySets,rgPropertySets,pUnkOuter,riid,ppDBSession) (This)->lpVtbl->CreateDataSource(This,cPropertySets,rgPropertySets,pUnkOuter,riid,ppDBSession)
++#define IDBDataSourceAdmin_DestroyDataSource(This) (This)->lpVtbl->DestroyDataSource(This)
++#define IDBDataSourceAdmin_GetCreationProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer) (This)->lpVtbl->GetCreationProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer)
++#define IDBDataSourceAdmin_ModifyDataSource(This,cPropertySets,rgPropertySets) (This)->lpVtbl->ModifyDataSource(This,cPropertySets,rgPropertySets)
++#endif
++#endif
++  HRESULT WINAPI IDBDataSourceAdmin_RemoteCreateDataSource_Proxy(IDBDataSourceAdmin *This,ULONG cPropertySets,DBPROPSET *rgPropertySets,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBDataSourceAdmin_RemoteCreateDataSource_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDBDataSourceAdmin_RemoteDestroyDataSource_Proxy(IDBDataSourceAdmin *This,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBDataSourceAdmin_RemoteDestroyDataSource_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDBDataSourceAdmin_RemoteGetCreationProperties_Proxy(IDBDataSourceAdmin *This,ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,DBCOUNTITEM *pcOffsets,DBBYTEOFFSET **prgDescOffsets,ULONG *pcbDescBuffer,OLECHAR **ppDescBuffer,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBDataSourceAdmin_RemoteGetCreationProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDBDataSourceAdmin_RemoteModifyDataSource_Proxy(IDBDataSourceAdmin *This,ULONG cPropertySets,DBPROPSET *rgPropertySets,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBDataSourceAdmin_RemoteModifyDataSource_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#if (OLEDBVER >= 0x0150)
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0304_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0304_v0_0_s_ifspec;
++
++#ifndef __IDBAsynchNotify_INTERFACE_DEFINED__
++#define __IDBAsynchNotify_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IDBAsynchNotify;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IDBAsynchNotify : public IUnknown {
++  public:
++    virtual HRESULT WINAPI OnLowResource(DB_DWRESERVE dwReserved) = 0;
++    virtual HRESULT WINAPI OnProgress(HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM ulProgress,DBCOUNTITEM ulProgressMax,DBASYNCHPHASE eAsynchPhase,LPOLESTR pwszStatusText) = 0;
++    virtual HRESULT WINAPI OnStop(HCHAPTER hChapter,DBASYNCHOP eOperation,HRESULT hrStatus,LPOLESTR pwszStatusText) = 0;
++  };
++#else
++  typedef struct IDBAsynchNotifyVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IDBAsynchNotify *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IDBAsynchNotify *This);
++      ULONG (WINAPI *Release)(IDBAsynchNotify *This);
++      HRESULT (WINAPI *OnLowResource)(IDBAsynchNotify *This,DB_DWRESERVE dwReserved);
++      HRESULT (WINAPI *OnProgress)(IDBAsynchNotify *This,HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM ulProgress,DBCOUNTITEM ulProgressMax,DBASYNCHPHASE eAsynchPhase,LPOLESTR pwszStatusText);
++      HRESULT (WINAPI *OnStop)(IDBAsynchNotify *This,HCHAPTER hChapter,DBASYNCHOP eOperation,HRESULT hrStatus,LPOLESTR pwszStatusText);
++    END_INTERFACE
++  } IDBAsynchNotifyVtbl;
++  struct IDBAsynchNotify {
++    CONST_VTBL struct IDBAsynchNotifyVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IDBAsynchNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IDBAsynchNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IDBAsynchNotify_Release(This) (This)->lpVtbl->Release(This)
++#define IDBAsynchNotify_OnLowResource(This,dwReserved) (This)->lpVtbl->OnLowResource(This,dwReserved)
++#define IDBAsynchNotify_OnProgress(This,hChapter,eOperation,ulProgress,ulProgressMax,eAsynchPhase,pwszStatusText) (This)->lpVtbl->OnProgress(This,hChapter,eOperation,ulProgress,ulProgressMax,eAsynchPhase,pwszStatusText)
++#define IDBAsynchNotify_OnStop(This,hChapter,eOperation,hrStatus,pwszStatusText) (This)->lpVtbl->OnStop(This,hChapter,eOperation,hrStatus,pwszStatusText)
++#endif
++#endif
++  HRESULT WINAPI IDBAsynchNotify_RemoteOnLowResource_Proxy(IDBAsynchNotify *This,DB_DWRESERVE dwReserved);
++  void __RPC_STUB IDBAsynchNotify_RemoteOnLowResource_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDBAsynchNotify_RemoteOnProgress_Proxy(IDBAsynchNotify *This,HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM ulProgress,DBCOUNTITEM ulProgressMax,DBASYNCHPHASE eAsynchPhase,LPOLESTR pwszStatusText);
++  void __RPC_STUB IDBAsynchNotify_RemoteOnProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDBAsynchNotify_RemoteOnStop_Proxy(IDBAsynchNotify *This,HCHAPTER hChapter,DBASYNCHOP eOperation,HRESULT hrStatus,LPOLESTR pwszStatusText);
++  void __RPC_STUB IDBAsynchNotify_RemoteOnStop_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IDBAsynchStatus_INTERFACE_DEFINED__
++#define __IDBAsynchStatus_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IDBAsynchStatus;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IDBAsynchStatus : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Abort(HCHAPTER hChapter,DBASYNCHOP eOperation) = 0;
++    virtual HRESULT WINAPI GetStatus(HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM *pulProgress,DBCOUNTITEM *pulProgressMax,DBASYNCHPHASE *peAsynchPhase,LPOLESTR *ppwszStatusText) = 0;
++  };
++#else
++  typedef struct IDBAsynchStatusVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IDBAsynchStatus *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IDBAsynchStatus *This);
++      ULONG (WINAPI *Release)(IDBAsynchStatus *This);
++      HRESULT (WINAPI *Abort)(IDBAsynchStatus *This,HCHAPTER hChapter,DBASYNCHOP eOperation);
++      HRESULT (WINAPI *GetStatus)(IDBAsynchStatus *This,HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM *pulProgress,DBCOUNTITEM *pulProgressMax,DBASYNCHPHASE *peAsynchPhase,LPOLESTR *ppwszStatusText);
++    END_INTERFACE
++  } IDBAsynchStatusVtbl;
++  struct IDBAsynchStatus {
++    CONST_VTBL struct IDBAsynchStatusVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IDBAsynchStatus_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IDBAsynchStatus_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IDBAsynchStatus_Release(This) (This)->lpVtbl->Release(This)
++#define IDBAsynchStatus_Abort(This,hChapter,eOperation) (This)->lpVtbl->Abort(This,hChapter,eOperation)
++#define IDBAsynchStatus_GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText) (This)->lpVtbl->GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText)
++#endif
++#endif
++  HRESULT WINAPI IDBAsynchStatus_RemoteAbort_Proxy(IDBAsynchStatus *This,HCHAPTER hChapter,DBASYNCHOP eOperation,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBAsynchStatus_RemoteAbort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDBAsynchStatus_RemoteGetStatus_Proxy(IDBAsynchStatus *This,HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM *pulProgress,DBCOUNTITEM *pulProgressMax,DBASYNCHPHASE *peAsynchPhase,LPOLESTR *ppwszStatusText,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBAsynchStatus_RemoteGetStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0306_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0306_v0_0_s_ifspec;
++
++#ifndef __ISessionProperties_INTERFACE_DEFINED__
++#define __ISessionProperties_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ISessionProperties;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ISessionProperties : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetProperties(ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets) = 0;
++    virtual HRESULT WINAPI SetProperties(ULONG cPropertySets,DBPROPSET rgPropertySets[]) = 0;
++  };
++#else
++  typedef struct ISessionPropertiesVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ISessionProperties *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ISessionProperties *This);
++      ULONG (WINAPI *Release)(ISessionProperties *This);
++      HRESULT (WINAPI *GetProperties)(ISessionProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets);
++      HRESULT (WINAPI *SetProperties)(ISessionProperties *This,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++    END_INTERFACE
++  } ISessionPropertiesVtbl;
++  struct ISessionProperties {
++    CONST_VTBL struct ISessionPropertiesVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ISessionProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ISessionProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ISessionProperties_Release(This) (This)->lpVtbl->Release(This)
++#define ISessionProperties_GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets) (This)->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets)
++#define ISessionProperties_SetProperties(This,cPropertySets,rgPropertySets) (This)->lpVtbl->SetProperties(This,cPropertySets,rgPropertySets)
++#endif
++#endif
++  HRESULT WINAPI ISessionProperties_RemoteGetProperties_Proxy(ISessionProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertySets,DBPROPSET **prgPropertySets,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ISessionProperties_RemoteGetProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ISessionProperties_RemoteSetProperties_Proxy(ISessionProperties *This,ULONG cPropertySets,DBPROPSET *rgPropertySets,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ISessionProperties_RemoteSetProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IIndexDefinition_INTERFACE_DEFINED__
++#define __IIndexDefinition_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IIndexDefinition;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IIndexDefinition : public IUnknown {
++  public:
++    virtual HRESULT WINAPI CreateIndex(DBID *pTableID,DBID *pIndexID,DBORDINAL cIndexColumnDescs,const DBINDEXCOLUMNDESC rgIndexColumnDescs[],ULONG cPropertySets,DBPROPSET rgPropertySets[],DBID **ppIndexID) = 0;
++    virtual HRESULT WINAPI DropIndex(DBID *pTableID,DBID *pIndexID) = 0;
++  };
++#else
++  typedef struct IIndexDefinitionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IIndexDefinition *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IIndexDefinition *This);
++      ULONG (WINAPI *Release)(IIndexDefinition *This);
++      HRESULT (WINAPI *CreateIndex)(IIndexDefinition *This,DBID *pTableID,DBID *pIndexID,DBORDINAL cIndexColumnDescs,const DBINDEXCOLUMNDESC rgIndexColumnDescs[],ULONG cPropertySets,DBPROPSET rgPropertySets[],DBID **ppIndexID);
++      HRESULT (WINAPI *DropIndex)(IIndexDefinition *This,DBID *pTableID,DBID *pIndexID);
++    END_INTERFACE
++  } IIndexDefinitionVtbl;
++  struct IIndexDefinition {
++    CONST_VTBL struct IIndexDefinitionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IIndexDefinition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IIndexDefinition_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IIndexDefinition_Release(This) (This)->lpVtbl->Release(This)
++#define IIndexDefinition_CreateIndex(This,pTableID,pIndexID,cIndexColumnDescs,rgIndexColumnDescs,cPropertySets,rgPropertySets,ppIndexID) (This)->lpVtbl->CreateIndex(This,pTableID,pIndexID,cIndexColumnDescs,rgIndexColumnDescs,cPropertySets,rgPropertySets,ppIndexID)
++#define IIndexDefinition_DropIndex(This,pTableID,pIndexID) (This)->lpVtbl->DropIndex(This,pTableID,pIndexID)
++#endif
++#endif
++  HRESULT WINAPI IIndexDefinition_RemoteCreateIndex_Proxy(IIndexDefinition *This,DBID *pTableID,DBID *pIndexID,DBORDINAL cIndexColumnDescs,const DBINDEXCOLUMNDESC *rgIndexColumnDescs,ULONG cPropertySets,DBPROPSET *rgPropertySets,DBID **ppIndexID,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IIndexDefinition_RemoteCreateIndex_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IIndexDefinition_RemoteDropIndex_Proxy(IIndexDefinition *This,DBID *pTableID,DBID *pIndexID,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IIndexDefinition_RemoteDropIndex_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITableDefinition_INTERFACE_DEFINED__
++#define __ITableDefinition_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITableDefinition;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITableDefinition : public IUnknown {
++  public:
++    virtual HRESULT WINAPI CreateTable(IUnknown *pUnkOuter,DBID *pTableID,DBORDINAL cColumnDescs,const DBCOLUMNDESC rgColumnDescs[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],DBID **ppTableID,IUnknown **ppRowset) = 0;
++    virtual HRESULT WINAPI DropTable(DBID *pTableID) = 0;
++    virtual HRESULT WINAPI AddColumn(DBID *pTableID,DBCOLUMNDESC *pColumnDesc,DBID **ppColumnID) = 0;
++    virtual HRESULT WINAPI DropColumn(DBID *pTableID,DBID *pColumnID) = 0;
++  };
++#else
++  typedef struct ITableDefinitionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITableDefinition *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITableDefinition *This);
++      ULONG (WINAPI *Release)(ITableDefinition *This);
++      HRESULT (WINAPI *CreateTable)(ITableDefinition *This,IUnknown *pUnkOuter,DBID *pTableID,DBORDINAL cColumnDescs,const DBCOLUMNDESC rgColumnDescs[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],DBID **ppTableID,IUnknown **ppRowset);
++      HRESULT (WINAPI *DropTable)(ITableDefinition *This,DBID *pTableID);
++      HRESULT (WINAPI *AddColumn)(ITableDefinition *This,DBID *pTableID,DBCOLUMNDESC *pColumnDesc,DBID **ppColumnID);
++      HRESULT (WINAPI *DropColumn)(ITableDefinition *This,DBID *pTableID,DBID *pColumnID);
++    END_INTERFACE
++  } ITableDefinitionVtbl;
++  struct ITableDefinition {
++    CONST_VTBL struct ITableDefinitionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITableDefinition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITableDefinition_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITableDefinition_Release(This) (This)->lpVtbl->Release(This)
++#define ITableDefinition_CreateTable(This,pUnkOuter,pTableID,cColumnDescs,rgColumnDescs,riid,cPropertySets,rgPropertySets,ppTableID,ppRowset) (This)->lpVtbl->CreateTable(This,pUnkOuter,pTableID,cColumnDescs,rgColumnDescs,riid,cPropertySets,rgPropertySets,ppTableID,ppRowset)
++#define ITableDefinition_DropTable(This,pTableID) (This)->lpVtbl->DropTable(This,pTableID)
++#define ITableDefinition_AddColumn(This,pTableID,pColumnDesc,ppColumnID) (This)->lpVtbl->AddColumn(This,pTableID,pColumnDesc,ppColumnID)
++#define ITableDefinition_DropColumn(This,pTableID,pColumnID) (This)->lpVtbl->DropColumn(This,pTableID,pColumnID)
++#endif
++#endif
++  HRESULT WINAPI ITableDefinition_RemoteCreateTable_Proxy(ITableDefinition *This,IUnknown *pUnkOuter,DBID *pTableID,DBORDINAL cColumnDescs,const DBCOLUMNDESC *rgColumnDescs,REFIID riid,ULONG cPropertySets,DBPROPSET *rgPropertySets,DBID **ppTableID,IUnknown **ppRowset,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,WINBOOL *pfTableCreated,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ITableDefinition_RemoteCreateTable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITableDefinition_RemoteDropTable_Proxy(ITableDefinition *This,DBID *pTableID,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ITableDefinition_RemoteDropTable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITableDefinition_RemoteAddColumn_Proxy(ITableDefinition *This,DBID *pTableID,DBCOLUMNDESC *pColumnDesc,DBID **ppColumnID,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ITableDefinition_RemoteAddColumn_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITableDefinition_RemoteDropColumn_Proxy(ITableDefinition *This,DBID *pTableID,DBID *pColumnID,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ITableDefinition_RemoteDropColumn_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IOpenRowset_INTERFACE_DEFINED__
++#define __IOpenRowset_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IOpenRowset;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IOpenRowset : public IUnknown {
++  public:
++    virtual HRESULT WINAPI OpenRowset(IUnknown *pUnkOuter,DBID *pTableID,DBID *pIndexID,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset) = 0;
++  };
++#else
++  typedef struct IOpenRowsetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IOpenRowset *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IOpenRowset *This);
++      ULONG (WINAPI *Release)(IOpenRowset *This);
++      HRESULT (WINAPI *OpenRowset)(IOpenRowset *This,IUnknown *pUnkOuter,DBID *pTableID,DBID *pIndexID,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset);
++    END_INTERFACE
++  } IOpenRowsetVtbl;
++  struct IOpenRowset {
++    CONST_VTBL struct IOpenRowsetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IOpenRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IOpenRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IOpenRowset_Release(This) (This)->lpVtbl->Release(This)
++#define IOpenRowset_OpenRowset(This,pUnkOuter,pTableID,pIndexID,riid,cPropertySets,rgPropertySets,ppRowset) (This)->lpVtbl->OpenRowset(This,pUnkOuter,pTableID,pIndexID,riid,cPropertySets,rgPropertySets,ppRowset)
++#endif
++#endif
++  HRESULT WINAPI IOpenRowset_RemoteOpenRowset_Proxy(IOpenRowset *This,IUnknown *pUnkOuter,DBID *pTableID,DBID *pIndexID,REFIID riid,ULONG cPropertySets,DBPROPSET *rgPropertySets,IUnknown **ppRowset,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IOpenRowset_RemoteOpenRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IDBSchemaRowset_INTERFACE_DEFINED__
++#define __IDBSchemaRowset_INTERFACE_DEFINED__
++
++#define CRESTRICTIONS_DBSCHEMA_ASSERTIONS 3
++#define CRESTRICTIONS_DBSCHEMA_CATALOGS 1
++#define CRESTRICTIONS_DBSCHEMA_CHARACTER_SETS 3
++#define CRESTRICTIONS_DBSCHEMA_COLLATIONS 3
++#define CRESTRICTIONS_DBSCHEMA_COLUMNS 4
++#define CRESTRICTIONS_DBSCHEMA_CHECK_CONSTRAINTS 3
++#define CRESTRICTIONS_DBSCHEMA_CONSTRAINT_COLUMN_USAGE 4
++#define CRESTRICTIONS_DBSCHEMA_CONSTRAINT_TABLE_USAGE 3
++#define CRESTRICTIONS_DBSCHEMA_KEY_COLUMN_USAGE 7
++#define CRESTRICTIONS_DBSCHEMA_REFERENTIAL_CONSTRAINTS 3
++#define CRESTRICTIONS_DBSCHEMA_TABLE_CONSTRAINTS 7
++#define CRESTRICTIONS_DBSCHEMA_COLUMN_DOMAIN_USAGE 4
++#define CRESTRICTIONS_DBSCHEMA_INDEXES 5
++#define CRESTRICTIONS_DBSCHEMA_OBJECT_ACTIONS 1
++#define CRESTRICTIONS_DBSCHEMA_OBJECTS 1
++#define CRESTRICTIONS_DBSCHEMA_COLUMN_PRIVILEGES 6
++#define CRESTRICTIONS_DBSCHEMA_TABLE_PRIVILEGES 5
++#define CRESTRICTIONS_DBSCHEMA_USAGE_PRIVILEGES 6
++#define CRESTRICTIONS_DBSCHEMA_PROCEDURES 4
++#define CRESTRICTIONS_DBSCHEMA_SCHEMATA 3
++#define CRESTRICTIONS_DBSCHEMA_SQL_LANGUAGES 0
++#define CRESTRICTIONS_DBSCHEMA_STATISTICS 3
++#define CRESTRICTIONS_DBSCHEMA_TABLES 4
++#define CRESTRICTIONS_DBSCHEMA_TRANSLATIONS 3
++#define CRESTRICTIONS_DBSCHEMA_PROVIDER_TYPES 2
++#define CRESTRICTIONS_DBSCHEMA_VIEWS 3
++#define CRESTRICTIONS_DBSCHEMA_VIEW_COLUMN_USAGE 3
++#define CRESTRICTIONS_DBSCHEMA_VIEW_TABLE_USAGE 3
++#define CRESTRICTIONS_DBSCHEMA_PROCEDURE_PARAMETERS 4
++#define CRESTRICTIONS_DBSCHEMA_FOREIGN_KEYS 6
++#define CRESTRICTIONS_DBSCHEMA_PRIMARY_KEYS 3
++#define CRESTRICTIONS_DBSCHEMA_PROCEDURE_COLUMNS 4
++
++#if (OLEDBVER >= 0x0200)
++#define CRESTRICTIONS_DBSCHEMA_TABLES_INFO 4
++#define CRESTRICTIONS_MDSCHEMA_CUBES 3
++#define CRESTRICTIONS_MDSCHEMA_DIMENSIONS 5
++#define CRESTRICTIONS_MDSCHEMA_HIERARCHIES 6
++#define CRESTRICTIONS_MDSCHEMA_LEVELS 7
++#define CRESTRICTIONS_MDSCHEMA_MEASURES 5
++#define CRESTRICTIONS_MDSCHEMA_PROPERTIES 9
++#define CRESTRICTIONS_MDSCHEMA_MEMBERS 12
++#endif
++
++#if (OLEDBVER >= 0x0210)
++#define CRESTRICTIONS_DBSCHEMA_TRUSTEE 4
++#endif
++
++#if (OLEDBVER >= 0x0260)
++#define CRESTRICTIONS_DBSCHEMA_TABLE_STATISTICS 7
++#define CRESTRICTIONS_DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE 6
++#define CRESTRICTIONS_MDSCHEMA_FUNCTIONS 4
++#define CRESTRICTIONS_MDSCHEMA_ACTIONS 8
++#define CRESTRICTIONS_MDSCHEMA_COMMANDS 5
++#define CRESTRICTIONS_MDSCHEMA_SETS 5
++#endif
++
++  EXTERN_C const IID IID_IDBSchemaRowset;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IDBSchemaRowset : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetRowset(IUnknown *pUnkOuter,REFGUID rguidSchema,ULONG cRestrictions,const VARIANT rgRestrictions[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset) = 0;
++    virtual HRESULT WINAPI GetSchemas(ULONG *pcSchemas,GUID **prgSchemas,ULONG **prgRestrictionSupport) = 0;
++  };
++#else
++  typedef struct IDBSchemaRowsetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IDBSchemaRowset *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IDBSchemaRowset *This);
++      ULONG (WINAPI *Release)(IDBSchemaRowset *This);
++      HRESULT (WINAPI *GetRowset)(IDBSchemaRowset *This,IUnknown *pUnkOuter,REFGUID rguidSchema,ULONG cRestrictions,const VARIANT rgRestrictions[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset);
++      HRESULT (WINAPI *GetSchemas)(IDBSchemaRowset *This,ULONG *pcSchemas,GUID **prgSchemas,ULONG **prgRestrictionSupport);
++    END_INTERFACE
++  } IDBSchemaRowsetVtbl;
++  struct IDBSchemaRowset {
++    CONST_VTBL struct IDBSchemaRowsetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IDBSchemaRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IDBSchemaRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IDBSchemaRowset_Release(This) (This)->lpVtbl->Release(This)
++#define IDBSchemaRowset_GetRowset(This,pUnkOuter,rguidSchema,cRestrictions,rgRestrictions,riid,cPropertySets,rgPropertySets,ppRowset) (This)->lpVtbl->GetRowset(This,pUnkOuter,rguidSchema,cRestrictions,rgRestrictions,riid,cPropertySets,rgPropertySets,ppRowset)
++#define IDBSchemaRowset_GetSchemas(This,pcSchemas,prgSchemas,prgRestrictionSupport) (This)->lpVtbl->GetSchemas(This,pcSchemas,prgSchemas,prgRestrictionSupport)
++#endif
++#endif
++  HRESULT WINAPI IDBSchemaRowset_RemoteGetRowset_Proxy(IDBSchemaRowset *This,IUnknown *pUnkOuter,REFGUID rguidSchema,ULONG cRestrictions,const VARIANT *rgRestrictions,REFIID riid,ULONG cPropertySets,DBPROPSET *rgPropertySets,IUnknown **ppRowset,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBSchemaRowset_RemoteGetRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDBSchemaRowset_RemoteGetSchemas_Proxy(IDBSchemaRowset *This,ULONG *pcSchemas,GUID **prgSchemas,ULONG **prgRestrictionSupport,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IDBSchemaRowset_RemoteGetSchemas_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#if (OLEDBVER >= 0x0200)
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0311_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0311_v0_0_s_ifspec;
++
++#ifndef __IMDDataset_INTERFACE_DEFINED__
++#define __IMDDataset_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IMDDataset;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IMDDataset : public IUnknown {
++  public:
++    virtual HRESULT WINAPI FreeAxisInfo(DBCOUNTITEM cAxes,MDAXISINFO *rgAxisInfo) = 0;
++    virtual HRESULT WINAPI GetAxisInfo(DBCOUNTITEM *pcAxes,MDAXISINFO **prgAxisInfo) = 0;
++    virtual HRESULT WINAPI GetAxisRowset(IUnknown *pUnkOuter,DBCOUNTITEM iAxis,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset) = 0;
++    virtual HRESULT WINAPI GetCellData(HACCESSOR hAccessor,DBORDINAL ulStartCell,DBORDINAL ulEndCell,void *pData) = 0;
++    virtual HRESULT WINAPI GetSpecification(REFIID riid,IUnknown **ppSpecification) = 0;
++  };
++#else
++  typedef struct IMDDatasetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IMDDataset *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IMDDataset *This);
++      ULONG (WINAPI *Release)(IMDDataset *This);
++      HRESULT (WINAPI *FreeAxisInfo)(IMDDataset *This,DBCOUNTITEM cAxes,MDAXISINFO *rgAxisInfo);
++      HRESULT (WINAPI *GetAxisInfo)(IMDDataset *This,DBCOUNTITEM *pcAxes,MDAXISINFO **prgAxisInfo);
++      HRESULT (WINAPI *GetAxisRowset)(IMDDataset *This,IUnknown *pUnkOuter,DBCOUNTITEM iAxis,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset);
++      HRESULT (WINAPI *GetCellData)(IMDDataset *This,HACCESSOR hAccessor,DBORDINAL ulStartCell,DBORDINAL ulEndCell,void *pData);
++      HRESULT (WINAPI *GetSpecification)(IMDDataset *This,REFIID riid,IUnknown **ppSpecification);
++    END_INTERFACE
++  } IMDDatasetVtbl;
++  struct IMDDataset {
++    CONST_VTBL struct IMDDatasetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IMDDataset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IMDDataset_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IMDDataset_Release(This) (This)->lpVtbl->Release(This)
++#define IMDDataset_FreeAxisInfo(This,cAxes,rgAxisInfo) (This)->lpVtbl->FreeAxisInfo(This,cAxes,rgAxisInfo)
++#define IMDDataset_GetAxisInfo(This,pcAxes,prgAxisInfo) (This)->lpVtbl->GetAxisInfo(This,pcAxes,prgAxisInfo)
++#define IMDDataset_GetAxisRowset(This,pUnkOuter,iAxis,riid,cPropertySets,rgPropertySets,ppRowset) (This)->lpVtbl->GetAxisRowset(This,pUnkOuter,iAxis,riid,cPropertySets,rgPropertySets,ppRowset)
++#define IMDDataset_GetCellData(This,hAccessor,ulStartCell,ulEndCell,pData) (This)->lpVtbl->GetCellData(This,hAccessor,ulStartCell,ulEndCell,pData)
++#define IMDDataset_GetSpecification(This,riid,ppSpecification) (This)->lpVtbl->GetSpecification(This,riid,ppSpecification)
++#endif
++#endif
++  HRESULT WINAPI IMDDataset_FreeAxisInfo_Proxy(IMDDataset *This,DBCOUNTITEM cAxes,MDAXISINFO *rgAxisInfo);
++  void __RPC_STUB IMDDataset_FreeAxisInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IMDDataset_GetAxisInfo_Proxy(IMDDataset *This,DBCOUNTITEM *pcAxes,MDAXISINFO **prgAxisInfo);
++  void __RPC_STUB IMDDataset_GetAxisInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IMDDataset_GetAxisRowset_Proxy(IMDDataset *This,IUnknown *pUnkOuter,DBCOUNTITEM iAxis,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset);
++  void __RPC_STUB IMDDataset_GetAxisRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IMDDataset_GetCellData_Proxy(IMDDataset *This,HACCESSOR hAccessor,DBORDINAL ulStartCell,DBORDINAL ulEndCell,void *pData);
++  void __RPC_STUB IMDDataset_GetCellData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IMDDataset_GetSpecification_Proxy(IMDDataset *This,REFIID riid,IUnknown **ppSpecification);
++  void __RPC_STUB IMDDataset_GetSpecification_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IMDFind_INTERFACE_DEFINED__
++#define __IMDFind_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IMDFind;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IMDFind : public IUnknown {
++  public:
++    virtual HRESULT WINAPI FindCell(DBORDINAL ulStartingOrdinal,DBCOUNTITEM cMembers,LPCOLESTR *rgpwszMember,DBORDINAL *pulCellOrdinal) = 0;
++    virtual HRESULT WINAPI FindTuple(ULONG ulAxisIdentifier,DBORDINAL ulStartingOrdinal,DBCOUNTITEM cMembers,LPCOLESTR *rgpwszMember,ULONG *pulTupleOrdinal) = 0;
++  };
++#else
++  typedef struct IMDFindVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IMDFind *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IMDFind *This);
++      ULONG (WINAPI *Release)(IMDFind *This);
++      HRESULT (WINAPI *FindCell)(IMDFind *This,DBORDINAL ulStartingOrdinal,DBCOUNTITEM cMembers,LPCOLESTR *rgpwszMember,DBORDINAL *pulCellOrdinal);
++      HRESULT (WINAPI *FindTuple)(IMDFind *This,ULONG ulAxisIdentifier,DBORDINAL ulStartingOrdinal,DBCOUNTITEM cMembers,LPCOLESTR *rgpwszMember,ULONG *pulTupleOrdinal);
++    END_INTERFACE
++  } IMDFindVtbl;
++  struct IMDFind {
++    CONST_VTBL struct IMDFindVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IMDFind_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IMDFind_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IMDFind_Release(This) (This)->lpVtbl->Release(This)
++#define IMDFind_FindCell(This,ulStartingOrdinal,cMembers,rgpwszMember,pulCellOrdinal) (This)->lpVtbl->FindCell(This,ulStartingOrdinal,cMembers,rgpwszMember,pulCellOrdinal)
++#define IMDFind_FindTuple(This,ulAxisIdentifier,ulStartingOrdinal,cMembers,rgpwszMember,pulTupleOrdinal) (This)->lpVtbl->FindTuple(This,ulAxisIdentifier,ulStartingOrdinal,cMembers,rgpwszMember,pulTupleOrdinal)
++#endif
++#endif
++  HRESULT WINAPI IMDFind_FindCell_Proxy(IMDFind *This,DBORDINAL ulStartingOrdinal,DBCOUNTITEM cMembers,LPCOLESTR *rgpwszMember,DBORDINAL *pulCellOrdinal);
++  void __RPC_STUB IMDFind_FindCell_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IMDFind_FindTuple_Proxy(IMDFind *This,ULONG ulAxisIdentifier,DBORDINAL ulStartingOrdinal,DBCOUNTITEM cMembers,LPCOLESTR *rgpwszMember,ULONG *pulTupleOrdinal);
++  void __RPC_STUB IMDFind_FindTuple_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IMDRangeRowset_INTERFACE_DEFINED__
++#define __IMDRangeRowset_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IMDRangeRowset;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IMDRangeRowset : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetRangeRowset(IUnknown *pUnkOuter,DBORDINAL ulStartCell,DBORDINAL ulEndCell,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset) = 0;
++  };
++#else
++  typedef struct IMDRangeRowsetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IMDRangeRowset *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IMDRangeRowset *This);
++      ULONG (WINAPI *Release)(IMDRangeRowset *This);
++      HRESULT (WINAPI *GetRangeRowset)(IMDRangeRowset *This,IUnknown *pUnkOuter,DBORDINAL ulStartCell,DBORDINAL ulEndCell,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset);
++    END_INTERFACE
++  } IMDRangeRowsetVtbl;
++  struct IMDRangeRowset {
++    CONST_VTBL struct IMDRangeRowsetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IMDRangeRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IMDRangeRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IMDRangeRowset_Release(This) (This)->lpVtbl->Release(This)
++#define IMDRangeRowset_GetRangeRowset(This,pUnkOuter,ulStartCell,ulEndCell,riid,cPropertySets,rgPropertySets,ppRowset) (This)->lpVtbl->GetRangeRowset(This,pUnkOuter,ulStartCell,ulEndCell,riid,cPropertySets,rgPropertySets,ppRowset)
++#endif
++#endif
++  HRESULT WINAPI IMDRangeRowset_GetRangeRowset_Proxy(IMDRangeRowset *This,IUnknown *pUnkOuter,DBORDINAL ulStartCell,DBORDINAL ulEndCell,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset);
++  void __RPC_STUB IMDRangeRowset_GetRangeRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IAlterTable_INTERFACE_DEFINED__
++#define __IAlterTable_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IAlterTable;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IAlterTable : public IUnknown {
++  public:
++    virtual HRESULT WINAPI AlterColumn(DBID *pTableId,DBID *pColumnId,DBCOLUMNDESCFLAGS dwColumnDescFlags,DBCOLUMNDESC *pColumnDesc) = 0;
++    virtual HRESULT WINAPI AlterTable(DBID *pTableId,DBID *pNewTableId,ULONG cPropertySets,DBPROPSET rgPropertySets[]) = 0;
++  };
++#else
++  typedef struct IAlterTableVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IAlterTable *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IAlterTable *This);
++      ULONG (WINAPI *Release)(IAlterTable *This);
++      HRESULT (WINAPI *AlterColumn)(IAlterTable *This,DBID *pTableId,DBID *pColumnId,DBCOLUMNDESCFLAGS dwColumnDescFlags,DBCOLUMNDESC *pColumnDesc);
++      HRESULT (WINAPI *AlterTable)(IAlterTable *This,DBID *pTableId,DBID *pNewTableId,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++    END_INTERFACE
++  } IAlterTableVtbl;
++  struct IAlterTable {
++    CONST_VTBL struct IAlterTableVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IAlterTable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IAlterTable_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IAlterTable_Release(This) (This)->lpVtbl->Release(This)
++#define IAlterTable_AlterColumn(This,pTableId,pColumnId,dwColumnDescFlags,pColumnDesc) (This)->lpVtbl->AlterColumn(This,pTableId,pColumnId,dwColumnDescFlags,pColumnDesc)
++#define IAlterTable_AlterTable(This,pTableId,pNewTableId,cPropertySets,rgPropertySets) (This)->lpVtbl->AlterTable(This,pTableId,pNewTableId,cPropertySets,rgPropertySets)
++#endif
++#endif
++  HRESULT WINAPI IAlterTable_AlterColumn_Proxy(IAlterTable *This,DBID *pTableId,DBID *pColumnId,DBCOLUMNDESCFLAGS dwColumnDescFlags,DBCOLUMNDESC *pColumnDesc);
++  void __RPC_STUB IAlterTable_AlterColumn_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IAlterTable_AlterTable_Proxy(IAlterTable *This,DBID *pTableId,DBID *pNewTableId,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++  void __RPC_STUB IAlterTable_AlterTable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IAlterIndex_INTERFACE_DEFINED__
++#define __IAlterIndex_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IAlterIndex;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IAlterIndex : public IUnknown {
++  public:
++    virtual HRESULT WINAPI AlterIndex(DBID *pTableId,DBID *pIndexId,DBID *pNewIndexId,ULONG cPropertySets,DBPROPSET rgPropertySets[]) = 0;
++  };
++#else
++  typedef struct IAlterIndexVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IAlterIndex *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IAlterIndex *This);
++      ULONG (WINAPI *Release)(IAlterIndex *This);
++      HRESULT (WINAPI *AlterIndex)(IAlterIndex *This,DBID *pTableId,DBID *pIndexId,DBID *pNewIndexId,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++    END_INTERFACE
++  } IAlterIndexVtbl;
++  struct IAlterIndex {
++    CONST_VTBL struct IAlterIndexVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IAlterIndex_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IAlterIndex_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IAlterIndex_Release(This) (This)->lpVtbl->Release(This)
++#define IAlterIndex_AlterIndex(This,pTableId,pIndexId,pNewIndexId,cPropertySets,rgPropertySets) (This)->lpVtbl->AlterIndex(This,pTableId,pIndexId,pNewIndexId,cPropertySets,rgPropertySets)
++#endif
++#endif
++  HRESULT WINAPI IAlterIndex_AlterIndex_Proxy(IAlterIndex *This,DBID *pTableId,DBID *pIndexId,DBID *pNewIndexId,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++  void __RPC_STUB IAlterIndex_AlterIndex_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetChapterMember_INTERFACE_DEFINED__
++#define __IRowsetChapterMember_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetChapterMember;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetChapterMember : public IUnknown {
++  public:
++    virtual HRESULT WINAPI IsRowInChapter(HCHAPTER hChapter,HROW hRow) = 0;
++  };
++#else
++  typedef struct IRowsetChapterMemberVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetChapterMember *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetChapterMember *This);
++      ULONG (WINAPI *Release)(IRowsetChapterMember *This);
++      HRESULT (WINAPI *IsRowInChapter)(IRowsetChapterMember *This,HCHAPTER hChapter,HROW hRow);
++    END_INTERFACE
++  } IRowsetChapterMemberVtbl;
++  struct IRowsetChapterMember {
++    CONST_VTBL struct IRowsetChapterMemberVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetChapterMember_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetChapterMember_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetChapterMember_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetChapterMember_IsRowInChapter(This,hChapter,hRow) (This)->lpVtbl->IsRowInChapter(This,hChapter,hRow)
++#endif
++#endif
++  HRESULT WINAPI IRowsetChapterMember_IsRowInChapter_Proxy(IRowsetChapterMember *This,HCHAPTER hChapter,HROW hRow);
++  void __RPC_STUB IRowsetChapterMember_IsRowInChapter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ICommandPersist_INTERFACE_DEFINED__
++#define __ICommandPersist_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ICommandPersist;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ICommandPersist : public IUnknown {
++  public:
++    virtual HRESULT WINAPI DeleteCommand(DBID *pCommandID) = 0;
++    virtual HRESULT WINAPI GetCurrentCommand(DBID **ppCommandID) = 0;
++    virtual HRESULT WINAPI LoadCommand(DBID *pCommandID,DWORD dwFlags) = 0;
++    virtual HRESULT WINAPI SaveCommand(DBID *pCommandID,DWORD dwFlags) = 0;
++  };
++#else
++  typedef struct ICommandPersistVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ICommandPersist *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ICommandPersist *This);
++      ULONG (WINAPI *Release)(ICommandPersist *This);
++      HRESULT (WINAPI *DeleteCommand)(ICommandPersist *This,DBID *pCommandID);
++      HRESULT (WINAPI *GetCurrentCommand)(ICommandPersist *This,DBID **ppCommandID);
++      HRESULT (WINAPI *LoadCommand)(ICommandPersist *This,DBID *pCommandID,DWORD dwFlags);
++      HRESULT (WINAPI *SaveCommand)(ICommandPersist *This,DBID *pCommandID,DWORD dwFlags);
++    END_INTERFACE
++  } ICommandPersistVtbl;
++  struct ICommandPersist {
++    CONST_VTBL struct ICommandPersistVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ICommandPersist_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ICommandPersist_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ICommandPersist_Release(This) (This)->lpVtbl->Release(This)
++#define ICommandPersist_DeleteCommand(This,pCommandID) (This)->lpVtbl->DeleteCommand(This,pCommandID)
++#define ICommandPersist_GetCurrentCommand(This,ppCommandID) (This)->lpVtbl->GetCurrentCommand(This,ppCommandID)
++#define ICommandPersist_LoadCommand(This,pCommandID,dwFlags) (This)->lpVtbl->LoadCommand(This,pCommandID,dwFlags)
++#define ICommandPersist_SaveCommand(This,pCommandID,dwFlags) (This)->lpVtbl->SaveCommand(This,pCommandID,dwFlags)
++#endif
++#endif
++  HRESULT WINAPI ICommandPersist_DeleteCommand_Proxy(ICommandPersist *This,DBID *pCommandID);
++  void __RPC_STUB ICommandPersist_DeleteCommand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICommandPersist_GetCurrentCommand_Proxy(ICommandPersist *This,DBID **ppCommandID);
++  void __RPC_STUB ICommandPersist_GetCurrentCommand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICommandPersist_LoadCommand_Proxy(ICommandPersist *This,DBID *pCommandID,DWORD dwFlags);
++  void __RPC_STUB ICommandPersist_LoadCommand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICommandPersist_SaveCommand_Proxy(ICommandPersist *This,DBID *pCommandID,DWORD dwFlags);
++  void __RPC_STUB ICommandPersist_SaveCommand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetRefresh_INTERFACE_DEFINED__
++#define __IRowsetRefresh_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetRefresh;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetRefresh : public IUnknown {
++  public:
++    virtual HRESULT WINAPI RefreshVisibleData(HCHAPTER hChapter,DBCOUNTITEM cRows,const HROW rghRows[],WINBOOL fOverWrite,DBCOUNTITEM *pcRowsRefreshed,HROW **prghRowsRefreshed,DBROWSTATUS **prgRowStatus) = 0;
++    virtual HRESULT WINAPI GetLastVisibleData(HROW hRow,HACCESSOR hAccessor,void *pData) = 0;
++  };
++#else
++  typedef struct IRowsetRefreshVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetRefresh *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetRefresh *This);
++      ULONG (WINAPI *Release)(IRowsetRefresh *This);
++      HRESULT (WINAPI *RefreshVisibleData)(IRowsetRefresh *This,HCHAPTER hChapter,DBCOUNTITEM cRows,const HROW rghRows[],WINBOOL fOverWrite,DBCOUNTITEM *pcRowsRefreshed,HROW **prghRowsRefreshed,DBROWSTATUS **prgRowStatus);
++      HRESULT (WINAPI *GetLastVisibleData)(IRowsetRefresh *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++    END_INTERFACE
++  } IRowsetRefreshVtbl;
++  struct IRowsetRefresh {
++    CONST_VTBL struct IRowsetRefreshVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetRefresh_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetRefresh_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetRefresh_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetRefresh_RefreshVisibleData(This,hChapter,cRows,rghRows,fOverWrite,pcRowsRefreshed,prghRowsRefreshed,prgRowStatus) (This)->lpVtbl->RefreshVisibleData(This,hChapter,cRows,rghRows,fOverWrite,pcRowsRefreshed,prghRowsRefreshed,prgRowStatus)
++#define IRowsetRefresh_GetLastVisibleData(This,hRow,hAccessor,pData) (This)->lpVtbl->GetLastVisibleData(This,hRow,hAccessor,pData)
++#endif
++#endif
++  HRESULT WINAPI IRowsetRefresh_RefreshVisibleData_Proxy(IRowsetRefresh *This,HCHAPTER hChapter,DBCOUNTITEM cRows,const HROW rghRows[],WINBOOL fOverWrite,DBCOUNTITEM *pcRowsRefreshed,HROW **prghRowsRefreshed,DBROWSTATUS **prgRowStatus);
++  void __RPC_STUB IRowsetRefresh_RefreshVisibleData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetRefresh_GetLastVisibleData_Proxy(IRowsetRefresh *This,HROW hRow,HACCESSOR hAccessor,void *pData);
++  void __RPC_STUB IRowsetRefresh_GetLastVisibleData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IParentRowset_INTERFACE_DEFINED__
++#define __IParentRowset_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IParentRowset;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IParentRowset : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetChildRowset(IUnknown *pUnkOuter,DBORDINAL iOrdinal,REFIID riid,IUnknown **ppRowset) = 0;
++  };
++#else
++  typedef struct IParentRowsetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IParentRowset *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IParentRowset *This);
++      ULONG (WINAPI *Release)(IParentRowset *This);
++      HRESULT (WINAPI *GetChildRowset)(IParentRowset *This,IUnknown *pUnkOuter,DBORDINAL iOrdinal,REFIID riid,IUnknown **ppRowset);
++    END_INTERFACE
++  } IParentRowsetVtbl;
++  struct IParentRowset {
++    CONST_VTBL struct IParentRowsetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IParentRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IParentRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IParentRowset_Release(This) (This)->lpVtbl->Release(This)
++#define IParentRowset_GetChildRowset(This,pUnkOuter,iOrdinal,riid,ppRowset) (This)->lpVtbl->GetChildRowset(This,pUnkOuter,iOrdinal,riid,ppRowset)
++#endif
++#endif
++  HRESULT WINAPI IParentRowset_GetChildRowset_Proxy(IParentRowset *This,IUnknown *pUnkOuter,DBORDINAL iOrdinal,REFIID riid,IUnknown **ppRowset);
++  void __RPC_STUB IParentRowset_GetChildRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0320_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0320_v0_0_s_ifspec;
++
++#ifndef __IErrorRecords_INTERFACE_DEFINED__
++#define __IErrorRecords_INTERFACE_DEFINED__
++#define IDENTIFIER_SDK_MASK 0xF0000000
++#define IDENTIFIER_SDK_ERROR 0x10000000
++
++  typedef struct tagERRORINFO {
++    HRESULT hrError;
++    DWORD dwMinor;
++    CLSID clsid;
++    IID iid;
++    DISPID dispid;
++  } ERRORINFO;
++
++  EXTERN_C const IID IID_IErrorRecords;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IErrorRecords : public IUnknown {
++  public:
++    virtual HRESULT WINAPI AddErrorRecord(ERRORINFO *pErrorInfo,DWORD dwLookupID,DISPPARAMS *pdispparams,IUnknown *punkCustomError,DWORD dwDynamicErrorID) = 0;
++    virtual HRESULT WINAPI GetBasicErrorInfo(ULONG ulRecordNum,ERRORINFO *pErrorInfo) = 0;
++    virtual HRESULT WINAPI GetCustomErrorObject(ULONG ulRecordNum,REFIID riid,IUnknown **ppObject) = 0;
++    virtual HRESULT WINAPI GetErrorInfo(ULONG ulRecordNum,LCID lcid,IErrorInfo **ppErrorInfo) = 0;
++    virtual HRESULT WINAPI GetErrorParameters(ULONG ulRecordNum,DISPPARAMS *pdispparams) = 0;
++    virtual HRESULT WINAPI GetRecordCount(ULONG *pcRecords) = 0;
++  };
++#else
++  typedef struct IErrorRecordsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IErrorRecords *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IErrorRecords *This);
++      ULONG (WINAPI *Release)(IErrorRecords *This);
++      HRESULT (WINAPI *AddErrorRecord)(IErrorRecords *This,ERRORINFO *pErrorInfo,DWORD dwLookupID,DISPPARAMS *pdispparams,IUnknown *punkCustomError,DWORD dwDynamicErrorID);
++      HRESULT (WINAPI *GetBasicErrorInfo)(IErrorRecords *This,ULONG ulRecordNum,ERRORINFO *pErrorInfo);
++      HRESULT (WINAPI *GetCustomErrorObject)(IErrorRecords *This,ULONG ulRecordNum,REFIID riid,IUnknown **ppObject);
++      HRESULT (WINAPI *GetErrorInfo)(IErrorRecords *This,ULONG ulRecordNum,LCID lcid,IErrorInfo **ppErrorInfo);
++      HRESULT (WINAPI *GetErrorParameters)(IErrorRecords *This,ULONG ulRecordNum,DISPPARAMS *pdispparams);
++      HRESULT (WINAPI *GetRecordCount)(IErrorRecords *This,ULONG *pcRecords);
++    END_INTERFACE
++  } IErrorRecordsVtbl;
++  struct IErrorRecords {
++    CONST_VTBL struct IErrorRecordsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IErrorRecords_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IErrorRecords_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IErrorRecords_Release(This) (This)->lpVtbl->Release(This)
++#define IErrorRecords_AddErrorRecord(This,pErrorInfo,dwLookupID,pdispparams,punkCustomError,dwDynamicErrorID) (This)->lpVtbl->AddErrorRecord(This,pErrorInfo,dwLookupID,pdispparams,punkCustomError,dwDynamicErrorID)
++#define IErrorRecords_GetBasicErrorInfo(This,ulRecordNum,pErrorInfo) (This)->lpVtbl->GetBasicErrorInfo(This,ulRecordNum,pErrorInfo)
++#define IErrorRecords_GetCustomErrorObject(This,ulRecordNum,riid,ppObject) (This)->lpVtbl->GetCustomErrorObject(This,ulRecordNum,riid,ppObject)
++#define IErrorRecords_GetErrorInfo(This,ulRecordNum,lcid,ppErrorInfo) (This)->lpVtbl->GetErrorInfo(This,ulRecordNum,lcid,ppErrorInfo)
++#define IErrorRecords_GetErrorParameters(This,ulRecordNum,pdispparams) (This)->lpVtbl->GetErrorParameters(This,ulRecordNum,pdispparams)
++#define IErrorRecords_GetRecordCount(This,pcRecords) (This)->lpVtbl->GetRecordCount(This,pcRecords)
++#endif
++#endif
++  HRESULT WINAPI IErrorRecords_RemoteAddErrorRecord_Proxy(IErrorRecords *This,ERRORINFO *pErrorInfo,DWORD dwLookupID,DISPPARAMS *pdispparams,IUnknown *punkCustomError,DWORD dwDynamicErrorID,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IErrorRecords_RemoteAddErrorRecord_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IErrorRecords_RemoteGetBasicErrorInfo_Proxy(IErrorRecords *This,ULONG ulRecordNum,ERRORINFO *pErrorInfo,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IErrorRecords_RemoteGetBasicErrorInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IErrorRecords_RemoteGetCustomErrorObject_Proxy(IErrorRecords *This,ULONG ulRecordNum,REFIID riid,IUnknown **ppObject,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IErrorRecords_RemoteGetCustomErrorObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IErrorRecords_RemoteGetErrorInfo_Proxy(IErrorRecords *This,ULONG ulRecordNum,LCID lcid,IErrorInfo **ppErrorInfo,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IErrorRecords_RemoteGetErrorInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IErrorRecords_RemoteGetErrorParameters_Proxy(IErrorRecords *This,ULONG ulRecordNum,DISPPARAMS *pdispparams,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IErrorRecords_RemoteGetErrorParameters_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IErrorRecords_RemoteGetRecordCount_Proxy(IErrorRecords *This,ULONG *pcRecords,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IErrorRecords_RemoteGetRecordCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IErrorLookup_INTERFACE_DEFINED__
++#define __IErrorLookup_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IErrorLookup;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IErrorLookup : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetErrorDescription(HRESULT hrError,DWORD dwLookupID,DISPPARAMS *pdispparams,LCID lcid,BSTR *pbstrSource,BSTR *pbstrDescription) = 0;
++    virtual HRESULT WINAPI GetHelpInfo(HRESULT hrError,DWORD dwLookupID,LCID lcid,BSTR *pbstrHelpFile,DWORD *pdwHelpContext) = 0;
++    virtual HRESULT WINAPI ReleaseErrors(const DWORD dwDynamicErrorID) = 0;
++  };
++#else
++  typedef struct IErrorLookupVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IErrorLookup *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IErrorLookup *This);
++      ULONG (WINAPI *Release)(IErrorLookup *This);
++      HRESULT (WINAPI *GetErrorDescription)(IErrorLookup *This,HRESULT hrError,DWORD dwLookupID,DISPPARAMS *pdispparams,LCID lcid,BSTR *pbstrSource,BSTR *pbstrDescription);
++      HRESULT (WINAPI *GetHelpInfo)(IErrorLookup *This,HRESULT hrError,DWORD dwLookupID,LCID lcid,BSTR *pbstrHelpFile,DWORD *pdwHelpContext);
++      HRESULT (WINAPI *ReleaseErrors)(IErrorLookup *This,const DWORD dwDynamicErrorID);
++    END_INTERFACE
++  } IErrorLookupVtbl;
++  struct IErrorLookup {
++    CONST_VTBL struct IErrorLookupVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IErrorLookup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IErrorLookup_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IErrorLookup_Release(This) (This)->lpVtbl->Release(This)
++#define IErrorLookup_GetErrorDescription(This,hrError,dwLookupID,pdispparams,lcid,pbstrSource,pbstrDescription) (This)->lpVtbl->GetErrorDescription(This,hrError,dwLookupID,pdispparams,lcid,pbstrSource,pbstrDescription)
++#define IErrorLookup_GetHelpInfo(This,hrError,dwLookupID,lcid,pbstrHelpFile,pdwHelpContext) (This)->lpVtbl->GetHelpInfo(This,hrError,dwLookupID,lcid,pbstrHelpFile,pdwHelpContext)
++#define IErrorLookup_ReleaseErrors(This,dwDynamicErrorID) (This)->lpVtbl->ReleaseErrors(This,dwDynamicErrorID)
++#endif
++#endif
++  HRESULT WINAPI IErrorLookup_RemoteGetErrorDescription_Proxy(IErrorLookup *This,HRESULT hrError,DWORD dwLookupID,DISPPARAMS *pdispparams,LCID lcid,BSTR *pbstrSource,BSTR *pbstrDescription,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IErrorLookup_RemoteGetErrorDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IErrorLookup_RemoteGetHelpInfo_Proxy(IErrorLookup *This,HRESULT hrError,DWORD dwLookupID,LCID lcid,BSTR *pbstrHelpFile,DWORD *pdwHelpContext,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IErrorLookup_RemoteGetHelpInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IErrorLookup_RemoteReleaseErrors_Proxy(IErrorLookup *This,const DWORD dwDynamicErrorID,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IErrorLookup_RemoteReleaseErrors_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ISQLErrorInfo_INTERFACE_DEFINED__
++#define __ISQLErrorInfo_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ISQLErrorInfo;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ISQLErrorInfo : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetSQLInfo(BSTR *pbstrSQLState,LONG *plNativeError) = 0;
++  };
++#else
++  typedef struct ISQLErrorInfoVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ISQLErrorInfo *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ISQLErrorInfo *This);
++      ULONG (WINAPI *Release)(ISQLErrorInfo *This);
++      HRESULT (WINAPI *GetSQLInfo)(ISQLErrorInfo *This,BSTR *pbstrSQLState,LONG *plNativeError);
++    END_INTERFACE
++  } ISQLErrorInfoVtbl;
++  struct ISQLErrorInfo {
++    CONST_VTBL struct ISQLErrorInfoVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ISQLErrorInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ISQLErrorInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ISQLErrorInfo_Release(This) (This)->lpVtbl->Release(This)
++#define ISQLErrorInfo_GetSQLInfo(This,pbstrSQLState,plNativeError) (This)->lpVtbl->GetSQLInfo(This,pbstrSQLState,plNativeError)
++#endif
++#endif
++  HRESULT WINAPI ISQLErrorInfo_RemoteGetSQLInfo_Proxy(ISQLErrorInfo *This,BSTR *pbstrSQLState,LONG *plNativeError,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ISQLErrorInfo_RemoteGetSQLInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IGetDataSource_INTERFACE_DEFINED__
++#define __IGetDataSource_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IGetDataSource;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IGetDataSource : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetDataSource(REFIID riid,IUnknown **ppDataSource) = 0;
++  };
++#else
++  typedef struct IGetDataSourceVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IGetDataSource *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IGetDataSource *This);
++      ULONG (WINAPI *Release)(IGetDataSource *This);
++      HRESULT (WINAPI *GetDataSource)(IGetDataSource *This,REFIID riid,IUnknown **ppDataSource);
++    END_INTERFACE
++  } IGetDataSourceVtbl;
++  struct IGetDataSource {
++    CONST_VTBL struct IGetDataSourceVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IGetDataSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IGetDataSource_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IGetDataSource_Release(This) (This)->lpVtbl->Release(This)
++#define IGetDataSource_GetDataSource(This,riid,ppDataSource) (This)->lpVtbl->GetDataSource(This,riid,ppDataSource)
++#endif
++#endif
++  HRESULT WINAPI IGetDataSource_RemoteGetDataSource_Proxy(IGetDataSource *This,REFIID riid,IUnknown **ppDataSource,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB IGetDataSource_RemoteGetDataSource_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITransactionLocal_INTERFACE_DEFINED__
++#define __ITransactionLocal_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITransactionLocal;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITransactionLocal : public ITransaction {
++  public:
++    virtual HRESULT WINAPI GetOptionsObject(ITransactionOptions **ppOptions) = 0;
++    virtual HRESULT WINAPI StartTransaction(ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOtherOptions,ULONG *pulTransactionLevel) = 0;
++  };
++#else
++  typedef struct ITransactionLocalVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITransactionLocal *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITransactionLocal *This);
++      ULONG (WINAPI *Release)(ITransactionLocal *This);
++      HRESULT (WINAPI *Commit)(ITransactionLocal *This,WINBOOL fRetaining,DWORD grfTC,DWORD grfRM);
++      HRESULT (WINAPI *Abort)(ITransactionLocal *This,BOID *pboidReason,WINBOOL fRetaining,WINBOOL fAsync);
++      HRESULT (WINAPI *GetTransactionInfo)(ITransactionLocal *This,XACTTRANSINFO *pinfo);
++      HRESULT (WINAPI *GetOptionsObject)(ITransactionLocal *This,ITransactionOptions **ppOptions);
++      HRESULT (WINAPI *StartTransaction)(ITransactionLocal *This,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOtherOptions,ULONG *pulTransactionLevel);
++    END_INTERFACE
++  } ITransactionLocalVtbl;
++  struct ITransactionLocal {
++    CONST_VTBL struct ITransactionLocalVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITransactionLocal_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITransactionLocal_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITransactionLocal_Release(This) (This)->lpVtbl->Release(This)
++#define ITransactionLocal_Commit(This,fRetaining,grfTC,grfRM) (This)->lpVtbl->Commit(This,fRetaining,grfTC,grfRM)
++#define ITransactionLocal_Abort(This,pboidReason,fRetaining,fAsync) (This)->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync)
++#define ITransactionLocal_GetTransactionInfo(This,pinfo) (This)->lpVtbl->GetTransactionInfo(This,pinfo)
++#define ITransactionLocal_GetOptionsObject(This,ppOptions) (This)->lpVtbl->GetOptionsObject(This,ppOptions)
++#define ITransactionLocal_StartTransaction(This,isoLevel,isoFlags,pOtherOptions,pulTransactionLevel) (This)->lpVtbl->StartTransaction(This,isoLevel,isoFlags,pOtherOptions,pulTransactionLevel)
++#endif
++#endif
++  HRESULT WINAPI ITransactionLocal_RemoteGetOptionsObject_Proxy(ITransactionLocal *This,ITransactionOptions **ppOptions,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ITransactionLocal_RemoteGetOptionsObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITransactionLocal_RemoteStartTransaction_Proxy(ITransactionLocal *This,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOtherOptions,ULONG *pulTransactionLevel,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ITransactionLocal_RemoteStartTransaction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITransactionJoin_INTERFACE_DEFINED__
++#define __ITransactionJoin_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITransactionJoin;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITransactionJoin : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetOptionsObject(ITransactionOptions **ppOptions) = 0;
++    virtual HRESULT WINAPI JoinTransaction(IUnknown *punkTransactionCoord,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOtherOptions) = 0;
++  };
++#else
++  typedef struct ITransactionJoinVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITransactionJoin *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITransactionJoin *This);
++      ULONG (WINAPI *Release)(ITransactionJoin *This);
++      HRESULT (WINAPI *GetOptionsObject)(ITransactionJoin *This,ITransactionOptions **ppOptions);
++      HRESULT (WINAPI *JoinTransaction)(ITransactionJoin *This,IUnknown *punkTransactionCoord,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOtherOptions);
++    END_INTERFACE
++  } ITransactionJoinVtbl;
++  struct ITransactionJoin {
++    CONST_VTBL struct ITransactionJoinVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITransactionJoin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITransactionJoin_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITransactionJoin_Release(This) (This)->lpVtbl->Release(This)
++#define ITransactionJoin_GetOptionsObject(This,ppOptions) (This)->lpVtbl->GetOptionsObject(This,ppOptions)
++#define ITransactionJoin_JoinTransaction(This,punkTransactionCoord,isoLevel,isoFlags,pOtherOptions) (This)->lpVtbl->JoinTransaction(This,punkTransactionCoord,isoLevel,isoFlags,pOtherOptions)
++#endif
++#endif
++  HRESULT WINAPI ITransactionJoin_RemoteGetOptionsObject_Proxy(ITransactionJoin *This,ITransactionOptions **ppOptions,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ITransactionJoin_RemoteGetOptionsObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITransactionJoin_RemoteJoinTransaction_Proxy(ITransactionJoin *This,IUnknown *punkTransactionCoord,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOtherOptions,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ITransactionJoin_RemoteJoinTransaction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITransactionObject_INTERFACE_DEFINED__
++#define __ITransactionObject_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITransactionObject;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITransactionObject : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetTransactionObject(ULONG ulTransactionLevel,ITransaction **ppTransactionObject) = 0;
++  };
++#else
++  typedef struct ITransactionObjectVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITransactionObject *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITransactionObject *This);
++      ULONG (WINAPI *Release)(ITransactionObject *This);
++      HRESULT (WINAPI *GetTransactionObject)(ITransactionObject *This,ULONG ulTransactionLevel,ITransaction **ppTransactionObject);
++    END_INTERFACE
++  } ITransactionObjectVtbl;
++  struct ITransactionObject {
++    CONST_VTBL struct ITransactionObjectVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITransactionObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITransactionObject_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITransactionObject_Release(This) (This)->lpVtbl->Release(This)
++#define ITransactionObject_GetTransactionObject(This,ulTransactionLevel,ppTransactionObject) (This)->lpVtbl->GetTransactionObject(This,ulTransactionLevel,ppTransactionObject)
++#endif
++#endif
++  HRESULT WINAPI ITransactionObject_RemoteGetTransactionObject_Proxy(ITransactionObject *This,ULONG ulTransactionLevel,ITransaction **ppTransactionObject,IErrorInfo **ppErrorInfoRem);
++  void __RPC_STUB ITransactionObject_RemoteGetTransactionObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#if (OLEDBVER >= 0x0210)
++#ifndef UNDER_CE
++#include <accctrl.h>
++
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0334_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0334_v0_0_s_ifspec;
++
++#ifndef __ITrusteeAdmin_INTERFACE_DEFINED__
++#define __ITrusteeAdmin_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITrusteeAdmin;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITrusteeAdmin : public IUnknown {
++  public:
++    virtual HRESULT WINAPI CompareTrustees(TRUSTEE_W *pTrustee1,TRUSTEE_W *pTrustee2) = 0;
++    virtual HRESULT WINAPI CreateTrustee(TRUSTEE_W *pTrustee,ULONG cPropertySets,DBPROPSET rgPropertySets[]) = 0;
++    virtual HRESULT WINAPI DeleteTrustee(TRUSTEE_W *pTrustee) = 0;
++    virtual HRESULT WINAPI SetTrusteeProperties(TRUSTEE_W *pTrustee,ULONG cPropertySets,DBPROPSET rgPropertySets[]) = 0;
++    virtual HRESULT WINAPI GetTrusteeProperties(TRUSTEE_W *pTrustee,const ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets) = 0;
++  };
++#else
++  typedef struct ITrusteeAdminVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITrusteeAdmin *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITrusteeAdmin *This);
++      ULONG (WINAPI *Release)(ITrusteeAdmin *This);
++      HRESULT (WINAPI *CompareTrustees)(ITrusteeAdmin *This,TRUSTEE_W *pTrustee1,TRUSTEE_W *pTrustee2);
++      HRESULT (WINAPI *CreateTrustee)(ITrusteeAdmin *This,TRUSTEE_W *pTrustee,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++      HRESULT (WINAPI *DeleteTrustee)(ITrusteeAdmin *This,TRUSTEE_W *pTrustee);
++      HRESULT (WINAPI *SetTrusteeProperties)(ITrusteeAdmin *This,TRUSTEE_W *pTrustee,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++      HRESULT (WINAPI *GetTrusteeProperties)(ITrusteeAdmin *This,TRUSTEE_W *pTrustee,const ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets);
++    END_INTERFACE
++  } ITrusteeAdminVtbl;
++  struct ITrusteeAdmin {
++    CONST_VTBL struct ITrusteeAdminVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITrusteeAdmin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITrusteeAdmin_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITrusteeAdmin_Release(This) (This)->lpVtbl->Release(This)
++#define ITrusteeAdmin_CompareTrustees(This,pTrustee1,pTrustee2) (This)->lpVtbl->CompareTrustees(This,pTrustee1,pTrustee2)
++#define ITrusteeAdmin_CreateTrustee(This,pTrustee,cPropertySets,rgPropertySets) (This)->lpVtbl->CreateTrustee(This,pTrustee,cPropertySets,rgPropertySets)
++#define ITrusteeAdmin_DeleteTrustee(This,pTrustee) (This)->lpVtbl->DeleteTrustee(This,pTrustee)
++#define ITrusteeAdmin_SetTrusteeProperties(This,pTrustee,cPropertySets,rgPropertySets) (This)->lpVtbl->SetTrusteeProperties(This,pTrustee,cPropertySets,rgPropertySets)
++#define ITrusteeAdmin_GetTrusteeProperties(This,pTrustee,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets) (This)->lpVtbl->GetTrusteeProperties(This,pTrustee,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets)
++#endif
++#endif
++  HRESULT WINAPI ITrusteeAdmin_CompareTrustees_Proxy(ITrusteeAdmin *This,TRUSTEE_W *pTrustee1,TRUSTEE_W *pTrustee2);
++  void __RPC_STUB ITrusteeAdmin_CompareTrustees_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITrusteeAdmin_CreateTrustee_Proxy(ITrusteeAdmin *This,TRUSTEE_W *pTrustee,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++  void __RPC_STUB ITrusteeAdmin_CreateTrustee_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITrusteeAdmin_DeleteTrustee_Proxy(ITrusteeAdmin *This,TRUSTEE_W *pTrustee);
++  void __RPC_STUB ITrusteeAdmin_DeleteTrustee_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITrusteeAdmin_SetTrusteeProperties_Proxy(ITrusteeAdmin *This,TRUSTEE_W *pTrustee,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++  void __RPC_STUB ITrusteeAdmin_SetTrusteeProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITrusteeAdmin_GetTrusteeProperties_Proxy(ITrusteeAdmin *This,TRUSTEE_W *pTrustee,const ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets);
++  void __RPC_STUB ITrusteeAdmin_GetTrusteeProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITrusteeGroupAdmin_INTERFACE_DEFINED__
++#define __ITrusteeGroupAdmin_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITrusteeGroupAdmin;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITrusteeGroupAdmin : public IUnknown {
++  public:
++    virtual HRESULT WINAPI AddMember(TRUSTEE_W *pMembershipTrustee,TRUSTEE_W *pMemberTrustee) = 0;
++    virtual HRESULT WINAPI DeleteMember(TRUSTEE_W *pMembershipTrustee,TRUSTEE_W *pMemberTrustee) = 0;
++    virtual HRESULT WINAPI IsMember(TRUSTEE_W *pMembershipTrustee,TRUSTEE_W *pMemberTrustee,WINBOOL *pfStatus) = 0;
++    virtual HRESULT WINAPI GetMembers(TRUSTEE_W *pMembershipTrustee,ULONG *pcMembers,TRUSTEE_W **prgMembers) = 0;
++    virtual HRESULT WINAPI GetMemberships(TRUSTEE_W *pTrustee,ULONG *pcMemberships,TRUSTEE_W **prgMemberships) = 0;
++  };
++#else
++  typedef struct ITrusteeGroupAdminVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITrusteeGroupAdmin *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITrusteeGroupAdmin *This);
++      ULONG (WINAPI *Release)(ITrusteeGroupAdmin *This);
++      HRESULT (WINAPI *AddMember)(ITrusteeGroupAdmin *This,TRUSTEE_W *pMembershipTrustee,TRUSTEE_W *pMemberTrustee);
++      HRESULT (WINAPI *DeleteMember)(ITrusteeGroupAdmin *This,TRUSTEE_W *pMembershipTrustee,TRUSTEE_W *pMemberTrustee);
++      HRESULT (WINAPI *IsMember)(ITrusteeGroupAdmin *This,TRUSTEE_W *pMembershipTrustee,TRUSTEE_W *pMemberTrustee,WINBOOL *pfStatus);
++      HRESULT (WINAPI *GetMembers)(ITrusteeGroupAdmin *This,TRUSTEE_W *pMembershipTrustee,ULONG *pcMembers,TRUSTEE_W **prgMembers);
++      HRESULT (WINAPI *GetMemberships)(ITrusteeGroupAdmin *This,TRUSTEE_W *pTrustee,ULONG *pcMemberships,TRUSTEE_W **prgMemberships);
++    END_INTERFACE
++  } ITrusteeGroupAdminVtbl;
++  struct ITrusteeGroupAdmin {
++    CONST_VTBL struct ITrusteeGroupAdminVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITrusteeGroupAdmin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITrusteeGroupAdmin_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITrusteeGroupAdmin_Release(This) (This)->lpVtbl->Release(This)
++#define ITrusteeGroupAdmin_AddMember(This,pMembershipTrustee,pMemberTrustee) (This)->lpVtbl->AddMember(This,pMembershipTrustee,pMemberTrustee)
++#define ITrusteeGroupAdmin_DeleteMember(This,pMembershipTrustee,pMemberTrustee) (This)->lpVtbl->DeleteMember(This,pMembershipTrustee,pMemberTrustee)
++#define ITrusteeGroupAdmin_IsMember(This,pMembershipTrustee,pMemberTrustee,pfStatus) (This)->lpVtbl->IsMember(This,pMembershipTrustee,pMemberTrustee,pfStatus)
++#define ITrusteeGroupAdmin_GetMembers(This,pMembershipTrustee,pcMembers,prgMembers) (This)->lpVtbl->GetMembers(This,pMembershipTrustee,pcMembers,prgMembers)
++#define ITrusteeGroupAdmin_GetMemberships(This,pTrustee,pcMemberships,prgMemberships) (This)->lpVtbl->GetMemberships(This,pTrustee,pcMemberships,prgMemberships)
++#endif
++#endif
++  HRESULT WINAPI ITrusteeGroupAdmin_AddMember_Proxy(ITrusteeGroupAdmin *This,TRUSTEE_W *pMembershipTrustee,TRUSTEE_W *pMemberTrustee);
++  void __RPC_STUB ITrusteeGroupAdmin_AddMember_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITrusteeGroupAdmin_DeleteMember_Proxy(ITrusteeGroupAdmin *This,TRUSTEE_W *pMembershipTrustee,TRUSTEE_W *pMemberTrustee);
++  void __RPC_STUB ITrusteeGroupAdmin_DeleteMember_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITrusteeGroupAdmin_IsMember_Proxy(ITrusteeGroupAdmin *This,TRUSTEE_W *pMembershipTrustee,TRUSTEE_W *pMemberTrustee,WINBOOL *pfStatus);
++  void __RPC_STUB ITrusteeGroupAdmin_IsMember_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITrusteeGroupAdmin_GetMembers_Proxy(ITrusteeGroupAdmin *This,TRUSTEE_W *pMembershipTrustee,ULONG *pcMembers,TRUSTEE_W **prgMembers);
++  void __RPC_STUB ITrusteeGroupAdmin_GetMembers_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITrusteeGroupAdmin_GetMemberships_Proxy(ITrusteeGroupAdmin *This,TRUSTEE_W *pTrustee,ULONG *pcMemberships,TRUSTEE_W **prgMemberships);
++  void __RPC_STUB ITrusteeGroupAdmin_GetMemberships_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IObjectAccessControl_INTERFACE_DEFINED__
++#define __IObjectAccessControl_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IObjectAccessControl;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IObjectAccessControl : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetObjectAccessRights(SEC_OBJECT *pObject,ULONG *pcAccessEntries,EXPLICIT_ACCESS_W **prgAccessEntries) = 0;
++    virtual HRESULT WINAPI GetObjectOwner(SEC_OBJECT *pObject,TRUSTEE_W **ppOwner) = 0;
++    virtual HRESULT WINAPI IsObjectAccessAllowed(SEC_OBJECT *pObject,EXPLICIT_ACCESS_W *pAccessEntry,WINBOOL *pfResult) = 0;
++    virtual HRESULT WINAPI SetObjectAccessRights(SEC_OBJECT *pObject,ULONG cAccessEntries,EXPLICIT_ACCESS_W *prgAccessEntries) = 0;
++    virtual HRESULT WINAPI SetObjectOwner(SEC_OBJECT *pObject,TRUSTEE_W *pOwner) = 0;
++  };
++#else
++  typedef struct IObjectAccessControlVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IObjectAccessControl *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IObjectAccessControl *This);
++      ULONG (WINAPI *Release)(IObjectAccessControl *This);
++      HRESULT (WINAPI *GetObjectAccessRights)(IObjectAccessControl *This,SEC_OBJECT *pObject,ULONG *pcAccessEntries,EXPLICIT_ACCESS_W **prgAccessEntries);
++      HRESULT (WINAPI *GetObjectOwner)(IObjectAccessControl *This,SEC_OBJECT *pObject,TRUSTEE_W **ppOwner);
++      HRESULT (WINAPI *IsObjectAccessAllowed)(IObjectAccessControl *This,SEC_OBJECT *pObject,EXPLICIT_ACCESS_W *pAccessEntry,WINBOOL *pfResult);
++      HRESULT (WINAPI *SetObjectAccessRights)(IObjectAccessControl *This,SEC_OBJECT *pObject,ULONG cAccessEntries,EXPLICIT_ACCESS_W *prgAccessEntries);
++      HRESULT (WINAPI *SetObjectOwner)(IObjectAccessControl *This,SEC_OBJECT *pObject,TRUSTEE_W *pOwner);
++    END_INTERFACE
++  } IObjectAccessControlVtbl;
++  struct IObjectAccessControl {
++    CONST_VTBL struct IObjectAccessControlVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IObjectAccessControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IObjectAccessControl_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IObjectAccessControl_Release(This) (This)->lpVtbl->Release(This)
++#define IObjectAccessControl_GetObjectAccessRights(This,pObject,pcAccessEntries,prgAccessEntries) (This)->lpVtbl->GetObjectAccessRights(This,pObject,pcAccessEntries,prgAccessEntries)
++#define IObjectAccessControl_GetObjectOwner(This,pObject,ppOwner) (This)->lpVtbl->GetObjectOwner(This,pObject,ppOwner)
++#define IObjectAccessControl_IsObjectAccessAllowed(This,pObject,pAccessEntry,pfResult) (This)->lpVtbl->IsObjectAccessAllowed(This,pObject,pAccessEntry,pfResult)
++#define IObjectAccessControl_SetObjectAccessRights(This,pObject,cAccessEntries,prgAccessEntries) (This)->lpVtbl->SetObjectAccessRights(This,pObject,cAccessEntries,prgAccessEntries)
++#define IObjectAccessControl_SetObjectOwner(This,pObject,pOwner) (This)->lpVtbl->SetObjectOwner(This,pObject,pOwner)
++#endif
++#endif
++  HRESULT WINAPI IObjectAccessControl_GetObjectAccessRights_Proxy(IObjectAccessControl *This,SEC_OBJECT *pObject,ULONG *pcAccessEntries,EXPLICIT_ACCESS_W **prgAccessEntries);
++  void __RPC_STUB IObjectAccessControl_GetObjectAccessRights_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IObjectAccessControl_GetObjectOwner_Proxy(IObjectAccessControl *This,SEC_OBJECT *pObject,TRUSTEE_W **ppOwner);
++  void __RPC_STUB IObjectAccessControl_GetObjectOwner_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IObjectAccessControl_IsObjectAccessAllowed_Proxy(IObjectAccessControl *This,SEC_OBJECT *pObject,EXPLICIT_ACCESS_W *pAccessEntry,WINBOOL *pfResult);
++  void __RPC_STUB IObjectAccessControl_IsObjectAccessAllowed_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IObjectAccessControl_SetObjectAccessRights_Proxy(IObjectAccessControl *This,SEC_OBJECT *pObject,ULONG cAccessEntries,EXPLICIT_ACCESS_W *prgAccessEntries);
++  void __RPC_STUB IObjectAccessControl_SetObjectAccessRights_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IObjectAccessControl_SetObjectOwner_Proxy(IObjectAccessControl *This,SEC_OBJECT *pObject,TRUSTEE_W *pOwner);
++  void __RPC_STUB IObjectAccessControl_SetObjectOwner_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ISecurityInfo_INTERFACE_DEFINED__
++#define __ISecurityInfo_INTERFACE_DEFINED__
++#if (OLEDBVER >= 0x0210)
++  typedef DWORD ACCESS_MASK;
++
++  enum ACCESS_MASKENUM {
++    PERM_EXCLUSIVE = 0x200L,PERM_READDESIGN = 0x400L,PERM_WRITEDESIGN = 0x800L,PERM_WITHGRANT = 0x1000L,PERM_REFERENCE = 0x2000L,
++    PERM_CREATE = 0x4000L,PERM_INSERT = 0x8000L,PERM_DELETE = 0x10000L,PERM_READCONTROL = 0x20000L,PERM_WRITEPERMISSIONS = 0x40000L,
++    PERM_WRITEOWNER = 0x80000L,PERM_MAXIMUM_ALLOWED = 0x2000000L,PERM_ALL = 0x10000000L,PERM_EXECUTE = 0x20000000L,PERM_READ = 0x80000000L,
++    PERM_UPDATE = 0x40000000L,PERM_DROP = 0x100L
++  };
++#define PERM_DESIGN PERM_WRITEDESIGN
++#endif
++
++  EXTERN_C const IID IID_ISecurityInfo;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ISecurityInfo : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetCurrentTrustee(TRUSTEE_W **ppTrustee) = 0;
++    virtual HRESULT WINAPI GetObjectTypes(ULONG *cObjectTypes,GUID **rgObjectTypes) = 0;
++    virtual HRESULT WINAPI GetPermissions(GUID ObjectType,ACCESS_MASK *pPermissions) = 0;
++  };
++#else
++  typedef struct ISecurityInfoVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ISecurityInfo *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ISecurityInfo *This);
++      ULONG (WINAPI *Release)(ISecurityInfo *This);
++      HRESULT (WINAPI *GetCurrentTrustee)(ISecurityInfo *This,TRUSTEE_W **ppTrustee);
++      HRESULT (WINAPI *GetObjectTypes)(ISecurityInfo *This,ULONG *cObjectTypes,GUID **rgObjectTypes);
++      HRESULT (WINAPI *GetPermissions)(ISecurityInfo *This,GUID ObjectType,ACCESS_MASK *pPermissions);
++    END_INTERFACE
++  } ISecurityInfoVtbl;
++  struct ISecurityInfo {
++    CONST_VTBL struct ISecurityInfoVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ISecurityInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ISecurityInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ISecurityInfo_Release(This) (This)->lpVtbl->Release(This)
++#define ISecurityInfo_GetCurrentTrustee(This,ppTrustee) (This)->lpVtbl->GetCurrentTrustee(This,ppTrustee)
++#define ISecurityInfo_GetObjectTypes(This,cObjectTypes,rgObjectTypes) (This)->lpVtbl->GetObjectTypes(This,cObjectTypes,rgObjectTypes)
++#define ISecurityInfo_GetPermissions(This,ObjectType,pPermissions) (This)->lpVtbl->GetPermissions(This,ObjectType,pPermissions)
++#endif
++#endif
++  HRESULT WINAPI ISecurityInfo_GetCurrentTrustee_Proxy(ISecurityInfo *This,TRUSTEE_W **ppTrustee);
++  void __RPC_STUB ISecurityInfo_GetCurrentTrustee_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ISecurityInfo_GetObjectTypes_Proxy(ISecurityInfo *This,ULONG *cObjectTypes,GUID **rgObjectTypes);
++  void __RPC_STUB ISecurityInfo_GetObjectTypes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ISecurityInfo_GetPermissions_Proxy(ISecurityInfo *This,GUID ObjectType,ACCESS_MASK *pPermissions);
++  void __RPC_STUB ISecurityInfo_GetPermissions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0338_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0338_v0_0_s_ifspec;
++
++#ifndef __ITableCreation_INTERFACE_DEFINED__
++#define __ITableCreation_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITableCreation;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITableCreation : public ITableDefinition {
++  public:
++    virtual HRESULT WINAPI GetTableDefinition(DBID *pTableID,DBORDINAL *pcColumnDescs,DBCOLUMNDESC *prgColumnDescs[],ULONG *pcPropertySets,DBPROPSET *prgPropertySets[],ULONG *pcConstraintDescs,DBCONSTRAINTDESC *prgConstraintDescs[],OLECHAR **ppwszStringBuffer) = 0;
++  };
++#else
++  typedef struct ITableCreationVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITableCreation *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITableCreation *This);
++      ULONG (WINAPI *Release)(ITableCreation *This);
++      HRESULT (WINAPI *CreateTable)(ITableCreation *This,IUnknown *pUnkOuter,DBID *pTableID,DBORDINAL cColumnDescs,const DBCOLUMNDESC rgColumnDescs[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],DBID **ppTableID,IUnknown **ppRowset);
++      HRESULT (WINAPI *DropTable)(ITableCreation *This,DBID *pTableID);
++      HRESULT (WINAPI *AddColumn)(ITableCreation *This,DBID *pTableID,DBCOLUMNDESC *pColumnDesc,DBID **ppColumnID);
++      HRESULT (WINAPI *DropColumn)(ITableCreation *This,DBID *pTableID,DBID *pColumnID);
++      HRESULT (WINAPI *GetTableDefinition)(ITableCreation *This,DBID *pTableID,DBORDINAL *pcColumnDescs,DBCOLUMNDESC *prgColumnDescs[],ULONG *pcPropertySets,DBPROPSET *prgPropertySets[],ULONG *pcConstraintDescs,DBCONSTRAINTDESC *prgConstraintDescs[],OLECHAR **ppwszStringBuffer);
++    END_INTERFACE
++  } ITableCreationVtbl;
++  struct ITableCreation {
++    CONST_VTBL struct ITableCreationVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITableCreation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITableCreation_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITableCreation_Release(This) (This)->lpVtbl->Release(This)
++#define ITableCreation_CreateTable(This,pUnkOuter,pTableID,cColumnDescs,rgColumnDescs,riid,cPropertySets,rgPropertySets,ppTableID,ppRowset) (This)->lpVtbl->CreateTable(This,pUnkOuter,pTableID,cColumnDescs,rgColumnDescs,riid,cPropertySets,rgPropertySets,ppTableID,ppRowset)
++#define ITableCreation_DropTable(This,pTableID) (This)->lpVtbl->DropTable(This,pTableID)
++#define ITableCreation_AddColumn(This,pTableID,pColumnDesc,ppColumnID) (This)->lpVtbl->AddColumn(This,pTableID,pColumnDesc,ppColumnID)
++#define ITableCreation_DropColumn(This,pTableID,pColumnID) (This)->lpVtbl->DropColumn(This,pTableID,pColumnID)
++#define ITableCreation_GetTableDefinition(This,pTableID,pcColumnDescs,prgColumnDescs,pcPropertySets,prgPropertySets,pcConstraintDescs,prgConstraintDescs,ppwszStringBuffer) (This)->lpVtbl->GetTableDefinition(This,pTableID,pcColumnDescs,prgColumnDescs,pcPropertySets,prgPropertySets,pcConstraintDescs,prgConstraintDescs,ppwszStringBuffer)
++#endif
++#endif
++  HRESULT WINAPI ITableCreation_GetTableDefinition_Proxy(ITableCreation *This,DBID *pTableID,DBORDINAL *pcColumnDescs,DBCOLUMNDESC *prgColumnDescs[],ULONG *pcPropertySets,DBPROPSET *prgPropertySets[],ULONG *pcConstraintDescs,DBCONSTRAINTDESC *prgConstraintDescs[],OLECHAR **ppwszStringBuffer);
++  void __RPC_STUB ITableCreation_GetTableDefinition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITableDefinitionWithConstraints_INTERFACE_DEFINED__
++#define __ITableDefinitionWithConstraints_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITableDefinitionWithConstraints;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITableDefinitionWithConstraints : public ITableCreation {
++  public:
++    virtual HRESULT WINAPI AddConstraint(DBID *pTableID,DBCONSTRAINTDESC *pConstraintDesc) = 0;
++    virtual HRESULT WINAPI CreateTableWithConstraints(IUnknown *pUnkOuter,DBID *pTableID,DBORDINAL cColumnDescs,DBCOLUMNDESC rgColumnDescs[],ULONG cConstraintDescs,DBCONSTRAINTDESC rgConstraintDescs[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],DBID **ppTableID,IUnknown **ppRowset) = 0;
++    virtual HRESULT WINAPI DropConstraint(DBID *pTableID,DBID *pConstraintID) = 0;
++  };
++#else
++  typedef struct ITableDefinitionWithConstraintsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITableDefinitionWithConstraints *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITableDefinitionWithConstraints *This);
++      ULONG (WINAPI *Release)(ITableDefinitionWithConstraints *This);
++      HRESULT (WINAPI *CreateTable)(ITableDefinitionWithConstraints *This,IUnknown *pUnkOuter,DBID *pTableID,DBORDINAL cColumnDescs,const DBCOLUMNDESC rgColumnDescs[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],DBID **ppTableID,IUnknown **ppRowset);
++      HRESULT (WINAPI *DropTable)(ITableDefinitionWithConstraints *This,DBID *pTableID);
++      HRESULT (WINAPI *AddColumn)(ITableDefinitionWithConstraints *This,DBID *pTableID,DBCOLUMNDESC *pColumnDesc,DBID **ppColumnID);
++      HRESULT (WINAPI *DropColumn)(ITableDefinitionWithConstraints *This,DBID *pTableID,DBID *pColumnID);
++      HRESULT (WINAPI *GetTableDefinition)(ITableDefinitionWithConstraints *This,DBID *pTableID,DBORDINAL *pcColumnDescs,DBCOLUMNDESC *prgColumnDescs[],ULONG *pcPropertySets,DBPROPSET *prgPropertySets[],ULONG *pcConstraintDescs,DBCONSTRAINTDESC *prgConstraintDescs[],OLECHAR **ppwszStringBuffer);
++      HRESULT (WINAPI *AddConstraint)(ITableDefinitionWithConstraints *This,DBID *pTableID,DBCONSTRAINTDESC *pConstraintDesc);
++      HRESULT (WINAPI *CreateTableWithConstraints)(ITableDefinitionWithConstraints *This,IUnknown *pUnkOuter,DBID *pTableID,DBORDINAL cColumnDescs,DBCOLUMNDESC rgColumnDescs[],ULONG cConstraintDescs,DBCONSTRAINTDESC rgConstraintDescs[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],DBID **ppTableID,IUnknown **ppRowset);
++      HRESULT (WINAPI *DropConstraint)(ITableDefinitionWithConstraints *This,DBID *pTableID,DBID *pConstraintID);
++    END_INTERFACE
++  } ITableDefinitionWithConstraintsVtbl;
++  struct ITableDefinitionWithConstraints {
++    CONST_VTBL struct ITableDefinitionWithConstraintsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITableDefinitionWithConstraints_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITableDefinitionWithConstraints_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITableDefinitionWithConstraints_Release(This) (This)->lpVtbl->Release(This)
++#define ITableDefinitionWithConstraints_CreateTable(This,pUnkOuter,pTableID,cColumnDescs,rgColumnDescs,riid,cPropertySets,rgPropertySets,ppTableID,ppRowset) (This)->lpVtbl->CreateTable(This,pUnkOuter,pTableID,cColumnDescs,rgColumnDescs,riid,cPropertySets,rgPropertySets,ppTableID,ppRowset)
++#define ITableDefinitionWithConstraints_DropTable(This,pTableID) (This)->lpVtbl->DropTable(This,pTableID)
++#define ITableDefinitionWithConstraints_AddColumn(This,pTableID,pColumnDesc,ppColumnID) (This)->lpVtbl->AddColumn(This,pTableID,pColumnDesc,ppColumnID)
++#define ITableDefinitionWithConstraints_DropColumn(This,pTableID,pColumnID) (This)->lpVtbl->DropColumn(This,pTableID,pColumnID)
++#define ITableDefinitionWithConstraints_GetTableDefinition(This,pTableID,pcColumnDescs,prgColumnDescs,pcPropertySets,prgPropertySets,pcConstraintDescs,prgConstraintDescs,ppwszStringBuffer) (This)->lpVtbl->GetTableDefinition(This,pTableID,pcColumnDescs,prgColumnDescs,pcPropertySets,prgPropertySets,pcConstraintDescs,prgConstraintDescs,ppwszStringBuffer)
++#define ITableDefinitionWithConstraints_AddConstraint(This,pTableID,pConstraintDesc) (This)->lpVtbl->AddConstraint(This,pTableID,pConstraintDesc)
++#define ITableDefinitionWithConstraints_CreateTableWithConstraints(This,pUnkOuter,pTableID,cColumnDescs,rgColumnDescs,cConstraintDescs,rgConstraintDescs,riid,cPropertySets,rgPropertySets,ppTableID,ppRowset) (This)->lpVtbl->CreateTableWithConstraints(This,pUnkOuter,pTableID,cColumnDescs,rgColumnDescs,cConstraintDescs,rgConstraintDescs,riid,cPropertySets,rgPropertySets,ppTableID,ppRowset)
++#define ITableDefinitionWithConstraints_DropConstraint(This,pTableID,pConstraintID) (This)->lpVtbl->DropConstraint(This,pTableID,pConstraintID)
++#endif
++#endif
++  HRESULT WINAPI ITableDefinitionWithConstraints_AddConstraint_Proxy(ITableDefinitionWithConstraints *This,DBID *pTableID,DBCONSTRAINTDESC *pConstraintDesc);
++  void __RPC_STUB ITableDefinitionWithConstraints_AddConstraint_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITableDefinitionWithConstraints_CreateTableWithConstraints_Proxy(ITableDefinitionWithConstraints *This,IUnknown *pUnkOuter,DBID *pTableID,DBORDINAL cColumnDescs,DBCOLUMNDESC rgColumnDescs[],ULONG cConstraintDescs,DBCONSTRAINTDESC rgConstraintDescs[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],DBID **ppTableID,IUnknown **ppRowset);
++  void __RPC_STUB ITableDefinitionWithConstraints_CreateTableWithConstraints_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITableDefinitionWithConstraints_DropConstraint_Proxy(ITableDefinitionWithConstraints *This,DBID *pTableID,DBID *pConstraintID);
++  void __RPC_STUB ITableDefinitionWithConstraints_DropConstraint_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef UNDER_CE
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0339_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0339_v0_0_s_ifspec;
++#ifndef __IRow_INTERFACE_DEFINED__
++#define __IRow_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRow;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRow : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetColumns(DBORDINAL cColumns,DBCOLUMNACCESS rgColumns[]) = 0;
++    virtual HRESULT WINAPI GetSourceRowset(REFIID riid,IUnknown **ppRowset,HROW *phRow) = 0;
++    virtual HRESULT WINAPI Open(IUnknown *pUnkOuter,DBID *pColumnID,REFGUID rguidColumnType,DWORD dwBindFlags,REFIID riid,IUnknown **ppUnk) = 0;
++  };
++#else
++  typedef struct IRowVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRow *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRow *This);
++      ULONG (WINAPI *Release)(IRow *This);
++      HRESULT (WINAPI *GetColumns)(IRow *This,DBORDINAL cColumns,DBCOLUMNACCESS rgColumns[]);
++      HRESULT (WINAPI *GetSourceRowset)(IRow *This,REFIID riid,IUnknown **ppRowset,HROW *phRow);
++      HRESULT (WINAPI *Open)(IRow *This,IUnknown *pUnkOuter,DBID *pColumnID,REFGUID rguidColumnType,DWORD dwBindFlags,REFIID riid,IUnknown **ppUnk);
++    END_INTERFACE
++  } IRowVtbl;
++  struct IRow {
++    CONST_VTBL struct IRowVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRow_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRow_Release(This) (This)->lpVtbl->Release(This)
++#define IRow_GetColumns(This,cColumns,rgColumns) (This)->lpVtbl->GetColumns(This,cColumns,rgColumns)
++#define IRow_GetSourceRowset(This,riid,ppRowset,phRow) (This)->lpVtbl->GetSourceRowset(This,riid,ppRowset,phRow)
++#define IRow_Open(This,pUnkOuter,pColumnID,rguidColumnType,dwBindFlags,riid,ppUnk) (This)->lpVtbl->Open(This,pUnkOuter,pColumnID,rguidColumnType,dwBindFlags,riid,ppUnk)
++#endif
++#endif
++  HRESULT WINAPI IRow_GetColumns_Proxy(IRow *This,DBORDINAL cColumns,DBCOLUMNACCESS rgColumns[]);
++  void __RPC_STUB IRow_GetColumns_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRow_GetSourceRowset_Proxy(IRow *This,REFIID riid,IUnknown **ppRowset,HROW *phRow);
++  void __RPC_STUB IRow_GetSourceRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRow_Open_Proxy(IRow *This,IUnknown *pUnkOuter,DBID *pColumnID,REFGUID rguidColumnType,DWORD dwBindFlags,REFIID riid,IUnknown **ppUnk);
++  void __RPC_STUB IRow_Open_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowChange_INTERFACE_DEFINED__
++#define __IRowChange_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowChange;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowChange : public IUnknown {
++  public:
++    virtual HRESULT WINAPI SetColumns(DBORDINAL cColumns,DBCOLUMNACCESS rgColumns[]) = 0;
++  };
++#else
++  typedef struct IRowChangeVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowChange *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowChange *This);
++      ULONG (WINAPI *Release)(IRowChange *This);
++      HRESULT (WINAPI *SetColumns)(IRowChange *This,DBORDINAL cColumns,DBCOLUMNACCESS rgColumns[]);
++    END_INTERFACE
++  } IRowChangeVtbl;
++  struct IRowChange {
++    CONST_VTBL struct IRowChangeVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowChange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowChange_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowChange_Release(This) (This)->lpVtbl->Release(This)
++#define IRowChange_SetColumns(This,cColumns,rgColumns) (This)->lpVtbl->SetColumns(This,cColumns,rgColumns)
++#endif
++#endif
++  HRESULT WINAPI IRowChange_SetColumns_Proxy(IRowChange *This,DBORDINAL cColumns,DBCOLUMNACCESS rgColumns[]);
++  void __RPC_STUB IRowChange_SetColumns_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowSchemaChange_INTERFACE_DEFINED__
++#define __IRowSchemaChange_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowSchemaChange;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowSchemaChange : public IRowChange {
++  public:
++    virtual HRESULT WINAPI DeleteColumns(DBORDINAL cColumns,const DBID rgColumnIDs[],DBSTATUS rgdwStatus[]) = 0;
++    virtual HRESULT WINAPI AddColumns(DBORDINAL cColumns,const DBCOLUMNINFO rgNewColumnInfo[],DBCOLUMNACCESS rgColumns[]) = 0;
++  };
++#else
++  typedef struct IRowSchemaChangeVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowSchemaChange *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowSchemaChange *This);
++      ULONG (WINAPI *Release)(IRowSchemaChange *This);
++      HRESULT (WINAPI *SetColumns)(IRowSchemaChange *This,DBORDINAL cColumns,DBCOLUMNACCESS rgColumns[]);
++      HRESULT (WINAPI *DeleteColumns)(IRowSchemaChange *This,DBORDINAL cColumns,const DBID rgColumnIDs[],DBSTATUS rgdwStatus[]);
++      HRESULT (WINAPI *AddColumns)(IRowSchemaChange *This,DBORDINAL cColumns,const DBCOLUMNINFO rgNewColumnInfo[],DBCOLUMNACCESS rgColumns[]);
++    END_INTERFACE
++  } IRowSchemaChangeVtbl;
++  struct IRowSchemaChange {
++    CONST_VTBL struct IRowSchemaChangeVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowSchemaChange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowSchemaChange_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowSchemaChange_Release(This) (This)->lpVtbl->Release(This)
++#define IRowSchemaChange_SetColumns(This,cColumns,rgColumns) (This)->lpVtbl->SetColumns(This,cColumns,rgColumns)
++#define IRowSchemaChange_DeleteColumns(This,cColumns,rgColumnIDs,rgdwStatus) (This)->lpVtbl->DeleteColumns(This,cColumns,rgColumnIDs,rgdwStatus)
++#define IRowSchemaChange_AddColumns(This,cColumns,rgNewColumnInfo,rgColumns) (This)->lpVtbl->AddColumns(This,cColumns,rgNewColumnInfo,rgColumns)
++#endif
++#endif
++  HRESULT WINAPI IRowSchemaChange_DeleteColumns_Proxy(IRowSchemaChange *This,DBORDINAL cColumns,const DBID rgColumnIDs[],DBSTATUS rgdwStatus[]);
++  void __RPC_STUB IRowSchemaChange_DeleteColumns_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowSchemaChange_AddColumns_Proxy(IRowSchemaChange *This,DBORDINAL cColumns,const DBCOLUMNINFO rgNewColumnInfo[],DBCOLUMNACCESS rgColumns[]);
++  void __RPC_STUB IRowSchemaChange_AddColumns_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IGetRow_INTERFACE_DEFINED__
++#define __IGetRow_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IGetRow;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IGetRow : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetRowFromHROW(IUnknown *pUnkOuter,HROW hRow,REFIID riid,IUnknown **ppUnk) = 0;
++    virtual HRESULT WINAPI GetURLFromHROW(HROW hRow,LPOLESTR *ppwszURL) = 0;
++  };
++#else
++  typedef struct IGetRowVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IGetRow *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IGetRow *This);
++      ULONG (WINAPI *Release)(IGetRow *This);
++      HRESULT (WINAPI *GetRowFromHROW)(IGetRow *This,IUnknown *pUnkOuter,HROW hRow,REFIID riid,IUnknown **ppUnk);
++      HRESULT (WINAPI *GetURLFromHROW)(IGetRow *This,HROW hRow,LPOLESTR *ppwszURL);
++    END_INTERFACE
++  } IGetRowVtbl;
++  struct IGetRow {
++    CONST_VTBL struct IGetRowVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IGetRow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IGetRow_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IGetRow_Release(This) (This)->lpVtbl->Release(This)
++#define IGetRow_GetRowFromHROW(This,pUnkOuter,hRow,riid,ppUnk) (This)->lpVtbl->GetRowFromHROW(This,pUnkOuter,hRow,riid,ppUnk)
++#define IGetRow_GetURLFromHROW(This,hRow,ppwszURL) (This)->lpVtbl->GetURLFromHROW(This,hRow,ppwszURL)
++#endif
++#endif
++  HRESULT WINAPI IGetRow_GetRowFromHROW_Proxy(IGetRow *This,IUnknown *pUnkOuter,HROW hRow,REFIID riid,IUnknown **ppUnk);
++  void __RPC_STUB IGetRow_GetRowFromHROW_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IGetRow_GetURLFromHROW_Proxy(IGetRow *This,HROW hRow,LPOLESTR *ppwszURL);
++  void __RPC_STUB IGetRow_GetURLFromHROW_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#include <urlmon.h>
++
++#ifndef __IBindResource_INTERFACE_DEFINED__
++#define __IBindResource_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IBindResource;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IBindResource : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Bind(IUnknown *pUnkOuter,LPCOLESTR pwszURL,DBBINDURLFLAG dwBindURLFlags,REFGUID rguid,REFIID riid,IAuthenticate *pAuthenticate,DBIMPLICITSESSION *pImplSession,DBBINDURLSTATUS *pdwBindStatus,IUnknown **ppUnk) = 0;
++  };
++#else
++  typedef struct IBindResourceVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IBindResource *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IBindResource *This);
++      ULONG (WINAPI *Release)(IBindResource *This);
++      HRESULT (WINAPI *Bind)(IBindResource *This,IUnknown *pUnkOuter,LPCOLESTR pwszURL,DBBINDURLFLAG dwBindURLFlags,REFGUID rguid,REFIID riid,IAuthenticate *pAuthenticate,DBIMPLICITSESSION *pImplSession,DBBINDURLSTATUS *pdwBindStatus,IUnknown **ppUnk);
++    END_INTERFACE
++  } IBindResourceVtbl;
++  struct IBindResource {
++    CONST_VTBL struct IBindResourceVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IBindResource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IBindResource_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IBindResource_Release(This) (This)->lpVtbl->Release(This)
++#define IBindResource_Bind(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppUnk) (This)->lpVtbl->Bind(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppUnk)
++#endif
++#endif
++  HRESULT WINAPI IBindResource_RemoteBind_Proxy(IBindResource *This,IUnknown *pUnkOuter,LPCOLESTR pwszURL,DBBINDURLFLAG dwBindURLFlags,REFGUID rguid,REFIID riid,IAuthenticate *pAuthenticate,IUnknown *pSessionUnkOuter,IID *piid,IUnknown **ppSession,DBBINDURLSTATUS *pdwBindStatus,IUnknown **ppUnk);
++  void __RPC_STUB IBindResource_RemoteBind_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IScopedOperations_INTERFACE_DEFINED__
++#define __IScopedOperations_INTERFACE_DEFINED__
++  typedef DWORD DBCOPYFLAGS;
++
++  enum DBCOPYFLAGSENUM {
++    DBCOPY_ASYNC = 0x100,DBCOPY_REPLACE_EXISTING = 0x200,DBCOPY_ALLOW_EMULATION = 0x400,DBCOPY_NON_RECURSIVE = 0x800,DBCOPY_ATOMIC = 0x1000
++  };
++  typedef DWORD DBMOVEFLAGS;
++
++  enum DBMOVEFLAGSENUM {
++    DBMOVE_REPLACE_EXISTING = 0x1,DBMOVE_ASYNC = 0x100,DBMOVE_DONT_UPDATE_LINKS = 0x200,DBMOVE_ALLOW_EMULATION = 0x400,DBMOVE_ATOMIC = 0x1000
++  };
++  typedef DWORD DBDELETEFLAGS;
++
++  enum DBDELETEFLAGSENUM {
++    DBDELETE_ASYNC = 0x100,DBDELETE_ATOMIC = 0x1000
++  };
++
++  EXTERN_C const IID IID_IScopedOperations;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IScopedOperations : public IBindResource {
++  public:
++    virtual HRESULT WINAPI Copy(DBCOUNTITEM cRows,LPCOLESTR rgpwszSourceURLs[],LPCOLESTR rgpwszDestURLs[],DWORD dwCopyFlags,IAuthenticate *pAuthenticate,DBSTATUS rgdwStatus[],LPOLESTR rgpwszNewURLs[],OLECHAR **ppStringsBuffer) = 0;
++    virtual HRESULT WINAPI Move(DBCOUNTITEM cRows,LPCOLESTR rgpwszSourceURLs[],LPCOLESTR rgpwszDestURLs[],DWORD dwMoveFlags,IAuthenticate *pAuthenticate,DBSTATUS rgdwStatus[],LPOLESTR rgpwszNewURLs[],OLECHAR **ppStringsBuffer) = 0;
++    virtual HRESULT WINAPI Delete(DBCOUNTITEM cRows,LPCOLESTR rgpwszURLs[],DWORD dwDeleteFlags,DBSTATUS rgdwStatus[]) = 0;
++    virtual HRESULT WINAPI OpenRowset(IUnknown *pUnkOuter,DBID *pTableID,DBID *pIndexID,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset) = 0;
++  };
++#else
++  typedef struct IScopedOperationsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IScopedOperations *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IScopedOperations *This);
++      ULONG (WINAPI *Release)(IScopedOperations *This);
++      HRESULT (WINAPI *Bind)(IScopedOperations *This,IUnknown *pUnkOuter,LPCOLESTR pwszURL,DBBINDURLFLAG dwBindURLFlags,REFGUID rguid,REFIID riid,IAuthenticate *pAuthenticate,DBIMPLICITSESSION *pImplSession,DBBINDURLSTATUS *pdwBindStatus,IUnknown **ppUnk);
++      HRESULT (WINAPI *Copy)(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR rgpwszSourceURLs[],LPCOLESTR rgpwszDestURLs[],DWORD dwCopyFlags,IAuthenticate *pAuthenticate,DBSTATUS rgdwStatus[],LPOLESTR rgpwszNewURLs[],OLECHAR **ppStringsBuffer);
++      HRESULT (WINAPI *Move)(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR rgpwszSourceURLs[],LPCOLESTR rgpwszDestURLs[],DWORD dwMoveFlags,IAuthenticate *pAuthenticate,DBSTATUS rgdwStatus[],LPOLESTR rgpwszNewURLs[],OLECHAR **ppStringsBuffer);
++      HRESULT (WINAPI *Delete)(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR rgpwszURLs[],DWORD dwDeleteFlags,DBSTATUS rgdwStatus[]);
++      HRESULT (WINAPI *OpenRowset)(IScopedOperations *This,IUnknown *pUnkOuter,DBID *pTableID,DBID *pIndexID,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset);
++    END_INTERFACE
++  } IScopedOperationsVtbl;
++  struct IScopedOperations {
++    CONST_VTBL struct IScopedOperationsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IScopedOperations_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IScopedOperations_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IScopedOperations_Release(This) (This)->lpVtbl->Release(This)
++#define IScopedOperations_Bind(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppUnk) (This)->lpVtbl->Bind(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppUnk)
++#define IScopedOperations_Copy(This,cRows,rgpwszSourceURLs,rgpwszDestURLs,dwCopyFlags,pAuthenticate,rgdwStatus,rgpwszNewURLs,ppStringsBuffer) (This)->lpVtbl->Copy(This,cRows,rgpwszSourceURLs,rgpwszDestURLs,dwCopyFlags,pAuthenticate,rgdwStatus,rgpwszNewURLs,ppStringsBuffer)
++#define IScopedOperations_Move(This,cRows,rgpwszSourceURLs,rgpwszDestURLs,dwMoveFlags,pAuthenticate,rgdwStatus,rgpwszNewURLs,ppStringsBuffer) (This)->lpVtbl->Move(This,cRows,rgpwszSourceURLs,rgpwszDestURLs,dwMoveFlags,pAuthenticate,rgdwStatus,rgpwszNewURLs,ppStringsBuffer)
++#define IScopedOperations_Delete(This,cRows,rgpwszURLs,dwDeleteFlags,rgdwStatus) (This)->lpVtbl->Delete(This,cRows,rgpwszURLs,dwDeleteFlags,rgdwStatus)
++#define IScopedOperations_OpenRowset(This,pUnkOuter,pTableID,pIndexID,riid,cPropertySets,rgPropertySets,ppRowset) (This)->lpVtbl->OpenRowset(This,pUnkOuter,pTableID,pIndexID,riid,cPropertySets,rgPropertySets,ppRowset)
++#endif
++#endif
++  HRESULT WINAPI IScopedOperations_RemoteCopy_Proxy(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR *rgpwszSourceURLs,LPCOLESTR *rgpwszDestURLs,DWORD dwCopyFlags,IAuthenticate *pAuthenticate,DBSTATUS *rgdwStatus,DBBYTEOFFSET **prgulNewURLOffsets,ULONG *pcbStringsBuffer,OLECHAR **ppStringsBuffer);
++  void __RPC_STUB IScopedOperations_RemoteCopy_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IScopedOperations_RemoteMove_Proxy(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR *rgpwszSourceURLs,LPCOLESTR *rgpwszDestURLs,DWORD dwMoveFlags,IAuthenticate *pAuthenticate,DBSTATUS *rgdwStatus,DBBYTEOFFSET **prgulNewURLOffsets,ULONG *pcbStringsBuffer,OLECHAR **ppStringsBuffer);
++  void __RPC_STUB IScopedOperations_RemoteMove_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IScopedOperations_RemoteDelete_Proxy(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR *rgpwszURLs,DWORD dwDeleteFlags,DBSTATUS *rgdwStatus);
++  void __RPC_STUB IScopedOperations_RemoteDelete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IScopedOperations_RemoteOpenRowset_Proxy(IScopedOperations *This,IUnknown *pUnkOuter,DBID *pTableID,DBID *pIndexID,REFIID riid,ULONG cPropertySets,DBPROPSET *rgPropertySets,IUnknown **ppRowset,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus);
++  void __RPC_STUB IScopedOperations_RemoteOpenRowset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ICreateRow_INTERFACE_DEFINED__
++#define __ICreateRow_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ICreateRow;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ICreateRow : public IUnknown {
++  public:
++    virtual HRESULT WINAPI CreateRow(IUnknown *pUnkOuter,LPCOLESTR pwszURL,DBBINDURLFLAG dwBindURLFlags,REFGUID rguid,REFIID riid,IAuthenticate *pAuthenticate,DBIMPLICITSESSION *pImplSession,DBBINDURLSTATUS *pdwBindStatus,LPOLESTR *ppwszNewURL,IUnknown **ppUnk) = 0;
++  };
++#else
++  typedef struct ICreateRowVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ICreateRow *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ICreateRow *This);
++      ULONG (WINAPI *Release)(ICreateRow *This);
++      HRESULT (WINAPI *CreateRow)(ICreateRow *This,IUnknown *pUnkOuter,LPCOLESTR pwszURL,DBBINDURLFLAG dwBindURLFlags,REFGUID rguid,REFIID riid,IAuthenticate *pAuthenticate,DBIMPLICITSESSION *pImplSession,DBBINDURLSTATUS *pdwBindStatus,LPOLESTR *ppwszNewURL,IUnknown **ppUnk);
++    END_INTERFACE
++  } ICreateRowVtbl;
++  struct ICreateRow {
++    CONST_VTBL struct ICreateRowVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ICreateRow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ICreateRow_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ICreateRow_Release(This) (This)->lpVtbl->Release(This)
++#define ICreateRow_CreateRow(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppwszNewURL,ppUnk) (This)->lpVtbl->CreateRow(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppwszNewURL,ppUnk)
++#endif
++#endif
++  HRESULT WINAPI ICreateRow_RemoteCreateRow_Proxy(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);
++  void __RPC_STUB ICreateRow_RemoteCreateRow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IDBBinderProperties_INTERFACE_DEFINED__
++#define __IDBBinderProperties_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IDBBinderProperties;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IDBBinderProperties : public IDBProperties {
++  public:
++    virtual HRESULT WINAPI Reset(void) = 0;
++  };
++#else
++  typedef struct IDBBinderPropertiesVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IDBBinderProperties *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IDBBinderProperties *This);
++      ULONG (WINAPI *Release)(IDBBinderProperties *This);
++      HRESULT (WINAPI *GetProperties)(IDBBinderProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets);
++      HRESULT (WINAPI *GetPropertyInfo)(IDBBinderProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,OLECHAR **ppDescBuffer);
++      HRESULT (WINAPI *SetProperties)(IDBBinderProperties *This,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++      HRESULT (WINAPI *Reset)(IDBBinderProperties *This);
++    END_INTERFACE
++  } IDBBinderPropertiesVtbl;
++  struct IDBBinderProperties {
++    CONST_VTBL struct IDBBinderPropertiesVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IDBBinderProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IDBBinderProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IDBBinderProperties_Release(This) (This)->lpVtbl->Release(This)
++#define IDBBinderProperties_GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets) (This)->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets)
++#define IDBBinderProperties_GetPropertyInfo(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer) (This)->lpVtbl->GetPropertyInfo(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer)
++#define IDBBinderProperties_SetProperties(This,cPropertySets,rgPropertySets) (This)->lpVtbl->SetProperties(This,cPropertySets,rgPropertySets)
++#define IDBBinderProperties_Reset(This) (This)->lpVtbl->Reset(This)
++#endif
++#endif
++  HRESULT WINAPI IDBBinderProperties_Reset_Proxy(IDBBinderProperties *This);
++  void __RPC_STUB IDBBinderProperties_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IColumnsInfo2_INTERFACE_DEFINED__
++#define __IColumnsInfo2_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IColumnsInfo2;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IColumnsInfo2 : public IColumnsInfo {
++  public:
++    virtual HRESULT WINAPI GetRestrictedColumnInfo(DBORDINAL cColumnIDMasks,const DBID rgColumnIDMasks[],DWORD dwFlags,DBORDINAL *pcColumns,DBID **prgColumnIDs,DBCOLUMNINFO **prgColumnInfo,OLECHAR **ppStringsBuffer) = 0;
++  };
++#else
++  typedef struct IColumnsInfo2Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IColumnsInfo2 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IColumnsInfo2 *This);
++      ULONG (WINAPI *Release)(IColumnsInfo2 *This);
++      HRESULT (WINAPI *GetColumnInfo)(IColumnsInfo2 *This,DBORDINAL *pcColumns,DBCOLUMNINFO **prgInfo,OLECHAR **ppStringsBuffer);
++      HRESULT (WINAPI *MapColumnIDs)(IColumnsInfo2 *This,DBORDINAL cColumnIDs,const DBID rgColumnIDs[],DBORDINAL rgColumns[]);
++      HRESULT (WINAPI *GetRestrictedColumnInfo)(IColumnsInfo2 *This,DBORDINAL cColumnIDMasks,const DBID rgColumnIDMasks[],DWORD dwFlags,DBORDINAL *pcColumns,DBID **prgColumnIDs,DBCOLUMNINFO **prgColumnInfo,OLECHAR **ppStringsBuffer);
++    END_INTERFACE
++  } IColumnsInfo2Vtbl;
++  struct IColumnsInfo2 {
++    CONST_VTBL struct IColumnsInfo2Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IColumnsInfo2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IColumnsInfo2_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IColumnsInfo2_Release(This) (This)->lpVtbl->Release(This)
++#define IColumnsInfo2_GetColumnInfo(This,pcColumns,prgInfo,ppStringsBuffer) (This)->lpVtbl->GetColumnInfo(This,pcColumns,prgInfo,ppStringsBuffer)
++#define IColumnsInfo2_MapColumnIDs(This,cColumnIDs,rgColumnIDs,rgColumns) (This)->lpVtbl->MapColumnIDs(This,cColumnIDs,rgColumnIDs,rgColumns)
++#define IColumnsInfo2_GetRestrictedColumnInfo(This,cColumnIDMasks,rgColumnIDMasks,dwFlags,pcColumns,prgColumnIDs,prgColumnInfo,ppStringsBuffer) (This)->lpVtbl->GetRestrictedColumnInfo(This,cColumnIDMasks,rgColumnIDMasks,dwFlags,pcColumns,prgColumnIDs,prgColumnInfo,ppStringsBuffer)
++#endif
++#endif
++  HRESULT WINAPI IColumnsInfo2_RemoteGetRestrictedColumnInfo_Proxy(IColumnsInfo2 *This,DBORDINAL cColumnIDMasks,const DBID *rgColumnIDMasks,DWORD dwFlags,DBORDINAL *pcColumns,DBID **prgColumnIDs,DBCOLUMNINFO **prgColumnInfo,DBBYTEOFFSET **prgNameOffsets,DBBYTEOFFSET **prgcolumnidOffsets,DBLENGTH *pcbStringsBuffer,OLECHAR **ppStringsBuffer);
++  void __RPC_STUB IColumnsInfo2_RemoteGetRestrictedColumnInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRegisterProvider_INTERFACE_DEFINED__
++#define __IRegisterProvider_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRegisterProvider;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRegisterProvider : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetURLMapping(LPCOLESTR pwszURL,DB_DWRESERVE dwReserved,CLSID *pclsidProvider) = 0;
++    virtual HRESULT WINAPI SetURLMapping(LPCOLESTR pwszURL,DB_DWRESERVE dwReserved,REFCLSID rclsidProvider) = 0;
++    virtual HRESULT WINAPI UnregisterProvider(LPCOLESTR pwszURL,DB_DWRESERVE dwReserved,REFCLSID rclsidProvider) = 0;
++  };
++#else
++  typedef struct IRegisterProviderVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRegisterProvider *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRegisterProvider *This);
++      ULONG (WINAPI *Release)(IRegisterProvider *This);
++      HRESULT (WINAPI *GetURLMapping)(IRegisterProvider *This,LPCOLESTR pwszURL,DB_DWRESERVE dwReserved,CLSID *pclsidProvider);
++      HRESULT (WINAPI *SetURLMapping)(IRegisterProvider *This,LPCOLESTR pwszURL,DB_DWRESERVE dwReserved,REFCLSID rclsidProvider);
++      HRESULT (WINAPI *UnregisterProvider)(IRegisterProvider *This,LPCOLESTR pwszURL,DB_DWRESERVE dwReserved,REFCLSID rclsidProvider);
++    END_INTERFACE
++  } IRegisterProviderVtbl;
++  struct IRegisterProvider {
++    CONST_VTBL struct IRegisterProviderVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRegisterProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRegisterProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRegisterProvider_Release(This) (This)->lpVtbl->Release(This)
++#define IRegisterProvider_GetURLMapping(This,pwszURL,dwReserved,pclsidProvider) (This)->lpVtbl->GetURLMapping(This,pwszURL,dwReserved,pclsidProvider)
++#define IRegisterProvider_SetURLMapping(This,pwszURL,dwReserved,rclsidProvider) (This)->lpVtbl->SetURLMapping(This,pwszURL,dwReserved,rclsidProvider)
++#define IRegisterProvider_UnregisterProvider(This,pwszURL,dwReserved,rclsidProvider) (This)->lpVtbl->UnregisterProvider(This,pwszURL,dwReserved,rclsidProvider)
++#endif
++#endif
++  HRESULT WINAPI IRegisterProvider_RemoteGetURLMapping_Proxy(IRegisterProvider *This,LPCOLESTR pwszURL,DB_DWRESERVE dwReserved,CLSID *pclsidProvider);
++  void __RPC_STUB IRegisterProvider_RemoteGetURLMapping_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRegisterProvider_SetURLMapping_Proxy(IRegisterProvider *This,LPCOLESTR pwszURL,DB_DWRESERVE dwReserved,REFCLSID rclsidProvider);
++  void __RPC_STUB IRegisterProvider_SetURLMapping_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRegisterProvider_UnregisterProvider_Proxy(IRegisterProvider *This,LPCOLESTR pwszURL,DB_DWRESERVE dwReserved,REFCLSID rclsidProvider);
++  void __RPC_STUB IRegisterProvider_UnregisterProvider_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0349_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0349_v0_0_s_ifspec;
++#ifndef __IGetSession_INTERFACE_DEFINED__
++#define __IGetSession_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IGetSession;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IGetSession : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetSession(REFIID riid,IUnknown **ppSession) = 0;
++  };
++#else
++  typedef struct IGetSessionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IGetSession *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IGetSession *This);
++      ULONG (WINAPI *Release)(IGetSession *This);
++      HRESULT (WINAPI *GetSession)(IGetSession *This,REFIID riid,IUnknown **ppSession);
++    END_INTERFACE
++  } IGetSessionVtbl;
++  struct IGetSession {
++    CONST_VTBL struct IGetSessionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IGetSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IGetSession_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IGetSession_Release(This) (This)->lpVtbl->Release(This)
++#define IGetSession_GetSession(This,riid,ppSession) (This)->lpVtbl->GetSession(This,riid,ppSession)
++#endif
++#endif
++  HRESULT WINAPI IGetSession_GetSession_Proxy(IGetSession *This,REFIID riid,IUnknown **ppSession);
++  void __RPC_STUB IGetSession_GetSession_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IGetSourceRow_INTERFACE_DEFINED__
++#define __IGetSourceRow_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IGetSourceRow;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IGetSourceRow : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetSourceRow(REFIID riid,IUnknown **ppRow) = 0;
++  };
++#else
++  typedef struct IGetSourceRowVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IGetSourceRow *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IGetSourceRow *This);
++      ULONG (WINAPI *Release)(IGetSourceRow *This);
++      HRESULT (WINAPI *GetSourceRow)(IGetSourceRow *This,REFIID riid,IUnknown **ppRow);
++    END_INTERFACE
++  } IGetSourceRowVtbl;
++  struct IGetSourceRow {
++    CONST_VTBL struct IGetSourceRowVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IGetSourceRow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IGetSourceRow_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IGetSourceRow_Release(This) (This)->lpVtbl->Release(This)
++#define IGetSourceRow_GetSourceRow(This,riid,ppRow) (This)->lpVtbl->GetSourceRow(This,riid,ppRow)
++#endif
++#endif
++  HRESULT WINAPI IGetSourceRow_GetSourceRow_Proxy(IGetSourceRow *This,REFIID riid,IUnknown **ppRow);
++  void __RPC_STUB IGetSourceRow_GetSourceRow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetCurrentIndex_INTERFACE_DEFINED__
++#define __IRowsetCurrentIndex_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetCurrentIndex;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetCurrentIndex : public IRowsetIndex {
++  public:
++    virtual HRESULT WINAPI GetIndex(DBID **ppIndexID) = 0;
++    virtual HRESULT WINAPI SetIndex(DBID *pIndexID) = 0;
++  };
++#else
++  typedef struct IRowsetCurrentIndexVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetCurrentIndex *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetCurrentIndex *This);
++      ULONG (WINAPI *Release)(IRowsetCurrentIndex *This);
++      HRESULT (WINAPI *GetIndexInfo)(IRowsetCurrentIndex *This,DBORDINAL *pcKeyColumns,DBINDEXCOLUMNDESC **prgIndexColumnDesc,ULONG *pcIndexPropertySets,DBPROPSET **prgIndexPropertySets);
++      HRESULT (WINAPI *Seek)(IRowsetCurrentIndex *This,HACCESSOR hAccessor,DBORDINAL cKeyValues,void *pData,DBSEEK dwSeekOptions);
++      HRESULT (WINAPI *SetRange)(IRowsetCurrentIndex *This,HACCESSOR hAccessor,DBORDINAL cStartKeyColumns,void *pStartData,DBORDINAL cEndKeyColumns,void *pEndData,DBRANGE dwRangeOptions);
++      HRESULT (WINAPI *GetIndex)(IRowsetCurrentIndex *This,DBID **ppIndexID);
++      HRESULT (WINAPI *SetIndex)(IRowsetCurrentIndex *This,DBID *pIndexID);
++    END_INTERFACE
++  } IRowsetCurrentIndexVtbl;
++  struct IRowsetCurrentIndex {
++    CONST_VTBL struct IRowsetCurrentIndexVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetCurrentIndex_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetCurrentIndex_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetCurrentIndex_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetCurrentIndex_GetIndexInfo(This,pcKeyColumns,prgIndexColumnDesc,pcIndexPropertySets,prgIndexPropertySets) (This)->lpVtbl->GetIndexInfo(This,pcKeyColumns,prgIndexColumnDesc,pcIndexPropertySets,prgIndexPropertySets)
++#define IRowsetCurrentIndex_Seek(This,hAccessor,cKeyValues,pData,dwSeekOptions) (This)->lpVtbl->Seek(This,hAccessor,cKeyValues,pData,dwSeekOptions)
++#define IRowsetCurrentIndex_SetRange(This,hAccessor,cStartKeyColumns,pStartData,cEndKeyColumns,pEndData,dwRangeOptions) (This)->lpVtbl->SetRange(This,hAccessor,cStartKeyColumns,pStartData,cEndKeyColumns,pEndData,dwRangeOptions)
++#define IRowsetCurrentIndex_GetIndex(This,ppIndexID) (This)->lpVtbl->GetIndex(This,ppIndexID)
++#define IRowsetCurrentIndex_SetIndex(This,pIndexID) (This)->lpVtbl->SetIndex(This,pIndexID)
++#endif
++#endif
++  HRESULT WINAPI IRowsetCurrentIndex_GetIndex_Proxy(IRowsetCurrentIndex *This,DBID **ppIndexID);
++  void __RPC_STUB IRowsetCurrentIndex_GetIndex_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IRowsetCurrentIndex_SetIndex_Proxy(IRowsetCurrentIndex *This,DBID *pIndexID);
++  void __RPC_STUB IRowsetCurrentIndex_SetIndex_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#if (OLEDBVER >= 0x0260)
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0353_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0353_v0_0_s_ifspec;
++#ifndef __ICommandStream_INTERFACE_DEFINED__
++#define __ICommandStream_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ICommandStream;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ICommandStream : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetCommandStream(IID *piid,GUID *pguidDialect,IUnknown **ppCommandStream) = 0;
++    virtual HRESULT WINAPI SetCommandStream(REFIID riid,REFGUID rguidDialect,IUnknown *pCommandStream) = 0;
++  };
++#else
++  typedef struct ICommandStreamVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ICommandStream *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ICommandStream *This);
++      ULONG (WINAPI *Release)(ICommandStream *This);
++      HRESULT (WINAPI *GetCommandStream)(ICommandStream *This,IID *piid,GUID *pguidDialect,IUnknown **ppCommandStream);
++      HRESULT (WINAPI *SetCommandStream)(ICommandStream *This,REFIID riid,REFGUID rguidDialect,IUnknown *pCommandStream);
++    END_INTERFACE
++  } ICommandStreamVtbl;
++  struct ICommandStream {
++    CONST_VTBL struct ICommandStreamVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ICommandStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ICommandStream_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ICommandStream_Release(This) (This)->lpVtbl->Release(This)
++#define ICommandStream_GetCommandStream(This,piid,pguidDialect,ppCommandStream) (This)->lpVtbl->GetCommandStream(This,piid,pguidDialect,ppCommandStream)
++#define ICommandStream_SetCommandStream(This,riid,rguidDialect,pCommandStream) (This)->lpVtbl->SetCommandStream(This,riid,rguidDialect,pCommandStream)
++#endif
++#endif
++  HRESULT WINAPI ICommandStream_GetCommandStream_Proxy(ICommandStream *This,IID *piid,GUID *pguidDialect,IUnknown **ppCommandStream);
++  void __RPC_STUB ICommandStream_GetCommandStream_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICommandStream_SetCommandStream_Proxy(ICommandStream *This,REFIID riid,REFGUID rguidDialect,IUnknown *pCommandStream);
++  void __RPC_STUB ICommandStream_SetCommandStream_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IRowsetBookmark_INTERFACE_DEFINED__
++#define __IRowsetBookmark_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IRowsetBookmark;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IRowsetBookmark : public IUnknown {
++  public:
++    virtual HRESULT WINAPI PositionOnBookmark(HCHAPTER hChapter,DBBKMARK cbBookmark,const BYTE *pBookmark) = 0;
++  };
++#else
++  typedef struct IRowsetBookmarkVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IRowsetBookmark *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IRowsetBookmark *This);
++      ULONG (WINAPI *Release)(IRowsetBookmark *This);
++      HRESULT (WINAPI *PositionOnBookmark)(IRowsetBookmark *This,HCHAPTER hChapter,DBBKMARK cbBookmark,const BYTE *pBookmark);
++    END_INTERFACE
++  } IRowsetBookmarkVtbl;
++  struct IRowsetBookmark {
++    CONST_VTBL struct IRowsetBookmarkVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IRowsetBookmark_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IRowsetBookmark_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IRowsetBookmark_Release(This) (This)->lpVtbl->Release(This)
++#define IRowsetBookmark_PositionOnBookmark(This,hChapter,cbBookmark,pBookmark) (This)->lpVtbl->PositionOnBookmark(This,hChapter,cbBookmark,pBookmark)
++#endif
++#endif
++  HRESULT WINAPI IRowsetBookmark_PositionOnBookmark_Proxy(IRowsetBookmark *This,HCHAPTER hChapter,DBBKMARK cbBookmark,const BYTE *pBookmark);
++  void __RPC_STUB IRowsetBookmark_PositionOnBookmark_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#include <poppack.h>
++
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0355_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_oledb_0355_v0_0_s_ifspec;
++
++#ifdef OLEDBPROXY
++  unsigned long __RPC_API BSTR_UserSize(unsigned long *,unsigned long,BSTR *);
++  unsigned char *__RPC_API BSTR_UserMarshal(unsigned long *,unsigned char *,BSTR *);
++  unsigned char *__RPC_API BSTR_UserUnmarshal(unsigned long *,unsigned char *,BSTR *);
++  void __RPC_API BSTR_UserFree(unsigned long *,BSTR *);
++  unsigned long __RPC_API LPSAFEARRAY_UserSize(unsigned long *,unsigned long,LPSAFEARRAY *);
++  unsigned char *__RPC_API LPSAFEARRAY_UserMarshal(unsigned long *,unsigned char *,LPSAFEARRAY *);
++  unsigned char *__RPC_API LPSAFEARRAY_UserUnmarshal(unsigned long *,unsigned char *,LPSAFEARRAY *);
++  void __RPC_API LPSAFEARRAY_UserFree(unsigned long *,LPSAFEARRAY *);
++  unsigned long __RPC_API VARIANT_UserSize(unsigned long *,unsigned long,VARIANT *);
++  unsigned char *__RPC_API VARIANT_UserMarshal(unsigned long *,unsigned char *,VARIANT *);
++  unsigned char *__RPC_API VARIANT_UserUnmarshal(unsigned long *,unsigned char *,VARIANT *);
++  void __RPC_API VARIANT_UserFree(unsigned long *,VARIANT *);
++
++  HRESULT WINAPI IAccessor_AddRefAccessor_Proxy(IAccessor *This,HACCESSOR hAccessor,DBREFCOUNT *pcRefCount);
++  HRESULT WINAPI IAccessor_AddRefAccessor_Stub(IAccessor *This,HACCESSOR hAccessor,DBREFCOUNT *pcRefCount,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IAccessor_CreateAccessor_Proxy(IAccessor *This,DBACCESSORFLAGS dwAccessorFlags,DBCOUNTITEM cBindings,const DBBINDING rgBindings[],DBLENGTH cbRowSize,HACCESSOR *phAccessor,DBBINDSTATUS rgStatus[]);
++  HRESULT WINAPI IAccessor_CreateAccessor_Stub(IAccessor *This,DBACCESSORFLAGS dwAccessorFlags,DBCOUNTITEM cBindings,DBBINDING *rgBindings,DBLENGTH cbRowSize,HACCESSOR *phAccessor,DBBINDSTATUS *rgStatus,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IAccessor_GetBindings_Proxy(IAccessor *This,HACCESSOR hAccessor,DBACCESSORFLAGS *pdwAccessorFlags,DBCOUNTITEM *pcBindings,DBBINDING **prgBindings);
++  HRESULT WINAPI IAccessor_GetBindings_Stub(IAccessor *This,HACCESSOR hAccessor,DBACCESSORFLAGS *pdwAccessorFlags,DBCOUNTITEM *pcBindings,DBBINDING **prgBindings,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IAccessor_ReleaseAccessor_Proxy(IAccessor *This,HACCESSOR hAccessor,DBREFCOUNT *pcRefCount);
++  HRESULT WINAPI IAccessor_ReleaseAccessor_Stub(IAccessor *This,HACCESSOR hAccessor,DBREFCOUNT *pcRefCount,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowsetInfo_GetProperties_Proxy(IRowsetInfo *This,const ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets);
++  HRESULT WINAPI IRowsetInfo_GetProperties_Stub(IRowsetInfo *This,ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertySets,DBPROPSET **prgPropertySets,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowsetInfo_GetReferencedRowset_Proxy(IRowsetInfo *This,DBORDINAL iOrdinal,REFIID riid,IUnknown **ppReferencedRowset);
++  HRESULT WINAPI IRowsetInfo_GetReferencedRowset_Stub(IRowsetInfo *This,DBORDINAL iOrdinal,REFIID riid,IUnknown **ppReferencedRowset,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowsetInfo_GetSpecification_Proxy(IRowsetInfo *This,REFIID riid,IUnknown **ppSpecification);
++  HRESULT WINAPI IRowsetInfo_GetSpecification_Stub(IRowsetInfo *This,REFIID riid,IUnknown **ppSpecification,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IChapteredRowset_AddRefChapter_Proxy(IChapteredRowset *This,HCHAPTER hChapter,DBREFCOUNT *pcRefCount);
++  HRESULT WINAPI IChapteredRowset_AddRefChapter_Stub(IChapteredRowset *This,HCHAPTER hChapter,DBREFCOUNT *pcRefCount,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IChapteredRowset_ReleaseChapter_Proxy(IChapteredRowset *This,HCHAPTER hChapter,DBREFCOUNT *pcRefCount);
++  HRESULT WINAPI IChapteredRowset_ReleaseChapter_Stub(IChapteredRowset *This,HCHAPTER hChapter,DBREFCOUNT *pcRefCount,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowPosition_ClearRowPosition_Proxy(IRowPosition *This);
++  HRESULT WINAPI IRowPosition_ClearRowPosition_Stub(IRowPosition *This,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowPosition_GetRowPosition_Proxy(IRowPosition *This,HCHAPTER *phChapter,HROW *phRow,DBPOSITIONFLAGS *pdwPositionFlags);
++  HRESULT WINAPI IRowPosition_GetRowPosition_Stub(IRowPosition *This,HCHAPTER *phChapter,HROW *phRow,DBPOSITIONFLAGS *pdwPositionFlags,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowPosition_GetRowset_Proxy(IRowPosition *This,REFIID riid,IUnknown **ppRowset);
++  HRESULT WINAPI IRowPosition_GetRowset_Stub(IRowPosition *This,REFIID riid,IUnknown **ppRowset,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowPosition_Initialize_Proxy(IRowPosition *This,IUnknown *pRowset);
++  HRESULT WINAPI IRowPosition_Initialize_Stub(IRowPosition *This,IUnknown *pRowset,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowPosition_SetRowPosition_Proxy(IRowPosition *This,HCHAPTER hChapter,HROW hRow,DBPOSITIONFLAGS dwPositionFlags);
++  HRESULT WINAPI IRowPosition_SetRowPosition_Stub(IRowPosition *This,HCHAPTER hChapter,HROW hRow,DBPOSITIONFLAGS dwPositionFlags,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowPositionChange_OnRowPositionChange_Proxy(IRowPositionChange *This,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++  HRESULT WINAPI IRowPositionChange_OnRowPositionChange_Stub(IRowPositionChange *This,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IViewRowset_GetSpecification_Proxy(IViewRowset *This,REFIID riid,IUnknown **ppObject);
++  HRESULT WINAPI IViewRowset_GetSpecification_Stub(IViewRowset *This,REFIID riid,IUnknown **ppObject,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IViewRowset_OpenViewRowset_Proxy(IViewRowset *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppRowset);
++  HRESULT WINAPI IViewRowset_OpenViewRowset_Stub(IViewRowset *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppRowset,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IViewChapter_GetSpecification_Proxy(IViewChapter *This,REFIID riid,IUnknown **ppRowset);
++  HRESULT WINAPI IViewChapter_GetSpecification_Stub(IViewChapter *This,REFIID riid,IUnknown **ppRowset,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IViewChapter_OpenViewChapter_Proxy(IViewChapter *This,HCHAPTER hSource,HCHAPTER *phViewChapter);
++  HRESULT WINAPI IViewChapter_OpenViewChapter_Stub(IViewChapter *This,HCHAPTER hSource,HCHAPTER *phViewChapter,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IViewSort_GetSortOrder_Proxy(IViewSort *This,DBORDINAL *pcValues,DBORDINAL *prgColumns[],DBSORT *prgOrders[]);
++  HRESULT WINAPI IViewSort_GetSortOrder_Stub(IViewSort *This,DBORDINAL *pcValues,DBORDINAL **prgColumns,DBSORT **prgOrders,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IViewSort_SetSortOrder_Proxy(IViewSort *This,DBORDINAL cValues,const DBORDINAL rgColumns[],const DBSORT rgOrders[]);
++  HRESULT WINAPI IViewSort_SetSortOrder_Stub(IViewSort *This,DBORDINAL cValues,const DBORDINAL *rgColumns,const DBSORT *rgOrders,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IViewFilter_GetFilterBindings_Proxy(IViewFilter *This,DBCOUNTITEM *pcBindings,DBBINDING **prgBindings);
++  HRESULT WINAPI IViewFilter_GetFilterBindings_Stub(IViewFilter *This,DBCOUNTITEM *pcBindings,DBBINDING **prgBindings,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowsetView_CreateView_Proxy(IRowsetView *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppView);
++  HRESULT WINAPI IRowsetView_CreateView_Stub(IRowsetView *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppView,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowsetView_GetView_Proxy(IRowsetView *This,HCHAPTER hChapter,REFIID riid,HCHAPTER *phChapterSource,IUnknown **ppView);
++  HRESULT WINAPI IRowsetView_GetView_Stub(IRowsetView *This,HCHAPTER hChapter,REFIID riid,HCHAPTER *phChapterSource,IUnknown **ppView,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowsetIdentity_IsSameRow_Proxy(IRowsetIdentity *This,HROW hThisRow,HROW hThatRow);
++  HRESULT WINAPI IRowsetIdentity_IsSameRow_Stub(IRowsetIdentity *This,HROW hThisRow,HROW hThatRow,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IRowsetNotify_OnFieldChange_Proxy(IRowsetNotify *This,IRowset *pRowset,HROW hRow,DBORDINAL cColumns,DBORDINAL rgColumns[],DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++  HRESULT WINAPI IRowsetNotify_OnFieldChange_Stub(IRowsetNotify *This,IRowset *pRowset,HROW hRow,DBORDINAL cColumns,DBORDINAL *rgColumns,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++  HRESULT WINAPI IRowsetNotify_OnRowChange_Proxy(IRowsetNotify *This,IRowset *pRowset,DBCOUNTITEM cRows,const HROW rghRows[],DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++  HRESULT WINAPI IRowsetNotify_OnRowChange_Stub(IRowsetNotify *This,IRowset *pRowset,DBCOUNTITEM cRows,const HROW *rghRows,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++  HRESULT WINAPI IRowsetNotify_OnRowsetChange_Proxy(IRowsetNotify *This,IRowset *pRowset,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++  HRESULT WINAPI IRowsetNotify_OnRowsetChange_Stub(IRowsetNotify *This,IRowset *pRowset,DBREASON eReason,DBEVENTPHASE ePhase,WINBOOL fCantDeny);
++  HRESULT WINAPI ICommand_Cancel_Proxy(ICommand *This);
++  HRESULT WINAPI ICommand_Cancel_Stub(ICommand *This,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ICommand_Execute_Proxy(ICommand *This,IUnknown *pUnkOuter,REFIID riid,DBPARAMS *pParams,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset);
++  HRESULT WINAPI ICommand_Execute_Stub(ICommand *This,IUnknown *pUnkOuter,REFIID riid,HACCESSOR hAccessor,DB_UPARAMS cParamSets,GUID *pGuid,ULONG ulGuidOffset,RMTPACK *pInputParams,RMTPACK *pOutputParams,DBCOUNTITEM cBindings,DBBINDING *rgBindings,DBSTATUS *rgStatus,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset);
++  HRESULT WINAPI ICommand_GetDBSession_Proxy(ICommand *This,REFIID riid,IUnknown **ppSession);
++  HRESULT WINAPI ICommand_GetDBSession_Stub(ICommand *This,REFIID riid,IUnknown **ppSession,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IMultipleResults_GetResult_Proxy(IMultipleResults *This,IUnknown *pUnkOuter,DBRESULTFLAG lResultFlag,REFIID riid,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset);
++  HRESULT WINAPI IMultipleResults_GetResult_Stub(IMultipleResults *This,IUnknown *pUnkOuter,DBRESULTFLAG lResultFlag,REFIID riid,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IConvertType_CanConvert_Proxy(IConvertType *This,DBTYPE wFromType,DBTYPE wToType,DBCONVERTFLAGS dwConvertFlags);
++  HRESULT WINAPI IConvertType_CanConvert_Stub(IConvertType *This,DBTYPE wFromType,DBTYPE wToType,DBCONVERTFLAGS dwConvertFlags,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ICommandPrepare_Prepare_Proxy(ICommandPrepare *This,ULONG cExpectedRuns);
++  HRESULT WINAPI ICommandPrepare_Prepare_Stub(ICommandPrepare *This,ULONG cExpectedRuns,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ICommandPrepare_Unprepare_Proxy(ICommandPrepare *This);
++  HRESULT WINAPI ICommandPrepare_Unprepare_Stub(ICommandPrepare *This,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ICommandProperties_GetProperties_Proxy(ICommandProperties *This,const ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets);
++  HRESULT WINAPI ICommandProperties_GetProperties_Stub(ICommandProperties *This,const ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertySets,DBPROPSET **prgPropertySets,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ICommandProperties_SetProperties_Proxy(ICommandProperties *This,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++  HRESULT WINAPI ICommandProperties_SetProperties_Stub(ICommandProperties *This,ULONG cPropertySets,DBPROPSET *rgPropertySets,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ICommandText_GetCommandText_Proxy(ICommandText *This,GUID *pguidDialect,LPOLESTR *ppwszCommand);
++  HRESULT WINAPI ICommandText_GetCommandText_Stub(ICommandText *This,GUID *pguidDialect,LPOLESTR *ppwszCommand,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ICommandText_SetCommandText_Proxy(ICommandText *This,REFGUID rguidDialect,LPCOLESTR pwszCommand);
++  HRESULT WINAPI ICommandText_SetCommandText_Stub(ICommandText *This,REFGUID rguidDialect,LPCOLESTR pwszCommand,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ICommandWithParameters_GetParameterInfo_Proxy(ICommandWithParameters *This,DB_UPARAMS *pcParams,DBPARAMINFO **prgParamInfo,OLECHAR **ppNamesBuffer);
++  HRESULT WINAPI ICommandWithParameters_GetParameterInfo_Stub(ICommandWithParameters *This,DB_UPARAMS *pcParams,DBPARAMINFO **prgParamInfo,DBBYTEOFFSET **prgNameOffsets,DBLENGTH *pcbNamesBuffer,OLECHAR **ppNamesBuffer,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ICommandWithParameters_MapParameterNames_Proxy(ICommandWithParameters *This,DB_UPARAMS cParamNames,const OLECHAR *rgParamNames[],DB_LPARAMS rgParamOrdinals[]);
++  HRESULT WINAPI ICommandWithParameters_MapParameterNames_Stub(ICommandWithParameters *This,DB_UPARAMS cParamNames,LPCOLESTR *rgParamNames,DB_LPARAMS *rgParamOrdinals,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ICommandWithParameters_SetParameterInfo_Proxy(ICommandWithParameters *This,DB_UPARAMS cParams,const DB_UPARAMS rgParamOrdinals[],const DBPARAMBINDINFO rgParamBindInfo[]);
++  HRESULT WINAPI ICommandWithParameters_SetParameterInfo_Stub(ICommandWithParameters *This,DB_UPARAMS cParams,const DB_UPARAMS *rgParamOrdinals,const DBPARAMBINDINFO *rgParamBindInfo,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IColumnsRowset_GetAvailableColumns_Proxy(IColumnsRowset *This,DBORDINAL *pcOptColumns,DBID **prgOptColumns);
++  HRESULT WINAPI IColumnsRowset_GetAvailableColumns_Stub(IColumnsRowset *This,DBORDINAL *pcOptColumns,DBID **prgOptColumns,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IColumnsRowset_GetColumnsRowset_Proxy(IColumnsRowset *This,IUnknown *pUnkOuter,DBORDINAL cOptColumns,const DBID rgOptColumns[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppColRowset);
++  HRESULT WINAPI IColumnsRowset_GetColumnsRowset_Stub(IColumnsRowset *This,IUnknown *pUnkOuter,DBORDINAL cOptColumns,const DBID *rgOptColumns,REFIID riid,ULONG cPropertySets,DBPROPSET *rgPropertySets,IUnknown **ppColRowset,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IColumnsInfo_GetColumnInfo_Proxy(IColumnsInfo *This,DBORDINAL *pcColumns,DBCOLUMNINFO **prgInfo,OLECHAR **ppStringsBuffer);
++  HRESULT WINAPI IColumnsInfo_GetColumnInfo_Stub(IColumnsInfo *This,DBORDINAL *pcColumns,DBCOLUMNINFO **prgInfo,DBBYTEOFFSET **prgNameOffsets,DBBYTEOFFSET **prgcolumnidOffsets,DBLENGTH *pcbStringsBuffer,OLECHAR **ppStringsBuffer,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IColumnsInfo_MapColumnIDs_Proxy(IColumnsInfo *This,DBORDINAL cColumnIDs,const DBID rgColumnIDs[],DBORDINAL rgColumns[]);
++  HRESULT WINAPI IColumnsInfo_MapColumnIDs_Stub(IColumnsInfo *This,DBORDINAL cColumnIDs,const DBID *rgColumnIDs,DBORDINAL *rgColumns,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBCreateCommand_CreateCommand_Proxy(IDBCreateCommand *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppCommand);
++  HRESULT WINAPI IDBCreateCommand_CreateCommand_Stub(IDBCreateCommand *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppCommand,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBCreateSession_CreateSession_Proxy(IDBCreateSession *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession);
++  HRESULT WINAPI IDBCreateSession_CreateSession_Stub(IDBCreateSession *This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ISourcesRowset_GetSourcesRowset_Proxy(ISourcesRowset *This,IUnknown *pUnkOuter,REFIID riid,ULONG cPropertySets,DBPROPSET rgProperties[],IUnknown **ppSourcesRowset);
++  HRESULT WINAPI ISourcesRowset_GetSourcesRowset_Stub(ISourcesRowset *This,IUnknown *pUnkOuter,REFIID riid,ULONG cPropertySets,DBPROPSET *rgProperties,IUnknown **ppSourcesRowset,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBProperties_GetProperties_Proxy(IDBProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets);
++  HRESULT WINAPI IDBProperties_GetProperties_Stub(IDBProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertySets,DBPROPSET **prgPropertySets,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBProperties_GetPropertyInfo_Proxy(IDBProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,OLECHAR **ppDescBuffer);
++  HRESULT WINAPI IDBProperties_GetPropertyInfo_Stub(IDBProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,ULONG *pcOffsets,DBBYTEOFFSET **prgDescOffsets,ULONG *pcbDescBuffer,OLECHAR **ppDescBuffer,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBProperties_SetProperties_Proxy(IDBProperties *This,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++  HRESULT WINAPI IDBProperties_SetProperties_Stub(IDBProperties *This,ULONG cPropertySets,DBPROPSET *rgPropertySets,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBInitialize_Initialize_Proxy(IDBInitialize *This);
++  HRESULT WINAPI IDBInitialize_Initialize_Stub(IDBInitialize *This,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBInitialize_Uninitialize_Proxy(IDBInitialize *This);
++  HRESULT WINAPI IDBInitialize_Uninitialize_Stub(IDBInitialize *This,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBInfo_GetKeywords_Proxy(IDBInfo *This,LPOLESTR *ppwszKeywords);
++  HRESULT WINAPI IDBInfo_GetKeywords_Stub(IDBInfo *This,LPOLESTR *ppwszKeywords,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBInfo_GetLiteralInfo_Proxy(IDBInfo *This,ULONG cLiterals,const DBLITERAL rgLiterals[],ULONG *pcLiteralInfo,DBLITERALINFO **prgLiteralInfo,OLECHAR **ppCharBuffer);
++  HRESULT WINAPI IDBInfo_GetLiteralInfo_Stub(IDBInfo *This,ULONG cLiterals,const DBLITERAL *rgLiterals,ULONG *pcLiteralInfo,DBLITERALINFO **prgLiteralInfo,DB_UPARAMS **prgLVOffsets,DB_UPARAMS **prgICOffsets,DB_UPARAMS **prgISCOffsets,ULONG *pcbCharBuffer,OLECHAR **ppCharBuffer,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBDataSourceAdmin_CreateDataSource_Proxy(IDBDataSourceAdmin *This,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession);
++  HRESULT WINAPI IDBDataSourceAdmin_CreateDataSource_Stub(IDBDataSourceAdmin *This,ULONG cPropertySets,DBPROPSET *rgPropertySets,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBDataSourceAdmin_DestroyDataSource_Proxy(IDBDataSourceAdmin *This);
++  HRESULT WINAPI IDBDataSourceAdmin_DestroyDataSource_Stub(IDBDataSourceAdmin *This,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBDataSourceAdmin_GetCreationProperties_Proxy(IDBDataSourceAdmin *This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,OLECHAR **ppDescBuffer);
++  HRESULT WINAPI IDBDataSourceAdmin_GetCreationProperties_Stub(IDBDataSourceAdmin *This,ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,DBCOUNTITEM *pcOffsets,DBBYTEOFFSET **prgDescOffsets,ULONG *pcbDescBuffer,OLECHAR **ppDescBuffer,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBDataSourceAdmin_ModifyDataSource_Proxy(IDBDataSourceAdmin *This,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++  HRESULT WINAPI IDBDataSourceAdmin_ModifyDataSource_Stub(IDBDataSourceAdmin *This,ULONG cPropertySets,DBPROPSET *rgPropertySets,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBAsynchNotify_OnLowResource_Proxy(IDBAsynchNotify *This,DB_DWRESERVE dwReserved);
++  HRESULT WINAPI IDBAsynchNotify_OnLowResource_Stub(IDBAsynchNotify *This,DB_DWRESERVE dwReserved);
++  HRESULT WINAPI IDBAsynchNotify_OnProgress_Proxy(IDBAsynchNotify *This,HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM ulProgress,DBCOUNTITEM ulProgressMax,DBASYNCHPHASE eAsynchPhase,LPOLESTR pwszStatusText);
++  HRESULT WINAPI IDBAsynchNotify_OnProgress_Stub(IDBAsynchNotify *This,HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM ulProgress,DBCOUNTITEM ulProgressMax,DBASYNCHPHASE eAsynchPhase,LPOLESTR pwszStatusText);
++  HRESULT WINAPI IDBAsynchNotify_OnStop_Proxy(IDBAsynchNotify *This,HCHAPTER hChapter,DBASYNCHOP eOperation,HRESULT hrStatus,LPOLESTR pwszStatusText);
++  HRESULT WINAPI IDBAsynchNotify_OnStop_Stub(IDBAsynchNotify *This,HCHAPTER hChapter,DBASYNCHOP eOperation,HRESULT hrStatus,LPOLESTR pwszStatusText);
++  HRESULT WINAPI IDBAsynchStatus_Abort_Proxy(IDBAsynchStatus *This,HCHAPTER hChapter,DBASYNCHOP eOperation);
++  HRESULT WINAPI IDBAsynchStatus_Abort_Stub(IDBAsynchStatus *This,HCHAPTER hChapter,DBASYNCHOP eOperation,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBAsynchStatus_GetStatus_Proxy(IDBAsynchStatus *This,HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM *pulProgress,DBCOUNTITEM *pulProgressMax,DBASYNCHPHASE *peAsynchPhase,LPOLESTR *ppwszStatusText);
++  HRESULT WINAPI IDBAsynchStatus_GetStatus_Stub(IDBAsynchStatus *This,HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM *pulProgress,DBCOUNTITEM *pulProgressMax,DBASYNCHPHASE *peAsynchPhase,LPOLESTR *ppwszStatusText,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ISessionProperties_GetProperties_Proxy(ISessionProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets);
++  HRESULT WINAPI ISessionProperties_GetProperties_Stub(ISessionProperties *This,ULONG cPropertyIDSets,const DBPROPIDSET *rgPropertyIDSets,ULONG *pcPropertySets,DBPROPSET **prgPropertySets,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ISessionProperties_SetProperties_Proxy(ISessionProperties *This,ULONG cPropertySets,DBPROPSET rgPropertySets[]);
++  HRESULT WINAPI ISessionProperties_SetProperties_Stub(ISessionProperties *This,ULONG cPropertySets,DBPROPSET *rgPropertySets,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IIndexDefinition_CreateIndex_Proxy(IIndexDefinition *This,DBID *pTableID,DBID *pIndexID,DBORDINAL cIndexColumnDescs,const DBINDEXCOLUMNDESC rgIndexColumnDescs[],ULONG cPropertySets,DBPROPSET rgPropertySets[],DBID **ppIndexID);
++  HRESULT WINAPI IIndexDefinition_CreateIndex_Stub(IIndexDefinition *This,DBID *pTableID,DBID *pIndexID,DBORDINAL cIndexColumnDescs,const DBINDEXCOLUMNDESC *rgIndexColumnDescs,ULONG cPropertySets,DBPROPSET *rgPropertySets,DBID **ppIndexID,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IIndexDefinition_DropIndex_Proxy(IIndexDefinition *This,DBID *pTableID,DBID *pIndexID);
++  HRESULT WINAPI IIndexDefinition_DropIndex_Stub(IIndexDefinition *This,DBID *pTableID,DBID *pIndexID,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ITableDefinition_CreateTable_Proxy(ITableDefinition *This,IUnknown *pUnkOuter,DBID *pTableID,DBORDINAL cColumnDescs,const DBCOLUMNDESC rgColumnDescs[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],DBID **ppTableID,IUnknown **ppRowset);
++  HRESULT WINAPI ITableDefinition_CreateTable_Stub(ITableDefinition *This,IUnknown *pUnkOuter,DBID *pTableID,DBORDINAL cColumnDescs,const DBCOLUMNDESC *rgColumnDescs,REFIID riid,ULONG cPropertySets,DBPROPSET *rgPropertySets,DBID **ppTableID,IUnknown **ppRowset,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,WINBOOL *pfTableCreated,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ITableDefinition_DropTable_Proxy(ITableDefinition *This,DBID *pTableID);
++  HRESULT WINAPI ITableDefinition_DropTable_Stub(ITableDefinition *This,DBID *pTableID,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ITableDefinition_AddColumn_Proxy(ITableDefinition *This,DBID *pTableID,DBCOLUMNDESC *pColumnDesc,DBID **ppColumnID);
++  HRESULT WINAPI ITableDefinition_AddColumn_Stub(ITableDefinition *This,DBID *pTableID,DBCOLUMNDESC *pColumnDesc,DBID **ppColumnID,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ITableDefinition_DropColumn_Proxy(ITableDefinition *This,DBID *pTableID,DBID *pColumnID);
++  HRESULT WINAPI ITableDefinition_DropColumn_Stub(ITableDefinition *This,DBID *pTableID,DBID *pColumnID,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IOpenRowset_OpenRowset_Proxy(IOpenRowset *This,IUnknown *pUnkOuter,DBID *pTableID,DBID *pIndexID,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset);
++  HRESULT WINAPI 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);
++  HRESULT WINAPI IDBSchemaRowset_GetRowset_Proxy(IDBSchemaRowset *This,IUnknown *pUnkOuter,REFGUID rguidSchema,ULONG cRestrictions,const VARIANT rgRestrictions[],REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset);
++  HRESULT WINAPI IDBSchemaRowset_GetRowset_Stub(IDBSchemaRowset *This,IUnknown *pUnkOuter,REFGUID rguidSchema,ULONG cRestrictions,const VARIANT *rgRestrictions,REFIID riid,ULONG cPropertySets,DBPROPSET *rgPropertySets,IUnknown **ppRowset,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IDBSchemaRowset_GetSchemas_Proxy(IDBSchemaRowset *This,ULONG *pcSchemas,GUID **prgSchemas,ULONG **prgRestrictionSupport);
++  HRESULT WINAPI IDBSchemaRowset_GetSchemas_Stub(IDBSchemaRowset *This,ULONG *pcSchemas,GUID **prgSchemas,ULONG **prgRestrictionSupport,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IErrorRecords_AddErrorRecord_Proxy(IErrorRecords *This,ERRORINFO *pErrorInfo,DWORD dwLookupID,DISPPARAMS *pdispparams,IUnknown *punkCustomError,DWORD dwDynamicErrorID);
++  HRESULT WINAPI IErrorRecords_AddErrorRecord_Stub(IErrorRecords *This,ERRORINFO *pErrorInfo,DWORD dwLookupID,DISPPARAMS *pdispparams,IUnknown *punkCustomError,DWORD dwDynamicErrorID,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IErrorRecords_GetBasicErrorInfo_Proxy(IErrorRecords *This,ULONG ulRecordNum,ERRORINFO *pErrorInfo);
++  HRESULT WINAPI IErrorRecords_GetBasicErrorInfo_Stub(IErrorRecords *This,ULONG ulRecordNum,ERRORINFO *pErrorInfo,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IErrorRecords_GetCustomErrorObject_Proxy(IErrorRecords *This,ULONG ulRecordNum,REFIID riid,IUnknown **ppObject);
++  HRESULT WINAPI IErrorRecords_GetCustomErrorObject_Stub(IErrorRecords *This,ULONG ulRecordNum,REFIID riid,IUnknown **ppObject,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IErrorRecords_GetErrorInfo_Proxy(IErrorRecords *This,ULONG ulRecordNum,LCID lcid,IErrorInfo **ppErrorInfo);
++  HRESULT WINAPI IErrorRecords_GetErrorInfo_Stub(IErrorRecords *This,ULONG ulRecordNum,LCID lcid,IErrorInfo **ppErrorInfo,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IErrorRecords_GetErrorParameters_Proxy(IErrorRecords *This,ULONG ulRecordNum,DISPPARAMS *pdispparams);
++  HRESULT WINAPI IErrorRecords_GetErrorParameters_Stub(IErrorRecords *This,ULONG ulRecordNum,DISPPARAMS *pdispparams,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IErrorRecords_GetRecordCount_Proxy(IErrorRecords *This,ULONG *pcRecords);
++  HRESULT WINAPI IErrorRecords_GetRecordCount_Stub(IErrorRecords *This,ULONG *pcRecords,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IErrorLookup_GetErrorDescription_Proxy(IErrorLookup *This,HRESULT hrError,DWORD dwLookupID,DISPPARAMS *pdispparams,LCID lcid,BSTR *pbstrSource,BSTR *pbstrDescription);
++  HRESULT WINAPI IErrorLookup_GetErrorDescription_Stub(IErrorLookup *This,HRESULT hrError,DWORD dwLookupID,DISPPARAMS *pdispparams,LCID lcid,BSTR *pbstrSource,BSTR *pbstrDescription,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IErrorLookup_GetHelpInfo_Proxy(IErrorLookup *This,HRESULT hrError,DWORD dwLookupID,LCID lcid,BSTR *pbstrHelpFile,DWORD *pdwHelpContext);
++  HRESULT WINAPI IErrorLookup_GetHelpInfo_Stub(IErrorLookup *This,HRESULT hrError,DWORD dwLookupID,LCID lcid,BSTR *pbstrHelpFile,DWORD *pdwHelpContext,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IErrorLookup_ReleaseErrors_Proxy(IErrorLookup *This,const DWORD dwDynamicErrorID);
++  HRESULT WINAPI IErrorLookup_ReleaseErrors_Stub(IErrorLookup *This,const DWORD dwDynamicErrorID,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ISQLErrorInfo_GetSQLInfo_Proxy(ISQLErrorInfo *This,BSTR *pbstrSQLState,LONG *plNativeError);
++  HRESULT WINAPI ISQLErrorInfo_GetSQLInfo_Stub(ISQLErrorInfo *This,BSTR *pbstrSQLState,LONG *plNativeError,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IGetDataSource_GetDataSource_Proxy(IGetDataSource *This,REFIID riid,IUnknown **ppDataSource);
++  HRESULT WINAPI IGetDataSource_GetDataSource_Stub(IGetDataSource *This,REFIID riid,IUnknown **ppDataSource,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ITransactionLocal_GetOptionsObject_Proxy(ITransactionLocal *This,ITransactionOptions **ppOptions);
++  HRESULT WINAPI ITransactionLocal_GetOptionsObject_Stub(ITransactionLocal *This,ITransactionOptions **ppOptions,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ITransactionLocal_StartTransaction_Proxy(ITransactionLocal *This,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOtherOptions,ULONG *pulTransactionLevel);
++  HRESULT WINAPI ITransactionLocal_StartTransaction_Stub(ITransactionLocal *This,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOtherOptions,ULONG *pulTransactionLevel,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ITransactionJoin_GetOptionsObject_Proxy(ITransactionJoin *This,ITransactionOptions **ppOptions);
++  HRESULT WINAPI ITransactionJoin_GetOptionsObject_Stub(ITransactionJoin *This,ITransactionOptions **ppOptions,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ITransactionJoin_JoinTransaction_Proxy(ITransactionJoin *This,IUnknown *punkTransactionCoord,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOtherOptions);
++  HRESULT WINAPI ITransactionJoin_JoinTransaction_Stub(ITransactionJoin *This,IUnknown *punkTransactionCoord,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOtherOptions,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI ITransactionObject_GetTransactionObject_Proxy(ITransactionObject *This,ULONG ulTransactionLevel,ITransaction **ppTransactionObject);
++  HRESULT WINAPI ITransactionObject_GetTransactionObject_Stub(ITransactionObject *This,ULONG ulTransactionLevel,ITransaction **ppTransactionObject,IErrorInfo **ppErrorInfoRem);
++  HRESULT WINAPI IScopedOperations_Copy_Proxy(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR rgpwszSourceURLs[],LPCOLESTR rgpwszDestURLs[],DWORD dwCopyFlags,IAuthenticate *pAuthenticate,DBSTATUS rgdwStatus[],LPOLESTR rgpwszNewURLs[],OLECHAR **ppStringsBuffer);
++  HRESULT WINAPI IScopedOperations_Copy_Stub(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR *rgpwszSourceURLs,LPCOLESTR *rgpwszDestURLs,DWORD dwCopyFlags,IAuthenticate *pAuthenticate,DBSTATUS *rgdwStatus,DBBYTEOFFSET **prgulNewURLOffsets,ULONG *pcbStringsBuffer,OLECHAR **ppStringsBuffer);
++  HRESULT WINAPI IScopedOperations_Move_Proxy(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR rgpwszSourceURLs[],LPCOLESTR rgpwszDestURLs[],DWORD dwMoveFlags,IAuthenticate *pAuthenticate,DBSTATUS rgdwStatus[],LPOLESTR rgpwszNewURLs[],OLECHAR **ppStringsBuffer);
++  HRESULT WINAPI IScopedOperations_Move_Stub(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR *rgpwszSourceURLs,LPCOLESTR *rgpwszDestURLs,DWORD dwMoveFlags,IAuthenticate *pAuthenticate,DBSTATUS *rgdwStatus,DBBYTEOFFSET **prgulNewURLOffsets,ULONG *pcbStringsBuffer,OLECHAR **ppStringsBuffer);
++  HRESULT WINAPI IScopedOperations_Delete_Proxy(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR rgpwszURLs[],DWORD dwDeleteFlags,DBSTATUS rgdwStatus[]);
++  HRESULT WINAPI IScopedOperations_Delete_Stub(IScopedOperations *This,DBCOUNTITEM cRows,LPCOLESTR *rgpwszURLs,DWORD dwDeleteFlags,DBSTATUS *rgdwStatus);
++  HRESULT WINAPI IScopedOperations_OpenRowset_Proxy(IScopedOperations *This,IUnknown *pUnkOuter,DBID *pTableID,DBID *pIndexID,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset);
++  HRESULT WINAPI IScopedOperations_OpenRowset_Stub(IScopedOperations *This,IUnknown *pUnkOuter,DBID *pTableID,DBID *pIndexID,REFIID riid,ULONG cPropertySets,DBPROPSET *rgPropertySets,IUnknown **ppRowset,ULONG cTotalProps,DBPROPSTATUS *rgPropStatus);
++  HRESULT WINAPI IBindResource_Bind_Proxy(IBindResource *This,IUnknown *pUnkOuter,LPCOLESTR pwszURL,DBBINDURLFLAG dwBindURLFlags,REFGUID rguid,REFIID riid,IAuthenticate *pAuthenticate,DBIMPLICITSESSION *pImplSession,DBBINDURLSTATUS *pdwBindStatus,IUnknown **ppUnk);
++  HRESULT WINAPI 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);
++  HRESULT WINAPI 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);
++  HRESULT WINAPI 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);
++  HRESULT WINAPI IColumnsInfo2_GetRestrictedColumnInfo_Proxy(IColumnsInfo2 *This,DBORDINAL cColumnIDMasks,const DBID rgColumnIDMasks[],DWORD dwFlags,DBORDINAL *pcColumns,DBID **prgColumnIDs,DBCOLUMNINFO **prgColumnInfo,OLECHAR **ppStringsBuffer);
++  HRESULT WINAPI IColumnsInfo2_GetRestrictedColumnInfo_Stub(IColumnsInfo2 *This,DBORDINAL cColumnIDMasks,const DBID *rgColumnIDMasks,DWORD dwFlags,DBORDINAL *pcColumns,DBID **prgColumnIDs,DBCOLUMNINFO **prgColumnInfo,DBBYTEOFFSET **prgNameOffsets,DBBYTEOFFSET **prgcolumnidOffsets,DBLENGTH *pcbStringsBuffer,OLECHAR **ppStringsBuffer);
++  HRESULT WINAPI IRegisterProvider_GetURLMapping_Proxy(IRegisterProvider *This,LPCOLESTR pwszURL,DB_DWRESERVE dwReserved,CLSID *pclsidProvider);
++  HRESULT WINAPI IRegisterProvider_GetURLMapping_Stub(IRegisterProvider *This,LPCOLESTR pwszURL,DB_DWRESERVE dwReserved,CLSID *pclsidProvider);
++#endif
++
++#ifdef __cplusplus
++}
++#endif
++#endif
+diff -urN /home/jesus/ooo-build/build/ooo310-m14/connectivity/source/drivers/ado/transact.h connectivity/source/drivers/ado/transact.h
+--- /dev/null	1970-01-01 01:00:00.000000000 +0100
++++ connectivity/source/drivers/ado/transact.h	2009-07-22 17:00:07.000000000 +0200
+@@ -0,0 +1,438 @@
++/**
++ * This file has no copyright assigned and is placed in the Public Domain.
++ * This file is part of the w64 mingw-runtime package.
++ * No warranty is given; refer to the file DISCLAIMER within this package.
++ */
++#ifndef __REQUIRED_RPCNDR_H_VERSION__
++#define __REQUIRED_RPCNDR_H_VERSION__ 475
++#endif
++
++#include "rpc.h"
++#include "rpcndr.h"
++
++#ifndef __RPCNDR_H_VERSION__
++#error This stub requires an updated version of <rpcndr.h>
++#endif
++
++#ifndef COM_NO_WINDOWS_H
++#include "windows.h"
++#include "ole2.h"
++#endif
++
++#ifndef __transact_h__
++#define __transact_h__
++
++#ifndef __ITransaction_FWD_DEFINED__
++#define __ITransaction_FWD_DEFINED__
++typedef struct ITransaction ITransaction;
++#endif
++
++#ifndef __ITransactionCloner_FWD_DEFINED__
++#define __ITransactionCloner_FWD_DEFINED__
++typedef struct ITransactionCloner ITransactionCloner;
++#endif
++
++#ifndef __ITransaction2_FWD_DEFINED__
++#define __ITransaction2_FWD_DEFINED__
++typedef struct ITransaction2 ITransaction2;
++#endif
++
++#ifndef __ITransactionDispenser_FWD_DEFINED__
++#define __ITransactionDispenser_FWD_DEFINED__
++typedef struct ITransactionDispenser ITransactionDispenser;
++#endif
++
++#ifndef __ITransactionOptions_FWD_DEFINED__
++#define __ITransactionOptions_FWD_DEFINED__
++typedef struct ITransactionOptions ITransactionOptions;
++#endif
++
++#ifndef __ITransactionOutcomeEvents_FWD_DEFINED__
++#define __ITransactionOutcomeEvents_FWD_DEFINED__
++typedef struct ITransactionOutcomeEvents ITransactionOutcomeEvents;
++#endif
++
++#ifndef __ITmNodeName_FWD_DEFINED__
++#define __ITmNodeName_FWD_DEFINED__
++typedef struct ITmNodeName ITmNodeName;
++#endif
++
++#include "unknwn.h"
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++  void *__RPC_API MIDL_user_allocate(size_t);
++  void __RPC_API MIDL_user_free(void *);
++
++#include "winerror.h"
++
++  extern RPC_IF_HANDLE __MIDL_itf_transact_0000_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_transact_0000_v0_0_s_ifspec;
++
++#ifndef __BasicTransactionTypes_INTERFACE_DEFINED__
++#define __BasicTransactionTypes_INTERFACE_DEFINED__
++
++  typedef struct BOID {
++    byte rgb[16 ];
++  } BOID;
++
++#define BOID_NULL (*((BOID*)(&IID_NULL)))
++#ifndef MAX_TRAN_DESC_DEFINED
++#define MAX_TRAN_DESC_DEFINED
++  typedef enum TX_MISC_CONSTANTS {
++    MAX_TRAN_DESC = 40
++  } TX_MISC_CONSTANTS;
++#endif
++  typedef BOID XACTUOW;
++  typedef LONG ISOLEVEL;
++
++  typedef enum ISOLATIONLEVEL {
++    ISOLATIONLEVEL_UNSPECIFIED = 0xffffffff,ISOLATIONLEVEL_CHAOS = 0x10,ISOLATIONLEVEL_READUNCOMMITTED = 0x100,ISOLATIONLEVEL_BROWSE = 0x100,
++    ISOLATIONLEVEL_CURSORSTABILITY = 0x1000,ISOLATIONLEVEL_READCOMMITTED = 0x1000,ISOLATIONLEVEL_REPEATABLEREAD = 0x10000,
++    ISOLATIONLEVEL_SERIALIZABLE = 0x100000,ISOLATIONLEVEL_ISOLATED = 0x100000
++  } ISOLATIONLEVEL;
++
++  typedef struct XACTTRANSINFO {
++    XACTUOW uow;
++    ISOLEVEL isoLevel;
++    ULONG isoFlags;
++    DWORD grfTCSupported;
++    DWORD grfRMSupported;
++    DWORD grfTCSupportedRetaining;
++    DWORD grfRMSupportedRetaining;
++  } XACTTRANSINFO;
++
++  typedef struct XACTSTATS {
++    ULONG cOpen;
++    ULONG cCommitting;
++    ULONG cCommitted;
++    ULONG cAborting;
++    ULONG cAborted;
++    ULONG cInDoubt;
++    ULONG cHeuristicDecision;
++    FILETIME timeTransactionsUp;
++  } XACTSTATS;
++
++  typedef enum ISOFLAG {
++    ISOFLAG_RETAIN_COMMIT_DC = 1,ISOFLAG_RETAIN_COMMIT = 2,ISOFLAG_RETAIN_COMMIT_NO = 3,ISOFLAG_RETAIN_ABORT_DC = 4,ISOFLAG_RETAIN_ABORT = 8,
++    ISOFLAG_RETAIN_ABORT_NO = 12,ISOFLAG_RETAIN_DONTCARE = ISOFLAG_RETAIN_COMMIT_DC | ISOFLAG_RETAIN_ABORT_DC,
++    ISOFLAG_RETAIN_BOTH = ISOFLAG_RETAIN_COMMIT | ISOFLAG_RETAIN_ABORT,ISOFLAG_RETAIN_NONE = ISOFLAG_RETAIN_COMMIT_NO | ISOFLAG_RETAIN_ABORT_NO,ISOFLAG_OPTIMISTIC = 16,ISOFLAG_READONLY = 32
++  } ISOFLAG;
++
++  typedef enum XACTTC {
++    XACTTC_NONE = 0,XACTTC_SYNC_PHASEONE = 1,XACTTC_SYNC_PHASETWO = 2,XACTTC_SYNC = 2,XACTTC_ASYNC_PHASEONE = 4,XACTTC_ASYNC = 4
++  } XACTTC;
++
++  typedef enum XACTRM {
++    XACTRM_OPTIMISTICLASTWINS = 1,XACTRM_NOREADONLYPREPARES = 2
++  } XACTRM;
++
++  typedef enum XACTCONST {
++    XACTCONST_TIMEOUTINFINITE = 0
++  } XACTCONST;
++
++  typedef enum XACTHEURISTIC {
++    XACTHEURISTIC_ABORT = 1,XACTHEURISTIC_COMMIT = 2,XACTHEURISTIC_DAMAGE = 3,XACTHEURISTIC_DANGER = 4
++  } XACTHEURISTIC;
++
++  typedef enum XACTSTAT {
++    XACTSTAT_NONE = 0,XACTSTAT_OPENNORMAL = 0x1,XACTSTAT_OPENREFUSED = 0x2,XACTSTAT_PREPARING = 0x4,XACTSTAT_PREPARED = 0x8,XACTSTAT_PREPARERETAINING = 0x10,XACTSTAT_PREPARERETAINED = 0x20,XACTSTAT_COMMITTING = 0x40,XACTSTAT_COMMITRETAINING = 0x80,XACTSTAT_ABORTING = 0x100,XACTSTAT_ABORTED = 0x200,XACTSTAT_COMMITTED = 0x400,XACTSTAT_HEURISTIC_ABORT = 0x800,XACTSTAT_HEURISTIC_COMMIT = 0x1000,XACTSTAT_HEURISTIC_DAMAGE = 0x2000,XACTSTAT_HEURISTIC_DANGER = 0x4000,XACTSTAT_FORCED_ABORT = 0x8000,XACTSTAT_FORCED_COMMIT = 0x10000,XACTSTAT_INDOUBT = 0x20000,XACTSTAT_CLOSED = 0x40000,XACTSTAT_OPEN = 0x3,XACTSTAT_NOTPREPARED = 0x7ffc3,XACTSTAT_ALL = 0x7ffff
++  } XACTSTAT;
++
++  typedef struct XACTOPT {
++    ULONG ulTimeout;
++    char szDescription[40 ];
++  } XACTOPT;
++
++  extern RPC_IF_HANDLE BasicTransactionTypes_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE BasicTransactionTypes_v0_0_s_ifspec;
++#endif
++
++#ifndef __ITransaction_INTERFACE_DEFINED__
++#define __ITransaction_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITransaction;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITransaction : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Commit(WINBOOL fRetaining,DWORD grfTC,DWORD grfRM) = 0;
++    virtual HRESULT WINAPI Abort(BOID *pboidReason,WINBOOL fRetaining,WINBOOL fAsync) = 0;
++    virtual HRESULT WINAPI GetTransactionInfo(XACTTRANSINFO *pinfo) = 0;
++  };
++#else
++  typedef struct ITransactionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITransaction *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITransaction *This);
++      ULONG (WINAPI *Release)(ITransaction *This);
++      HRESULT (WINAPI *Commit)(ITransaction *This,WINBOOL fRetaining,DWORD grfTC,DWORD grfRM);
++      HRESULT (WINAPI *Abort)(ITransaction *This,BOID *pboidReason,WINBOOL fRetaining,WINBOOL fAsync);
++      HRESULT (WINAPI *GetTransactionInfo)(ITransaction *This,XACTTRANSINFO *pinfo);
++    END_INTERFACE
++  } ITransactionVtbl;
++  struct ITransaction {
++    CONST_VTBL struct ITransactionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITransaction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITransaction_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITransaction_Release(This) (This)->lpVtbl->Release(This)
++#define ITransaction_Commit(This,fRetaining,grfTC,grfRM) (This)->lpVtbl->Commit(This,fRetaining,grfTC,grfRM)
++#define ITransaction_Abort(This,pboidReason,fRetaining,fAsync) (This)->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync)
++#define ITransaction_GetTransactionInfo(This,pinfo) (This)->lpVtbl->GetTransactionInfo(This,pinfo)
++#endif
++#endif
++  HRESULT WINAPI ITransaction_Commit_Proxy(ITransaction *This,WINBOOL fRetaining,DWORD grfTC,DWORD grfRM);
++  void __RPC_STUB ITransaction_Commit_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITransaction_Abort_Proxy(ITransaction *This,BOID *pboidReason,WINBOOL fRetaining,WINBOOL fAsync);
++  void __RPC_STUB ITransaction_Abort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITransaction_GetTransactionInfo_Proxy(ITransaction *This,XACTTRANSINFO *pinfo);
++  void __RPC_STUB ITransaction_GetTransactionInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITransactionCloner_INTERFACE_DEFINED__
++#define __ITransactionCloner_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITransactionCloner;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITransactionCloner : public ITransaction {
++  public:
++    virtual HRESULT WINAPI CloneWithCommitDisabled(ITransaction **ppITransaction) = 0;
++  };
++#else
++  typedef struct ITransactionClonerVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITransactionCloner *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITransactionCloner *This);
++      ULONG (WINAPI *Release)(ITransactionCloner *This);
++      HRESULT (WINAPI *Commit)(ITransactionCloner *This,WINBOOL fRetaining,DWORD grfTC,DWORD grfRM);
++      HRESULT (WINAPI *Abort)(ITransactionCloner *This,BOID *pboidReason,WINBOOL fRetaining,WINBOOL fAsync);
++      HRESULT (WINAPI *GetTransactionInfo)(ITransactionCloner *This,XACTTRANSINFO *pinfo);
++      HRESULT (WINAPI *CloneWithCommitDisabled)(ITransactionCloner *This,ITransaction **ppITransaction);
++    END_INTERFACE
++  } ITransactionClonerVtbl;
++  struct ITransactionCloner {
++    CONST_VTBL struct ITransactionClonerVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITransactionCloner_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITransactionCloner_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITransactionCloner_Release(This) (This)->lpVtbl->Release(This)
++#define ITransactionCloner_Commit(This,fRetaining,grfTC,grfRM) (This)->lpVtbl->Commit(This,fRetaining,grfTC,grfRM)
++#define ITransactionCloner_Abort(This,pboidReason,fRetaining,fAsync) (This)->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync)
++#define ITransactionCloner_GetTransactionInfo(This,pinfo) (This)->lpVtbl->GetTransactionInfo(This,pinfo)
++#define ITransactionCloner_CloneWithCommitDisabled(This,ppITransaction) (This)->lpVtbl->CloneWithCommitDisabled(This,ppITransaction)
++#endif
++#endif
++  HRESULT WINAPI ITransactionCloner_CloneWithCommitDisabled_Proxy(ITransactionCloner *This,ITransaction **ppITransaction);
++  void __RPC_STUB ITransactionCloner_CloneWithCommitDisabled_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITransaction2_INTERFACE_DEFINED__
++#define __ITransaction2_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITransaction2;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITransaction2 : public ITransactionCloner {
++  public:
++    virtual HRESULT WINAPI GetTransactionInfo2(XACTTRANSINFO *pinfo) = 0;
++  };
++#else
++  typedef struct ITransaction2Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITransaction2 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITransaction2 *This);
++      ULONG (WINAPI *Release)(ITransaction2 *This);
++      HRESULT (WINAPI *Commit)(ITransaction2 *This,WINBOOL fRetaining,DWORD grfTC,DWORD grfRM);
++      HRESULT (WINAPI *Abort)(ITransaction2 *This,BOID *pboidReason,WINBOOL fRetaining,WINBOOL fAsync);
++      HRESULT (WINAPI *GetTransactionInfo)(ITransaction2 *This,XACTTRANSINFO *pinfo);
++      HRESULT (WINAPI *CloneWithCommitDisabled)(ITransaction2 *This,ITransaction **ppITransaction);
++      HRESULT (WINAPI *GetTransactionInfo2)(ITransaction2 *This,XACTTRANSINFO *pinfo);
++    END_INTERFACE
++  } ITransaction2Vtbl;
++  struct ITransaction2 {
++    CONST_VTBL struct ITransaction2Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITransaction2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITransaction2_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITransaction2_Release(This) (This)->lpVtbl->Release(This)
++#define ITransaction2_Commit(This,fRetaining,grfTC,grfRM) (This)->lpVtbl->Commit(This,fRetaining,grfTC,grfRM)
++#define ITransaction2_Abort(This,pboidReason,fRetaining,fAsync) (This)->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync)
++#define ITransaction2_GetTransactionInfo(This,pinfo) (This)->lpVtbl->GetTransactionInfo(This,pinfo)
++#define ITransaction2_CloneWithCommitDisabled(This,ppITransaction) (This)->lpVtbl->CloneWithCommitDisabled(This,ppITransaction)
++#define ITransaction2_GetTransactionInfo2(This,pinfo) (This)->lpVtbl->GetTransactionInfo2(This,pinfo)
++#endif
++#endif
++  HRESULT WINAPI ITransaction2_GetTransactionInfo2_Proxy(ITransaction2 *This,XACTTRANSINFO *pinfo);
++  void __RPC_STUB ITransaction2_GetTransactionInfo2_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITransactionDispenser_INTERFACE_DEFINED__
++#define __ITransactionDispenser_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITransactionDispenser;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITransactionDispenser : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetOptionsObject(ITransactionOptions **ppOptions) = 0;
++    virtual HRESULT WINAPI BeginTransaction(IUnknown *punkOuter,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOptions,ITransaction **ppTransaction) = 0;
++  };
++#else
++  typedef struct ITransactionDispenserVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITransactionDispenser *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITransactionDispenser *This);
++      ULONG (WINAPI *Release)(ITransactionDispenser *This);
++      HRESULT (WINAPI *GetOptionsObject)(ITransactionDispenser *This,ITransactionOptions **ppOptions);
++      HRESULT (WINAPI *BeginTransaction)(ITransactionDispenser *This,IUnknown *punkOuter,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOptions,ITransaction **ppTransaction);
++    END_INTERFACE
++  } ITransactionDispenserVtbl;
++  struct ITransactionDispenser {
++    CONST_VTBL struct ITransactionDispenserVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITransactionDispenser_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITransactionDispenser_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITransactionDispenser_Release(This) (This)->lpVtbl->Release(This)
++#define ITransactionDispenser_GetOptionsObject(This,ppOptions) (This)->lpVtbl->GetOptionsObject(This,ppOptions)
++#define ITransactionDispenser_BeginTransaction(This,punkOuter,isoLevel,isoFlags,pOptions,ppTransaction) (This)->lpVtbl->BeginTransaction(This,punkOuter,isoLevel,isoFlags,pOptions,ppTransaction)
++#endif
++#endif
++  HRESULT WINAPI ITransactionDispenser_GetOptionsObject_Proxy(ITransactionDispenser *This,ITransactionOptions **ppOptions);
++  void __RPC_STUB ITransactionDispenser_GetOptionsObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITransactionDispenser_BeginTransaction_Proxy(ITransactionDispenser *This,IUnknown *punkOuter,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOptions,ITransaction **ppTransaction);
++  void __RPC_STUB ITransactionDispenser_BeginTransaction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITransactionOptions_INTERFACE_DEFINED__
++#define __ITransactionOptions_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITransactionOptions;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITransactionOptions : public IUnknown {
++  public:
++    virtual HRESULT WINAPI SetOptions(XACTOPT *pOptions) = 0;
++    virtual HRESULT WINAPI GetOptions(XACTOPT *pOptions) = 0;
++  };
++#else
++  typedef struct ITransactionOptionsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITransactionOptions *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITransactionOptions *This);
++      ULONG (WINAPI *Release)(ITransactionOptions *This);
++      HRESULT (WINAPI *SetOptions)(ITransactionOptions *This,XACTOPT *pOptions);
++      HRESULT (WINAPI *GetOptions)(ITransactionOptions *This,XACTOPT *pOptions);
++    END_INTERFACE
++  } ITransactionOptionsVtbl;
++  struct ITransactionOptions {
++    CONST_VTBL struct ITransactionOptionsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITransactionOptions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITransactionOptions_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITransactionOptions_Release(This) (This)->lpVtbl->Release(This)
++#define ITransactionOptions_SetOptions(This,pOptions) (This)->lpVtbl->SetOptions(This,pOptions)
++#define ITransactionOptions_GetOptions(This,pOptions) (This)->lpVtbl->GetOptions(This,pOptions)
++#endif
++#endif
++  HRESULT WINAPI ITransactionOptions_SetOptions_Proxy(ITransactionOptions *This,XACTOPT *pOptions);
++  void __RPC_STUB ITransactionOptions_SetOptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITransactionOptions_GetOptions_Proxy(ITransactionOptions *This,XACTOPT *pOptions);
++  void __RPC_STUB ITransactionOptions_GetOptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITransactionOutcomeEvents_INTERFACE_DEFINED__
++#define __ITransactionOutcomeEvents_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITransactionOutcomeEvents;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITransactionOutcomeEvents : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Committed(WINBOOL fRetaining,XACTUOW *pNewUOW,HRESULT hr) = 0;
++    virtual HRESULT WINAPI Aborted(BOID *pboidReason,WINBOOL fRetaining,XACTUOW *pNewUOW,HRESULT hr) = 0;
++    virtual HRESULT WINAPI HeuristicDecision(DWORD dwDecision,BOID *pboidReason,HRESULT hr) = 0;
++    virtual HRESULT WINAPI Indoubt(void) = 0;
++  };
++#else
++  typedef struct ITransactionOutcomeEventsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITransactionOutcomeEvents *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITransactionOutcomeEvents *This);
++      ULONG (WINAPI *Release)(ITransactionOutcomeEvents *This);
++      HRESULT (WINAPI *Committed)(ITransactionOutcomeEvents *This,WINBOOL fRetaining,XACTUOW *pNewUOW,HRESULT hr);
++      HRESULT (WINAPI *Aborted)(ITransactionOutcomeEvents *This,BOID *pboidReason,WINBOOL fRetaining,XACTUOW *pNewUOW,HRESULT hr);
++      HRESULT (WINAPI *HeuristicDecision)(ITransactionOutcomeEvents *This,DWORD dwDecision,BOID *pboidReason,HRESULT hr);
++      HRESULT (WINAPI *Indoubt)(ITransactionOutcomeEvents *This);
++    END_INTERFACE
++  } ITransactionOutcomeEventsVtbl;
++  struct ITransactionOutcomeEvents {
++    CONST_VTBL struct ITransactionOutcomeEventsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITransactionOutcomeEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITransactionOutcomeEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITransactionOutcomeEvents_Release(This) (This)->lpVtbl->Release(This)
++#define ITransactionOutcomeEvents_Committed(This,fRetaining,pNewUOW,hr) (This)->lpVtbl->Committed(This,fRetaining,pNewUOW,hr)
++#define ITransactionOutcomeEvents_Aborted(This,pboidReason,fRetaining,pNewUOW,hr) (This)->lpVtbl->Aborted(This,pboidReason,fRetaining,pNewUOW,hr)
++#define ITransactionOutcomeEvents_HeuristicDecision(This,dwDecision,pboidReason,hr) (This)->lpVtbl->HeuristicDecision(This,dwDecision,pboidReason,hr)
++#define ITransactionOutcomeEvents_Indoubt(This) (This)->lpVtbl->Indoubt(This)
++#endif
++#endif
++  HRESULT WINAPI ITransactionOutcomeEvents_Committed_Proxy(ITransactionOutcomeEvents *This,WINBOOL fRetaining,XACTUOW *pNewUOW,HRESULT hr);
++  void __RPC_STUB ITransactionOutcomeEvents_Committed_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITransactionOutcomeEvents_Aborted_Proxy(ITransactionOutcomeEvents *This,BOID *pboidReason,WINBOOL fRetaining,XACTUOW *pNewUOW,HRESULT hr);
++  void __RPC_STUB ITransactionOutcomeEvents_Aborted_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITransactionOutcomeEvents_HeuristicDecision_Proxy(ITransactionOutcomeEvents *This,DWORD dwDecision,BOID *pboidReason,HRESULT hr);
++  void __RPC_STUB ITransactionOutcomeEvents_HeuristicDecision_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITransactionOutcomeEvents_Indoubt_Proxy(ITransactionOutcomeEvents *This);
++  void __RPC_STUB ITransactionOutcomeEvents_Indoubt_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __ITmNodeName_INTERFACE_DEFINED__
++#define __ITmNodeName_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ITmNodeName;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ITmNodeName : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetNodeNameSize(ULONG *pcbNodeNameSize) = 0;
++    virtual HRESULT WINAPI GetNodeName(ULONG cbNodeNameBufferSize,LPWSTR pNodeNameBuffer) = 0;
++  };
++#else
++  typedef struct ITmNodeNameVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ITmNodeName *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ITmNodeName *This);
++      ULONG (WINAPI *Release)(ITmNodeName *This);
++      HRESULT (WINAPI *GetNodeNameSize)(ITmNodeName *This,ULONG *pcbNodeNameSize);
++      HRESULT (WINAPI *GetNodeName)(ITmNodeName *This,ULONG cbNodeNameBufferSize,LPWSTR pNodeNameBuffer);
++    END_INTERFACE
++  } ITmNodeNameVtbl;
++  struct ITmNodeName {
++    CONST_VTBL struct ITmNodeNameVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ITmNodeName_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ITmNodeName_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ITmNodeName_Release(This) (This)->lpVtbl->Release(This)
++#define ITmNodeName_GetNodeNameSize(This,pcbNodeNameSize) (This)->lpVtbl->GetNodeNameSize(This,pcbNodeNameSize)
++#define ITmNodeName_GetNodeName(This,cbNodeNameBufferSize,pNodeNameBuffer) (This)->lpVtbl->GetNodeName(This,cbNodeNameBufferSize,pNodeNameBuffer)
++#endif
++#endif
++  HRESULT WINAPI ITmNodeName_GetNodeNameSize_Proxy(ITmNodeName *This,ULONG *pcbNodeNameSize);
++  void __RPC_STUB ITmNodeName_GetNodeNameSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ITmNodeName_GetNodeName_Proxy(ITmNodeName *This,ULONG cbNodeNameBufferSize,LPWSTR pNodeNameBuffer);
++  void __RPC_STUB ITmNodeName_GetNodeName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++  DEFINE_GUID(IID_ITransaction,0x0fb15084,0xaf41,0x11ce,0xbd,0x2b,0x20,0x4c,0x4f,0x4f,0x50,0x20);
++  DEFINE_GUID(IID_ITransactionCloner,0x02656950,0x2152,0x11d0,0x94,0x4C,0x00,0xA0,0xC9,0x05,0x41,0x6E);
++  DEFINE_GUID(IID_ITransaction2,0x34021548,0x0065,0x11d3,0xba,0xc1,0x00,0xc0,0x4f,0x79,0x7b,0xe2);
++  DEFINE_GUID(IID_ITransactionDispenser,0x3A6AD9E1,0x23B9,0x11cf,0xAD,0x60,0x00,0xAA,0x00,0xA7,0x4C,0xCD);
++  DEFINE_GUID(IID_ITransactionOptions,0x3A6AD9E0,0x23B9,0x11cf,0xAD,0x60,0x00,0xAA,0x00,0xA7,0x4C,0xCD);
++  DEFINE_GUID(IID_ITransactionOutcomeEvents,0x3A6AD9E2,0x23B9,0x11cf,0xAD,0x60,0x00,0xAA,0x00,0xA7,0x4C,0xCD);
++  DEFINE_GUID(IID_ITmNodeName,0x30274F88,0x6EE4,0x474e,0x9B,0x95,0x78,0x07,0xBC,0x9E,0xF8,0xCF);
++
++  extern RPC_IF_HANDLE __MIDL_itf_transact_0016_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_transact_0016_v0_0_s_ifspec;
++
++#ifdef __cplusplus
++}
++#endif
++#endif
+diff -urN /home/jesus/ooo-build/build/ooo310-m14/connectivity/source/drivers/ado/urlmon.h connectivity/source/drivers/ado/urlmon.h
+--- /dev/null	1970-01-01 01:00:00.000000000 +0100
++++ connectivity/source/drivers/ado/urlmon.h	2009-07-22 17:35:15.000000000 +0200
+@@ -0,0 +1,2907 @@
++/**
++ * This file has no copyright assigned and is placed in the Public Domain.
++ * This file is part of the w64 mingw-runtime package.
++ * No warranty is given; refer to the file DISCLAIMER within this package.
++ */
++#ifndef __REQUIRED_RPCNDR_H_VERSION__
++#define __REQUIRED_RPCNDR_H_VERSION__ 440
++#endif
++
++#include "rpc.h"
++#include "rpcndr.h"
++
++#ifndef __RPCNDR_H_VERSION__
++#error This stub requires an updated version of <rpcndr.h>
++#endif
++
++#ifndef COM_NO_WINDOWS_H
++#include "windows.h"
++#include "ole2.h"
++#endif
++
++#ifndef __urlmon_h__
++#define __urlmon_h__
++
++#ifndef __IPersistMoniker_FWD_DEFINED__
++#define __IPersistMoniker_FWD_DEFINED__
++typedef struct IPersistMoniker IPersistMoniker;
++#endif
++
++#ifndef __IMonikerProp_FWD_DEFINED__
++#define __IMonikerProp_FWD_DEFINED__
++typedef struct IMonikerProp IMonikerProp;
++#endif
++
++#ifndef __IBindProtocol_FWD_DEFINED__
++#define __IBindProtocol_FWD_DEFINED__
++typedef struct IBindProtocol IBindProtocol;
++#endif
++
++#ifndef __IBinding_FWD_DEFINED__
++#define __IBinding_FWD_DEFINED__
++typedef struct IBinding IBinding;
++#endif
++
++#ifndef __IBindStatusCallback_FWD_DEFINED__
++#define __IBindStatusCallback_FWD_DEFINED__
++typedef struct IBindStatusCallback IBindStatusCallback;
++#endif
++
++#ifndef __IAuthenticate_FWD_DEFINED__
++#define __IAuthenticate_FWD_DEFINED__
++typedef struct IAuthenticate IAuthenticate;
++#endif
++
++#ifndef __IHttpNegotiate_FWD_DEFINED__
++#define __IHttpNegotiate_FWD_DEFINED__
++typedef struct IHttpNegotiate IHttpNegotiate;
++#endif
++
++#ifndef __IHttpNegotiate2_FWD_DEFINED__
++#define __IHttpNegotiate2_FWD_DEFINED__
++typedef struct IHttpNegotiate2 IHttpNegotiate2;
++#endif
++
++#ifndef __IWinInetFileStream_FWD_DEFINED__
++#define __IWinInetFileStream_FWD_DEFINED__
++typedef struct IWinInetFileStream IWinInetFileStream;
++#endif
++
++#ifndef __IWindowForBindingUI_FWD_DEFINED__
++#define __IWindowForBindingUI_FWD_DEFINED__
++typedef struct IWindowForBindingUI IWindowForBindingUI;
++#endif
++
++#ifndef __ICodeInstall_FWD_DEFINED__
++#define __ICodeInstall_FWD_DEFINED__
++typedef struct ICodeInstall ICodeInstall;
++#endif
++
++#ifndef __IWinInetInfo_FWD_DEFINED__
++#define __IWinInetInfo_FWD_DEFINED__
++typedef struct IWinInetInfo IWinInetInfo;
++#endif
++
++#ifndef __IHttpSecurity_FWD_DEFINED__
++#define __IHttpSecurity_FWD_DEFINED__
++typedef struct IHttpSecurity IHttpSecurity;
++#endif
++
++#ifndef __IWinInetHttpInfo_FWD_DEFINED__
++#define __IWinInetHttpInfo_FWD_DEFINED__
++typedef struct IWinInetHttpInfo IWinInetHttpInfo;
++#endif
++
++#ifndef __IWinInetCacheHints_FWD_DEFINED__
++#define __IWinInetCacheHints_FWD_DEFINED__
++typedef struct IWinInetCacheHints IWinInetCacheHints;
++#endif
++
++#ifndef __IBindHost_FWD_DEFINED__
++#define __IBindHost_FWD_DEFINED__
++typedef struct IBindHost IBindHost;
++#endif
++
++#ifndef __IInternet_FWD_DEFINED__
++#define __IInternet_FWD_DEFINED__
++typedef struct IInternet IInternet;
++#endif
++
++#ifndef __IInternetBindInfo_FWD_DEFINED__
++#define __IInternetBindInfo_FWD_DEFINED__
++typedef struct IInternetBindInfo IInternetBindInfo;
++#endif
++
++#ifndef __IInternetProtocolRoot_FWD_DEFINED__
++#define __IInternetProtocolRoot_FWD_DEFINED__
++typedef struct IInternetProtocolRoot IInternetProtocolRoot;
++#endif
++
++#ifndef __IInternetProtocol_FWD_DEFINED__
++#define __IInternetProtocol_FWD_DEFINED__
++typedef struct IInternetProtocol IInternetProtocol;
++#endif
++
++#ifndef __IInternetProtocolSink_FWD_DEFINED__
++#define __IInternetProtocolSink_FWD_DEFINED__
++typedef struct IInternetProtocolSink IInternetProtocolSink;
++#endif
++
++#ifndef __IInternetProtocolSinkStackable_FWD_DEFINED__
++#define __IInternetProtocolSinkStackable_FWD_DEFINED__
++typedef struct IInternetProtocolSinkStackable IInternetProtocolSinkStackable;
++#endif
++
++#ifndef __IInternetSession_FWD_DEFINED__
++#define __IInternetSession_FWD_DEFINED__
++typedef struct IInternetSession IInternetSession;
++#endif
++
++#ifndef __IInternetThreadSwitch_FWD_DEFINED__
++#define __IInternetThreadSwitch_FWD_DEFINED__
++typedef struct IInternetThreadSwitch IInternetThreadSwitch;
++#endif
++
++#ifndef __IInternetPriority_FWD_DEFINED__
++#define __IInternetPriority_FWD_DEFINED__
++typedef struct IInternetPriority IInternetPriority;
++#endif
++
++#ifndef __IInternetProtocolInfo_FWD_DEFINED__
++#define __IInternetProtocolInfo_FWD_DEFINED__
++typedef struct IInternetProtocolInfo IInternetProtocolInfo;
++#endif
++
++#ifndef __IInternetSecurityMgrSite_FWD_DEFINED__
++#define __IInternetSecurityMgrSite_FWD_DEFINED__
++typedef struct IInternetSecurityMgrSite IInternetSecurityMgrSite;
++#endif
++
++#ifndef __IInternetSecurityManager_FWD_DEFINED__
++#define __IInternetSecurityManager_FWD_DEFINED__
++typedef struct IInternetSecurityManager IInternetSecurityManager;
++#endif
++
++#ifndef __IInternetSecurityManagerEx_FWD_DEFINED__
++#define __IInternetSecurityManagerEx_FWD_DEFINED__
++typedef struct IInternetSecurityManagerEx IInternetSecurityManagerEx;
++#endif
++
++#ifndef __IZoneIdentifier_FWD_DEFINED__
++#define __IZoneIdentifier_FWD_DEFINED__
++typedef struct IZoneIdentifier IZoneIdentifier;
++#endif
++
++#ifndef __IInternetHostSecurityManager_FWD_DEFINED__
++#define __IInternetHostSecurityManager_FWD_DEFINED__
++typedef struct IInternetHostSecurityManager IInternetHostSecurityManager;
++#endif
++
++#ifndef __IInternetZoneManager_FWD_DEFINED__
++#define __IInternetZoneManager_FWD_DEFINED__
++typedef struct IInternetZoneManager IInternetZoneManager;
++#endif
++
++#ifndef __IInternetZoneManagerEx_FWD_DEFINED__
++#define __IInternetZoneManagerEx_FWD_DEFINED__
++typedef struct IInternetZoneManagerEx IInternetZoneManagerEx;
++#endif
++
++#ifndef __ISoftDistExt_FWD_DEFINED__
++#define __ISoftDistExt_FWD_DEFINED__
++typedef struct ISoftDistExt ISoftDistExt;
++#endif
++
++#ifndef __ICatalogFileInfo_FWD_DEFINED__
++#define __ICatalogFileInfo_FWD_DEFINED__
++typedef struct ICatalogFileInfo ICatalogFileInfo;
++#endif
++
++#ifndef __IDataFilter_FWD_DEFINED__
++#define __IDataFilter_FWD_DEFINED__
++typedef struct IDataFilter IDataFilter;
++#endif
++
++#ifndef __IEncodingFilterFactory_FWD_DEFINED__
++#define __IEncodingFilterFactory_FWD_DEFINED__
++typedef struct IEncodingFilterFactory IEncodingFilterFactory;
++#endif
++
++#ifndef __IWrappedProtocol_FWD_DEFINED__
++#define __IWrappedProtocol_FWD_DEFINED__
++typedef struct IWrappedProtocol IWrappedProtocol;
++#endif
++
++#include "objidl.h"
++#include "oleidl.h"
++#include "servprov.h"
++#include "msxml.h"
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++  void *__RPC_API MIDL_user_allocate(size_t);
++  void __RPC_API MIDL_user_free(void *);
++
++  EXTERN_C const IID CLSID_SBS_StdURLMoniker;
++  EXTERN_C const IID CLSID_SBS_HttpProtocol;
++  EXTERN_C const IID CLSID_SBS_FtpProtocol;
++  EXTERN_C const IID CLSID_SBS_GopherProtocol;
++  EXTERN_C const IID CLSID_SBS_HttpSProtocol;
++  EXTERN_C const IID CLSID_SBS_FileProtocol;
++  EXTERN_C const IID CLSID_SBS_MkProtocol;
++  EXTERN_C const IID CLSID_SBS_UrlMkBindCtx;
++  EXTERN_C const IID CLSID_SBS_SoftDistExt;
++  EXTERN_C const IID CLSID_SBS_StdEncodingFilterFac;
++  EXTERN_C const IID CLSID_SBS_DeCompMimeFilter;
++  EXTERN_C const IID CLSID_SBS_CdlProtocol;
++  EXTERN_C const IID CLSID_SBS_ClassInstallFilter;
++  EXTERN_C const IID CLSID_SBS_InternetSecurityManager;
++  EXTERN_C const IID CLSID_SBS_InternetZoneManager;
++
++#define BINDF_DONTUSECACHE BINDF_GETNEWESTVERSION
++#define BINDF_DONTPUTINCACHE BINDF_NOWRITECACHE
++#define BINDF_NOCOPYDATA BINDF_PULLDATA
++#define INVALID_P_ROOT_SECURITY_ID ((BYTE*)-1)
++#define PI_DOCFILECLSIDLOOKUP PI_CLSIDLOOKUP
++  EXTERN_C const IID IID_IAsyncMoniker;
++  EXTERN_C const IID CLSID_StdURLMoniker;
++  EXTERN_C const IID CLSID_HttpProtocol;
++  EXTERN_C const IID CLSID_FtpProtocol;
++  EXTERN_C const IID CLSID_GopherProtocol;
++  EXTERN_C const IID CLSID_HttpSProtocol;
++  EXTERN_C const IID CLSID_FileProtocol;
++  EXTERN_C const IID CLSID_MkProtocol;
++  EXTERN_C const IID CLSID_StdURLProtocol;
++  EXTERN_C const IID CLSID_UrlMkBindCtx;
++  EXTERN_C const IID CLSID_StdEncodingFilterFac;
++  EXTERN_C const IID CLSID_DeCompMimeFilter;
++  EXTERN_C const IID CLSID_CdlProtocol;
++  EXTERN_C const IID CLSID_ClassInstallFilter;
++  EXTERN_C const IID IID_IAsyncBindCtx;
++
++#define SZ_URLCONTEXT OLESTR("URL Context")
++#define SZ_ASYNC_CALLEE OLESTR("AsyncCallee")
++#define MKSYS_URLMONIKER 6
++#define URL_MK_LEGACY 0
++#define URL_MK_UNIFORM 1
++#define URL_MK_NO_CANONICALIZE 2
++
++  STDAPI CreateURLMoniker(LPMONIKER pMkCtx,LPCWSTR szURL,LPMONIKER *ppmk);
++  STDAPI CreateURLMonikerEx(LPMONIKER pMkCtx,LPCWSTR szURL,LPMONIKER *ppmk,DWORD dwFlags);
++  STDAPI GetClassURL(LPCWSTR szURL,CLSID *pClsID);
++  STDAPI CreateAsyncBindCtx(DWORD reserved,IBindStatusCallback *pBSCb,IEnumFORMATETC *pEFetc,IBindCtx **ppBC);
++  STDAPI CreateAsyncBindCtxEx(IBindCtx *pbc,DWORD dwOptions,IBindStatusCallback *pBSCb,IEnumFORMATETC *pEnum,IBindCtx **ppBC,DWORD reserved);
++  STDAPI MkParseDisplayNameEx(IBindCtx *pbc,LPCWSTR szDisplayName,ULONG *pchEaten,LPMONIKER *ppmk);
++  STDAPI RegisterBindStatusCallback(LPBC pBC,IBindStatusCallback *pBSCb,IBindStatusCallback **ppBSCBPrev,DWORD dwReserved);
++  STDAPI RevokeBindStatusCallback(LPBC pBC,IBindStatusCallback *pBSCb);
++  STDAPI GetClassFileOrMime(LPBC pBC,LPCWSTR szFilename,LPVOID pBuffer,DWORD cbSize,LPCWSTR szMime,DWORD dwReserved,CLSID *pclsid);
++  STDAPI IsValidURL(LPBC pBC,LPCWSTR szURL,DWORD dwReserved);
++  STDAPI CoGetClassObjectFromURL(REFCLSID rCLASSID,LPCWSTR szCODE,DWORD dwFileVersionMS,DWORD dwFileVersionLS,LPCWSTR szTYPE,LPBINDCTX pBindCtx,DWORD dwClsContext,LPVOID pvReserved,REFIID riid,LPVOID *ppv);
++  //STDAPI FaultInIEFeature(HWND hWnd,uCLSSPEC *pClassSpec,QUERYCONTEXT *pQuery,DWORD dwFlags);
++  //STDAPI GetComponentIDFromCLSSPEC(uCLSSPEC *pClassspec,LPSTR *ppszComponentID);
++
++#define FIEF_FLAG_FORCE_JITUI 0x1
++
++#define FIEF_FLAG_PEEK 0x2
++#define FIEF_FLAG_SKIP_INSTALLED_VERSION_CHECK 0x4
++
++  STDAPI IsAsyncMoniker(IMoniker *pmk);
++  STDAPI CreateURLBinding(LPCWSTR lpszUrl,IBindCtx *pbc,IBinding **ppBdg);
++  STDAPI RegisterMediaTypes(UINT ctypes,const LPCSTR *rgszTypes,CLIPFORMAT *rgcfTypes);
++  STDAPI FindMediaType(LPCSTR rgszTypes,CLIPFORMAT *rgcfTypes);
++  STDAPI CreateFormatEnumerator(UINT cfmtetc,FORMATETC *rgfmtetc,IEnumFORMATETC **ppenumfmtetc);
++  STDAPI RegisterFormatEnumerator(LPBC pBC,IEnumFORMATETC *pEFetc,DWORD reserved);
++  STDAPI RevokeFormatEnumerator(LPBC pBC,IEnumFORMATETC *pEFetc);
++  STDAPI RegisterMediaTypeClass(LPBC pBC,UINT ctypes,const LPCSTR *rgszTypes,CLSID *rgclsID,DWORD reserved);
++  STDAPI FindMediaTypeClass(LPBC pBC,LPCSTR szType,CLSID *pclsID,DWORD reserved);
++  STDAPI UrlMkSetSessionOption(DWORD dwOption,LPVOID pBuffer,DWORD dwBufferLength,DWORD dwReserved);
++  STDAPI UrlMkGetSessionOption(DWORD dwOption,LPVOID pBuffer,DWORD dwBufferLength,DWORD *pdwBufferLength,DWORD dwReserved);
++  STDAPI FindMimeFromData(LPBC pBC,LPCWSTR pwzUrl,LPVOID pBuffer,DWORD cbSize,LPCWSTR pwzMimeProposed,DWORD dwMimeFlags,LPWSTR *ppwzMimeOut,DWORD dwReserved);
++#define FMFD_DEFAULT 0x00000000
++#define FMFD_URLASFILENAME 0x00000001
++#define FMFD_ENABLEMIMESNIFFING 0x00000002
++#define FMFD_IGNOREMIMETEXTPLAIN 0x00000004
++  STDAPI ObtainUserAgentString(DWORD dwOption,LPSTR pszUAOut,DWORD *cbSize);
++  STDAPI CompareSecurityIds(BYTE *pbSecurityId1,DWORD dwLen1,BYTE *pbSecurityId2,DWORD dwLen2,DWORD dwReserved);
++  STDAPI CompatFlagsFromClsid(CLSID *pclsid,LPDWORD pdwCompatFlags,LPDWORD pdwMiscStatusFlags);
++
++#define URLMON_OPTION_USERAGENT 0x10000001
++#define URLMON_OPTION_USERAGENT_REFRESH 0x10000002
++#define URLMON_OPTION_URL_ENCODING 0x10000004
++#define URLMON_OPTION_USE_BINDSTRINGCREDS 0x10000008
++
++#define CF_NULL 0
++#define CFSTR_MIME_NULL NULL
++#define CFSTR_MIME_TEXT (TEXT("text/plain"))
++#define CFSTR_MIME_RICHTEXT (TEXT("text/richtext"))
++#define CFSTR_MIME_X_BITMAP (TEXT("image/x-xbitmap"))
++#define CFSTR_MIME_POSTSCRIPT (TEXT("application/postscript"))
++#define CFSTR_MIME_AIFF (TEXT("audio/aiff"))
++#define CFSTR_MIME_BASICAUDIO (TEXT("audio/basic"))
++#define CFSTR_MIME_WAV (TEXT("audio/wav"))
++#define CFSTR_MIME_X_WAV (TEXT("audio/x-wav"))
++#define CFSTR_MIME_GIF (TEXT("image/gif"))
++#define CFSTR_MIME_PJPEG (TEXT("image/pjpeg"))
++#define CFSTR_MIME_JPEG (TEXT("image/jpeg"))
++#define CFSTR_MIME_TIFF (TEXT("image/tiff"))
++#define CFSTR_MIME_X_PNG (TEXT("image/x-png"))
++#define CFSTR_MIME_BMP (TEXT("image/bmp"))
++#define CFSTR_MIME_X_ART (TEXT("image/x-jg"))
++#define CFSTR_MIME_X_EMF (TEXT("image/x-emf"))
++#define CFSTR_MIME_X_WMF (TEXT("image/x-wmf"))
++#define CFSTR_MIME_AVI (TEXT("video/avi"))
++#define CFSTR_MIME_MPEG (TEXT("video/mpeg"))
++#define CFSTR_MIME_FRACTALS (TEXT("application/fractals"))
++#define CFSTR_MIME_RAWDATA (TEXT("application/octet-stream"))
++#define CFSTR_MIME_RAWDATASTRM (TEXT("application/octet-stream"))
++#define CFSTR_MIME_PDF (TEXT("application/pdf"))
++#define CFSTR_MIME_HTA (TEXT("application/hta"))
++#define CFSTR_MIME_X_AIFF (TEXT("audio/x-aiff"))
++#define CFSTR_MIME_X_REALAUDIO (TEXT("audio/x-pn-realaudio"))
++#define CFSTR_MIME_XBM (TEXT("image/xbm"))
++#define CFSTR_MIME_QUICKTIME (TEXT("video/quicktime"))
++#define CFSTR_MIME_X_MSVIDEO (TEXT("video/x-msvideo"))
++#define CFSTR_MIME_X_SGI_MOVIE (TEXT("video/x-sgi-movie"))
++#define CFSTR_MIME_HTML (TEXT("text/html"))
++#define CFSTR_MIME_XML (TEXT("text/xml"))
++
++#define MK_S_ASYNCHRONOUS _HRESULT_TYPEDEF_(0x000401E8L)
++#ifndef S_ASYNCHRONOUS
++#define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS
++#endif
++
++#ifndef E_PENDING
++#define E_PENDING _HRESULT_TYPEDEF_(0x8000000AL)
++#endif
++
++#define INET_E_INVALID_URL _HRESULT_TYPEDEF_(0x800C0002L)
++#define INET_E_NO_SESSION _HRESULT_TYPEDEF_(0x800C0003L)
++#define INET_E_CANNOT_CONNECT _HRESULT_TYPEDEF_(0x800C0004L)
++#define INET_E_RESOURCE_NOT_FOUND _HRESULT_TYPEDEF_(0x800C0005L)
++#define INET_E_OBJECT_NOT_FOUND _HRESULT_TYPEDEF_(0x800C0006L)
++#define INET_E_DATA_NOT_AVAILABLE _HRESULT_TYPEDEF_(0x800C0007L)
++#define INET_E_DOWNLOAD_FAILURE _HRESULT_TYPEDEF_(0x800C0008L)
++#define INET_E_AUTHENTICATION_REQUIRED _HRESULT_TYPEDEF_(0x800C0009L)
++#define INET_E_NO_VALID_MEDIA _HRESULT_TYPEDEF_(0x800C000AL)
++#define INET_E_CONNECTION_TIMEOUT _HRESULT_TYPEDEF_(0x800C000BL)
++#define INET_E_INVALID_REQUEST _HRESULT_TYPEDEF_(0x800C000CL)
++#define INET_E_UNKNOWN_PROTOCOL _HRESULT_TYPEDEF_(0x800C000DL)
++#define INET_E_SECURITY_PROBLEM _HRESULT_TYPEDEF_(0x800C000EL)
++#define INET_E_CANNOT_LOAD_DATA _HRESULT_TYPEDEF_(0x800C000FL)
++#define INET_E_CANNOT_INSTANTIATE_OBJECT _HRESULT_TYPEDEF_(0x800C0010L)
++#define INET_E_REDIRECT_FAILED _HRESULT_TYPEDEF_(0x800C0014L)
++#define INET_E_REDIRECT_TO_DIR _HRESULT_TYPEDEF_(0x800C0015L)
++#define INET_E_CANNOT_LOCK_REQUEST _HRESULT_TYPEDEF_(0x800C0016L)
++#define INET_E_USE_EXTEND_BINDING _HRESULT_TYPEDEF_(0x800C0017L)
++#define INET_E_TERMINATED_BIND _HRESULT_TYPEDEF_(0x800C0018L)
++#define INET_E_ERROR_FIRST _HRESULT_TYPEDEF_(0x800C0002L)
++#define INET_E_CODE_DOWNLOAD_DECLINED _HRESULT_TYPEDEF_(0x800C0100L)
++#define INET_E_RESULT_DISPATCHED _HRESULT_TYPEDEF_(0x800C0200L)
++#define INET_E_CANNOT_REPLACE_SFP_FILE _HRESULT_TYPEDEF_(0x800C0300L)
++#define INET_E_CODE_INSTALL_SUPPRESSED _HRESULT_TYPEDEF_(0x800C0400L)
++#define INET_E_ERROR_LAST INET_E_CANNOT_REPLACE_SFP_FILE
++
++#ifndef _LPPERSISTMONIKER_DEFINED
++#define _LPPERSISTMONIKER_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0000_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0000_v0_0_s_ifspec;
++#ifndef __IPersistMoniker_INTERFACE_DEFINED__
++#define __IPersistMoniker_INTERFACE_DEFINED__
++  typedef IPersistMoniker *LPPERSISTMONIKER;
++
++  EXTERN_C const IID IID_IPersistMoniker;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IPersistMoniker : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetClassID(CLSID *pClassID) = 0;
++    virtual HRESULT WINAPI IsDirty(void) = 0;
++    virtual HRESULT WINAPI Load(WINBOOL fFullyAvailable,IMoniker *pimkName,LPBC pibc,DWORD grfMode) = 0;
++    virtual HRESULT WINAPI Save(IMoniker *pimkName,LPBC pbc,WINBOOL fRemember) = 0;
++    virtual HRESULT WINAPI SaveCompleted(IMoniker *pimkName,LPBC pibc) = 0;
++    virtual HRESULT WINAPI GetCurMoniker(IMoniker **ppimkName) = 0;
++  };
++#else
++  typedef struct IPersistMonikerVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IPersistMoniker *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IPersistMoniker *This);
++      ULONG (WINAPI *Release)(IPersistMoniker *This);
++      HRESULT (WINAPI *GetClassID)(IPersistMoniker *This,CLSID *pClassID);
++      HRESULT (WINAPI *IsDirty)(IPersistMoniker *This);
++      HRESULT (WINAPI *Load)(IPersistMoniker *This,WINBOOL fFullyAvailable,IMoniker *pimkName,LPBC pibc,DWORD grfMode);
++      HRESULT (WINAPI *Save)(IPersistMoniker *This,IMoniker *pimkName,LPBC pbc,WINBOOL fRemember);
++      HRESULT (WINAPI *SaveCompleted)(IPersistMoniker *This,IMoniker *pimkName,LPBC pibc);
++      HRESULT (WINAPI *GetCurMoniker)(IPersistMoniker *This,IMoniker **ppimkName);
++    END_INTERFACE
++  } IPersistMonikerVtbl;
++  struct IPersistMoniker {
++    CONST_VTBL struct IPersistMonikerVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IPersistMoniker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IPersistMoniker_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IPersistMoniker_Release(This) (This)->lpVtbl->Release(This)
++#define IPersistMoniker_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
++#define IPersistMoniker_IsDirty(This) (This)->lpVtbl->IsDirty(This)
++#define IPersistMoniker_Load(This,fFullyAvailable,pimkName,pibc,grfMode) (This)->lpVtbl->Load(This,fFullyAvailable,pimkName,pibc,grfMode)
++#define IPersistMoniker_Save(This,pimkName,pbc,fRemember) (This)->lpVtbl->Save(This,pimkName,pbc,fRemember)
++#define IPersistMoniker_SaveCompleted(This,pimkName,pibc) (This)->lpVtbl->SaveCompleted(This,pimkName,pibc)
++#define IPersistMoniker_GetCurMoniker(This,ppimkName) (This)->lpVtbl->GetCurMoniker(This,ppimkName)
++#endif
++#endif
++  HRESULT WINAPI IPersistMoniker_GetClassID_Proxy(IPersistMoniker *This,CLSID *pClassID);
++  void __RPC_STUB IPersistMoniker_GetClassID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IPersistMoniker_IsDirty_Proxy(IPersistMoniker *This);
++  void __RPC_STUB IPersistMoniker_IsDirty_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IPersistMoniker_Load_Proxy(IPersistMoniker *This,WINBOOL fFullyAvailable,IMoniker *pimkName,LPBC pibc,DWORD grfMode);
++  void __RPC_STUB IPersistMoniker_Load_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IPersistMoniker_Save_Proxy(IPersistMoniker *This,IMoniker *pimkName,LPBC pbc,WINBOOL fRemember);
++  void __RPC_STUB IPersistMoniker_Save_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IPersistMoniker_SaveCompleted_Proxy(IPersistMoniker *This,IMoniker *pimkName,LPBC pibc);
++  void __RPC_STUB IPersistMoniker_SaveCompleted_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IPersistMoniker_GetCurMoniker_Proxy(IPersistMoniker *This,IMoniker **ppimkName);
++  void __RPC_STUB IPersistMoniker_GetCurMoniker_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPMONIKERPROP_DEFINED
++#define _LPMONIKERPROP_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0178_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0178_v0_0_s_ifspec;
++#ifndef __IMonikerProp_INTERFACE_DEFINED__
++#define __IMonikerProp_INTERFACE_DEFINED__
++  typedef IMonikerProp *LPMONIKERPROP;
++
++  typedef enum __MIDL_IMonikerProp_0001 {
++    MIMETYPEPROP = 0,USE_SRC_URL = 0x1,CLASSIDPROP = 0x2,TRUSTEDDOWNLOADPROP = 0x3,POPUPLEVELPROP = 0x4
++  } MONIKERPROPERTY;
++
++  EXTERN_C const IID IID_IMonikerProp;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IMonikerProp : public IUnknown {
++  public:
++    virtual HRESULT WINAPI PutProperty(MONIKERPROPERTY mkp,LPCWSTR val) = 0;
++  };
++#else
++  typedef struct IMonikerPropVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IMonikerProp *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IMonikerProp *This);
++      ULONG (WINAPI *Release)(IMonikerProp *This);
++      HRESULT (WINAPI *PutProperty)(IMonikerProp *This,MONIKERPROPERTY mkp,LPCWSTR val);
++    END_INTERFACE
++  } IMonikerPropVtbl;
++  struct IMonikerProp {
++    CONST_VTBL struct IMonikerPropVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IMonikerProp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IMonikerProp_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IMonikerProp_Release(This) (This)->lpVtbl->Release(This)
++#define IMonikerProp_PutProperty(This,mkp,val) (This)->lpVtbl->PutProperty(This,mkp,val)
++#endif
++#endif
++  HRESULT WINAPI IMonikerProp_PutProperty_Proxy(IMonikerProp *This,MONIKERPROPERTY mkp,LPCWSTR val);
++  void __RPC_STUB IMonikerProp_PutProperty_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPBINDPROTOCOL_DEFINED
++#define _LPBINDPROTOCOL_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0179_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0179_v0_0_s_ifspec;
++#ifndef __IBindProtocol_INTERFACE_DEFINED__
++#define __IBindProtocol_INTERFACE_DEFINED__
++  typedef IBindProtocol *LPBINDPROTOCOL;
++
++  EXTERN_C const IID IID_IBindProtocol;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IBindProtocol : public IUnknown {
++  public:
++    virtual HRESULT WINAPI CreateBinding(LPCWSTR szUrl,IBindCtx *pbc,IBinding **ppb) = 0;
++  };
++#else
++  typedef struct IBindProtocolVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IBindProtocol *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IBindProtocol *This);
++      ULONG (WINAPI *Release)(IBindProtocol *This);
++      HRESULT (WINAPI *CreateBinding)(IBindProtocol *This,LPCWSTR szUrl,IBindCtx *pbc,IBinding **ppb);
++    END_INTERFACE
++  } IBindProtocolVtbl;
++  struct IBindProtocol {
++    CONST_VTBL struct IBindProtocolVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IBindProtocol_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IBindProtocol_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IBindProtocol_Release(This) (This)->lpVtbl->Release(This)
++#define IBindProtocol_CreateBinding(This,szUrl,pbc,ppb) (This)->lpVtbl->CreateBinding(This,szUrl,pbc,ppb)
++#endif
++#endif
++  HRESULT WINAPI IBindProtocol_CreateBinding_Proxy(IBindProtocol *This,LPCWSTR szUrl,IBindCtx *pbc,IBinding **ppb);
++  void __RPC_STUB IBindProtocol_CreateBinding_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPBINDING_DEFINED
++#define _LPBINDING_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0180_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0180_v0_0_s_ifspec;
++#ifndef __IBinding_INTERFACE_DEFINED__
++#define __IBinding_INTERFACE_DEFINED__
++  typedef IBinding *LPBINDING;
++
++  EXTERN_C const IID IID_IBinding;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IBinding : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Abort(void) = 0;
++    virtual HRESULT WINAPI Suspend(void) = 0;
++    virtual HRESULT WINAPI Resume(void) = 0;
++    virtual HRESULT WINAPI SetPriority(LONG nPriority) = 0;
++    virtual HRESULT WINAPI GetPriority(LONG *pnPriority) = 0;
++    virtual HRESULT WINAPI GetBindResult(CLSID *pclsidProtocol,DWORD *pdwResult,LPOLESTR *pszResult,DWORD *pdwReserved) = 0;
++  };
++#else
++  typedef struct IBindingVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IBinding *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IBinding *This);
++      ULONG (WINAPI *Release)(IBinding *This);
++      HRESULT (WINAPI *Abort)(IBinding *This);
++      HRESULT (WINAPI *Suspend)(IBinding *This);
++      HRESULT (WINAPI *Resume)(IBinding *This);
++      HRESULT (WINAPI *SetPriority)(IBinding *This,LONG nPriority);
++      HRESULT (WINAPI *GetPriority)(IBinding *This,LONG *pnPriority);
++      HRESULT (WINAPI *GetBindResult)(IBinding *This,CLSID *pclsidProtocol,DWORD *pdwResult,LPOLESTR *pszResult,DWORD *pdwReserved);
++    END_INTERFACE
++  } IBindingVtbl;
++  struct IBinding {
++    CONST_VTBL struct IBindingVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IBinding_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IBinding_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IBinding_Release(This) (This)->lpVtbl->Release(This)
++#define IBinding_Abort(This) (This)->lpVtbl->Abort(This)
++#define IBinding_Suspend(This) (This)->lpVtbl->Suspend(This)
++#define IBinding_Resume(This) (This)->lpVtbl->Resume(This)
++#define IBinding_SetPriority(This,nPriority) (This)->lpVtbl->SetPriority(This,nPriority)
++#define IBinding_GetPriority(This,pnPriority) (This)->lpVtbl->GetPriority(This,pnPriority)
++#define IBinding_GetBindResult(This,pclsidProtocol,pdwResult,pszResult,pdwReserved) (This)->lpVtbl->GetBindResult(This,pclsidProtocol,pdwResult,pszResult,pdwReserved)
++#endif
++#endif
++  HRESULT WINAPI IBinding_Abort_Proxy(IBinding *This);
++  void __RPC_STUB IBinding_Abort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBinding_Suspend_Proxy(IBinding *This);
++  void __RPC_STUB IBinding_Suspend_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBinding_Resume_Proxy(IBinding *This);
++  void __RPC_STUB IBinding_Resume_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBinding_SetPriority_Proxy(IBinding *This,LONG nPriority);
++  void __RPC_STUB IBinding_SetPriority_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBinding_GetPriority_Proxy(IBinding *This,LONG *pnPriority);
++  void __RPC_STUB IBinding_GetPriority_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBinding_RemoteGetBindResult_Proxy(IBinding *This,CLSID *pclsidProtocol,DWORD *pdwResult,LPOLESTR *pszResult,DWORD dwReserved);
++  void __RPC_STUB IBinding_RemoteGetBindResult_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPBINDSTATUSCALLBACK_DEFINED
++#define _LPBINDSTATUSCALLBACK_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0181_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0181_v0_0_s_ifspec;
++#ifndef __IBindStatusCallback_INTERFACE_DEFINED__
++#define __IBindStatusCallback_INTERFACE_DEFINED__
++  typedef IBindStatusCallback *LPBINDSTATUSCALLBACK;
++
++  typedef enum __MIDL_IBindStatusCallback_0001 {
++    BINDVERB_GET = 0,BINDVERB_POST = 0x1,BINDVERB_PUT = 0x2,BINDVERB_CUSTOM = 0x3
++  } BINDVERB;
++
++  typedef enum __MIDL_IBindStatusCallback_0002 {
++    BINDINFOF_URLENCODESTGMEDDATA = 0x1,BINDINFOF_URLENCODEDEXTRAINFO = 0x2
++  } BINDINFOF;
++
++  typedef enum __MIDL_IBindStatusCallback_0003 {
++    BINDF_ASYNCHRONOUS = 0x1,BINDF_ASYNCSTORAGE = 0x2,BINDF_NOPROGRESSIVERENDERING = 0x4,BINDF_OFFLINEOPERATION = 0x8,BINDF_GETNEWESTVERSION = 0x10,
++    BINDF_NOWRITECACHE = 0x20,BINDF_NEEDFILE = 0x40,BINDF_PULLDATA = 0x80,BINDF_IGNORESECURITYPROBLEM = 0x100,BINDF_RESYNCHRONIZE = 0x200,
++    BINDF_HYPERLINK = 0x400,BINDF_NO_UI = 0x800,BINDF_SILENTOPERATION = 0x1000,BINDF_PRAGMA_NO_CACHE = 0x2000,BINDF_GETCLASSOBJECT = 0x4000,
++    BINDF_RESERVED_1 = 0x8000,BINDF_FREE_THREADED = 0x10000,BINDF_DIRECT_READ = 0x20000,BINDF_FORMS_SUBMIT = 0x40000,
++    BINDF_GETFROMCACHE_IF_NET_FAIL = 0x80000,BINDF_FROMURLMON = 0x100000,BINDF_FWD_BACK = 0x200000,BINDF_PREFERDEFAULTHANDLER = 0x400000,
++    BINDF_ENFORCERESTRICTED = 0x800000
++  } BINDF;
++
++  typedef enum __MIDL_IBindStatusCallback_0004 {
++    URL_ENCODING_NONE = 0,URL_ENCODING_ENABLE_UTF8 = 0x10000000,URL_ENCODING_DISABLE_UTF8 = 0x20000000
++  } URL_ENCODING;
++
++  typedef struct _tagBINDINFO {
++    ULONG cbSize;
++    LPWSTR szExtraInfo;
++    STGMEDIUM stgmedData;
++    DWORD grfBindInfoF;
++    DWORD dwBindVerb;
++    LPWSTR szCustomVerb;
++    DWORD cbstgmedData;
++    DWORD dwOptions;
++    DWORD dwOptionsFlags;
++    DWORD dwCodePage;
++    SECURITY_ATTRIBUTES securityAttributes;
++    IID iid;
++    IUnknown *pUnk;
++    DWORD dwReserved;
++  } BINDINFO;
++
++  typedef struct _REMSECURITY_ATTRIBUTES {
++    DWORD nLength;
++    DWORD lpSecurityDescriptor;
++    WINBOOL bInheritHandle;
++  } REMSECURITY_ATTRIBUTES;
++
++  typedef struct _REMSECURITY_ATTRIBUTES *PREMSECURITY_ATTRIBUTES;
++  typedef struct _REMSECURITY_ATTRIBUTES *LPREMSECURITY_ATTRIBUTES;
++
++  typedef struct _tagRemBINDINFO {
++    ULONG cbSize;
++    LPWSTR szExtraInfo;
++    DWORD grfBindInfoF;
++    DWORD dwBindVerb;
++    LPWSTR szCustomVerb;
++    DWORD cbstgmedData;
++    DWORD dwOptions;
++    DWORD dwOptionsFlags;
++    DWORD dwCodePage;
++    REMSECURITY_ATTRIBUTES securityAttributes;
++    IID iid;
++    IUnknown *pUnk;
++    DWORD dwReserved;
++  } RemBINDINFO;
++
++  typedef struct tagRemFORMATETC {
++    DWORD cfFormat;
++    DWORD ptd;
++    DWORD dwAspect;
++    LONG lindex;
++    DWORD tymed;
++  } RemFORMATETC;
++
++  typedef struct tagRemFORMATETC *LPREMFORMATETC;
++
++  typedef enum __MIDL_IBindStatusCallback_0005 {
++    BINDINFO_OPTIONS_WININETFLAG = 0x10000,BINDINFO_OPTIONS_ENABLE_UTF8 = 0x20000,BINDINFO_OPTIONS_DISABLE_UTF8 = 0x40000,
++    BINDINFO_OPTIONS_USE_IE_ENCODING = 0x80000,BINDINFO_OPTIONS_BINDTOOBJECT = 0x100000,BINDINFO_OPTIONS_SECURITYOPTOUT = 0x200000,
++    BINDINFO_OPTIONS_IGNOREMIMETEXTPLAIN = 0x400000,BINDINFO_OPTIONS_USEBINDSTRINGCREDS = 0x800000,BINDINFO_OPTIONS_IGNOREHTTPHTTPSREDIRECTS = 0x1000000,
++    BINDINFO_OPTIONS_SHDOCVW_NAVIGATE = 0x80000000
++  } BINDINFO_OPTIONS;
++
++  typedef enum __MIDL_IBindStatusCallback_0006 {
++    BSCF_FIRSTDATANOTIFICATION = 0x1,BSCF_INTERMEDIATEDATANOTIFICATION = 0x2,BSCF_LASTDATANOTIFICATION = 0x4,BSCF_DATAFULLYAVAILABLE = 0x8,
++    BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10
++  } BSCF;
++
++  typedef enum tagBINDSTATUS {
++    BINDSTATUS_FINDINGRESOURCE = 1,BINDSTATUS_CONNECTING = BINDSTATUS_FINDINGRESOURCE + 1,BINDSTATUS_REDIRECTING = BINDSTATUS_CONNECTING + 1,
++    BINDSTATUS_BEGINDOWNLOADDATA = BINDSTATUS_REDIRECTING + 1,BINDSTATUS_DOWNLOADINGDATA = BINDSTATUS_BEGINDOWNLOADDATA + 1,
++    BINDSTATUS_ENDDOWNLOADDATA = BINDSTATUS_DOWNLOADINGDATA + 1,BINDSTATUS_BEGINDOWNLOADCOMPONENTS = BINDSTATUS_ENDDOWNLOADDATA + 1,
++    BINDSTATUS_INSTALLINGCOMPONENTS = BINDSTATUS_BEGINDOWNLOADCOMPONENTS + 1,BINDSTATUS_ENDDOWNLOADCOMPONENTS = BINDSTATUS_INSTALLINGCOMPONENTS + 1,
++    BINDSTATUS_USINGCACHEDCOPY = BINDSTATUS_ENDDOWNLOADCOMPONENTS + 1,BINDSTATUS_SENDINGREQUEST = BINDSTATUS_USINGCACHEDCOPY + 1,
++    BINDSTATUS_CLASSIDAVAILABLE = BINDSTATUS_SENDINGREQUEST + 1,BINDSTATUS_MIMETYPEAVAILABLE = BINDSTATUS_CLASSIDAVAILABLE + 1,
++    BINDSTATUS_CACHEFILENAMEAVAILABLE = BINDSTATUS_MIMETYPEAVAILABLE + 1,BINDSTATUS_BEGINSYNCOPERATION = BINDSTATUS_CACHEFILENAMEAVAILABLE + 1,
++    BINDSTATUS_ENDSYNCOPERATION = BINDSTATUS_BEGINSYNCOPERATION + 1,BINDSTATUS_BEGINUPLOADDATA = BINDSTATUS_ENDSYNCOPERATION + 1,
++    BINDSTATUS_UPLOADINGDATA = BINDSTATUS_BEGINUPLOADDATA + 1,BINDSTATUS_ENDUPLOADDATA = BINDSTATUS_UPLOADINGDATA + 1,
++    BINDSTATUS_PROTOCOLCLASSID = BINDSTATUS_ENDUPLOADDATA + 1,BINDSTATUS_ENCODING = BINDSTATUS_PROTOCOLCLASSID + 1,
++    BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE = BINDSTATUS_ENCODING + 1,BINDSTATUS_CLASSINSTALLLOCATION = BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE + 1,
++    BINDSTATUS_DECODING = BINDSTATUS_CLASSINSTALLLOCATION + 1,BINDSTATUS_LOADINGMIMEHANDLER = BINDSTATUS_DECODING + 1,
++    BINDSTATUS_CONTENTDISPOSITIONATTACH = BINDSTATUS_LOADINGMIMEHANDLER + 1,BINDSTATUS_FILTERREPORTMIMETYPE = BINDSTATUS_CONTENTDISPOSITIONATTACH + 1,
++    BINDSTATUS_CLSIDCANINSTANTIATE = BINDSTATUS_FILTERREPORTMIMETYPE + 1,BINDSTATUS_IUNKNOWNAVAILABLE = BINDSTATUS_CLSIDCANINSTANTIATE + 1,
++    BINDSTATUS_DIRECTBIND = BINDSTATUS_IUNKNOWNAVAILABLE + 1,BINDSTATUS_RAWMIMETYPE = BINDSTATUS_DIRECTBIND + 1,
++    BINDSTATUS_PROXYDETECTING = BINDSTATUS_RAWMIMETYPE + 1,BINDSTATUS_ACCEPTRANGES = BINDSTATUS_PROXYDETECTING + 1,
++    BINDSTATUS_COOKIE_SENT = BINDSTATUS_ACCEPTRANGES + 1,BINDSTATUS_COMPACT_POLICY_RECEIVED = BINDSTATUS_COOKIE_SENT + 1,
++    BINDSTATUS_COOKIE_SUPPRESSED = BINDSTATUS_COMPACT_POLICY_RECEIVED + 1,BINDSTATUS_COOKIE_STATE_UNKNOWN = BINDSTATUS_COOKIE_SUPPRESSED + 1,
++    BINDSTATUS_COOKIE_STATE_ACCEPT = BINDSTATUS_COOKIE_STATE_UNKNOWN + 1,BINDSTATUS_COOKIE_STATE_REJECT = BINDSTATUS_COOKIE_STATE_ACCEPT + 1,
++    BINDSTATUS_COOKIE_STATE_PROMPT = BINDSTATUS_COOKIE_STATE_REJECT + 1,BINDSTATUS_COOKIE_STATE_LEASH = BINDSTATUS_COOKIE_STATE_PROMPT + 1,
++    BINDSTATUS_COOKIE_STATE_DOWNGRADE = BINDSTATUS_COOKIE_STATE_LEASH + 1,BINDSTATUS_POLICY_HREF = BINDSTATUS_COOKIE_STATE_DOWNGRADE + 1,
++    BINDSTATUS_P3P_HEADER = BINDSTATUS_POLICY_HREF + 1,BINDSTATUS_SESSION_COOKIE_RECEIVED = BINDSTATUS_P3P_HEADER + 1,
++    BINDSTATUS_PERSISTENT_COOKIE_RECEIVED = BINDSTATUS_SESSION_COOKIE_RECEIVED + 1,
++    BINDSTATUS_SESSION_COOKIES_ALLOWED = BINDSTATUS_PERSISTENT_COOKIE_RECEIVED + 1,BINDSTATUS_CACHECONTROL = BINDSTATUS_SESSION_COOKIES_ALLOWED + 1,
++    BINDSTATUS_CONTENTDISPOSITIONFILENAME = BINDSTATUS_CACHECONTROL + 1,BINDSTATUS_MIMETEXTPLAINMISMATCH = BINDSTATUS_CONTENTDISPOSITIONFILENAME + 1,
++    BINDSTATUS_PUBLISHERAVAILABLE = BINDSTATUS_MIMETEXTPLAINMISMATCH + 1,BINDSTATUS_DISPLAYNAMEAVAILABLE = BINDSTATUS_PUBLISHERAVAILABLE + 1
++  } BINDSTATUS;
++
++  EXTERN_C const IID IID_IBindStatusCallback;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IBindStatusCallback : public IUnknown {
++  public:
++    virtual HRESULT WINAPI OnStartBinding(DWORD dwReserved,IBinding *pib) = 0;
++    virtual HRESULT WINAPI GetPriority(LONG *pnPriority) = 0;
++    virtual HRESULT WINAPI OnLowResource(DWORD reserved) = 0;
++    virtual HRESULT WINAPI OnProgress(ULONG ulProgress,ULONG ulProgressMax,ULONG ulStatusCode,LPCWSTR szStatusText) = 0;
++    virtual HRESULT WINAPI OnStopBinding(HRESULT hresult,LPCWSTR szError) = 0;
++    virtual HRESULT WINAPI GetBindInfo(DWORD *grfBINDF,BINDINFO *pbindinfo) = 0;
++    virtual HRESULT WINAPI OnDataAvailable(DWORD grfBSCF,DWORD dwSize,FORMATETC *pformatetc,STGMEDIUM *pstgmed) = 0;
++    virtual HRESULT WINAPI OnObjectAvailable(REFIID riid,IUnknown *punk) = 0;
++  };
++#else
++  typedef struct IBindStatusCallbackVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IBindStatusCallback *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IBindStatusCallback *This);
++      ULONG (WINAPI *Release)(IBindStatusCallback *This);
++      HRESULT (WINAPI *OnStartBinding)(IBindStatusCallback *This,DWORD dwReserved,IBinding *pib);
++      HRESULT (WINAPI *GetPriority)(IBindStatusCallback *This,LONG *pnPriority);
++      HRESULT (WINAPI *OnLowResource)(IBindStatusCallback *This,DWORD reserved);
++      HRESULT (WINAPI *OnProgress)(IBindStatusCallback *This,ULONG ulProgress,ULONG ulProgressMax,ULONG ulStatusCode,LPCWSTR szStatusText);
++      HRESULT (WINAPI *OnStopBinding)(IBindStatusCallback *This,HRESULT hresult,LPCWSTR szError);
++      HRESULT (WINAPI *GetBindInfo)(IBindStatusCallback *This,DWORD *grfBINDF,BINDINFO *pbindinfo);
++      HRESULT (WINAPI *OnDataAvailable)(IBindStatusCallback *This,DWORD grfBSCF,DWORD dwSize,FORMATETC *pformatetc,STGMEDIUM *pstgmed);
++      HRESULT (WINAPI *OnObjectAvailable)(IBindStatusCallback *This,REFIID riid,IUnknown *punk);
++    END_INTERFACE
++  } IBindStatusCallbackVtbl;
++  struct IBindStatusCallback {
++    CONST_VTBL struct IBindStatusCallbackVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IBindStatusCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IBindStatusCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IBindStatusCallback_Release(This) (This)->lpVtbl->Release(This)
++#define IBindStatusCallback_OnStartBinding(This,dwReserved,pib) (This)->lpVtbl->OnStartBinding(This,dwReserved,pib)
++#define IBindStatusCallback_GetPriority(This,pnPriority) (This)->lpVtbl->GetPriority(This,pnPriority)
++#define IBindStatusCallback_OnLowResource(This,reserved) (This)->lpVtbl->OnLowResource(This,reserved)
++#define IBindStatusCallback_OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText) (This)->lpVtbl->OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText)
++#define IBindStatusCallback_OnStopBinding(This,hresult,szError) (This)->lpVtbl->OnStopBinding(This,hresult,szError)
++#define IBindStatusCallback_GetBindInfo(This,grfBINDF,pbindinfo) (This)->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo)
++#define IBindStatusCallback_OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed) (This)->lpVtbl->OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed)
++#define IBindStatusCallback_OnObjectAvailable(This,riid,punk) (This)->lpVtbl->OnObjectAvailable(This,riid,punk)
++#endif
++#endif
++  HRESULT WINAPI IBindStatusCallback_OnStartBinding_Proxy(IBindStatusCallback *This,DWORD dwReserved,IBinding *pib);
++  void __RPC_STUB IBindStatusCallback_OnStartBinding_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBindStatusCallback_GetPriority_Proxy(IBindStatusCallback *This,LONG *pnPriority);
++  void __RPC_STUB IBindStatusCallback_GetPriority_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBindStatusCallback_OnLowResource_Proxy(IBindStatusCallback *This,DWORD reserved);
++  void __RPC_STUB IBindStatusCallback_OnLowResource_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBindStatusCallback_OnProgress_Proxy(IBindStatusCallback *This,ULONG ulProgress,ULONG ulProgressMax,ULONG ulStatusCode,LPCWSTR szStatusText);
++  void __RPC_STUB IBindStatusCallback_OnProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBindStatusCallback_OnStopBinding_Proxy(IBindStatusCallback *This,HRESULT hresult,LPCWSTR szError);
++  void __RPC_STUB IBindStatusCallback_OnStopBinding_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBindStatusCallback_RemoteGetBindInfo_Proxy(IBindStatusCallback *This,DWORD *grfBINDF,RemBINDINFO *pbindinfo,RemSTGMEDIUM *pstgmed);
++  void __RPC_STUB IBindStatusCallback_RemoteGetBindInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBindStatusCallback_RemoteOnDataAvailable_Proxy(IBindStatusCallback *This,DWORD grfBSCF,DWORD dwSize,RemFORMATETC *pformatetc,RemSTGMEDIUM *pstgmed);
++  void __RPC_STUB IBindStatusCallback_RemoteOnDataAvailable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBindStatusCallback_OnObjectAvailable_Proxy(IBindStatusCallback *This,REFIID riid,IUnknown *punk);
++  void __RPC_STUB IBindStatusCallback_OnObjectAvailable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPAUTHENTICATION_DEFINED
++#define _LPAUTHENTICATION_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0182_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0182_v0_0_s_ifspec;
++#ifndef __IAuthenticate_INTERFACE_DEFINED__
++#define __IAuthenticate_INTERFACE_DEFINED__
++  typedef IAuthenticate *LPAUTHENTICATION;
++
++  EXTERN_C const IID IID_IAuthenticate;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IAuthenticate : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Authenticate(HWND *phwnd,LPWSTR *pszUsername,LPWSTR *pszPassword) = 0;
++  };
++#else
++  typedef struct IAuthenticateVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IAuthenticate *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IAuthenticate *This);
++      ULONG (WINAPI *Release)(IAuthenticate *This);
++      HRESULT (WINAPI *Authenticate)(IAuthenticate *This,HWND *phwnd,LPWSTR *pszUsername,LPWSTR *pszPassword);
++    END_INTERFACE
++  } IAuthenticateVtbl;
++  struct IAuthenticate {
++    CONST_VTBL struct IAuthenticateVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IAuthenticate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IAuthenticate_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IAuthenticate_Release(This) (This)->lpVtbl->Release(This)
++#define IAuthenticate_Authenticate(This,phwnd,pszUsername,pszPassword) (This)->lpVtbl->Authenticate(This,phwnd,pszUsername,pszPassword)
++#endif
++#endif
++  HRESULT WINAPI IAuthenticate_Authenticate_Proxy(IAuthenticate *This,HWND *phwnd,LPWSTR *pszUsername,LPWSTR *pszPassword);
++  void __RPC_STUB IAuthenticate_Authenticate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPHTTPNEGOTIATE_DEFINED
++#define _LPHTTPNEGOTIATE_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0183_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0183_v0_0_s_ifspec;
++#ifndef __IHttpNegotiate_INTERFACE_DEFINED__
++#define __IHttpNegotiate_INTERFACE_DEFINED__
++  typedef IHttpNegotiate *LPHTTPNEGOTIATE;
++
++  EXTERN_C const IID IID_IHttpNegotiate;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IHttpNegotiate : public IUnknown {
++  public:
++    virtual HRESULT WINAPI BeginningTransaction(LPCWSTR szURL,LPCWSTR szHeaders,DWORD dwReserved,LPWSTR *pszAdditionalHeaders) = 0;
++    virtual HRESULT WINAPI OnResponse(DWORD dwResponseCode,LPCWSTR szResponseHeaders,LPCWSTR szRequestHeaders,LPWSTR *pszAdditionalRequestHeaders) = 0;
++  };
++#else
++  typedef struct IHttpNegotiateVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IHttpNegotiate *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IHttpNegotiate *This);
++      ULONG (WINAPI *Release)(IHttpNegotiate *This);
++      HRESULT (WINAPI *BeginningTransaction)(IHttpNegotiate *This,LPCWSTR szURL,LPCWSTR szHeaders,DWORD dwReserved,LPWSTR *pszAdditionalHeaders);
++      HRESULT (WINAPI *OnResponse)(IHttpNegotiate *This,DWORD dwResponseCode,LPCWSTR szResponseHeaders,LPCWSTR szRequestHeaders,LPWSTR *pszAdditionalRequestHeaders);
++    END_INTERFACE
++  } IHttpNegotiateVtbl;
++  struct IHttpNegotiate {
++    CONST_VTBL struct IHttpNegotiateVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IHttpNegotiate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IHttpNegotiate_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IHttpNegotiate_Release(This) (This)->lpVtbl->Release(This)
++#define IHttpNegotiate_BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders) (This)->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders)
++#define IHttpNegotiate_OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders) (This)->lpVtbl->OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders)
++#endif
++#endif
++  HRESULT WINAPI IHttpNegotiate_BeginningTransaction_Proxy(IHttpNegotiate *This,LPCWSTR szURL,LPCWSTR szHeaders,DWORD dwReserved,LPWSTR *pszAdditionalHeaders);
++  void __RPC_STUB IHttpNegotiate_BeginningTransaction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IHttpNegotiate_OnResponse_Proxy(IHttpNegotiate *This,DWORD dwResponseCode,LPCWSTR szResponseHeaders,LPCWSTR szRequestHeaders,LPWSTR *pszAdditionalRequestHeaders);
++  void __RPC_STUB IHttpNegotiate_OnResponse_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPHTTPNEGOTIATE2_DEFINED
++#define _LPHTTPNEGOTIATE2_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0184_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0184_v0_0_s_ifspec;
++#ifndef __IHttpNegotiate2_INTERFACE_DEFINED__
++#define __IHttpNegotiate2_INTERFACE_DEFINED__
++  typedef IHttpNegotiate2 *LPHTTPNEGOTIATE2;
++
++  EXTERN_C const IID IID_IHttpNegotiate2;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IHttpNegotiate2 : public IHttpNegotiate {
++  public:
++    virtual HRESULT WINAPI GetRootSecurityId(BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved) = 0;
++  };
++#else
++  typedef struct IHttpNegotiate2Vtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IHttpNegotiate2 *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IHttpNegotiate2 *This);
++      ULONG (WINAPI *Release)(IHttpNegotiate2 *This);
++      HRESULT (WINAPI *BeginningTransaction)(IHttpNegotiate2 *This,LPCWSTR szURL,LPCWSTR szHeaders,DWORD dwReserved,LPWSTR *pszAdditionalHeaders);
++      HRESULT (WINAPI *OnResponse)(IHttpNegotiate2 *This,DWORD dwResponseCode,LPCWSTR szResponseHeaders,LPCWSTR szRequestHeaders,LPWSTR *pszAdditionalRequestHeaders);
++      HRESULT (WINAPI *GetRootSecurityId)(IHttpNegotiate2 *This,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved);
++    END_INTERFACE
++  } IHttpNegotiate2Vtbl;
++  struct IHttpNegotiate2 {
++    CONST_VTBL struct IHttpNegotiate2Vtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IHttpNegotiate2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IHttpNegotiate2_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IHttpNegotiate2_Release(This) (This)->lpVtbl->Release(This)
++#define IHttpNegotiate2_BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders) (This)->lpVtbl->BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders)
++#define IHttpNegotiate2_OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders) (This)->lpVtbl->OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders)
++#define IHttpNegotiate2_GetRootSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetRootSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved)
++#endif
++#endif
++  HRESULT WINAPI IHttpNegotiate2_GetRootSecurityId_Proxy(IHttpNegotiate2 *This,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved);
++  void __RPC_STUB IHttpNegotiate2_GetRootSecurityId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPWININETFILESTREAM_DEFINED
++#define _LPWININETFILESTREAM_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0185_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0185_v0_0_s_ifspec;
++#ifndef __IWinInetFileStream_INTERFACE_DEFINED__
++#define __IWinInetFileStream_INTERFACE_DEFINED__
++  typedef IWinInetFileStream *LPWININETFILESTREAM;
++
++  EXTERN_C const IID IID_IWinInetFileStream;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IWinInetFileStream : public IUnknown {
++  public:
++    virtual HRESULT WINAPI SetHandleForUnlock(DWORD_PTR hWinInetLockHandle,DWORD_PTR dwReserved) = 0;
++    virtual HRESULT WINAPI SetDeleteFile(DWORD_PTR dwReserved) = 0;
++  };
++#else
++  typedef struct IWinInetFileStreamVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IWinInetFileStream *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IWinInetFileStream *This);
++      ULONG (WINAPI *Release)(IWinInetFileStream *This);
++      HRESULT (WINAPI *SetHandleForUnlock)(IWinInetFileStream *This,DWORD_PTR hWinInetLockHandle,DWORD_PTR dwReserved);
++      HRESULT (WINAPI *SetDeleteFile)(IWinInetFileStream *This,DWORD_PTR dwReserved);
++    END_INTERFACE
++  } IWinInetFileStreamVtbl;
++  struct IWinInetFileStream {
++    CONST_VTBL struct IWinInetFileStreamVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IWinInetFileStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IWinInetFileStream_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IWinInetFileStream_Release(This) (This)->lpVtbl->Release(This)
++#define IWinInetFileStream_SetHandleForUnlock(This,hWinInetLockHandle,dwReserved) (This)->lpVtbl->SetHandleForUnlock(This,hWinInetLockHandle,dwReserved)
++#define IWinInetFileStream_SetDeleteFile(This,dwReserved) (This)->lpVtbl->SetDeleteFile(This,dwReserved)
++#endif
++#endif
++  HRESULT WINAPI IWinInetFileStream_SetHandleForUnlock_Proxy(IWinInetFileStream *This,DWORD_PTR hWinInetLockHandle,DWORD_PTR dwReserved);
++  void __RPC_STUB IWinInetFileStream_SetHandleForUnlock_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IWinInetFileStream_SetDeleteFile_Proxy(IWinInetFileStream *This,DWORD_PTR dwReserved);
++  void __RPC_STUB IWinInetFileStream_SetDeleteFile_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPWINDOWFORBINDINGUI_DEFINED
++#define _LPWINDOWFORBINDINGUI_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0186_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0186_v0_0_s_ifspec;
++#ifndef __IWindowForBindingUI_INTERFACE_DEFINED__
++#define __IWindowForBindingUI_INTERFACE_DEFINED__
++  typedef IWindowForBindingUI *LPWINDOWFORBINDINGUI;
++
++  EXTERN_C const IID IID_IWindowForBindingUI;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IWindowForBindingUI : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetWindow(REFGUID rguidReason,HWND *phwnd) = 0;
++  };
++#else
++  typedef struct IWindowForBindingUIVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IWindowForBindingUI *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IWindowForBindingUI *This);
++      ULONG (WINAPI *Release)(IWindowForBindingUI *This);
++      HRESULT (WINAPI *GetWindow)(IWindowForBindingUI *This,REFGUID rguidReason,HWND *phwnd);
++    END_INTERFACE
++  } IWindowForBindingUIVtbl;
++  struct IWindowForBindingUI {
++    CONST_VTBL struct IWindowForBindingUIVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IWindowForBindingUI_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IWindowForBindingUI_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IWindowForBindingUI_Release(This) (This)->lpVtbl->Release(This)
++#define IWindowForBindingUI_GetWindow(This,rguidReason,phwnd) (This)->lpVtbl->GetWindow(This,rguidReason,phwnd)
++#endif
++#endif
++  HRESULT WINAPI IWindowForBindingUI_GetWindow_Proxy(IWindowForBindingUI *This,REFGUID rguidReason,HWND *phwnd);
++  void __RPC_STUB IWindowForBindingUI_GetWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPCODEINSTALL_DEFINED
++#define _LPCODEINSTALL_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0187_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0187_v0_0_s_ifspec;
++#ifndef __ICodeInstall_INTERFACE_DEFINED__
++#define __ICodeInstall_INTERFACE_DEFINED__
++  typedef ICodeInstall *LPCODEINSTALL;
++
++  typedef enum __MIDL_ICodeInstall_0001 {
++    CIP_DISK_FULL = 0,CIP_ACCESS_DENIED = CIP_DISK_FULL + 1,CIP_NEWER_VERSION_EXISTS = CIP_ACCESS_DENIED + 1,
++    CIP_OLDER_VERSION_EXISTS = CIP_NEWER_VERSION_EXISTS + 1,CIP_NAME_CONFLICT = CIP_OLDER_VERSION_EXISTS + 1,
++    CIP_TRUST_VERIFICATION_COMPONENT_MISSING = CIP_NAME_CONFLICT + 1,CIP_EXE_SELF_REGISTERATION_TIMEOUT = CIP_TRUST_VERIFICATION_COMPONENT_MISSING + 1,
++    CIP_UNSAFE_TO_ABORT = CIP_EXE_SELF_REGISTERATION_TIMEOUT + 1,CIP_NEED_REBOOT = CIP_UNSAFE_TO_ABORT + 1,
++    CIP_NEED_REBOOT_UI_PERMISSION = CIP_NEED_REBOOT + 1
++  } CIP_STATUS;
++
++  EXTERN_C const IID IID_ICodeInstall;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ICodeInstall : public IWindowForBindingUI {
++  public:
++    virtual HRESULT WINAPI OnCodeInstallProblem(ULONG ulStatusCode,LPCWSTR szDestination,LPCWSTR szSource,DWORD dwReserved) = 0;
++  };
++#else
++  typedef struct ICodeInstallVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ICodeInstall *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ICodeInstall *This);
++      ULONG (WINAPI *Release)(ICodeInstall *This);
++      HRESULT (WINAPI *GetWindow)(ICodeInstall *This,REFGUID rguidReason,HWND *phwnd);
++      HRESULT (WINAPI *OnCodeInstallProblem)(ICodeInstall *This,ULONG ulStatusCode,LPCWSTR szDestination,LPCWSTR szSource,DWORD dwReserved);
++    END_INTERFACE
++  } ICodeInstallVtbl;
++  struct ICodeInstall {
++    CONST_VTBL struct ICodeInstallVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ICodeInstall_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ICodeInstall_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ICodeInstall_Release(This) (This)->lpVtbl->Release(This)
++#define ICodeInstall_GetWindow(This,rguidReason,phwnd) (This)->lpVtbl->GetWindow(This,rguidReason,phwnd)
++#define ICodeInstall_OnCodeInstallProblem(This,ulStatusCode,szDestination,szSource,dwReserved) (This)->lpVtbl->OnCodeInstallProblem(This,ulStatusCode,szDestination,szSource,dwReserved)
++#endif
++#endif
++  HRESULT WINAPI ICodeInstall_OnCodeInstallProblem_Proxy(ICodeInstall *This,ULONG ulStatusCode,LPCWSTR szDestination,LPCWSTR szSource,DWORD dwReserved);
++  void __RPC_STUB ICodeInstall_OnCodeInstallProblem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPWININETINFO_DEFINED
++#define _LPWININETINFO_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0188_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0188_v0_0_s_ifspec;
++#ifndef __IWinInetInfo_INTERFACE_DEFINED__
++#define __IWinInetInfo_INTERFACE_DEFINED__
++  typedef IWinInetInfo *LPWININETINFO;
++
++  EXTERN_C const IID IID_IWinInetInfo;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IWinInetInfo : public IUnknown {
++  public:
++    virtual HRESULT WINAPI QueryOption(DWORD dwOption,LPVOID pBuffer,DWORD *pcbBuf) = 0;
++  };
++#else
++  typedef struct IWinInetInfoVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IWinInetInfo *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IWinInetInfo *This);
++      ULONG (WINAPI *Release)(IWinInetInfo *This);
++      HRESULT (WINAPI *QueryOption)(IWinInetInfo *This,DWORD dwOption,LPVOID pBuffer,DWORD *pcbBuf);
++    END_INTERFACE
++  } IWinInetInfoVtbl;
++  struct IWinInetInfo {
++    CONST_VTBL struct IWinInetInfoVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IWinInetInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IWinInetInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IWinInetInfo_Release(This) (This)->lpVtbl->Release(This)
++#define IWinInetInfo_QueryOption(This,dwOption,pBuffer,pcbBuf) (This)->lpVtbl->QueryOption(This,dwOption,pBuffer,pcbBuf)
++#endif
++#endif
++  HRESULT WINAPI IWinInetInfo_RemoteQueryOption_Proxy(IWinInetInfo *This,DWORD dwOption,BYTE *pBuffer,DWORD *pcbBuf);
++  void __RPC_STUB IWinInetInfo_RemoteQueryOption_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++#define WININETINFO_OPTION_LOCK_HANDLE 65534
++
++#ifndef _LPHTTPSECURITY_DEFINED
++#define _LPHTTPSECURITY_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0189_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0189_v0_0_s_ifspec;
++#ifndef __IHttpSecurity_INTERFACE_DEFINED__
++#define __IHttpSecurity_INTERFACE_DEFINED__
++
++  typedef IHttpSecurity *LPHTTPSECURITY;
++
++  EXTERN_C const IID IID_IHttpSecurity;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IHttpSecurity : public IWindowForBindingUI {
++  public:
++    virtual HRESULT WINAPI OnSecurityProblem(DWORD dwProblem) = 0;
++  };
++#else
++  typedef struct IHttpSecurityVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IHttpSecurity *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IHttpSecurity *This);
++      ULONG (WINAPI *Release)(IHttpSecurity *This);
++      HRESULT (WINAPI *GetWindow)(IHttpSecurity *This,REFGUID rguidReason,HWND *phwnd);
++      HRESULT (WINAPI *OnSecurityProblem)(IHttpSecurity *This,DWORD dwProblem);
++    END_INTERFACE
++  } IHttpSecurityVtbl;
++  struct IHttpSecurity {
++    CONST_VTBL struct IHttpSecurityVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IHttpSecurity_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IHttpSecurity_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IHttpSecurity_Release(This) (This)->lpVtbl->Release(This)
++#define IHttpSecurity_GetWindow(This,rguidReason,phwnd) (This)->lpVtbl->GetWindow(This,rguidReason,phwnd)
++#define IHttpSecurity_OnSecurityProblem(This,dwProblem) (This)->lpVtbl->OnSecurityProblem(This,dwProblem)
++#endif
++#endif
++  HRESULT WINAPI IHttpSecurity_OnSecurityProblem_Proxy(IHttpSecurity *This,DWORD dwProblem);
++  void __RPC_STUB IHttpSecurity_OnSecurityProblem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPWININETHTTPINFO_DEFINED
++#define _LPWININETHTTPINFO_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0190_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0190_v0_0_s_ifspec;
++#ifndef __IWinInetHttpInfo_INTERFACE_DEFINED__
++#define __IWinInetHttpInfo_INTERFACE_DEFINED__
++  typedef IWinInetHttpInfo *LPWININETHTTPINFO;
++
++  EXTERN_C const IID IID_IWinInetHttpInfo;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IWinInetHttpInfo : public IWinInetInfo {
++  public:
++    virtual HRESULT WINAPI QueryInfo(DWORD dwOption,LPVOID pBuffer,DWORD *pcbBuf,DWORD *pdwFlags,DWORD *pdwReserved) = 0;
++  };
++#else
++  typedef struct IWinInetHttpInfoVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IWinInetHttpInfo *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IWinInetHttpInfo *This);
++      ULONG (WINAPI *Release)(IWinInetHttpInfo *This);
++      HRESULT (WINAPI *QueryOption)(IWinInetHttpInfo *This,DWORD dwOption,LPVOID pBuffer,DWORD *pcbBuf);
++      HRESULT (WINAPI *QueryInfo)(IWinInetHttpInfo *This,DWORD dwOption,LPVOID pBuffer,DWORD *pcbBuf,DWORD *pdwFlags,DWORD *pdwReserved);
++    END_INTERFACE
++  } IWinInetHttpInfoVtbl;
++  struct IWinInetHttpInfo {
++    CONST_VTBL struct IWinInetHttpInfoVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IWinInetHttpInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IWinInetHttpInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IWinInetHttpInfo_Release(This) (This)->lpVtbl->Release(This)
++#define IWinInetHttpInfo_QueryOption(This,dwOption,pBuffer,pcbBuf) (This)->lpVtbl->QueryOption(This,dwOption,pBuffer,pcbBuf)
++#define IWinInetHttpInfo_QueryInfo(This,dwOption,pBuffer,pcbBuf,pdwFlags,pdwReserved) (This)->lpVtbl->QueryInfo(This,dwOption,pBuffer,pcbBuf,pdwFlags,pdwReserved)
++#endif
++#endif
++  HRESULT WINAPI IWinInetHttpInfo_RemoteQueryInfo_Proxy(IWinInetHttpInfo *This,DWORD dwOption,BYTE *pBuffer,DWORD *pcbBuf,DWORD *pdwFlags,DWORD *pdwReserved);
++  void __RPC_STUB IWinInetHttpInfo_RemoteQueryInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPWININETCACHEHINTS_DEFINED
++#define _LPWININETCACHEHINTS_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0191_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0191_v0_0_s_ifspec;
++#ifndef __IWinInetCacheHints_INTERFACE_DEFINED__
++#define __IWinInetCacheHints_INTERFACE_DEFINED__
++  typedef IWinInetCacheHints *LPWININETCACHEHINTS;
++
++  EXTERN_C const IID IID_IWinInetCacheHints;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IWinInetCacheHints : public IUnknown {
++  public:
++    virtual HRESULT WINAPI SetCacheExtension(LPCWSTR pwzExt,LPVOID pszCacheFile,DWORD *pcbCacheFile,DWORD *pdwWinInetError,DWORD *pdwReserved) = 0;
++  };
++#else
++  typedef struct IWinInetCacheHintsVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IWinInetCacheHints *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IWinInetCacheHints *This);
++      ULONG (WINAPI *Release)(IWinInetCacheHints *This);
++      HRESULT (WINAPI *SetCacheExtension)(IWinInetCacheHints *This,LPCWSTR pwzExt,LPVOID pszCacheFile,DWORD *pcbCacheFile,DWORD *pdwWinInetError,DWORD *pdwReserved);
++    END_INTERFACE
++  } IWinInetCacheHintsVtbl;
++  struct IWinInetCacheHints {
++    CONST_VTBL struct IWinInetCacheHintsVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IWinInetCacheHints_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IWinInetCacheHints_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IWinInetCacheHints_Release(This) (This)->lpVtbl->Release(This)
++#define IWinInetCacheHints_SetCacheExtension(This,pwzExt,pszCacheFile,pcbCacheFile,pdwWinInetError,pdwReserved) (This)->lpVtbl->SetCacheExtension(This,pwzExt,pszCacheFile,pcbCacheFile,pdwWinInetError,pdwReserved)
++#endif
++#endif
++  HRESULT WINAPI IWinInetCacheHints_SetCacheExtension_Proxy(IWinInetCacheHints *This,LPCWSTR pwzExt,LPVOID pszCacheFile,DWORD *pcbCacheFile,DWORD *pdwWinInetError,DWORD *pdwReserved);
++  void __RPC_STUB IWinInetCacheHints_SetCacheExtension_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#define SID_IBindHost IID_IBindHost
++#define SID_SBindHost IID_IBindHost
++#ifndef _LPBINDHOST_DEFINED
++#define _LPBINDHOST_DEFINED
++  EXTERN_C const GUID SID_BindHost;
++
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0192_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0192_v0_0_s_ifspec;
++#ifndef __IBindHost_INTERFACE_DEFINED__
++#define __IBindHost_INTERFACE_DEFINED__
++  typedef IBindHost *LPBINDHOST;
++
++  EXTERN_C const IID IID_IBindHost;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IBindHost : public IUnknown {
++  public:
++    virtual HRESULT WINAPI CreateMoniker(LPOLESTR szName,IBindCtx *pBC,IMoniker **ppmk,DWORD dwReserved) = 0;
++    virtual HRESULT WINAPI MonikerBindToStorage(IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,void **ppvObj) = 0;
++    virtual HRESULT WINAPI MonikerBindToObject(IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,void **ppvObj) = 0;
++  };
++#else
++  typedef struct IBindHostVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IBindHost *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IBindHost *This);
++      ULONG (WINAPI *Release)(IBindHost *This);
++      HRESULT (WINAPI *CreateMoniker)(IBindHost *This,LPOLESTR szName,IBindCtx *pBC,IMoniker **ppmk,DWORD dwReserved);
++      HRESULT (WINAPI *MonikerBindToStorage)(IBindHost *This,IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,void **ppvObj);
++      HRESULT (WINAPI *MonikerBindToObject)(IBindHost *This,IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,void **ppvObj);
++    END_INTERFACE
++  } IBindHostVtbl;
++  struct IBindHost {
++    CONST_VTBL struct IBindHostVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IBindHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IBindHost_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IBindHost_Release(This) (This)->lpVtbl->Release(This)
++#define IBindHost_CreateMoniker(This,szName,pBC,ppmk,dwReserved) (This)->lpVtbl->CreateMoniker(This,szName,pBC,ppmk,dwReserved)
++#define IBindHost_MonikerBindToStorage(This,pMk,pBC,pBSC,riid,ppvObj) (This)->lpVtbl->MonikerBindToStorage(This,pMk,pBC,pBSC,riid,ppvObj)
++#define IBindHost_MonikerBindToObject(This,pMk,pBC,pBSC,riid,ppvObj) (This)->lpVtbl->MonikerBindToObject(This,pMk,pBC,pBSC,riid,ppvObj)
++#endif
++#endif
++  HRESULT WINAPI IBindHost_CreateMoniker_Proxy(IBindHost *This,LPOLESTR szName,IBindCtx *pBC,IMoniker **ppmk,DWORD dwReserved);
++  void __RPC_STUB IBindHost_CreateMoniker_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBindHost_RemoteMonikerBindToStorage_Proxy(IBindHost *This,IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,IUnknown **ppvObj);
++  void __RPC_STUB IBindHost_RemoteMonikerBindToStorage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IBindHost_RemoteMonikerBindToObject_Proxy(IBindHost *This,IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,IUnknown **ppvObj);
++  void __RPC_STUB IBindHost_RemoteMonikerBindToObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#define URLOSTRM_USECACHEDCOPY_ONLY 0x1
++#define URLOSTRM_USECACHEDCOPY 0x2
++#define URLOSTRM_GETNEWESTVERSION 0x3
++
++  struct IBindStatusCallback;
++
++  STDAPI HlinkSimpleNavigateToString(LPCWSTR szTarget,LPCWSTR szLocation,LPCWSTR szTargetFrameName,IUnknown *pUnk,IBindCtx *pbc,IBindStatusCallback *,DWORD grfHLNF,DWORD dwReserved);
++  STDAPI HlinkSimpleNavigateToMoniker(IMoniker *pmkTarget,LPCWSTR szLocation,LPCWSTR szTargetFrameName,IUnknown *pUnk,IBindCtx *pbc,IBindStatusCallback *,DWORD grfHLNF,DWORD dwReserved);
++  STDAPI URLOpenStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
++  STDAPI URLOpenStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
++  STDAPI URLOpenPullStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
++  STDAPI URLOpenPullStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
++  STDAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
++  STDAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
++  STDAPI URLDownloadToCacheFileA(LPUNKNOWN,LPCSTR,LPTSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK);
++  STDAPI URLDownloadToCacheFileW(LPUNKNOWN,LPCWSTR,LPWSTR,DWORD,DWORD,LPBINDSTATUSCALLBACK);
++  STDAPI URLOpenBlockingStreamA(LPUNKNOWN,LPCSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);
++  STDAPI URLOpenBlockingStreamW(LPUNKNOWN,LPCWSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);
++
++#ifdef UNICODE
++#define URLOpenStream URLOpenStreamW
++#define URLOpenPullStream URLOpenPullStreamW
++#define URLDownloadToFile URLDownloadToFileW
++#define URLDownloadToCacheFile URLDownloadToCacheFileW
++#define URLOpenBlockingStream URLOpenBlockingStreamW
++#else
++#define URLOpenStream URLOpenStreamA
++#define URLOpenPullStream URLOpenPullStreamA
++#define URLDownloadToFile URLDownloadToFileA
++#define URLDownloadToCacheFile URLDownloadToCacheFileA
++#define URLOpenBlockingStream URLOpenBlockingStreamA
++#endif
++
++  STDAPI HlinkGoBack(IUnknown *pUnk);
++  STDAPI HlinkGoForward(IUnknown *pUnk);
++  STDAPI HlinkNavigateString(IUnknown *pUnk,LPCWSTR szTarget);
++  STDAPI HlinkNavigateMoniker(IUnknown *pUnk,IMoniker *pmkTarget);
++
++#ifndef _URLMON_NO_ASYNC_PLUGABLE_PROTOCOLS_
++
++#ifndef _LPIINTERNET
++#define _LPIINTERNET
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0193_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0193_v0_0_s_ifspec;
++#ifndef __IInternet_INTERFACE_DEFINED__
++#define __IInternet_INTERFACE_DEFINED__
++  typedef IInternet *LPIINTERNET;
++
++  EXTERN_C const IID IID_IInternet;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternet : public IUnknown {
++  };
++#else
++  typedef struct IInternetVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternet *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternet *This);
++      ULONG (WINAPI *Release)(IInternet *This);
++    END_INTERFACE
++  } IInternetVtbl;
++  struct IInternet {
++    CONST_VTBL struct IInternetVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternet_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternet_Release(This) (This)->lpVtbl->Release(This)
++#endif
++#endif
++#endif
++#endif
++
++#ifndef _LPIINTERNETBINDINFO
++#define _LPIINTERNETBINDINFO
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0194_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0194_v0_0_s_ifspec;
++#ifndef __IInternetBindInfo_INTERFACE_DEFINED__
++#define __IInternetBindInfo_INTERFACE_DEFINED__
++
++  typedef IInternetBindInfo *LPIINTERNETBINDINFO;
++
++  typedef enum tagBINDSTRING {
++    BINDSTRING_HEADERS = 1,BINDSTRING_ACCEPT_MIMES = BINDSTRING_HEADERS + 1,BINDSTRING_EXTRA_URL = BINDSTRING_ACCEPT_MIMES + 1,
++    BINDSTRING_LANGUAGE = BINDSTRING_EXTRA_URL + 1,BINDSTRING_USERNAME = BINDSTRING_LANGUAGE + 1,BINDSTRING_PASSWORD = BINDSTRING_USERNAME + 1,
++    BINDSTRING_UA_PIXELS = BINDSTRING_PASSWORD + 1,BINDSTRING_UA_COLOR = BINDSTRING_UA_PIXELS + 1,BINDSTRING_OS = BINDSTRING_UA_COLOR + 1,
++    BINDSTRING_USER_AGENT = BINDSTRING_OS + 1,BINDSTRING_ACCEPT_ENCODINGS = BINDSTRING_USER_AGENT + 1,
++    BINDSTRING_POST_COOKIE = BINDSTRING_ACCEPT_ENCODINGS + 1,BINDSTRING_POST_DATA_MIME = BINDSTRING_POST_COOKIE + 1,
++    BINDSTRING_URL = BINDSTRING_POST_DATA_MIME + 1,BINDSTRING_IID = BINDSTRING_URL + 1,BINDSTRING_FLAG_BIND_TO_OBJECT = BINDSTRING_IID + 1,
++    BINDSTRING_PTR_BIND_CONTEXT = BINDSTRING_FLAG_BIND_TO_OBJECT + 1
++  } BINDSTRING;
++
++  EXTERN_C const IID IID_IInternetBindInfo;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetBindInfo : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetBindInfo(DWORD *grfBINDF,BINDINFO *pbindinfo) = 0;
++    virtual HRESULT WINAPI GetBindString(ULONG ulStringType,LPOLESTR *ppwzStr,ULONG cEl,ULONG *pcElFetched) = 0;
++  };
++#else
++  typedef struct IInternetBindInfoVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetBindInfo *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetBindInfo *This);
++      ULONG (WINAPI *Release)(IInternetBindInfo *This);
++      HRESULT (WINAPI *GetBindInfo)(IInternetBindInfo *This,DWORD *grfBINDF,BINDINFO *pbindinfo);
++      HRESULT (WINAPI *GetBindString)(IInternetBindInfo *This,ULONG ulStringType,LPOLESTR *ppwzStr,ULONG cEl,ULONG *pcElFetched);
++    END_INTERFACE
++  } IInternetBindInfoVtbl;
++  struct IInternetBindInfo {
++    CONST_VTBL struct IInternetBindInfoVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetBindInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetBindInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetBindInfo_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetBindInfo_GetBindInfo(This,grfBINDF,pbindinfo) (This)->lpVtbl->GetBindInfo(This,grfBINDF,pbindinfo)
++#define IInternetBindInfo_GetBindString(This,ulStringType,ppwzStr,cEl,pcElFetched) (This)->lpVtbl->GetBindString(This,ulStringType,ppwzStr,cEl,pcElFetched)
++#endif
++#endif
++  HRESULT WINAPI IInternetBindInfo_GetBindInfo_Proxy(IInternetBindInfo *This,DWORD *grfBINDF,BINDINFO *pbindinfo);
++  void __RPC_STUB IInternetBindInfo_GetBindInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetBindInfo_GetBindString_Proxy(IInternetBindInfo *This,ULONG ulStringType,LPOLESTR *ppwzStr,ULONG cEl,ULONG *pcElFetched);
++  void __RPC_STUB IInternetBindInfo_GetBindString_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPIINTERNETPROTOCOLROOT_DEFINED
++#define _LPIINTERNETPROTOCOLROOT_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0195_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0195_v0_0_s_ifspec;
++#ifndef __IInternetProtocolRoot_INTERFACE_DEFINED__
++#define __IInternetProtocolRoot_INTERFACE_DEFINED__
++  typedef IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT;
++
++  typedef enum _tagPI_FLAGS {
++    PI_PARSE_URL = 0x1,PI_FILTER_MODE = 0x2,PI_FORCE_ASYNC = 0x4,PI_USE_WORKERTHREAD = 0x8,PI_MIMEVERIFICATION = 0x10,PI_CLSIDLOOKUP = 0x20,
++    PI_DATAPROGRESS = 0x40,PI_SYNCHRONOUS = 0x80,PI_APARTMENTTHREADED = 0x100,PI_CLASSINSTALL = 0x200,PI_PASSONBINDCTX = 0x2000,
++    PI_NOMIMEHANDLER = 0x8000,PI_LOADAPPDIRECT = 0x4000,PD_FORCE_SWITCH = 0x10000,PI_PREFERDEFAULTHANDLER = 0x20000
++  } PI_FLAGS;
++
++  typedef struct _tagPROTOCOLDATA {
++    DWORD grfFlags;
++    DWORD dwState;
++    LPVOID pData;
++    ULONG cbData;
++  } PROTOCOLDATA;
++
++  typedef struct _tagStartParam {
++    IID iid;
++    IBindCtx *pIBindCtx;
++    IUnknown *pItf;
++  } StartParam;
++
++  EXTERN_C const IID IID_IInternetProtocolRoot;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetProtocolRoot : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Start(LPCWSTR szUrl,IInternetProtocolSink *pOIProtSink,IInternetBindInfo *pOIBindInfo,DWORD grfPI,HANDLE_PTR dwReserved) = 0;
++    virtual HRESULT WINAPI Continue(PROTOCOLDATA *pProtocolData) = 0;
++    virtual HRESULT WINAPI Abort(HRESULT hrReason,DWORD dwOptions) = 0;
++    virtual HRESULT WINAPI Terminate(DWORD dwOptions) = 0;
++    virtual HRESULT WINAPI Suspend(void) = 0;
++    virtual HRESULT WINAPI Resume(void) = 0;
++  };
++#else
++  typedef struct IInternetProtocolRootVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetProtocolRoot *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetProtocolRoot *This);
++      ULONG (WINAPI *Release)(IInternetProtocolRoot *This);
++      HRESULT (WINAPI *Start)(IInternetProtocolRoot *This,LPCWSTR szUrl,IInternetProtocolSink *pOIProtSink,IInternetBindInfo *pOIBindInfo,DWORD grfPI,HANDLE_PTR dwReserved);
++      HRESULT (WINAPI *Continue)(IInternetProtocolRoot *This,PROTOCOLDATA *pProtocolData);
++      HRESULT (WINAPI *Abort)(IInternetProtocolRoot *This,HRESULT hrReason,DWORD dwOptions);
++      HRESULT (WINAPI *Terminate)(IInternetProtocolRoot *This,DWORD dwOptions);
++      HRESULT (WINAPI *Suspend)(IInternetProtocolRoot *This);
++      HRESULT (WINAPI *Resume)(IInternetProtocolRoot *This);
++    END_INTERFACE
++  } IInternetProtocolRootVtbl;
++  struct IInternetProtocolRoot {
++    CONST_VTBL struct IInternetProtocolRootVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetProtocolRoot_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetProtocolRoot_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetProtocolRoot_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetProtocolRoot_Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved) (This)->lpVtbl->Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved)
++#define IInternetProtocolRoot_Continue(This,pProtocolData) (This)->lpVtbl->Continue(This,pProtocolData)
++#define IInternetProtocolRoot_Abort(This,hrReason,dwOptions) (This)->lpVtbl->Abort(This,hrReason,dwOptions)
++#define IInternetProtocolRoot_Terminate(This,dwOptions) (This)->lpVtbl->Terminate(This,dwOptions)
++#define IInternetProtocolRoot_Suspend(This) (This)->lpVtbl->Suspend(This)
++#define IInternetProtocolRoot_Resume(This) (This)->lpVtbl->Resume(This)
++#endif
++#endif
++  HRESULT WINAPI IInternetProtocolRoot_Start_Proxy(IInternetProtocolRoot *This,LPCWSTR szUrl,IInternetProtocolSink *pOIProtSink,IInternetBindInfo *pOIBindInfo,DWORD grfPI,HANDLE_PTR dwReserved);
++  void __RPC_STUB IInternetProtocolRoot_Start_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolRoot_Continue_Proxy(IInternetProtocolRoot *This,PROTOCOLDATA *pProtocolData);
++  void __RPC_STUB IInternetProtocolRoot_Continue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolRoot_Abort_Proxy(IInternetProtocolRoot *This,HRESULT hrReason,DWORD dwOptions);
++  void __RPC_STUB IInternetProtocolRoot_Abort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolRoot_Terminate_Proxy(IInternetProtocolRoot *This,DWORD dwOptions);
++  void __RPC_STUB IInternetProtocolRoot_Terminate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolRoot_Suspend_Proxy(IInternetProtocolRoot *This);
++  void __RPC_STUB IInternetProtocolRoot_Suspend_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolRoot_Resume_Proxy(IInternetProtocolRoot *This);
++  void __RPC_STUB IInternetProtocolRoot_Resume_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPIINTERNETPROTOCOL_DEFINED
++#define _LPIINTERNETPROTOCOL_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0196_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0196_v0_0_s_ifspec;
++#ifndef __IInternetProtocol_INTERFACE_DEFINED__
++#define __IInternetProtocol_INTERFACE_DEFINED__
++  typedef IInternetProtocol *LPIINTERNETPROTOCOL;
++
++  EXTERN_C const IID IID_IInternetProtocol;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetProtocol : public IInternetProtocolRoot {
++  public:
++    virtual HRESULT WINAPI Read(void *pv,ULONG cb,ULONG *pcbRead) = 0;
++    virtual HRESULT WINAPI Seek(LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition) = 0;
++    virtual HRESULT WINAPI LockRequest(DWORD dwOptions) = 0;
++    virtual HRESULT WINAPI UnlockRequest(void) = 0;
++  };
++#else
++  typedef struct IInternetProtocolVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetProtocol *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetProtocol *This);
++      ULONG (WINAPI *Release)(IInternetProtocol *This);
++      HRESULT (WINAPI *Start)(IInternetProtocol *This,LPCWSTR szUrl,IInternetProtocolSink *pOIProtSink,IInternetBindInfo *pOIBindInfo,DWORD grfPI,HANDLE_PTR dwReserved);
++      HRESULT (WINAPI *Continue)(IInternetProtocol *This,PROTOCOLDATA *pProtocolData);
++      HRESULT (WINAPI *Abort)(IInternetProtocol *This,HRESULT hrReason,DWORD dwOptions);
++      HRESULT (WINAPI *Terminate)(IInternetProtocol *This,DWORD dwOptions);
++      HRESULT (WINAPI *Suspend)(IInternetProtocol *This);
++      HRESULT (WINAPI *Resume)(IInternetProtocol *This);
++      HRESULT (WINAPI *Read)(IInternetProtocol *This,void *pv,ULONG cb,ULONG *pcbRead);
++      HRESULT (WINAPI *Seek)(IInternetProtocol *This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition);
++      HRESULT (WINAPI *LockRequest)(IInternetProtocol *This,DWORD dwOptions);
++      HRESULT (WINAPI *UnlockRequest)(IInternetProtocol *This);
++    END_INTERFACE
++  } IInternetProtocolVtbl;
++  struct IInternetProtocol {
++    CONST_VTBL struct IInternetProtocolVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetProtocol_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetProtocol_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetProtocol_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetProtocol_Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved) (This)->lpVtbl->Start(This,szUrl,pOIProtSink,pOIBindInfo,grfPI,dwReserved)
++#define IInternetProtocol_Continue(This,pProtocolData) (This)->lpVtbl->Continue(This,pProtocolData)
++#define IInternetProtocol_Abort(This,hrReason,dwOptions) (This)->lpVtbl->Abort(This,hrReason,dwOptions)
++#define IInternetProtocol_Terminate(This,dwOptions) (This)->lpVtbl->Terminate(This,dwOptions)
++#define IInternetProtocol_Suspend(This) (This)->lpVtbl->Suspend(This)
++#define IInternetProtocol_Resume(This) (This)->lpVtbl->Resume(This)
++#define IInternetProtocol_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
++#define IInternetProtocol_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
++#define IInternetProtocol_LockRequest(This,dwOptions) (This)->lpVtbl->LockRequest(This,dwOptions)
++#define IInternetProtocol_UnlockRequest(This) (This)->lpVtbl->UnlockRequest(This)
++#endif
++#endif
++  HRESULT WINAPI IInternetProtocol_Read_Proxy(IInternetProtocol *This,void *pv,ULONG cb,ULONG *pcbRead);
++  void __RPC_STUB IInternetProtocol_Read_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocol_Seek_Proxy(IInternetProtocol *This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition);
++  void __RPC_STUB IInternetProtocol_Seek_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocol_LockRequest_Proxy(IInternetProtocol *This,DWORD dwOptions);
++  void __RPC_STUB IInternetProtocol_LockRequest_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocol_UnlockRequest_Proxy(IInternetProtocol *This);
++  void __RPC_STUB IInternetProtocol_UnlockRequest_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPIINTERNETPROTOCOLSINK_DEFINED
++#define _LPIINTERNETPROTOCOLSINK_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0197_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0197_v0_0_s_ifspec;
++#ifndef __IInternetProtocolSink_INTERFACE_DEFINED__
++#define __IInternetProtocolSink_INTERFACE_DEFINED__
++  typedef IInternetProtocolSink *LPIINTERNETPROTOCOLSINK;
++
++  EXTERN_C const IID IID_IInternetProtocolSink;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetProtocolSink : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Switch(PROTOCOLDATA *pProtocolData) = 0;
++    virtual HRESULT WINAPI ReportProgress(ULONG ulStatusCode,LPCWSTR szStatusText) = 0;
++    virtual HRESULT WINAPI ReportData(DWORD grfBSCF,ULONG ulProgress,ULONG ulProgressMax) = 0;
++    virtual HRESULT WINAPI ReportResult(HRESULT hrResult,DWORD dwError,LPCWSTR szResult) = 0;
++  };
++#else
++  typedef struct IInternetProtocolSinkVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetProtocolSink *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetProtocolSink *This);
++      ULONG (WINAPI *Release)(IInternetProtocolSink *This);
++      HRESULT (WINAPI *Switch)(IInternetProtocolSink *This,PROTOCOLDATA *pProtocolData);
++      HRESULT (WINAPI *ReportProgress)(IInternetProtocolSink *This,ULONG ulStatusCode,LPCWSTR szStatusText);
++      HRESULT (WINAPI *ReportData)(IInternetProtocolSink *This,DWORD grfBSCF,ULONG ulProgress,ULONG ulProgressMax);
++      HRESULT (WINAPI *ReportResult)(IInternetProtocolSink *This,HRESULT hrResult,DWORD dwError,LPCWSTR szResult);
++    END_INTERFACE
++  } IInternetProtocolSinkVtbl;
++  struct IInternetProtocolSink {
++    CONST_VTBL struct IInternetProtocolSinkVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetProtocolSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetProtocolSink_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetProtocolSink_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetProtocolSink_Switch(This,pProtocolData) (This)->lpVtbl->Switch(This,pProtocolData)
++#define IInternetProtocolSink_ReportProgress(This,ulStatusCode,szStatusText) (This)->lpVtbl->ReportProgress(This,ulStatusCode,szStatusText)
++#define IInternetProtocolSink_ReportData(This,grfBSCF,ulProgress,ulProgressMax) (This)->lpVtbl->ReportData(This,grfBSCF,ulProgress,ulProgressMax)
++#define IInternetProtocolSink_ReportResult(This,hrResult,dwError,szResult) (This)->lpVtbl->ReportResult(This,hrResult,dwError,szResult)
++#endif
++#endif
++  HRESULT WINAPI IInternetProtocolSink_Switch_Proxy(IInternetProtocolSink *This,PROTOCOLDATA *pProtocolData);
++  void __RPC_STUB IInternetProtocolSink_Switch_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolSink_ReportProgress_Proxy(IInternetProtocolSink *This,ULONG ulStatusCode,LPCWSTR szStatusText);
++  void __RPC_STUB IInternetProtocolSink_ReportProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolSink_ReportData_Proxy(IInternetProtocolSink *This,DWORD grfBSCF,ULONG ulProgress,ULONG ulProgressMax);
++  void __RPC_STUB IInternetProtocolSink_ReportData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolSink_ReportResult_Proxy(IInternetProtocolSink *This,HRESULT hrResult,DWORD dwError,LPCWSTR szResult);
++  void __RPC_STUB IInternetProtocolSink_ReportResult_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPIINTERNETPROTOCOLSINKSTACKABLE_DEFINED
++#define _LPIINTERNETPROTOCOLSINKSTACKABLE_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0198_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0198_v0_0_s_ifspec;
++#ifndef __IInternetProtocolSinkStackable_INTERFACE_DEFINED__
++#define __IInternetProtocolSinkStackable_INTERFACE_DEFINED__
++  typedef IInternetProtocolSinkStackable *LPIINTERNETPROTOCOLSINKStackable;
++
++  EXTERN_C const IID IID_IInternetProtocolSinkStackable;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetProtocolSinkStackable : public IUnknown {
++  public:
++    virtual HRESULT WINAPI SwitchSink(IInternetProtocolSink *pOIProtSink) = 0;
++    virtual HRESULT WINAPI CommitSwitch(void) = 0;
++    virtual HRESULT WINAPI RollbackSwitch(void) = 0;
++  };
++#else
++  typedef struct IInternetProtocolSinkStackableVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetProtocolSinkStackable *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetProtocolSinkStackable *This);
++      ULONG (WINAPI *Release)(IInternetProtocolSinkStackable *This);
++      HRESULT (WINAPI *SwitchSink)(IInternetProtocolSinkStackable *This,IInternetProtocolSink *pOIProtSink);
++      HRESULT (WINAPI *CommitSwitch)(IInternetProtocolSinkStackable *This);
++      HRESULT (WINAPI *RollbackSwitch)(IInternetProtocolSinkStackable *This);
++    END_INTERFACE
++  } IInternetProtocolSinkStackableVtbl;
++  struct IInternetProtocolSinkStackable {
++    CONST_VTBL struct IInternetProtocolSinkStackableVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetProtocolSinkStackable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetProtocolSinkStackable_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetProtocolSinkStackable_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetProtocolSinkStackable_SwitchSink(This,pOIProtSink) (This)->lpVtbl->SwitchSink(This,pOIProtSink)
++#define IInternetProtocolSinkStackable_CommitSwitch(This) (This)->lpVtbl->CommitSwitch(This)
++#define IInternetProtocolSinkStackable_RollbackSwitch(This) (This)->lpVtbl->RollbackSwitch(This)
++#endif
++#endif
++  HRESULT WINAPI IInternetProtocolSinkStackable_SwitchSink_Proxy(IInternetProtocolSinkStackable *This,IInternetProtocolSink *pOIProtSink);
++  void __RPC_STUB IInternetProtocolSinkStackable_SwitchSink_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolSinkStackable_CommitSwitch_Proxy(IInternetProtocolSinkStackable *This);
++  void __RPC_STUB IInternetProtocolSinkStackable_CommitSwitch_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolSinkStackable_RollbackSwitch_Proxy(IInternetProtocolSinkStackable *This);
++  void __RPC_STUB IInternetProtocolSinkStackable_RollbackSwitch_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPIINTERNETSESSION_DEFINED
++#define _LPIINTERNETSESSION_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0199_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0199_v0_0_s_ifspec;
++#ifndef __IInternetSession_INTERFACE_DEFINED__
++#define __IInternetSession_INTERFACE_DEFINED__
++  typedef IInternetSession *LPIINTERNETSESSION;
++
++  typedef enum _tagOIBDG_FLAGS {
++    OIBDG_APARTMENTTHREADED = 0x100,OIBDG_DATAONLY = 0x1000
++  } OIBDG_FLAGS;
++
++  EXTERN_C const IID IID_IInternetSession;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetSession : public IUnknown {
++  public:
++    virtual HRESULT WINAPI RegisterNameSpace(IClassFactory *pCF,REFCLSID rclsid,LPCWSTR pwzProtocol,ULONG cPatterns,const LPCWSTR *ppwzPatterns,DWORD dwReserved) = 0;
++    virtual HRESULT WINAPI UnregisterNameSpace(IClassFactory *pCF,LPCWSTR pszProtocol) = 0;
++    virtual HRESULT WINAPI RegisterMimeFilter(IClassFactory *pCF,REFCLSID rclsid,LPCWSTR pwzType) = 0;
++    virtual HRESULT WINAPI UnregisterMimeFilter(IClassFactory *pCF,LPCWSTR pwzType) = 0;
++    virtual HRESULT WINAPI CreateBinding(LPBC pBC,LPCWSTR szUrl,IUnknown *pUnkOuter,IUnknown **ppUnk,IInternetProtocol **ppOInetProt,DWORD dwOption) = 0;
++    virtual HRESULT WINAPI SetSessionOption(DWORD dwOption,LPVOID pBuffer,DWORD dwBufferLength,DWORD dwReserved) = 0;
++    virtual HRESULT WINAPI GetSessionOption(DWORD dwOption,LPVOID pBuffer,DWORD *pdwBufferLength,DWORD dwReserved) = 0;
++  };
++#else
++  typedef struct IInternetSessionVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetSession *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetSession *This);
++      ULONG (WINAPI *Release)(IInternetSession *This);
++      HRESULT (WINAPI *RegisterNameSpace)(IInternetSession *This,IClassFactory *pCF,REFCLSID rclsid,LPCWSTR pwzProtocol,ULONG cPatterns,const LPCWSTR *ppwzPatterns,DWORD dwReserved);
++      HRESULT (WINAPI *UnregisterNameSpace)(IInternetSession *This,IClassFactory *pCF,LPCWSTR pszProtocol);
++      HRESULT (WINAPI *RegisterMimeFilter)(IInternetSession *This,IClassFactory *pCF,REFCLSID rclsid,LPCWSTR pwzType);
++      HRESULT (WINAPI *UnregisterMimeFilter)(IInternetSession *This,IClassFactory *pCF,LPCWSTR pwzType);
++      HRESULT (WINAPI *CreateBinding)(IInternetSession *This,LPBC pBC,LPCWSTR szUrl,IUnknown *pUnkOuter,IUnknown **ppUnk,IInternetProtocol **ppOInetProt,DWORD dwOption);
++      HRESULT (WINAPI *SetSessionOption)(IInternetSession *This,DWORD dwOption,LPVOID pBuffer,DWORD dwBufferLength,DWORD dwReserved);
++      HRESULT (WINAPI *GetSessionOption)(IInternetSession *This,DWORD dwOption,LPVOID pBuffer,DWORD *pdwBufferLength,DWORD dwReserved);
++    END_INTERFACE
++  } IInternetSessionVtbl;
++  struct IInternetSession {
++    CONST_VTBL struct IInternetSessionVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetSession_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetSession_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetSession_RegisterNameSpace(This,pCF,rclsid,pwzProtocol,cPatterns,ppwzPatterns,dwReserved) (This)->lpVtbl->RegisterNameSpace(This,pCF,rclsid,pwzProtocol,cPatterns,ppwzPatterns,dwReserved)
++#define IInternetSession_UnregisterNameSpace(This,pCF,pszProtocol) (This)->lpVtbl->UnregisterNameSpace(This,pCF,pszProtocol)
++#define IInternetSession_RegisterMimeFilter(This,pCF,rclsid,pwzType) (This)->lpVtbl->RegisterMimeFilter(This,pCF,rclsid,pwzType)
++#define IInternetSession_UnregisterMimeFilter(This,pCF,pwzType) (This)->lpVtbl->UnregisterMimeFilter(This,pCF,pwzType)
++#define IInternetSession_CreateBinding(This,pBC,szUrl,pUnkOuter,ppUnk,ppOInetProt,dwOption) (This)->lpVtbl->CreateBinding(This,pBC,szUrl,pUnkOuter,ppUnk,ppOInetProt,dwOption)
++#define IInternetSession_SetSessionOption(This,dwOption,pBuffer,dwBufferLength,dwReserved) (This)->lpVtbl->SetSessionOption(This,dwOption,pBuffer,dwBufferLength,dwReserved)
++#define IInternetSession_GetSessionOption(This,dwOption,pBuffer,pdwBufferLength,dwReserved) (This)->lpVtbl->GetSessionOption(This,dwOption,pBuffer,pdwBufferLength,dwReserved)
++#endif
++#endif
++  HRESULT WINAPI IInternetSession_RegisterNameSpace_Proxy(IInternetSession *This,IClassFactory *pCF,REFCLSID rclsid,LPCWSTR pwzProtocol,ULONG cPatterns,const LPCWSTR *ppwzPatterns,DWORD dwReserved);
++  void __RPC_STUB IInternetSession_RegisterNameSpace_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSession_UnregisterNameSpace_Proxy(IInternetSession *This,IClassFactory *pCF,LPCWSTR pszProtocol);
++  void __RPC_STUB IInternetSession_UnregisterNameSpace_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSession_RegisterMimeFilter_Proxy(IInternetSession *This,IClassFactory *pCF,REFCLSID rclsid,LPCWSTR pwzType);
++  void __RPC_STUB IInternetSession_RegisterMimeFilter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSession_UnregisterMimeFilter_Proxy(IInternetSession *This,IClassFactory *pCF,LPCWSTR pwzType);
++  void __RPC_STUB IInternetSession_UnregisterMimeFilter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSession_CreateBinding_Proxy(IInternetSession *This,LPBC pBC,LPCWSTR szUrl,IUnknown *pUnkOuter,IUnknown **ppUnk,IInternetProtocol **ppOInetProt,DWORD dwOption);
++  void __RPC_STUB IInternetSession_CreateBinding_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSession_SetSessionOption_Proxy(IInternetSession *This,DWORD dwOption,LPVOID pBuffer,DWORD dwBufferLength,DWORD dwReserved);
++  void __RPC_STUB IInternetSession_SetSessionOption_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSession_GetSessionOption_Proxy(IInternetSession *This,DWORD dwOption,LPVOID pBuffer,DWORD *pdwBufferLength,DWORD dwReserved);
++  void __RPC_STUB IInternetSession_GetSessionOption_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPIINTERNETTHREADSWITCH_DEFINED
++#define _LPIINTERNETTHREADSWITCH_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0200_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0200_v0_0_s_ifspec;
++#ifndef __IInternetThreadSwitch_INTERFACE_DEFINED__
++#define __IInternetThreadSwitch_INTERFACE_DEFINED__
++  typedef IInternetThreadSwitch *LPIINTERNETTHREADSWITCH;
++
++  EXTERN_C const IID IID_IInternetThreadSwitch;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetThreadSwitch : public IUnknown {
++  public:
++    virtual HRESULT WINAPI Prepare(void) = 0;
++    virtual HRESULT WINAPI Continue(void) = 0;
++  };
++#else
++  typedef struct IInternetThreadSwitchVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetThreadSwitch *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetThreadSwitch *This);
++      ULONG (WINAPI *Release)(IInternetThreadSwitch *This);
++      HRESULT (WINAPI *Prepare)(IInternetThreadSwitch *This);
++      HRESULT (WINAPI *Continue)(IInternetThreadSwitch *This);
++    END_INTERFACE
++  } IInternetThreadSwitchVtbl;
++  struct IInternetThreadSwitch {
++    CONST_VTBL struct IInternetThreadSwitchVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetThreadSwitch_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetThreadSwitch_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetThreadSwitch_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetThreadSwitch_Prepare(This) (This)->lpVtbl->Prepare(This)
++#define IInternetThreadSwitch_Continue(This) (This)->lpVtbl->Continue(This)
++#endif
++#endif
++  HRESULT WINAPI IInternetThreadSwitch_Prepare_Proxy(IInternetThreadSwitch *This);
++  void __RPC_STUB IInternetThreadSwitch_Prepare_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetThreadSwitch_Continue_Proxy(IInternetThreadSwitch *This);
++  void __RPC_STUB IInternetThreadSwitch_Continue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPIINTERNETPRIORITY_DEFINED
++#define _LPIINTERNETPRIORITY_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0201_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0201_v0_0_s_ifspec;
++#ifndef __IInternetPriority_INTERFACE_DEFINED__
++#define __IInternetPriority_INTERFACE_DEFINED__
++  typedef IInternetPriority *LPIINTERNETPRIORITY;
++
++  EXTERN_C const IID IID_IInternetPriority;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetPriority : public IUnknown {
++  public:
++    virtual HRESULT WINAPI SetPriority(LONG nPriority) = 0;
++    virtual HRESULT WINAPI GetPriority(LONG *pnPriority) = 0;
++  };
++#else
++  typedef struct IInternetPriorityVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetPriority *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetPriority *This);
++      ULONG (WINAPI *Release)(IInternetPriority *This);
++      HRESULT (WINAPI *SetPriority)(IInternetPriority *This,LONG nPriority);
++      HRESULT (WINAPI *GetPriority)(IInternetPriority *This,LONG *pnPriority);
++    END_INTERFACE
++  } IInternetPriorityVtbl;
++  struct IInternetPriority {
++    CONST_VTBL struct IInternetPriorityVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetPriority_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetPriority_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetPriority_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetPriority_SetPriority(This,nPriority) (This)->lpVtbl->SetPriority(This,nPriority)
++#define IInternetPriority_GetPriority(This,pnPriority) (This)->lpVtbl->GetPriority(This,pnPriority)
++#endif
++#endif
++  HRESULT WINAPI IInternetPriority_SetPriority_Proxy(IInternetPriority *This,LONG nPriority);
++  void __RPC_STUB IInternetPriority_SetPriority_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetPriority_GetPriority_Proxy(IInternetPriority *This,LONG *pnPriority);
++  void __RPC_STUB IInternetPriority_GetPriority_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPIINTERNETPROTOCOLINFO_DEFINED
++#define _LPIINTERNETPROTOCOLINFO_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0202_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0202_v0_0_s_ifspec;
++#ifndef __IInternetProtocolInfo_INTERFACE_DEFINED__
++#define __IInternetProtocolInfo_INTERFACE_DEFINED__
++  typedef IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
++
++  typedef enum _tagPARSEACTION {
++    PARSE_CANONICALIZE = 1,PARSE_FRIENDLY = PARSE_CANONICALIZE + 1,PARSE_SECURITY_URL = PARSE_FRIENDLY + 1,PARSE_ROOTDOCUMENT = PARSE_SECURITY_URL + 1,
++    PARSE_DOCUMENT = PARSE_ROOTDOCUMENT + 1,PARSE_ANCHOR = PARSE_DOCUMENT + 1,PARSE_ENCODE = PARSE_ANCHOR + 1,PARSE_DECODE = PARSE_ENCODE + 1,
++    PARSE_PATH_FROM_URL = PARSE_DECODE + 1,PARSE_URL_FROM_PATH = PARSE_PATH_FROM_URL + 1,PARSE_MIME = PARSE_URL_FROM_PATH + 1,
++    PARSE_SERVER = PARSE_MIME + 1,PARSE_SCHEMA = PARSE_SERVER + 1,PARSE_SITE = PARSE_SCHEMA + 1,PARSE_DOMAIN = PARSE_SITE + 1,
++    PARSE_LOCATION = PARSE_DOMAIN + 1,PARSE_SECURITY_DOMAIN = PARSE_LOCATION + 1,PARSE_ESCAPE = PARSE_SECURITY_DOMAIN + 1,
++    PARSE_UNESCAPE = PARSE_ESCAPE + 1
++  } PARSEACTION;
++
++  typedef enum _tagPSUACTION {
++    PSU_DEFAULT = 1,PSU_SECURITY_URL_ONLY = PSU_DEFAULT + 1
++  } PSUACTION;
++
++  typedef enum _tagQUERYOPTION {
++    QUERY_EXPIRATION_DATE = 1,QUERY_TIME_OF_LAST_CHANGE = QUERY_EXPIRATION_DATE + 1,QUERY_CONTENT_ENCODING = QUERY_TIME_OF_LAST_CHANGE + 1,
++    QUERY_CONTENT_TYPE = QUERY_CONTENT_ENCODING + 1,QUERY_REFRESH = QUERY_CONTENT_TYPE + 1,QUERY_RECOMBINE = QUERY_REFRESH + 1,
++    QUERY_CAN_NAVIGATE = QUERY_RECOMBINE + 1,QUERY_USES_NETWORK = QUERY_CAN_NAVIGATE + 1,QUERY_IS_CACHED = QUERY_USES_NETWORK + 1,
++    QUERY_IS_INSTALLEDENTRY = QUERY_IS_CACHED + 1,QUERY_IS_CACHED_OR_MAPPED = QUERY_IS_INSTALLEDENTRY + 1,
++    QUERY_USES_CACHE = QUERY_IS_CACHED_OR_MAPPED + 1,QUERY_IS_SECURE = QUERY_USES_CACHE + 1,QUERY_IS_SAFE = QUERY_IS_SECURE + 1
++  } QUERYOPTION;
++
++  EXTERN_C const IID IID_IInternetProtocolInfo;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetProtocolInfo : public IUnknown {
++  public:
++    virtual HRESULT WINAPI ParseUrl(LPCWSTR pwzUrl,PARSEACTION ParseAction,DWORD dwParseFlags,LPWSTR pwzResult,DWORD cchResult,DWORD *pcchResult,DWORD dwReserved) = 0;
++    virtual HRESULT WINAPI CombineUrl(LPCWSTR pwzBaseUrl,LPCWSTR pwzRelativeUrl,DWORD dwCombineFlags,LPWSTR pwzResult,DWORD cchResult,DWORD *pcchResult,DWORD dwReserved) = 0;
++    virtual HRESULT WINAPI CompareUrl(LPCWSTR pwzUrl1,LPCWSTR pwzUrl2,DWORD dwCompareFlags) = 0;
++    virtual HRESULT WINAPI QueryInfo(LPCWSTR pwzUrl,QUERYOPTION OueryOption,DWORD dwQueryFlags,LPVOID pBuffer,DWORD cbBuffer,DWORD *pcbBuf,DWORD dwReserved) = 0;
++  };
++#else
++  typedef struct IInternetProtocolInfoVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetProtocolInfo *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetProtocolInfo *This);
++      ULONG (WINAPI *Release)(IInternetProtocolInfo *This);
++      HRESULT (WINAPI *ParseUrl)(IInternetProtocolInfo *This,LPCWSTR pwzUrl,PARSEACTION ParseAction,DWORD dwParseFlags,LPWSTR pwzResult,DWORD cchResult,DWORD *pcchResult,DWORD dwReserved);
++      HRESULT (WINAPI *CombineUrl)(IInternetProtocolInfo *This,LPCWSTR pwzBaseUrl,LPCWSTR pwzRelativeUrl,DWORD dwCombineFlags,LPWSTR pwzResult,DWORD cchResult,DWORD *pcchResult,DWORD dwReserved);
++      HRESULT (WINAPI *CompareUrl)(IInternetProtocolInfo *This,LPCWSTR pwzUrl1,LPCWSTR pwzUrl2,DWORD dwCompareFlags);
++      HRESULT (WINAPI *QueryInfo)(IInternetProtocolInfo *This,LPCWSTR pwzUrl,QUERYOPTION OueryOption,DWORD dwQueryFlags,LPVOID pBuffer,DWORD cbBuffer,DWORD *pcbBuf,DWORD dwReserved);
++    END_INTERFACE
++  } IInternetProtocolInfoVtbl;
++  struct IInternetProtocolInfo {
++    CONST_VTBL struct IInternetProtocolInfoVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetProtocolInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetProtocolInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetProtocolInfo_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetProtocolInfo_ParseUrl(This,pwzUrl,ParseAction,dwParseFlags,pwzResult,cchResult,pcchResult,dwReserved) (This)->lpVtbl->ParseUrl(This,pwzUrl,ParseAction,dwParseFlags,pwzResult,cchResult,pcchResult,dwReserved)
++#define IInternetProtocolInfo_CombineUrl(This,pwzBaseUrl,pwzRelativeUrl,dwCombineFlags,pwzResult,cchResult,pcchResult,dwReserved) (This)->lpVtbl->CombineUrl(This,pwzBaseUrl,pwzRelativeUrl,dwCombineFlags,pwzResult,cchResult,pcchResult,dwReserved)
++#define IInternetProtocolInfo_CompareUrl(This,pwzUrl1,pwzUrl2,dwCompareFlags) (This)->lpVtbl->CompareUrl(This,pwzUrl1,pwzUrl2,dwCompareFlags)
++#define IInternetProtocolInfo_QueryInfo(This,pwzUrl,OueryOption,dwQueryFlags,pBuffer,cbBuffer,pcbBuf,dwReserved) (This)->lpVtbl->QueryInfo(This,pwzUrl,OueryOption,dwQueryFlags,pBuffer,cbBuffer,pcbBuf,dwReserved)
++#endif
++#endif
++  HRESULT WINAPI IInternetProtocolInfo_ParseUrl_Proxy(IInternetProtocolInfo *This,LPCWSTR pwzUrl,PARSEACTION ParseAction,DWORD dwParseFlags,LPWSTR pwzResult,DWORD cchResult,DWORD *pcchResult,DWORD dwReserved);
++  void __RPC_STUB IInternetProtocolInfo_ParseUrl_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolInfo_CombineUrl_Proxy(IInternetProtocolInfo *This,LPCWSTR pwzBaseUrl,LPCWSTR pwzRelativeUrl,DWORD dwCombineFlags,LPWSTR pwzResult,DWORD cchResult,DWORD *pcchResult,DWORD dwReserved);
++  void __RPC_STUB IInternetProtocolInfo_CombineUrl_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolInfo_CompareUrl_Proxy(IInternetProtocolInfo *This,LPCWSTR pwzUrl1,LPCWSTR pwzUrl2,DWORD dwCompareFlags);
++  void __RPC_STUB IInternetProtocolInfo_CompareUrl_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetProtocolInfo_QueryInfo_Proxy(IInternetProtocolInfo *This,LPCWSTR pwzUrl,QUERYOPTION OueryOption,DWORD dwQueryFlags,LPVOID pBuffer,DWORD cbBuffer,DWORD *pcbBuf,DWORD dwReserved);
++  void __RPC_STUB IInternetProtocolInfo_QueryInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#define IOInet IInternet
++#define IOInetBindInfo IInternetBindInfo
++#define IOInetProtocolRoot IInternetProtocolRoot
++#define IOInetProtocol IInternetProtocol
++#define IOInetProtocolSink IInternetProtocolSink
++#define IOInetProtocolInfo IInternetProtocolInfo
++#define IOInetSession IInternetSession
++#define IOInetPriority IInternetPriority
++#define IOInetThreadSwitch IInternetThreadSwitch
++#define IOInetProtocolSinkStackable IInternetProtocolSinkStackable
++#define LPOINET LPIINTERNET
++#define LPOINETPROTOCOLINFO LPIINTERNETPROTOCOLINFO
++#define LPOINETBINDINFO LPIINTERNETBINDINFO
++#define LPOINETPROTOCOLROOT LPIINTERNETPROTOCOLROOT
++#define LPOINETPROTOCOL LPIINTERNETPROTOCOL
++#define LPOINETPROTOCOLSINK LPIINTERNETPROTOCOLSINK
++#define LPOINETSESSION LPIINTERNETSESSION
++#define LPOINETTHREADSWITCH LPIINTERNETTHREADSWITCH
++#define LPOINETPRIORITY LPIINTERNETPRIORITY
++#define LPOINETPROTOCOLINFO LPIINTERNETPROTOCOLINFO
++#define LPOINETPROTOCOLSINKSTACKABLE LPIINTERNETPROTOCOLSINKSTACKABLE
++#define IID_IOInet IID_IInternet
++#define IID_IOInetBindInfo IID_IInternetBindInfo
++#define IID_IOInetProtocolRoot IID_IInternetProtocolRoot
++#define IID_IOInetProtocol IID_IInternetProtocol
++#define IID_IOInetProtocolSink IID_IInternetProtocolSink
++#define IID_IOInetProtocolInfo IID_IInternetProtocolInfo
++#define IID_IOInetSession IID_IInternetSession
++#define IID_IOInetPriority IID_IInternetPriority
++#define IID_IOInetThreadSwitch IID_IInternetThreadSwitch
++#define IID_IOInetProtocolSinkStackable IID_IInternetProtocolSinkStackable
++  STDAPI CoInternetParseUrl(LPCWSTR pwzUrl,PARSEACTION ParseAction,DWORD dwFlags,LPWSTR pszResult,DWORD cchResult,DWORD *pcchResult,DWORD dwReserved);
++  STDAPI CoInternetCombineUrl(LPCWSTR pwzBaseUrl,LPCWSTR pwzRelativeUrl,DWORD dwCombineFlags,LPWSTR pszResult,DWORD cchResult,DWORD *pcchResult,DWORD dwReserved);
++  STDAPI CoInternetCompareUrl(LPCWSTR pwzUrl1,LPCWSTR pwzUrl2,DWORD dwFlags);
++  STDAPI CoInternetGetProtocolFlags(LPCWSTR pwzUrl,DWORD *pdwFlags,DWORD dwReserved);
++  STDAPI CoInternetQueryInfo(LPCWSTR pwzUrl,QUERYOPTION QueryOptions,DWORD dwQueryFlags,LPVOID pvBuffer,DWORD cbBuffer,DWORD *pcbBuffer,DWORD dwReserved);
++  STDAPI CoInternetGetSession(DWORD dwSessionMode,IInternetSession **ppIInternetSession,DWORD dwReserved);
++  STDAPI CoInternetGetSecurityUrl(LPCWSTR pwzUrl,LPWSTR *ppwzSecUrl,PSUACTION psuAction,DWORD dwReserved);
++  STDAPI AsyncInstallDistributionUnit(LPCWSTR szDistUnit,LPCWSTR szTYPE,LPCWSTR szExt,DWORD dwFileVersionMS,DWORD dwFileVersionLS,LPCWSTR szURL,IBindCtx *pbc,LPVOID pvReserved,DWORD flags);
++#ifndef _INTERNETFEATURELIST_DEFINED
++#define _INTERNETFEATURELIST_DEFINED
++
++  typedef enum _tagINTERNETFEATURELIST {
++    FEATURE_OBJECT_CACHING = 0,FEATURE_ZONE_ELEVATION = FEATURE_OBJECT_CACHING + 1,FEATURE_MIME_HANDLING = FEATURE_ZONE_ELEVATION + 1,
++    FEATURE_MIME_SNIFFING = FEATURE_MIME_HANDLING + 1,FEATURE_WINDOW_RESTRICTIONS = FEATURE_MIME_SNIFFING + 1,
++    FEATURE_WEBOC_POPUPMANAGEMENT = FEATURE_WINDOW_RESTRICTIONS + 1,FEATURE_BEHAVIORS = FEATURE_WEBOC_POPUPMANAGEMENT + 1,
++    FEATURE_DISABLE_MK_PROTOCOL = FEATURE_BEHAVIORS + 1,FEATURE_LOCALMACHINE_LOCKDOWN = FEATURE_DISABLE_MK_PROTOCOL + 1,
++    FEATURE_SECURITYBAND = FEATURE_LOCALMACHINE_LOCKDOWN + 1,FEATURE_RESTRICT_ACTIVEXINSTALL = FEATURE_SECURITYBAND + 1,
++    FEATURE_VALIDATE_NAVIGATE_URL = FEATURE_RESTRICT_ACTIVEXINSTALL + 1,FEATURE_RESTRICT_FILEDOWNLOAD = FEATURE_VALIDATE_NAVIGATE_URL + 1,
++    FEATURE_ADDON_MANAGEMENT = FEATURE_RESTRICT_FILEDOWNLOAD + 1,FEATURE_PROTOCOL_LOCKDOWN = FEATURE_ADDON_MANAGEMENT + 1,
++    FEATURE_HTTP_USERNAME_PASSWORD_DISABLE = FEATURE_PROTOCOL_LOCKDOWN + 1,FEATURE_SAFE_BINDTOOBJECT = FEATURE_HTTP_USERNAME_PASSWORD_DISABLE + 1,
++    FEATURE_UNC_SAVEDFILECHECK = FEATURE_SAFE_BINDTOOBJECT + 1,FEATURE_GET_URL_DOM_FILEPATH_UNENCODED = FEATURE_UNC_SAVEDFILECHECK + 1,
++    FEATURE_ENTRY_COUNT = FEATURE_GET_URL_DOM_FILEPATH_UNENCODED + 1
++  } INTERNETFEATURELIST;
++
++#define SET_FEATURE_ON_THREAD 0x00000001
++#define SET_FEATURE_ON_PROCESS 0x00000002
++#define SET_FEATURE_IN_REGISTRY 0x00000004
++#define SET_FEATURE_ON_THREAD_LOCALMACHINE 0x00000008
++#define SET_FEATURE_ON_THREAD_INTRANET 0x00000010
++#define SET_FEATURE_ON_THREAD_TRUSTED 0x00000020
++#define SET_FEATURE_ON_THREAD_INTERNET 0x00000040
++#define SET_FEATURE_ON_THREAD_RESTRICTED 0x00000080
++
++#define GET_FEATURE_FROM_THREAD 0x00000001
++#define GET_FEATURE_FROM_PROCESS 0x00000002
++#define GET_FEATURE_FROM_REGISTRY 0x00000004
++#define GET_FEATURE_FROM_THREAD_LOCALMACHINE 0x00000008
++#define GET_FEATURE_FROM_THREAD_INTRANET 0x00000010
++#define GET_FEATURE_FROM_THREAD_TRUSTED 0x00000020
++#define GET_FEATURE_FROM_THREAD_INTERNET 0x00000040
++#define GET_FEATURE_FROM_THREAD_RESTRICTED 0x00000080
++#endif
++  STDAPI CoInternetSetFeatureEnabled(INTERNETFEATURELIST FeatureEntry,DWORD dwFlags,WINBOOL fEnable);
++  STDAPI CoInternetIsFeatureEnabled(INTERNETFEATURELIST FeatureEntry,DWORD dwFlags);
++  STDAPI CoInternetIsFeatureEnabledForUrl(INTERNETFEATURELIST FeatureEntry,DWORD dwFlags,LPCWSTR szURL,IInternetSecurityManager *pSecMgr);
++  STDAPI CoInternetIsFeatureZoneElevationEnabled(LPCWSTR szFromURL,LPCWSTR szToURL,IInternetSecurityManager *pSecMgr,DWORD dwFlags);
++  STDAPI CopyStgMedium(const STGMEDIUM *pcstgmedSrc,STGMEDIUM *pstgmedDest);
++  STDAPI CopyBindInfo(const BINDINFO *pcbiSrc,BINDINFO *pbiDest);
++  STDAPI_(void) ReleaseBindInfo(BINDINFO *pbindinfo);
++
++#define INET_E_USE_DEFAULT_PROTOCOLHANDLER _HRESULT_TYPEDEF_(0x800C0011L)
++#define INET_E_USE_DEFAULT_SETTING _HRESULT_TYPEDEF_(0x800C0012L)
++#define INET_E_DEFAULT_ACTION INET_E_USE_DEFAULT_PROTOCOLHANDLER
++#define INET_E_QUERYOPTION_UNKNOWN _HRESULT_TYPEDEF_(0x800C0013L)
++#define INET_E_REDIRECTING _HRESULT_TYPEDEF_(0x800C0014L)
++#define OInetParseUrl CoInternetParseUrl
++#define OInetCombineUrl CoInternetCombineUrl
++#define OInetCompareUrl CoInternetCompareUrl
++#define OInetQueryInfo CoInternetQueryInfo
++#define OInetGetSession CoInternetGetSession
++#endif
++
++#define PROTOCOLFLAG_NO_PICS_CHECK 0x00000001
++
++  STDAPI CoInternetCreateSecurityManager(IServiceProvider *pSP,IInternetSecurityManager **ppSM,DWORD dwReserved);
++  STDAPI CoInternetCreateZoneManager(IServiceProvider *pSP,IInternetZoneManager **ppZM,DWORD dwReserved);
++
++  EXTERN_C const IID CLSID_InternetSecurityManager;
++  EXTERN_C const IID CLSID_InternetZoneManager;
++  EXTERN_C const IID CLSID_PersistentZoneIdentifier;
++
++#define SID_SInternetSecurityManager IID_IInternetSecurityManager
++#define SID_SInternetSecurityManagerEx IID_IInternetSecurityManagerEx
++#define SID_SInternetHostSecurityManager IID_IInternetHostSecurityManager
++
++#ifndef _LPINTERNETSECURITYMGRSITE_DEFINED
++#define _LPINTERNETSECURITYMGRSITE_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0203_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0203_v0_0_s_ifspec;
++#ifndef __IInternetSecurityMgrSite_INTERFACE_DEFINED__
++#define __IInternetSecurityMgrSite_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IInternetSecurityMgrSite;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetSecurityMgrSite : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetWindow(HWND *phwnd) = 0;
++    virtual HRESULT WINAPI EnableModeless(WINBOOL fEnable) = 0;
++  };
++#else
++  typedef struct IInternetSecurityMgrSiteVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetSecurityMgrSite *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetSecurityMgrSite *This);
++      ULONG (WINAPI *Release)(IInternetSecurityMgrSite *This);
++      HRESULT (WINAPI *GetWindow)(IInternetSecurityMgrSite *This,HWND *phwnd);
++      HRESULT (WINAPI *EnableModeless)(IInternetSecurityMgrSite *This,WINBOOL fEnable);
++    END_INTERFACE
++  } IInternetSecurityMgrSiteVtbl;
++  struct IInternetSecurityMgrSite {
++    CONST_VTBL struct IInternetSecurityMgrSiteVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetSecurityMgrSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetSecurityMgrSite_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetSecurityMgrSite_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetSecurityMgrSite_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
++#define IInternetSecurityMgrSite_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)
++#endif
++#endif
++  HRESULT WINAPI IInternetSecurityMgrSite_GetWindow_Proxy(IInternetSecurityMgrSite *This,HWND *phwnd);
++  void __RPC_STUB IInternetSecurityMgrSite_GetWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSecurityMgrSite_EnableModeless_Proxy(IInternetSecurityMgrSite *This,WINBOOL fEnable);
++  void __RPC_STUB IInternetSecurityMgrSite_EnableModeless_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPINTERNETSECURITYMANANGEREX_DEFINED
++#define _LPINTERNETSECURITYMANANGEREX_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0204_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0204_v0_0_s_ifspec;
++#ifndef __IInternetSecurityManager_INTERFACE_DEFINED__
++#define __IInternetSecurityManager_INTERFACE_DEFINED__
++
++#define MUTZ_NOSAVEDFILECHECK 0x00000001
++#define MUTZ_ISFILE 0x00000002
++#define MUTZ_ACCEPT_WILDCARD_SCHEME 0x00000080
++#define MUTZ_ENFORCERESTRICTED 0x00000100
++#define MUTZ_REQUIRESAVEDFILECHECK 0x00000400
++#define MUTZ_DONT_UNESCAPE 0x00000800
++
++#define MAX_SIZE_SECURITY_ID 512
++
++  typedef enum __MIDL_IInternetSecurityManager_0001 {
++    PUAF_DEFAULT = 0,PUAF_NOUI = 0x1,PUAF_ISFILE = 0x2,PUAF_WARN_IF_DENIED = 0x4,PUAF_FORCEUI_FOREGROUND = 0x8,PUAF_CHECK_TIFS = 0x10,
++    PUAF_DONTCHECKBOXINDIALOG = 0x20,PUAF_TRUSTED = 0x40,PUAF_ACCEPT_WILDCARD_SCHEME = 0x80,PUAF_ENFORCERESTRICTED = 0x100,
++    PUAF_NOSAVEDFILECHECK = 0x200,PUAF_REQUIRESAVEDFILECHECK = 0x400,PUAF_LMZ_UNLOCKED = 0x10000,PUAF_LMZ_LOCKED = 0x20000,
++    PUAF_DEFAULTZONEPOL = 0x40000,PUAF_NPL_USE_LOCKED_IF_RESTRICTED = 0x80000,PUAF_NOUIIFLOCKED = 0x100000,PUAF_DRAGPROTOCOLCHECK = 0x200000
++  } PUAF;
++
++  typedef enum __MIDL_IInternetSecurityManager_0002 {
++    PUAFOUT_DEFAULT = 0,PUAFOUT_ISLOCKZONEPOLICY = 0x1
++  } PUAFOUT;
++
++  typedef enum __MIDL_IInternetSecurityManager_0003 {
++    SZM_CREATE = 0,SZM_DELETE = 0x1
++  } SZM_FLAGS;
++
++  EXTERN_C const IID IID_IInternetSecurityManager;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetSecurityManager : public IUnknown {
++  public:
++    virtual HRESULT WINAPI SetSecuritySite(IInternetSecurityMgrSite *pSite) = 0;
++    virtual HRESULT WINAPI GetSecuritySite(IInternetSecurityMgrSite **ppSite) = 0;
++    virtual HRESULT WINAPI MapUrlToZone(LPCWSTR pwszUrl,DWORD *pdwZone,DWORD dwFlags) = 0;
++    virtual HRESULT WINAPI GetSecurityId(LPCWSTR pwszUrl,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved) = 0;
++    virtual HRESULT WINAPI ProcessUrlAction(LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved) = 0;
++    virtual HRESULT WINAPI QueryCustomPolicy(LPCWSTR pwszUrl,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwReserved) = 0;
++    virtual HRESULT WINAPI SetZoneMapping(DWORD dwZone,LPCWSTR lpszPattern,DWORD dwFlags) = 0;
++    virtual HRESULT WINAPI GetZoneMappings(DWORD dwZone,IEnumString **ppenumString,DWORD dwFlags) = 0;
++  };
++#else
++  typedef struct IInternetSecurityManagerVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetSecurityManager *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetSecurityManager *This);
++      ULONG (WINAPI *Release)(IInternetSecurityManager *This);
++      HRESULT (WINAPI *SetSecuritySite)(IInternetSecurityManager *This,IInternetSecurityMgrSite *pSite);
++      HRESULT (WINAPI *GetSecuritySite)(IInternetSecurityManager *This,IInternetSecurityMgrSite **ppSite);
++      HRESULT (WINAPI *MapUrlToZone)(IInternetSecurityManager *This,LPCWSTR pwszUrl,DWORD *pdwZone,DWORD dwFlags);
++      HRESULT (WINAPI *GetSecurityId)(IInternetSecurityManager *This,LPCWSTR pwszUrl,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved);
++      HRESULT (WINAPI *ProcessUrlAction)(IInternetSecurityManager *This,LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved);
++      HRESULT (WINAPI *QueryCustomPolicy)(IInternetSecurityManager *This,LPCWSTR pwszUrl,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwReserved);
++      HRESULT (WINAPI *SetZoneMapping)(IInternetSecurityManager *This,DWORD dwZone,LPCWSTR lpszPattern,DWORD dwFlags);
++      HRESULT (WINAPI *GetZoneMappings)(IInternetSecurityManager *This,DWORD dwZone,IEnumString **ppenumString,DWORD dwFlags);
++    END_INTERFACE
++  } IInternetSecurityManagerVtbl;
++  struct IInternetSecurityManager {
++    CONST_VTBL struct IInternetSecurityManagerVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetSecurityManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetSecurityManager_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetSecurityManager_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetSecurityManager_SetSecuritySite(This,pSite) (This)->lpVtbl->SetSecuritySite(This,pSite)
++#define IInternetSecurityManager_GetSecuritySite(This,ppSite) (This)->lpVtbl->GetSecuritySite(This,ppSite)
++#define IInternetSecurityManager_MapUrlToZone(This,pwszUrl,pdwZone,dwFlags) (This)->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags)
++#define IInternetSecurityManager_GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved)
++#define IInternetSecurityManager_ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved) (This)->lpVtbl->ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved)
++#define IInternetSecurityManager_QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved) (This)->lpVtbl->QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved)
++#define IInternetSecurityManager_SetZoneMapping(This,dwZone,lpszPattern,dwFlags) (This)->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags)
++#define IInternetSecurityManager_GetZoneMappings(This,dwZone,ppenumString,dwFlags) (This)->lpVtbl->GetZoneMappings(This,dwZone,ppenumString,dwFlags)
++#endif
++#endif
++  HRESULT WINAPI IInternetSecurityManager_SetSecuritySite_Proxy(IInternetSecurityManager *This,IInternetSecurityMgrSite *pSite);
++  void __RPC_STUB IInternetSecurityManager_SetSecuritySite_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSecurityManager_GetSecuritySite_Proxy(IInternetSecurityManager *This,IInternetSecurityMgrSite **ppSite);
++  void __RPC_STUB IInternetSecurityManager_GetSecuritySite_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSecurityManager_MapUrlToZone_Proxy(IInternetSecurityManager *This,LPCWSTR pwszUrl,DWORD *pdwZone,DWORD dwFlags);
++  void __RPC_STUB IInternetSecurityManager_MapUrlToZone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSecurityManager_GetSecurityId_Proxy(IInternetSecurityManager *This,LPCWSTR pwszUrl,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved);
++  void __RPC_STUB IInternetSecurityManager_GetSecurityId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSecurityManager_ProcessUrlAction_Proxy(IInternetSecurityManager *This,LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved);
++  void __RPC_STUB IInternetSecurityManager_ProcessUrlAction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSecurityManager_QueryCustomPolicy_Proxy(IInternetSecurityManager *This,LPCWSTR pwszUrl,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwReserved);
++  void __RPC_STUB IInternetSecurityManager_QueryCustomPolicy_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSecurityManager_SetZoneMapping_Proxy(IInternetSecurityManager *This,DWORD dwZone,LPCWSTR lpszPattern,DWORD dwFlags);
++  void __RPC_STUB IInternetSecurityManager_SetZoneMapping_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetSecurityManager_GetZoneMappings_Proxy(IInternetSecurityManager *This,DWORD dwZone,IEnumString **ppenumString,DWORD dwFlags);
++  void __RPC_STUB IInternetSecurityManager_GetZoneMappings_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++#ifndef __IInternetSecurityManagerEx_INTERFACE_DEFINED__
++#define __IInternetSecurityManagerEx_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IInternetSecurityManagerEx;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetSecurityManagerEx : public IInternetSecurityManager {
++  public:
++    virtual HRESULT WINAPI ProcessUrlActionEx(LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved,DWORD *pdwOutFlags) = 0;
++  };
++#else
++  typedef struct IInternetSecurityManagerExVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetSecurityManagerEx *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetSecurityManagerEx *This);
++      ULONG (WINAPI *Release)(IInternetSecurityManagerEx *This);
++      HRESULT (WINAPI *SetSecuritySite)(IInternetSecurityManagerEx *This,IInternetSecurityMgrSite *pSite);
++      HRESULT (WINAPI *GetSecuritySite)(IInternetSecurityManagerEx *This,IInternetSecurityMgrSite **ppSite);
++      HRESULT (WINAPI *MapUrlToZone)(IInternetSecurityManagerEx *This,LPCWSTR pwszUrl,DWORD *pdwZone,DWORD dwFlags);
++      HRESULT (WINAPI *GetSecurityId)(IInternetSecurityManagerEx *This,LPCWSTR pwszUrl,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved);
++      HRESULT (WINAPI *ProcessUrlAction)(IInternetSecurityManagerEx *This,LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved);
++      HRESULT (WINAPI *QueryCustomPolicy)(IInternetSecurityManagerEx *This,LPCWSTR pwszUrl,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwReserved);
++      HRESULT (WINAPI *SetZoneMapping)(IInternetSecurityManagerEx *This,DWORD dwZone,LPCWSTR lpszPattern,DWORD dwFlags);
++      HRESULT (WINAPI *GetZoneMappings)(IInternetSecurityManagerEx *This,DWORD dwZone,IEnumString **ppenumString,DWORD dwFlags);
++      HRESULT (WINAPI *ProcessUrlActionEx)(IInternetSecurityManagerEx *This,LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved,DWORD *pdwOutFlags);
++    END_INTERFACE
++  } IInternetSecurityManagerExVtbl;
++  struct IInternetSecurityManagerEx {
++    CONST_VTBL struct IInternetSecurityManagerExVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetSecurityManagerEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetSecurityManagerEx_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetSecurityManagerEx_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetSecurityManagerEx_SetSecuritySite(This,pSite) (This)->lpVtbl->SetSecuritySite(This,pSite)
++#define IInternetSecurityManagerEx_GetSecuritySite(This,ppSite) (This)->lpVtbl->GetSecuritySite(This,ppSite)
++#define IInternetSecurityManagerEx_MapUrlToZone(This,pwszUrl,pdwZone,dwFlags) (This)->lpVtbl->MapUrlToZone(This,pwszUrl,pdwZone,dwFlags)
++#define IInternetSecurityManagerEx_GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetSecurityId(This,pwszUrl,pbSecurityId,pcbSecurityId,dwReserved)
++#define IInternetSecurityManagerEx_ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved) (This)->lpVtbl->ProcessUrlAction(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved)
++#define IInternetSecurityManagerEx_QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved) (This)->lpVtbl->QueryCustomPolicy(This,pwszUrl,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved)
++#define IInternetSecurityManagerEx_SetZoneMapping(This,dwZone,lpszPattern,dwFlags) (This)->lpVtbl->SetZoneMapping(This,dwZone,lpszPattern,dwFlags)
++#define IInternetSecurityManagerEx_GetZoneMappings(This,dwZone,ppenumString,dwFlags) (This)->lpVtbl->GetZoneMappings(This,dwZone,ppenumString,dwFlags)
++#define IInternetSecurityManagerEx_ProcessUrlActionEx(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved,pdwOutFlags) (This)->lpVtbl->ProcessUrlActionEx(This,pwszUrl,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved,pdwOutFlags)
++#endif
++#endif
++  HRESULT WINAPI IInternetSecurityManagerEx_ProcessUrlActionEx_Proxy(IInternetSecurityManagerEx *This,LPCWSTR pwszUrl,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved,DWORD *pdwOutFlags);
++  void __RPC_STUB IInternetSecurityManagerEx_ProcessUrlActionEx_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPINTERNETSECURITYMANANGER_DEFINED
++#define _LPINTERNETSECURITYMANANGER_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0205_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0205_v0_0_s_ifspec;
++#ifndef __IZoneIdentifier_INTERFACE_DEFINED__
++#define __IZoneIdentifier_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IZoneIdentifier;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IZoneIdentifier : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetId(DWORD *pdwZone) = 0;
++    virtual HRESULT WINAPI SetId(DWORD dwZone) = 0;
++    virtual HRESULT WINAPI Remove(void) = 0;
++  };
++#else
++  typedef struct IZoneIdentifierVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IZoneIdentifier *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IZoneIdentifier *This);
++      ULONG (WINAPI *Release)(IZoneIdentifier *This);
++      HRESULT (WINAPI *GetId)(IZoneIdentifier *This,DWORD *pdwZone);
++      HRESULT (WINAPI *SetId)(IZoneIdentifier *This,DWORD dwZone);
++      HRESULT (WINAPI *Remove)(IZoneIdentifier *This);
++    END_INTERFACE
++  } IZoneIdentifierVtbl;
++  struct IZoneIdentifier {
++    CONST_VTBL struct IZoneIdentifierVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IZoneIdentifier_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IZoneIdentifier_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IZoneIdentifier_Release(This) (This)->lpVtbl->Release(This)
++#define IZoneIdentifier_GetId(This,pdwZone) (This)->lpVtbl->GetId(This,pdwZone)
++#define IZoneIdentifier_SetId(This,dwZone) (This)->lpVtbl->SetId(This,dwZone)
++#define IZoneIdentifier_Remove(This) (This)->lpVtbl->Remove(This)
++#endif
++#endif
++  HRESULT WINAPI IZoneIdentifier_GetId_Proxy(IZoneIdentifier *This,DWORD *pdwZone);
++  void __RPC_STUB IZoneIdentifier_GetId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IZoneIdentifier_SetId_Proxy(IZoneIdentifier *This,DWORD dwZone);
++  void __RPC_STUB IZoneIdentifier_SetId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IZoneIdentifier_Remove_Proxy(IZoneIdentifier *This);
++  void __RPC_STUB IZoneIdentifier_Remove_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPINTERNETHOSTSECURITYMANANGER_DEFINED
++#define _LPINTERNETHOSTSECURITYMANANGER_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0207_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0207_v0_0_s_ifspec;
++#ifndef __IInternetHostSecurityManager_INTERFACE_DEFINED__
++#define __IInternetHostSecurityManager_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IInternetHostSecurityManager;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetHostSecurityManager : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetSecurityId(BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved) = 0;
++    virtual HRESULT WINAPI ProcessUrlAction(DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved) = 0;
++    virtual HRESULT WINAPI QueryCustomPolicy(REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwReserved) = 0;
++  };
++#else
++  typedef struct IInternetHostSecurityManagerVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetHostSecurityManager *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetHostSecurityManager *This);
++      ULONG (WINAPI *Release)(IInternetHostSecurityManager *This);
++      HRESULT (WINAPI *GetSecurityId)(IInternetHostSecurityManager *This,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved);
++      HRESULT (WINAPI *ProcessUrlAction)(IInternetHostSecurityManager *This,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved);
++      HRESULT (WINAPI *QueryCustomPolicy)(IInternetHostSecurityManager *This,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwReserved);
++    END_INTERFACE
++  } IInternetHostSecurityManagerVtbl;
++  struct IInternetHostSecurityManager {
++    CONST_VTBL struct IInternetHostSecurityManagerVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetHostSecurityManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetHostSecurityManager_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetHostSecurityManager_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetHostSecurityManager_GetSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved) (This)->lpVtbl->GetSecurityId(This,pbSecurityId,pcbSecurityId,dwReserved)
++#define IInternetHostSecurityManager_ProcessUrlAction(This,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved) (This)->lpVtbl->ProcessUrlAction(This,dwAction,pPolicy,cbPolicy,pContext,cbContext,dwFlags,dwReserved)
++#define IInternetHostSecurityManager_QueryCustomPolicy(This,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved) (This)->lpVtbl->QueryCustomPolicy(This,guidKey,ppPolicy,pcbPolicy,pContext,cbContext,dwReserved)
++#endif
++#endif
++  HRESULT WINAPI IInternetHostSecurityManager_GetSecurityId_Proxy(IInternetHostSecurityManager *This,BYTE *pbSecurityId,DWORD *pcbSecurityId,DWORD_PTR dwReserved);
++  void __RPC_STUB IInternetHostSecurityManager_GetSecurityId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetHostSecurityManager_ProcessUrlAction_Proxy(IInternetHostSecurityManager *This,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwFlags,DWORD dwReserved);
++  void __RPC_STUB IInternetHostSecurityManager_ProcessUrlAction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetHostSecurityManager_QueryCustomPolicy_Proxy(IInternetHostSecurityManager *This,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,BYTE *pContext,DWORD cbContext,DWORD dwReserved);
++  void __RPC_STUB IInternetHostSecurityManager_QueryCustomPolicy_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#define URLACTION_MIN 0x00001000
++#define URLACTION_DOWNLOAD_MIN 0x00001000
++#define URLACTION_DOWNLOAD_SIGNED_ACTIVEX 0x00001001
++#define URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX 0x00001004
++#define URLACTION_DOWNLOAD_CURR_MAX 0x00001004
++#define URLACTION_DOWNLOAD_MAX 0x000011FF
++
++#define URLACTION_ACTIVEX_MIN 0x00001200
++#define URLACTION_ACTIVEX_RUN 0x00001200
++#define URLPOLICY_ACTIVEX_CHECK_LIST 0x00010000
++#define URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY 0x00001201
++#define URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY 0x00001202
++#define URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY 0x00001203
++#define URLACTION_SCRIPT_OVERRIDE_SAFETY 0x00001401
++#define URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY 0x00001204
++#define URLACTION_ACTIVEX_TREATASUNTRUSTED 0x00001205
++#define URLACTION_ACTIVEX_NO_WEBOC_SCRIPT 0x00001206
++#define URLACTION_ACTIVEX_CURR_MAX 0x00001206
++#define URLACTION_ACTIVEX_MAX 0x000013ff
++
++#define URLACTION_SCRIPT_MIN 0x00001400
++#define URLACTION_SCRIPT_RUN 0x00001400
++#define URLACTION_SCRIPT_JAVA_USE 0x00001402
++#define URLACTION_SCRIPT_SAFE_ACTIVEX 0x00001405
++#define URLACTION_CROSS_DOMAIN_DATA 0x00001406
++#define URLACTION_SCRIPT_PASTE 0x00001407
++#define URLACTION_SCRIPT_CURR_MAX 0x00001407
++#define URLACTION_SCRIPT_MAX 0x000015ff
++
++#define URLACTION_HTML_MIN 0x00001600
++#define URLACTION_HTML_SUBMIT_FORMS 0x00001601
++#define URLACTION_HTML_SUBMIT_FORMS_FROM 0x00001602
++#define URLACTION_HTML_SUBMIT_FORMS_TO 0x00001603
++#define URLACTION_HTML_FONT_DOWNLOAD 0x00001604
++#define URLACTION_HTML_JAVA_RUN 0x00001605
++#define URLACTION_HTML_USERDATA_SAVE 0x00001606
++#define URLACTION_HTML_SUBFRAME_NAVIGATE 0x00001607
++#define URLACTION_HTML_META_REFRESH 0x00001608
++#define URLACTION_HTML_MIXED_CONTENT 0x00001609
++#define URLACTION_HTML_MAX 0x000017ff
++
++#define URLACTION_SHELL_MIN 0x00001800
++#define URLACTION_SHELL_INSTALL_DTITEMS 0x00001800
++#define URLACTION_SHELL_MOVE_OR_COPY 0x00001802
++#define URLACTION_SHELL_FILE_DOWNLOAD 0x00001803
++#define URLACTION_SHELL_VERB 0x00001804
++#define URLACTION_SHELL_WEBVIEW_VERB 0x00001805
++#define URLACTION_SHELL_SHELLEXECUTE 0x00001806
++#define URLACTION_SHELL_EXECUTE_HIGHRISK 0x00001806
++#define URLACTION_SHELL_EXECUTE_MODRISK 0x00001807
++#define URLACTION_SHELL_EXECUTE_LOWRISK 0x00001808
++#define URLACTION_SHELL_POPUPMGR 0x00001809
++#define URLACTION_SHELL_RTF_OBJECTS_LOAD 0x0000180A
++#define URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY 0x0000180B
++#define URLACTION_SHELL_CURR_MAX 0x0000180B
++#define URLACTION_SHELL_MAX 0x000019ff
++
++#define URLACTION_NETWORK_MIN 0x00001A00
++
++#define URLACTION_CREDENTIALS_USE 0x00001A00
++#define URLPOLICY_CREDENTIALS_SILENT_LOGON_OK 0x00000000
++#define URLPOLICY_CREDENTIALS_MUST_PROMPT_USER 0x00010000
++#define URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT 0x00020000
++#define URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY 0x00030000
++
++#define URLACTION_AUTHENTICATE_CLIENT 0x00001A01
++#define URLPOLICY_AUTHENTICATE_CLEARTEXT_OK 0x00000000
++#define URLPOLICY_AUTHENTICATE_CHALLENGE_RESPONSE 0x00010000
++#define URLPOLICY_AUTHENTICATE_MUTUAL_ONLY 0x00030000
++
++#define URLACTION_COOKIES 0x00001A02
++#define URLACTION_COOKIES_SESSION 0x00001A03
++
++#define URLACTION_CLIENT_CERT_PROMPT 0x00001A04
++
++#define URLACTION_COOKIES_THIRD_PARTY 0x00001A05
++#define URLACTION_COOKIES_SESSION_THIRD_PARTY 0x00001A06
++
++#define URLACTION_COOKIES_ENABLED 0x00001A10
++
++#define URLACTION_NETWORK_CURR_MAX 0x00001A10
++#define URLACTION_NETWORK_MAX 0x00001Bff
++
++#define URLACTION_JAVA_MIN 0x00001C00
++#define URLACTION_JAVA_PERMISSIONS 0x00001C00
++#define URLPOLICY_JAVA_PROHIBIT 0x00000000
++#define URLPOLICY_JAVA_HIGH 0x00010000
++#define URLPOLICY_JAVA_MEDIUM 0x00020000
++#define URLPOLICY_JAVA_LOW 0x00030000
++#define URLPOLICY_JAVA_CUSTOM 0x00800000
++#define URLACTION_JAVA_CURR_MAX 0x00001C00
++#define URLACTION_JAVA_MAX 0x00001Cff
++
++#define URLACTION_INFODELIVERY_MIN 0x00001D00
++#define URLACTION_INFODELIVERY_NO_ADDING_CHANNELS 0x00001D00
++#define URLACTION_INFODELIVERY_NO_EDITING_CHANNELS 0x00001D01
++#define URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS 0x00001D02
++#define URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS 0x00001D03
++#define URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS 0x00001D04
++#define URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS 0x00001D05
++#define URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING 0x00001D06
++#define URLACTION_INFODELIVERY_CURR_MAX 0x00001D06
++#define URLACTION_INFODELIVERY_MAX 0x00001Dff
++#define URLACTION_CHANNEL_SOFTDIST_MIN 0x00001E00
++#define URLACTION_CHANNEL_SOFTDIST_PERMISSIONS 0x00001E05
++#define URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT 0x00010000
++#define URLPOLICY_CHANNEL_SOFTDIST_PRECACHE 0x00020000
++#define URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL 0x00030000
++#define URLACTION_CHANNEL_SOFTDIST_MAX 0x00001Eff
++#define URLACTION_BEHAVIOR_MIN 0x00002000
++#define URLACTION_BEHAVIOR_RUN 0x00002000
++#define URLPOLICY_BEHAVIOR_CHECK_LIST 0x00010000
++
++#define URLACTION_FEATURE_MIN 0x00002100
++#define URLACTION_FEATURE_MIME_SNIFFING 0x00002100
++#define URLACTION_FEATURE_ZONE_ELEVATION 0x00002101
++#define URLACTION_FEATURE_WINDOW_RESTRICTIONS 0x00002102
++
++#define URLACTION_AUTOMATIC_DOWNLOAD_UI_MIN 0x00002200
++#define URLACTION_AUTOMATIC_DOWNLOAD_UI 0x00002200
++#define URLACTION_AUTOMATIC_ACTIVEX_UI 0x00002201
++
++#define URLACTION_ALLOW_RESTRICTEDPROTOCOLS 0x00002300
++
++#define URLPOLICY_ALLOW 0x00
++#define URLPOLICY_QUERY 0x01
++#define URLPOLICY_DISALLOW 0x03
++
++#define URLPOLICY_NOTIFY_ON_ALLOW 0x10
++#define URLPOLICY_NOTIFY_ON_DISALLOW 0x20
++
++#define URLPOLICY_LOG_ON_ALLOW 0x40
++#define URLPOLICY_LOG_ON_DISALLOW 0x80
++
++#define URLPOLICY_MASK_PERMISSIONS 0x0f
++#define GetUrlPolicyPermissions(dw) (dw & URLPOLICY_MASK_PERMISSIONS)
++#define SetUrlPolicyPermissions(dw,dw2) ((dw) = ((dw) & ~(URLPOLICY_MASK_PERMISSIONS)) | (dw2))
++
++#define URLPOLICY_DONTCHECKDLGBOX 0x100
++
++  EXTERN_C const GUID GUID_CUSTOM_LOCALMACHINEZONEUNLOCKED;
++#ifndef _LPINTERNETZONEMANAGER_DEFINED
++#define _LPINTERNETZONEMANAGER_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0208_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0208_v0_0_s_ifspec;
++#ifndef __IInternetZoneManager_INTERFACE_DEFINED__
++#define __IInternetZoneManager_INTERFACE_DEFINED__
++
++  typedef IInternetZoneManager *LPURLZONEMANAGER;
++
++  typedef enum tagURLZONE {
++    URLZONE_PREDEFINED_MIN = 0,URLZONE_LOCAL_MACHINE = 0,URLZONE_INTRANET = URLZONE_LOCAL_MACHINE + 1,URLZONE_TRUSTED = URLZONE_INTRANET + 1,
++    URLZONE_INTERNET = URLZONE_TRUSTED + 1,URLZONE_UNTRUSTED = URLZONE_INTERNET + 1,URLZONE_PREDEFINED_MAX = 999,URLZONE_USER_MIN = 1000,
++    URLZONE_USER_MAX = 10000
++  } URLZONE;
++
++#define URLZONE_ESC_FLAG 0x100
++
++  typedef enum tagURLTEMPLATE {
++    URLTEMPLATE_CUSTOM = 0,URLTEMPLATE_PREDEFINED_MIN = 0x10000,URLTEMPLATE_LOW = 0x10000,URLTEMPLATE_MEDLOW = 0x10500,URLTEMPLATE_MEDIUM = 0x11000,
++    URLTEMPLATE_HIGH = 0x12000,URLTEMPLATE_PREDEFINED_MAX = 0x20000
++  } URLTEMPLATE;
++
++  enum __MIDL_IInternetZoneManager_0001 {
++    MAX_ZONE_PATH = 260,MAX_ZONE_DESCRIPTION = 200
++  };
++  typedef enum __MIDL_IInternetZoneManager_0002 {
++    ZAFLAGS_CUSTOM_EDIT = 0x1,ZAFLAGS_ADD_SITES = 0x2,ZAFLAGS_REQUIRE_VERIFICATION = 0x4,ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x8,
++    ZAFLAGS_INCLUDE_INTRANET_SITES = 0x10,ZAFLAGS_NO_UI = 0x20,ZAFLAGS_SUPPORTS_VERIFICATION = 0x40,ZAFLAGS_UNC_AS_INTRANET = 0x80,
++    ZAFLAGS_USE_LOCKED_ZONES = 0x10000
++  } ZAFLAGS;
++
++  typedef struct _ZONEATTRIBUTES {
++    ULONG cbSize;
++    WCHAR szDisplayName[260 ];
++    WCHAR szDescription[200 ];
++    WCHAR szIconPath[260 ];
++    DWORD dwTemplateMinLevel;
++    DWORD dwTemplateRecommended;
++    DWORD dwTemplateCurrentLevel;
++    DWORD dwFlags;
++  } ZONEATTRIBUTES;
++
++  typedef struct _ZONEATTRIBUTES *LPZONEATTRIBUTES;
++
++  typedef enum _URLZONEREG {
++    URLZONEREG_DEFAULT = 0,URLZONEREG_HKLM = URLZONEREG_DEFAULT + 1,URLZONEREG_HKCU = URLZONEREG_HKLM + 1
++  } URLZONEREG;
++
++  EXTERN_C const IID IID_IInternetZoneManager;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetZoneManager : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetZoneAttributes(DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) = 0;
++    virtual HRESULT WINAPI SetZoneAttributes(DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes) = 0;
++    virtual HRESULT WINAPI GetZoneCustomPolicy(DWORD dwZone,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,URLZONEREG urlZoneReg) = 0;
++    virtual HRESULT WINAPI SetZoneCustomPolicy(DWORD dwZone,REFGUID guidKey,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) = 0;
++    virtual HRESULT WINAPI GetZoneActionPolicy(DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) = 0;
++    virtual HRESULT WINAPI SetZoneActionPolicy(DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg) = 0;
++    virtual HRESULT WINAPI PromptAction(DWORD dwAction,HWND hwndParent,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwPromptFlags) = 0;
++    virtual HRESULT WINAPI LogAction(DWORD dwAction,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwLogFlags) = 0;
++    virtual HRESULT WINAPI CreateZoneEnumerator(DWORD *pdwEnum,DWORD *pdwCount,DWORD dwFlags) = 0;
++    virtual HRESULT WINAPI GetZoneAt(DWORD dwEnum,DWORD dwIndex,DWORD *pdwZone) = 0;
++    virtual HRESULT WINAPI DestroyZoneEnumerator(DWORD dwEnum) = 0;
++    virtual HRESULT WINAPI CopyTemplatePoliciesToZone(DWORD dwTemplate,DWORD dwZone,DWORD dwReserved) = 0;
++  };
++#else
++  typedef struct IInternetZoneManagerVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetZoneManager *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetZoneManager *This);
++      ULONG (WINAPI *Release)(IInternetZoneManager *This);
++      HRESULT (WINAPI *GetZoneAttributes)(IInternetZoneManager *This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes);
++      HRESULT (WINAPI *SetZoneAttributes)(IInternetZoneManager *This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes);
++      HRESULT (WINAPI *GetZoneCustomPolicy)(IInternetZoneManager *This,DWORD dwZone,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,URLZONEREG urlZoneReg);
++      HRESULT (WINAPI *SetZoneCustomPolicy)(IInternetZoneManager *This,DWORD dwZone,REFGUID guidKey,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg);
++      HRESULT (WINAPI *GetZoneActionPolicy)(IInternetZoneManager *This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg);
++      HRESULT (WINAPI *SetZoneActionPolicy)(IInternetZoneManager *This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg);
++      HRESULT (WINAPI *PromptAction)(IInternetZoneManager *This,DWORD dwAction,HWND hwndParent,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwPromptFlags);
++      HRESULT (WINAPI *LogAction)(IInternetZoneManager *This,DWORD dwAction,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwLogFlags);
++      HRESULT (WINAPI *CreateZoneEnumerator)(IInternetZoneManager *This,DWORD *pdwEnum,DWORD *pdwCount,DWORD dwFlags);
++      HRESULT (WINAPI *GetZoneAt)(IInternetZoneManager *This,DWORD dwEnum,DWORD dwIndex,DWORD *pdwZone);
++      HRESULT (WINAPI *DestroyZoneEnumerator)(IInternetZoneManager *This,DWORD dwEnum);
++      HRESULT (WINAPI *CopyTemplatePoliciesToZone)(IInternetZoneManager *This,DWORD dwTemplate,DWORD dwZone,DWORD dwReserved);
++    END_INTERFACE
++  } IInternetZoneManagerVtbl;
++  struct IInternetZoneManager {
++    CONST_VTBL struct IInternetZoneManagerVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetZoneManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetZoneManager_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetZoneManager_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetZoneManager_GetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes)
++#define IInternetZoneManager_SetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes)
++#define IInternetZoneManager_GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg) (This)->lpVtbl->GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg)
++#define IInternetZoneManager_SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg)
++#define IInternetZoneManager_GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
++#define IInternetZoneManager_SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
++#define IInternetZoneManager_PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags) (This)->lpVtbl->PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags)
++#define IInternetZoneManager_LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags) (This)->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags)
++#define IInternetZoneManager_CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags) (This)->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags)
++#define IInternetZoneManager_GetZoneAt(This,dwEnum,dwIndex,pdwZone) (This)->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone)
++#define IInternetZoneManager_DestroyZoneEnumerator(This,dwEnum) (This)->lpVtbl->DestroyZoneEnumerator(This,dwEnum)
++#define IInternetZoneManager_CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved) (This)->lpVtbl->CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved)
++#endif
++#endif
++  HRESULT WINAPI IInternetZoneManager_GetZoneAttributes_Proxy(IInternetZoneManager *This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes);
++  void __RPC_STUB IInternetZoneManager_GetZoneAttributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManager_SetZoneAttributes_Proxy(IInternetZoneManager *This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes);
++  void __RPC_STUB IInternetZoneManager_SetZoneAttributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManager_GetZoneCustomPolicy_Proxy(IInternetZoneManager *This,DWORD dwZone,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,URLZONEREG urlZoneReg);
++  void __RPC_STUB IInternetZoneManager_GetZoneCustomPolicy_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManager_SetZoneCustomPolicy_Proxy(IInternetZoneManager *This,DWORD dwZone,REFGUID guidKey,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg);
++  void __RPC_STUB IInternetZoneManager_SetZoneCustomPolicy_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManager_GetZoneActionPolicy_Proxy(IInternetZoneManager *This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg);
++  void __RPC_STUB IInternetZoneManager_GetZoneActionPolicy_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManager_SetZoneActionPolicy_Proxy(IInternetZoneManager *This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg);
++  void __RPC_STUB IInternetZoneManager_SetZoneActionPolicy_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManager_PromptAction_Proxy(IInternetZoneManager *This,DWORD dwAction,HWND hwndParent,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwPromptFlags);
++  void __RPC_STUB IInternetZoneManager_PromptAction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManager_LogAction_Proxy(IInternetZoneManager *This,DWORD dwAction,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwLogFlags);
++  void __RPC_STUB IInternetZoneManager_LogAction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManager_CreateZoneEnumerator_Proxy(IInternetZoneManager *This,DWORD *pdwEnum,DWORD *pdwCount,DWORD dwFlags);
++  void __RPC_STUB IInternetZoneManager_CreateZoneEnumerator_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManager_GetZoneAt_Proxy(IInternetZoneManager *This,DWORD dwEnum,DWORD dwIndex,DWORD *pdwZone);
++  void __RPC_STUB IInternetZoneManager_GetZoneAt_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManager_DestroyZoneEnumerator_Proxy(IInternetZoneManager *This,DWORD dwEnum);
++  void __RPC_STUB IInternetZoneManager_DestroyZoneEnumerator_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManager_CopyTemplatePoliciesToZone_Proxy(IInternetZoneManager *This,DWORD dwTemplate,DWORD dwZone,DWORD dwReserved);
++  void __RPC_STUB IInternetZoneManager_CopyTemplatePoliciesToZone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPINTERNETZONEMANAGEREX_DEFINED
++#define _LPINTERNETZONEMANAGEREX_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0209_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0209_v0_0_s_ifspec;
++#ifndef __IInternetZoneManagerEx_INTERFACE_DEFINED__
++#define __IInternetZoneManagerEx_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_IInternetZoneManagerEx;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IInternetZoneManagerEx : public IInternetZoneManager {
++  public:
++    virtual HRESULT WINAPI GetZoneActionPolicyEx(DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg,DWORD dwFlags) = 0;
++    virtual HRESULT WINAPI SetZoneActionPolicyEx(DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg,DWORD dwFlags) = 0;
++  };
++#else
++  typedef struct IInternetZoneManagerExVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IInternetZoneManagerEx *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IInternetZoneManagerEx *This);
++      ULONG (WINAPI *Release)(IInternetZoneManagerEx *This);
++      HRESULT (WINAPI *GetZoneAttributes)(IInternetZoneManagerEx *This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes);
++      HRESULT (WINAPI *SetZoneAttributes)(IInternetZoneManagerEx *This,DWORD dwZone,ZONEATTRIBUTES *pZoneAttributes);
++      HRESULT (WINAPI *GetZoneCustomPolicy)(IInternetZoneManagerEx *This,DWORD dwZone,REFGUID guidKey,BYTE **ppPolicy,DWORD *pcbPolicy,URLZONEREG urlZoneReg);
++      HRESULT (WINAPI *SetZoneCustomPolicy)(IInternetZoneManagerEx *This,DWORD dwZone,REFGUID guidKey,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg);
++      HRESULT (WINAPI *GetZoneActionPolicy)(IInternetZoneManagerEx *This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg);
++      HRESULT (WINAPI *SetZoneActionPolicy)(IInternetZoneManagerEx *This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg);
++      HRESULT (WINAPI *PromptAction)(IInternetZoneManagerEx *This,DWORD dwAction,HWND hwndParent,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwPromptFlags);
++      HRESULT (WINAPI *LogAction)(IInternetZoneManagerEx *This,DWORD dwAction,LPCWSTR pwszUrl,LPCWSTR pwszText,DWORD dwLogFlags);
++      HRESULT (WINAPI *CreateZoneEnumerator)(IInternetZoneManagerEx *This,DWORD *pdwEnum,DWORD *pdwCount,DWORD dwFlags);
++      HRESULT (WINAPI *GetZoneAt)(IInternetZoneManagerEx *This,DWORD dwEnum,DWORD dwIndex,DWORD *pdwZone);
++      HRESULT (WINAPI *DestroyZoneEnumerator)(IInternetZoneManagerEx *This,DWORD dwEnum);
++      HRESULT (WINAPI *CopyTemplatePoliciesToZone)(IInternetZoneManagerEx *This,DWORD dwTemplate,DWORD dwZone,DWORD dwReserved);
++      HRESULT (WINAPI *GetZoneActionPolicyEx)(IInternetZoneManagerEx *This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg,DWORD dwFlags);
++      HRESULT (WINAPI *SetZoneActionPolicyEx)(IInternetZoneManagerEx *This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg,DWORD dwFlags);
++    END_INTERFACE
++  } IInternetZoneManagerExVtbl;
++  struct IInternetZoneManagerEx {
++    CONST_VTBL struct IInternetZoneManagerExVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IInternetZoneManagerEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IInternetZoneManagerEx_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IInternetZoneManagerEx_Release(This) (This)->lpVtbl->Release(This)
++#define IInternetZoneManagerEx_GetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->GetZoneAttributes(This,dwZone,pZoneAttributes)
++#define IInternetZoneManagerEx_SetZoneAttributes(This,dwZone,pZoneAttributes) (This)->lpVtbl->SetZoneAttributes(This,dwZone,pZoneAttributes)
++#define IInternetZoneManagerEx_GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg) (This)->lpVtbl->GetZoneCustomPolicy(This,dwZone,guidKey,ppPolicy,pcbPolicy,urlZoneReg)
++#define IInternetZoneManagerEx_SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->SetZoneCustomPolicy(This,dwZone,guidKey,pPolicy,cbPolicy,urlZoneReg)
++#define IInternetZoneManagerEx_GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->GetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
++#define IInternetZoneManagerEx_SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg) (This)->lpVtbl->SetZoneActionPolicy(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg)
++#define IInternetZoneManagerEx_PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags) (This)->lpVtbl->PromptAction(This,dwAction,hwndParent,pwszUrl,pwszText,dwPromptFlags)
++#define IInternetZoneManagerEx_LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags) (This)->lpVtbl->LogAction(This,dwAction,pwszUrl,pwszText,dwLogFlags)
++#define IInternetZoneManagerEx_CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags) (This)->lpVtbl->CreateZoneEnumerator(This,pdwEnum,pdwCount,dwFlags)
++#define IInternetZoneManagerEx_GetZoneAt(This,dwEnum,dwIndex,pdwZone) (This)->lpVtbl->GetZoneAt(This,dwEnum,dwIndex,pdwZone)
++#define IInternetZoneManagerEx_DestroyZoneEnumerator(This,dwEnum) (This)->lpVtbl->DestroyZoneEnumerator(This,dwEnum)
++#define IInternetZoneManagerEx_CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved) (This)->lpVtbl->CopyTemplatePoliciesToZone(This,dwTemplate,dwZone,dwReserved)
++#define IInternetZoneManagerEx_GetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags) (This)->lpVtbl->GetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags)
++#define IInternetZoneManagerEx_SetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags) (This)->lpVtbl->SetZoneActionPolicyEx(This,dwZone,dwAction,pPolicy,cbPolicy,urlZoneReg,dwFlags)
++#endif
++#endif
++  HRESULT WINAPI IInternetZoneManagerEx_GetZoneActionPolicyEx_Proxy(IInternetZoneManagerEx *This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg,DWORD dwFlags);
++  void __RPC_STUB IInternetZoneManagerEx_GetZoneActionPolicyEx_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IInternetZoneManagerEx_SetZoneActionPolicyEx_Proxy(IInternetZoneManagerEx *This,DWORD dwZone,DWORD dwAction,BYTE *pPolicy,DWORD cbPolicy,URLZONEREG urlZoneReg,DWORD dwFlags);
++  void __RPC_STUB IInternetZoneManagerEx_SetZoneActionPolicyEx_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++  EXTERN_C const IID CLSID_SoftDistExt;
++
++#ifndef _LPSOFTDISTEXT_DEFINED
++#define _LPSOFTDISTEXT_DEFINED
++
++#define SOFTDIST_FLAG_USAGE_EMAIL 0x00000001
++#define SOFTDIST_FLAG_USAGE_PRECACHE 0x00000002
++#define SOFTDIST_FLAG_USAGE_AUTOINSTALL 0x00000004
++#define SOFTDIST_FLAG_DELETE_SUBSCRIPTION 0x00000008
++
++#define SOFTDIST_ADSTATE_NONE 0x00000000
++#define SOFTDIST_ADSTATE_AVAILABLE 0x00000001
++#define SOFTDIST_ADSTATE_DOWNLOADED 0x00000002
++#define SOFTDIST_ADSTATE_INSTALLED 0x00000003
++
++  typedef struct _tagCODEBASEHOLD {
++    ULONG cbSize;
++    LPWSTR szDistUnit;
++    LPWSTR szCodeBase;
++    DWORD dwVersionMS;
++    DWORD dwVersionLS;
++    DWORD dwStyle;
++  } CODEBASEHOLD;
++
++  typedef struct _tagCODEBASEHOLD *LPCODEBASEHOLD;
++
++  typedef struct _tagSOFTDISTINFO {
++    ULONG cbSize;
++    DWORD dwFlags;
++    DWORD dwAdState;
++    LPWSTR szTitle;
++    LPWSTR szAbstract;
++    LPWSTR szHREF;
++    DWORD dwInstalledVersionMS;
++    DWORD dwInstalledVersionLS;
++    DWORD dwUpdateVersionMS;
++    DWORD dwUpdateVersionLS;
++    DWORD dwAdvertisedVersionMS;
++    DWORD dwAdvertisedVersionLS;
++    DWORD dwReserved;
++  } SOFTDISTINFO;
++
++  typedef struct _tagSOFTDISTINFO *LPSOFTDISTINFO;
++
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0210_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0210_v0_0_s_ifspec;
++#ifndef __ISoftDistExt_INTERFACE_DEFINED__
++#define __ISoftDistExt_INTERFACE_DEFINED__
++  EXTERN_C const IID IID_ISoftDistExt;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ISoftDistExt : public IUnknown {
++  public:
++    virtual HRESULT WINAPI ProcessSoftDist(LPCWSTR szCDFURL,IXMLElement *pSoftDistElement,LPSOFTDISTINFO lpsdi) = 0;
++    virtual HRESULT WINAPI GetFirstCodeBase(LPWSTR *szCodeBase,LPDWORD dwMaxSize) = 0;
++    virtual HRESULT WINAPI GetNextCodeBase(LPWSTR *szCodeBase,LPDWORD dwMaxSize) = 0;
++    virtual HRESULT WINAPI AsyncInstallDistributionUnit(IBindCtx *pbc,LPVOID pvReserved,DWORD flags,LPCODEBASEHOLD lpcbh) = 0;
++  };
++#else
++  typedef struct ISoftDistExtVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ISoftDistExt *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ISoftDistExt *This);
++      ULONG (WINAPI *Release)(ISoftDistExt *This);
++      HRESULT (WINAPI *ProcessSoftDist)(ISoftDistExt *This,LPCWSTR szCDFURL,IXMLElement *pSoftDistElement,LPSOFTDISTINFO lpsdi);
++      HRESULT (WINAPI *GetFirstCodeBase)(ISoftDistExt *This,LPWSTR *szCodeBase,LPDWORD dwMaxSize);
++      HRESULT (WINAPI *GetNextCodeBase)(ISoftDistExt *This,LPWSTR *szCodeBase,LPDWORD dwMaxSize);
++      HRESULT (WINAPI *AsyncInstallDistributionUnit)(ISoftDistExt *This,IBindCtx *pbc,LPVOID pvReserved,DWORD flags,LPCODEBASEHOLD lpcbh);
++    END_INTERFACE
++  } ISoftDistExtVtbl;
++  struct ISoftDistExt {
++    CONST_VTBL struct ISoftDistExtVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ISoftDistExt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ISoftDistExt_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ISoftDistExt_Release(This) (This)->lpVtbl->Release(This)
++#define ISoftDistExt_ProcessSoftDist(This,szCDFURL,pSoftDistElement,lpsdi) (This)->lpVtbl->ProcessSoftDist(This,szCDFURL,pSoftDistElement,lpsdi)
++#define ISoftDistExt_GetFirstCodeBase(This,szCodeBase,dwMaxSize) (This)->lpVtbl->GetFirstCodeBase(This,szCodeBase,dwMaxSize)
++#define ISoftDistExt_GetNextCodeBase(This,szCodeBase,dwMaxSize) (This)->lpVtbl->GetNextCodeBase(This,szCodeBase,dwMaxSize)
++#define ISoftDistExt_AsyncInstallDistributionUnit(This,pbc,pvReserved,flags,lpcbh) (This)->lpVtbl->AsyncInstallDistributionUnit(This,pbc,pvReserved,flags,lpcbh)
++#endif
++#endif
++  HRESULT WINAPI ISoftDistExt_ProcessSoftDist_Proxy(ISoftDistExt *This,LPCWSTR szCDFURL,IXMLElement *pSoftDistElement,LPSOFTDISTINFO lpsdi);
++  void __RPC_STUB ISoftDistExt_ProcessSoftDist_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ISoftDistExt_GetFirstCodeBase_Proxy(ISoftDistExt *This,LPWSTR *szCodeBase,LPDWORD dwMaxSize);
++  void __RPC_STUB ISoftDistExt_GetFirstCodeBase_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ISoftDistExt_GetNextCodeBase_Proxy(ISoftDistExt *This,LPWSTR *szCodeBase,LPDWORD dwMaxSize);
++  void __RPC_STUB ISoftDistExt_GetNextCodeBase_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ISoftDistExt_AsyncInstallDistributionUnit_Proxy(ISoftDistExt *This,IBindCtx *pbc,LPVOID pvReserved,DWORD flags,LPCODEBASEHOLD lpcbh);
++  void __RPC_STUB ISoftDistExt_AsyncInstallDistributionUnit_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++
++  STDAPI GetSoftwareUpdateInfo(LPCWSTR szDistUnit,LPSOFTDISTINFO psdi);
++  STDAPI SetSoftwareUpdateAdvertisementState(LPCWSTR szDistUnit,DWORD dwAdState,DWORD dwAdvertisedVersionMS,DWORD dwAdvertisedVersionLS);
++#endif
++
++#ifndef _LPCATALOGFILEINFO_DEFINED
++#define _LPCATALOGFILEINFO_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0211_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0211_v0_0_s_ifspec;
++#ifndef __ICatalogFileInfo_INTERFACE_DEFINED__
++#define __ICatalogFileInfo_INTERFACE_DEFINED__
++  typedef ICatalogFileInfo *LPCATALOGFILEINFO;
++
++  EXTERN_C const IID IID_ICatalogFileInfo;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct ICatalogFileInfo : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetCatalogFile(LPSTR *ppszCatalogFile) = 0;
++    virtual HRESULT WINAPI GetJavaTrust(void **ppJavaTrust) = 0;
++  };
++#else
++  typedef struct ICatalogFileInfoVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(ICatalogFileInfo *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(ICatalogFileInfo *This);
++      ULONG (WINAPI *Release)(ICatalogFileInfo *This);
++      HRESULT (WINAPI *GetCatalogFile)(ICatalogFileInfo *This,LPSTR *ppszCatalogFile);
++      HRESULT (WINAPI *GetJavaTrust)(ICatalogFileInfo *This,void **ppJavaTrust);
++    END_INTERFACE
++  } ICatalogFileInfoVtbl;
++  struct ICatalogFileInfo {
++    CONST_VTBL struct ICatalogFileInfoVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define ICatalogFileInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define ICatalogFileInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define ICatalogFileInfo_Release(This) (This)->lpVtbl->Release(This)
++#define ICatalogFileInfo_GetCatalogFile(This,ppszCatalogFile) (This)->lpVtbl->GetCatalogFile(This,ppszCatalogFile)
++#define ICatalogFileInfo_GetJavaTrust(This,ppJavaTrust) (This)->lpVtbl->GetJavaTrust(This,ppJavaTrust)
++#endif
++#endif
++  HRESULT WINAPI ICatalogFileInfo_GetCatalogFile_Proxy(ICatalogFileInfo *This,LPSTR *ppszCatalogFile);
++  void __RPC_STUB ICatalogFileInfo_GetCatalogFile_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI ICatalogFileInfo_GetJavaTrust_Proxy(ICatalogFileInfo *This,void **ppJavaTrust);
++  void __RPC_STUB ICatalogFileInfo_GetJavaTrust_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPDATAFILTER_DEFINED
++#define _LPDATAFILTER_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0212_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0212_v0_0_s_ifspec;
++#ifndef __IDataFilter_INTERFACE_DEFINED__
++#define __IDataFilter_INTERFACE_DEFINED__
++  typedef IDataFilter *LPDATAFILTER;
++
++  EXTERN_C const IID IID_IDataFilter;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IDataFilter : public IUnknown {
++  public:
++    virtual HRESULT WINAPI DoEncode(DWORD dwFlags,LONG lInBufferSize,BYTE *pbInBuffer,LONG lOutBufferSize,BYTE *pbOutBuffer,LONG lInBytesAvailable,LONG *plInBytesRead,LONG *plOutBytesWritten,DWORD dwReserved) = 0;
++    virtual HRESULT WINAPI DoDecode(DWORD dwFlags,LONG lInBufferSize,BYTE *pbInBuffer,LONG lOutBufferSize,BYTE *pbOutBuffer,LONG lInBytesAvailable,LONG *plInBytesRead,LONG *plOutBytesWritten,DWORD dwReserved) = 0;
++    virtual HRESULT WINAPI SetEncodingLevel(DWORD dwEncLevel) = 0;
++  };
++#else
++  typedef struct IDataFilterVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IDataFilter *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IDataFilter *This);
++      ULONG (WINAPI *Release)(IDataFilter *This);
++      HRESULT (WINAPI *DoEncode)(IDataFilter *This,DWORD dwFlags,LONG lInBufferSize,BYTE *pbInBuffer,LONG lOutBufferSize,BYTE *pbOutBuffer,LONG lInBytesAvailable,LONG *plInBytesRead,LONG *plOutBytesWritten,DWORD dwReserved);
++      HRESULT (WINAPI *DoDecode)(IDataFilter *This,DWORD dwFlags,LONG lInBufferSize,BYTE *pbInBuffer,LONG lOutBufferSize,BYTE *pbOutBuffer,LONG lInBytesAvailable,LONG *plInBytesRead,LONG *plOutBytesWritten,DWORD dwReserved);
++      HRESULT (WINAPI *SetEncodingLevel)(IDataFilter *This,DWORD dwEncLevel);
++    END_INTERFACE
++  } IDataFilterVtbl;
++  struct IDataFilter {
++    CONST_VTBL struct IDataFilterVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IDataFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IDataFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IDataFilter_Release(This) (This)->lpVtbl->Release(This)
++#define IDataFilter_DoEncode(This,dwFlags,lInBufferSize,pbInBuffer,lOutBufferSize,pbOutBuffer,lInBytesAvailable,plInBytesRead,plOutBytesWritten,dwReserved) (This)->lpVtbl->DoEncode(This,dwFlags,lInBufferSize,pbInBuffer,lOutBufferSize,pbOutBuffer,lInBytesAvailable,plInBytesRead,plOutBytesWritten,dwReserved)
++#define IDataFilter_DoDecode(This,dwFlags,lInBufferSize,pbInBuffer,lOutBufferSize,pbOutBuffer,lInBytesAvailable,plInBytesRead,plOutBytesWritten,dwReserved) (This)->lpVtbl->DoDecode(This,dwFlags,lInBufferSize,pbInBuffer,lOutBufferSize,pbOutBuffer,lInBytesAvailable,plInBytesRead,plOutBytesWritten,dwReserved)
++#define IDataFilter_SetEncodingLevel(This,dwEncLevel) (This)->lpVtbl->SetEncodingLevel(This,dwEncLevel)
++#endif
++#endif
++  HRESULT WINAPI IDataFilter_DoEncode_Proxy(IDataFilter *This,DWORD dwFlags,LONG lInBufferSize,BYTE *pbInBuffer,LONG lOutBufferSize,BYTE *pbOutBuffer,LONG lInBytesAvailable,LONG *plInBytesRead,LONG *plOutBytesWritten,DWORD dwReserved);
++  void __RPC_STUB IDataFilter_DoEncode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDataFilter_DoDecode_Proxy(IDataFilter *This,DWORD dwFlags,LONG lInBufferSize,BYTE *pbInBuffer,LONG lOutBufferSize,BYTE *pbOutBuffer,LONG lInBytesAvailable,LONG *plInBytesRead,LONG *plOutBytesWritten,DWORD dwReserved);
++  void __RPC_STUB IDataFilter_DoDecode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IDataFilter_SetEncodingLevel_Proxy(IDataFilter *This,DWORD dwEncLevel);
++  void __RPC_STUB IDataFilter_SetEncodingLevel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _LPENCODINGFILTERFACTORY_DEFINED
++#define _LPENCODINGFILTERFACTORY_DEFINED
++  typedef struct _tagPROTOCOLFILTERDATA {
++    DWORD cbSize;
++    IInternetProtocolSink *pProtocolSink;
++    IInternetProtocol *pProtocol;
++    IUnknown *pUnk;
++    DWORD dwFilterFlags;
++  } PROTOCOLFILTERDATA;
++
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0213_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0213_v0_0_s_ifspec;
++#ifndef __IEncodingFilterFactory_INTERFACE_DEFINED__
++#define __IEncodingFilterFactory_INTERFACE_DEFINED__
++  typedef IEncodingFilterFactory *LPENCODINGFILTERFACTORY;
++
++  typedef struct _tagDATAINFO {
++    ULONG ulTotalSize;
++    ULONG ulavrPacketSize;
++    ULONG ulConnectSpeed;
++    ULONG ulProcessorSpeed;
++  } DATAINFO;
++
++  EXTERN_C const IID IID_IEncodingFilterFactory;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IEncodingFilterFactory : public IUnknown {
++  public:
++    virtual HRESULT WINAPI FindBestFilter(LPCWSTR pwzCodeIn,LPCWSTR pwzCodeOut,DATAINFO info,IDataFilter **ppDF) = 0;
++    virtual HRESULT WINAPI GetDefaultFilter(LPCWSTR pwzCodeIn,LPCWSTR pwzCodeOut,IDataFilter **ppDF) = 0;
++  };
++#else
++  typedef struct IEncodingFilterFactoryVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IEncodingFilterFactory *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IEncodingFilterFactory *This);
++      ULONG (WINAPI *Release)(IEncodingFilterFactory *This);
++      HRESULT (WINAPI *FindBestFilter)(IEncodingFilterFactory *This,LPCWSTR pwzCodeIn,LPCWSTR pwzCodeOut,DATAINFO info,IDataFilter **ppDF);
++      HRESULT (WINAPI *GetDefaultFilter)(IEncodingFilterFactory *This,LPCWSTR pwzCodeIn,LPCWSTR pwzCodeOut,IDataFilter **ppDF);
++    END_INTERFACE
++  } IEncodingFilterFactoryVtbl;
++  struct IEncodingFilterFactory {
++    CONST_VTBL struct IEncodingFilterFactoryVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IEncodingFilterFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IEncodingFilterFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IEncodingFilterFactory_Release(This) (This)->lpVtbl->Release(This)
++#define IEncodingFilterFactory_FindBestFilter(This,pwzCodeIn,pwzCodeOut,info,ppDF) (This)->lpVtbl->FindBestFilter(This,pwzCodeIn,pwzCodeOut,info,ppDF)
++#define IEncodingFilterFactory_GetDefaultFilter(This,pwzCodeIn,pwzCodeOut,ppDF) (This)->lpVtbl->GetDefaultFilter(This,pwzCodeIn,pwzCodeOut,ppDF)
++#endif
++#endif
++  HRESULT WINAPI IEncodingFilterFactory_FindBestFilter_Proxy(IEncodingFilterFactory *This,LPCWSTR pwzCodeIn,LPCWSTR pwzCodeOut,DATAINFO info,IDataFilter **ppDF);
++  void __RPC_STUB IEncodingFilterFactory_FindBestFilter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++  HRESULT WINAPI IEncodingFilterFactory_GetDefaultFilter_Proxy(IEncodingFilterFactory *This,LPCWSTR pwzCodeIn,LPCWSTR pwzCodeOut,IDataFilter **ppDF);
++  void __RPC_STUB IEncodingFilterFactory_GetDefaultFilter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++#ifndef _HITLOGGING_DEFINED
++#define _HITLOGGING_DEFINED
++  WINBOOL WINAPI IsLoggingEnabledA(LPCSTR pszUrl);
++  WINBOOL WINAPI IsLoggingEnabledW(LPCWSTR pwszUrl);
++#ifdef UNICODE
++#define IsLoggingEnabled IsLoggingEnabledW
++#else
++#define IsLoggingEnabled IsLoggingEnabledA
++#endif
++  typedef struct _tagHIT_LOGGING_INFO {
++    DWORD dwStructSize;
++    LPSTR lpszLoggedUrlName;
++    SYSTEMTIME StartTime;
++    SYSTEMTIME EndTime;
++    LPSTR lpszExtendedInfo;
++  } HIT_LOGGING_INFO;
++
++  typedef struct _tagHIT_LOGGING_INFO *LPHIT_LOGGING_INFO;
++
++  WINBOOL WINAPI WriteHitLogging(LPHIT_LOGGING_INFO lpLogginginfo);
++#define CONFIRMSAFETYACTION_LOADOBJECT 0x00000001
++
++  struct CONFIRMSAFETY {
++    CLSID clsid;
++    IUnknown *pUnk;
++    DWORD dwFlags;
++  };
++  EXTERN_C const GUID GUID_CUSTOM_CONFIRMOBJECTSAFETY;
++#endif
++
++#ifndef _LPIWRAPPEDPROTOCOL_DEFINED
++#define _LPIWRAPPEDPROTOCOL_DEFINED
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0214_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0214_v0_0_s_ifspec;
++#ifndef __IWrappedProtocol_INTERFACE_DEFINED__
++#define __IWrappedProtocol_INTERFACE_DEFINED__
++  typedef IWrappedProtocol *LPIWRAPPEDPROTOCOL;
++
++  EXTERN_C const IID IID_IWrappedProtocol;
++#if defined(__cplusplus) && !defined(CINTERFACE)
++  struct IWrappedProtocol : public IUnknown {
++  public:
++    virtual HRESULT WINAPI GetWrapperCode(LONG *pnCode,DWORD_PTR dwReserved) = 0;
++  };
++#else
++  typedef struct IWrappedProtocolVtbl {
++    BEGIN_INTERFACE
++      HRESULT (WINAPI *QueryInterface)(IWrappedProtocol *This,REFIID riid,void **ppvObject);
++      ULONG (WINAPI *AddRef)(IWrappedProtocol *This);
++      ULONG (WINAPI *Release)(IWrappedProtocol *This);
++      HRESULT (WINAPI *GetWrapperCode)(IWrappedProtocol *This,LONG *pnCode,DWORD_PTR dwReserved);
++    END_INTERFACE
++  } IWrappedProtocolVtbl;
++  struct IWrappedProtocol {
++    CONST_VTBL struct IWrappedProtocolVtbl *lpVtbl;
++  };
++#ifdef COBJMACROS
++#define IWrappedProtocol_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IWrappedProtocol_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IWrappedProtocol_Release(This) (This)->lpVtbl->Release(This)
++#define IWrappedProtocol_GetWrapperCode(This,pnCode,dwReserved) (This)->lpVtbl->GetWrapperCode(This,pnCode,dwReserved)
++#endif
++#endif
++  HRESULT WINAPI IWrappedProtocol_GetWrapperCode_Proxy(IWrappedProtocol *This,LONG *pnCode,DWORD_PTR dwReserved);
++  void __RPC_STUB IWrappedProtocol_GetWrapperCode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
++#endif
++#endif
++
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0215_v0_0_c_ifspec;
++  extern RPC_IF_HANDLE __MIDL_itf_urlmon_0215_v0_0_s_ifspec;
++
++  unsigned long __RPC_API HWND_UserSize(unsigned long *,unsigned long,HWND *);
++  unsigned char *__RPC_API HWND_UserMarshal(unsigned long *,unsigned char *,HWND *);
++  unsigned char *__RPC_API HWND_UserUnmarshal(unsigned long *,unsigned char *,HWND *);
++  void __RPC_API HWND_UserFree(unsigned long *,HWND *);
++
++  HRESULT WINAPI IBinding_GetBindResult_Proxy(IBinding *This,CLSID *pclsidProtocol,DWORD *pdwResult,LPOLESTR *pszResult,DWORD *pdwReserved);
++  HRESULT WINAPI IBinding_GetBindResult_Stub(IBinding *This,CLSID *pclsidProtocol,DWORD *pdwResult,LPOLESTR *pszResult,DWORD dwReserved);
++  HRESULT WINAPI IBindStatusCallback_GetBindInfo_Proxy(IBindStatusCallback *This,DWORD *grfBINDF,BINDINFO *pbindinfo);
++  HRESULT WINAPI IBindStatusCallback_GetBindInfo_Stub(IBindStatusCallback *This,DWORD *grfBINDF,RemBINDINFO *pbindinfo,RemSTGMEDIUM *pstgmed);
++  HRESULT WINAPI IBindStatusCallback_OnDataAvailable_Proxy(IBindStatusCallback *This,DWORD grfBSCF,DWORD dwSize,FORMATETC *pformatetc,STGMEDIUM *pstgmed);
++  HRESULT WINAPI IBindStatusCallback_OnDataAvailable_Stub(IBindStatusCallback *This,DWORD grfBSCF,DWORD dwSize,RemFORMATETC *pformatetc,RemSTGMEDIUM *pstgmed);
++  HRESULT WINAPI IWinInetInfo_QueryOption_Proxy(IWinInetInfo *This,DWORD dwOption,LPVOID pBuffer,DWORD *pcbBuf);
++  HRESULT WINAPI IWinInetInfo_QueryOption_Stub(IWinInetInfo *This,DWORD dwOption,BYTE *pBuffer,DWORD *pcbBuf);
++  HRESULT WINAPI IWinInetHttpInfo_QueryInfo_Proxy(IWinInetHttpInfo *This,DWORD dwOption,LPVOID pBuffer,DWORD *pcbBuf,DWORD *pdwFlags,DWORD *pdwReserved);
++  HRESULT WINAPI IWinInetHttpInfo_QueryInfo_Stub(IWinInetHttpInfo *This,DWORD dwOption,BYTE *pBuffer,DWORD *pcbBuf,DWORD *pdwFlags,DWORD *pdwReserved);
++  HRESULT WINAPI IBindHost_MonikerBindToStorage_Proxy(IBindHost *This,IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,void **ppvObj);
++  HRESULT WINAPI IBindHost_MonikerBindToStorage_Stub(IBindHost *This,IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,IUnknown **ppvObj);
++  HRESULT WINAPI IBindHost_MonikerBindToObject_Proxy(IBindHost *This,IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,void **ppvObj);
++  HRESULT WINAPI IBindHost_MonikerBindToObject_Stub(IBindHost *This,IMoniker *pMk,IBindCtx *pBC,IBindStatusCallback *pBSC,REFIID riid,IUnknown **ppvObj);
++
++#ifdef __cplusplus
++}
++#endif
++#endif


More information about the ooo-build-commit mailing list