[PATCH 1/5] msado15: Add typelib.

Hans Leidekker hans at codeweavers.com
Fri Dec 6 05:18:10 CST 2019


Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 configure.ac                   |    1 +
 dlls/msado15/Makefile.in       |    8 +
 dlls/msado15/main.c            |   55 +
 dlls/msado15/msado15.spec      |    4 +
 dlls/msado15/msado15_tlb.idl   |   21 +
 include/Makefile.in            |    1 +
 include/msado15_backcompat.idl | 2104 ++++++++++++++++++++++++++++++++
 7 files changed, 2194 insertions(+)
 create mode 100644 dlls/msado15/Makefile.in
 create mode 100644 dlls/msado15/main.c
 create mode 100644 dlls/msado15/msado15.spec
 create mode 100644 dlls/msado15/msado15_tlb.idl
 create mode 100644 include/msado15_backcompat.idl

diff --git a/configure.ac b/configure.ac
index 7f2c3cda23..06ac9c6c71 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3438,6 +3438,7 @@ WINE_CONFIG_MAKEFILE(dlls/msacm.dll16,enable_win16)
 WINE_CONFIG_MAKEFILE(dlls/msacm32.drv)
 WINE_CONFIG_MAKEFILE(dlls/msacm32)
 WINE_CONFIG_MAKEFILE(dlls/msacm32/tests)
+WINE_CONFIG_MAKEFILE(dlls/msado15)
 WINE_CONFIG_MAKEFILE(dlls/msadp32.acm)
 WINE_CONFIG_MAKEFILE(dlls/msasn1)
 WINE_CONFIG_MAKEFILE(dlls/mscat32)
diff --git a/dlls/msado15/Makefile.in b/dlls/msado15/Makefile.in
new file mode 100644
index 0000000000..779a18df14
--- /dev/null
+++ b/dlls/msado15/Makefile.in
@@ -0,0 +1,8 @@
+MODULE    = msado15.dll
+
+EXTRADLLFLAGS = -mno-cygwin
+
+C_SRCS = \
+	main.c \
+
+IDL_SRCS = msado15_tlb.idl
diff --git a/dlls/msado15/main.c b/dlls/msado15/main.c
new file mode 100644
index 0000000000..0c5b2615d0
--- /dev/null
+++ b/dlls/msado15/main.c
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2019 Hans Leidekker for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <stdarg.h>
+#include "windef.h"
+#include "winbase.h"
+#include "objbase.h"
+#include "rpcproxy.h"
+
+#include "wine/debug.h"
+
+static HINSTANCE hinstance;
+
+BOOL WINAPI DllMain( HINSTANCE dll, DWORD reason, LPVOID reserved )
+{
+    switch (reason)
+    {
+    case DLL_PROCESS_ATTACH:
+        hinstance = dll;
+        DisableThreadLibraryCalls( dll );
+        break;
+    }
+    return TRUE;
+}
+
+/***********************************************************************
+ *          DllRegisterServer
+ */
+HRESULT WINAPI DllRegisterServer( void )
+{
+    return __wine_register_resources( hinstance );
+}
+
+/***********************************************************************
+ *          DllUnregisterServer
+ */
+HRESULT WINAPI DllUnregisterServer( void )
+{
+    return __wine_unregister_resources( hinstance );
+}
diff --git a/dlls/msado15/msado15.spec b/dlls/msado15/msado15.spec
new file mode 100644
index 0000000000..6d0e061a53
--- /dev/null
+++ b/dlls/msado15/msado15.spec
@@ -0,0 +1,4 @@
+@ stub DllCanUnloadNow
+@ stub DllGetClassObject
+@ stdcall -private DllRegisterServer()
+@ stdcall -private DllUnregisterServer()
diff --git a/dlls/msado15/msado15_tlb.idl b/dlls/msado15/msado15_tlb.idl
new file mode 100644
index 0000000000..f3a77df3ac
--- /dev/null
+++ b/dlls/msado15/msado15_tlb.idl
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2019 Hans Leidekker for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#pragma makedep regtypelib
+
+#include "msado15_backcompat.idl"
diff --git a/include/Makefile.in b/include/Makefile.in
index 421e3d6c59..2e9a921df7 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -394,6 +394,7 @@ SOURCES = \
 	msacm.h \
 	msacmdlg.h \
 	msacmdrv.h \
+	msado15_backcompat.idl \
 	msasn1.h \
 	mscat.h \
 	mscoree.idl \
diff --git a/include/msado15_backcompat.idl b/include/msado15_backcompat.idl
new file mode 100644
index 0000000000..1ff81cf856
--- /dev/null
+++ b/include/msado15_backcompat.idl
@@ -0,0 +1,2104 @@
+/*
+ * Copyright 2019 Hans Leidekker for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+
+interface _ADO;
+interface _Collection;
+interface _Command;
+interface _Connection;
+interface _DynaCollection;
+interface _Parameter;
+interface _Record;
+interface _Recordset;
+interface _Stream;
+interface ADODebugging;
+interface ADOConnectionConstruction;
+interface ADOCommandConstruction;
+interface ADORecordsetConstruction;
+interface Command15;
+interface Command25;
+interface Error;
+interface Errors;
+interface Field;
+interface Field15;
+interface Field20;
+interface Fields;
+interface Fields15;
+interface Fields20;
+interface Parameters;
+interface Properties;
+interface Property;
+interface Recordset15;
+interface Recordset20;
+interface Recordset21;
+dispinterface ConnectionEvents;
+dispinterface RecordsetEvents;
+
+typedef [uuid(0000052A-0000-0010-8000-00AA006D2EA4)] enum ErrorValueEnum
+{
+    adErrInvalidArgument            = 3001,
+    adErrOpeningFile                = 3002,
+    adErrReadFile                   = 3003,
+    adErrWriteFile                  = 3004,
+    adErrNoCurrentRecord            = 3021,
+    adErrIllegalOperation           = 3219,
+    adErrCantChangeProvider         = 3220,
+    adErrInTransaction              = 3246,
+    adErrFeatureNotAvailable        = 3251,
+    adErrItemNotFound               = 3265,
+    adErrObjectInCollection         = 3367,
+    adErrObjectNotSet               = 3420,
+    adErrDataConversion             = 3421,
+    adErrObjectClosed               = 3704,
+    adErrObjectOpen                 = 3705,
+    adErrProviderNotFound           = 3706,
+    adErrBoundToCommand             = 3707,
+    adErrInvalidParamInfo           = 3708,
+    adErrInvalidConnection          = 3709,
+    adErrNotReentrant               = 3710,
+    adErrStillExecuting             = 3711,
+    adErrOperationCancelled         = 3712,
+    adErrStillConnecting            = 3713,
+    adErrInvalidTransaction         = 3714,
+    adErrNotExecuting               = 3715,
+    adErrUnsafeOperation            = 3716,
+    adWrnSecurityDialog             = 3717,
+    adWrnSecurityDialogHeader       = 3718,
+    adErrIntegrityViolation         = 3719,
+    adErrPermissionDenied           = 3720,
+    adErrDataOverflow               = 3721,
+    adErrSchemaViolation            = 3722,
+    adErrSignMismatch               = 3723,
+    adErrCantConvertvalue           = 3724,
+    adErrCantCreate                 = 3725,
+    adErrColumnNotOnThisRow         = 3726,
+    adErrURLDoesNotExist            = 3727,
+    adErrTreePermissionDenied       = 3728,
+    adErrInvalidURL                 = 3729,
+    adErrResourceLocked             = 3730,
+    adErrResourceExists             = 3731,
+    adErrCannotComplete             = 3732,
+    adErrVolumeNotFound             = 3733,
+    adErrOutOfSpace                 = 3734,
+    adErrResourceOutOfScope         = 3735,
+    adErrUnavailable                = 3736,
+    adErrURLNamedRowDoesNotExist    = 3737,
+    adErrDelResOutOfScope           = 3738,
+    adErrPropInvalidColumn          = 3739,
+    adErrPropInvalidOption          = 3740,
+    adErrPropInvalidValue           = 3741,
+    adErrPropConflicting            = 3742,
+    adErrPropNotAllSettable         = 3743,
+    adErrPropNotSet                 = 3744,
+    adErrPropNotSettable            = 3745,
+    adErrPropNotSupported           = 3746,
+    adErrCatalogNotSet              = 3747,
+    adErrCantChangeConnection       = 3748,
+    adErrFieldsUpdateFailed         = 3749,
+    adErrDenyNotSupported           = 3750,
+    adErrDenyTypeNotSupported       = 3751,
+    adErrProviderNotSpecified       = 3753,
+    adErrConnectionStringTooLong    = 3754
+} ErrorValueEnum;
+
+typedef [uuid(00000528-0000-0010-8000-00aa006d2ea4)] enum PositionEnum
+{
+    adPosUnknown = -1,
+    adPosBOF = -2,
+    adPosEOF = -3
+} PositionEnum;
+
+typedef [uuid(a56187c5-d690-4037-ae32-a00edc376ac3), public] PositionEnum PositionEnum_Param;
+
+typedef [uuid(0000051f-0000-0010-8000-00aa006d2ea4)] 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 [uuid(00000548-0000-0010-8000-00aa006d2ea4)] enum PersistFormatEnum
+{
+    adPersistADTG = 0,
+    adPersistXML = 1
+} PersistFormatEnum;
+
+typedef [uuid(00000552-0000-0010-8000-00aa006d2ea4)] enum SeekEnum
+{
+    adSeekFirstEQ = 1,
+    adSeekLastEQ = 2,
+    adSeekAfterEQ = 4,
+    adSeekAfter = 8,
+    adSeekBeforeEQ = 16,
+    adSeekBefore = 32
+} SeekEnum;
+
+typedef [uuid(0000051b-0000-0010-8000-00aa006d2ea4)] enum CursorTypeEnum
+{
+    adOpenUnspecified = -1,
+    adOpenForwardOnly = 0,
+    adOpenKeyset = 1,
+    adOpenDynamic = 2,
+    adOpenStatic = 3
+} CursorTypeEnum;
+
+typedef [uuid(00000525-0000-0010-8000-00aa006d2ea4)] enum FieldAttributeEnum
+{
+    adFldUnspecified = -1,
+    adFldMayDefer = 0x00000002,
+    adFldUpdatable = 0x00000004,
+    adFldUnknownUpdatable = 0x00000008,
+    adFldFixed = 0x00000010,
+    adFldIsNullable = 0x00000020,
+    adFldMayBeNull = 0x00000040,
+    adFldLong = 0x00000080,
+    adFldRowID = 0x00000100,
+    adFldRowVersion = 0x00000200,
+    adFldCacheDeferred = 0x00001000,
+    adFldIsChapter = 0x00002000,
+    adFldNegativeScale = 0x00004000,
+    adFldKeyColumn = 0x00008000,
+    adFldIsRowURL = 0x00010000,
+    adFldIsDefaultStream = 0x00020000,
+    adFldIsCollection = 0x00040000
+} FieldAttributeEnum;
+
+typedef [uuid(00000544-0000-0010-8000-00aa006d2ea4)] enum ResyncEnum
+{
+    adResyncUnderlyingValues = 1,
+    adResyncAllValues = 2
+} ResyncEnum;
+
+typedef [uuid(0000051d-0000-0010-8000-00aa006d2ea4)] enum LockTypeEnum
+{
+    adLockUnspecified = -1,
+    adLockReadOnly = 1,
+    adLockPessimistic = 2,
+    adLockOptimistic = 3,
+    adLockBatchOptimistic = 4
+} LockTypeEnum;
+
+typedef [uuid(00000543-0000-0010-8000-00aa006d2ea4)] enum AffectEnum
+{
+    adAffectCurrent = 1,
+    adAffectGroup = 2,
+    adAffectAll = 3,
+    adAffectAllChapters = 4
+} AffectEnum;
+
+typedef [uuid(00000526-0000-0010-8000-00aa006d2ea4)] enum EditModeEnum
+{
+    adEditNone = 0,
+    adEditInProgress = 1,
+    adEditAdd = 2,
+    adEditDelete = 4
+} EditModeEnum;
+
+typedef [uuid(0000052f-0000-0010-8000-00aa006d2ea4)] enum CursorLocationEnum
+{
+    adUseNone = 1,
+    adUseServer = 2,
+    adUseClient = 3,
+    adUseClientBatch = 3
+} CursorLocationEnum;
+
+typedef [uuid(0000051c-0000-0010-8000-00aa006d2ea4)] enum CursorOptionEnum
+{
+    adHoldRecords = 256,
+    adMovePrevious = 512,
+    adBookmark = 8192,
+    adApproxPosition = 16384,
+    adUpdateBatch = 65536,
+    adResync = 131072,
+    adNotify = 262144,
+    adFind = 524288,
+    adSeek = 4194304,
+    adIndex = 8388608,
+    adAddNew = 16778240,
+    adDelete = 16779264,
+    adUpdate = 16809984
+} CursorOptionEnum;
+
+typedef [uuid(00000540-0000-0010-8000-00aa006d2ea4)] enum MarshalOptionsEnum
+{
+    adMarshalAll = 0,
+    adMarshalModifiedOnly = 1
+} MarshalOptionsEnum;
+
+typedef [uuid(00000547-0000-0010-8000-00aa006d2ea4)] enum SearchDirectionEnum
+{
+    adSearchForward = 1,
+    adSearchBackward = -1
+} SearchDirectionEnum;
+
+typedef [uuid(00000549-0000-0010-8000-00aa006d2ea4)] enum StringFormatEnum
+{
+    adClipString = 2
+} StringFormatEnum;
+
+typedef [uuid(00000545-0000-0010-8000-00aa006d2ea4)] enum CompareEnum
+{
+    adCompareLessThan = 0,
+    adCompareEqual = 1,
+    adCompareGreaterThan = 2,
+    adCompareNotEqual = 3,
+    adCompareNotComparable = 4
+} CompareEnum;
+
+typedef [uuid(00000523-0000-0010-8000-00aa006d2ea4)] enum IsolationLevelEnum
+{
+    adXactUnspecified = -1,
+    adXactChaos = 16,
+    adXactReadUncommitted = 256,
+    adXactBrowse = 256,
+    adXactCursorStability = 4096,
+    adXactReadCommitted = 4096,
+    adXactRepeatableRead = 65536,
+    adXactSerializable = 1048576,
+    adXactIsolated = 1048576
+} IsolationLevelEnum;
+
+typedef [uuid(00000521-0000-0010-8000-00aa006d2ea4)] enum ConnectModeEnum
+{
+    adModeUnknown = 0,
+    adModeRead = 1,
+    adModeWrite = 2,
+    adModeReadWrite = 3,
+    adModeShareDenyRead = 4,
+    adModeShareDenyWrite = 8,
+    adModeShareExclusive = 12,
+    adModeShareDenyNone = 16,
+    adModeRecursive = 4194304
+} ConnectModeEnum;
+
+typedef [uuid(00000533-0000-0010-8000-00aa006d2ea4)] 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 [uuid(00000530-0000-0010-8000-00aa006d2ea4)] enum EventStatusEnum
+{
+    adStatusOK = 1,
+    adStatusErrorsOccurred = 2,
+    adStatusCantDeny = 3,
+    adStatusCancel = 4,
+    adStatusUnwantedEvent = 5
+} EventStatusEnum;
+
+typedef [uuid(0000052c-0000-0010-8000-00aa006d2ea4)] enum ParameterDirectionEnum
+{
+    adParamUnknown = 0,
+    adParamInput = 1,
+    adParamOutput = 2,
+    adParamInputOutput = 3,
+    adParamReturnValue = 4
+} ParameterDirectionEnum;
+
+typedef [uuid(0000052e-0000-0010-8000-00aa006d2ea4)] enum CommandTypeEnum
+{
+    adCmdUnspecified = -1,
+    adCmdUnknown = 8,
+    adCmdText = 1,
+    adCmdTable = 2,
+    adCmdStoredProc = 4,
+    adCmdFile = 256,
+    adCmdTableDirect = 512
+} CommandTypeEnum;
+
+typedef [uuid(00000532-0000-0010-8000-00aa006d2ea4)] enum ObjectStateEnum
+{
+    adStateClosed = 0,
+    adStateOpen = 1,
+    adStateConnecting = 2,
+    adStateExecuting = 4,
+    adStateFetching = 8
+} ObjectStateEnum;
+
+typedef [uuid(00000573-0000-0010-8000-00aa006d2ea4)] enum MoveRecordOptionsEnum
+{
+    adMoveUnspecified = -1,
+    adMoveOverWrite = 1,
+    adMoveDontUpdateLinks = 2,
+    adMoveAllowEmulation = 4
+} MoveRecordOptionsEnum;
+
+typedef [uuid(00000574-0000-0010-8000-00aa006d2ea4)] enum CopyRecordOptionsEnum
+{
+    adCopyUnspecified = -1,
+    adCopyOverWrite = 1,
+    adCopyAllowEmulation = 4,
+    adCopyNonRecursive = 2
+} CopyRecordOptionsEnum;
+
+typedef [uuid(00000570-0000-0010-8000-00aa006d2ea4)] enum RecordCreateOptionsEnum
+{
+    adCreateCollection = 0x00002000,
+    adCreateStructDoc = 0x80000000,
+    adCreateNonCollection = 0x00000000,
+    adOpenIfExists = 0x02000000,
+    adCreateOverwrite = 0x04000000,
+    adFailIfNotExists = -1
+} RecordCreateOptionsEnum;
+
+typedef [uuid(00000571-0000-0010-8000-00aa006d2ea4)] enum RecordOpenOptionsEnum
+{
+    adOpenRecordUnspecified = -1,
+    adOpenOutput = 0x00800000,
+    adOpenAsync = 0x00001000,
+    adDelayFetchStream = 0x00004000,
+    adDelayFetchFields = 0x00008000,
+    adOpenExecuteCommand = 0x00010000
+} RecordOpenOptionsEnum;
+
+typedef [uuid(0000057d-0000-0010-8000-00aa006d2ea4)] enum RecordTypeEnum
+{
+    adSimpleRecord = 0,
+    adCollectionRecord = 1,
+    adStructDoc = 2
+} RecordTypeEnum;
+
+typedef [uuid(00000576-0000-0010-8000-00aa006d2ea4)] enum StreamTypeEnum
+{
+    adTypeBinary = 1,
+    adTypeText = 2
+} StreamTypeEnum;
+
+typedef [uuid(00000577-0000-0010-8000-00aa006d2ea4)] enum LineSeparatorEnum
+{
+    adLF = 10,
+    adCR = 13,
+    adCRLF = -1
+} LineSeparatorEnum;
+
+typedef enum
+{
+    adReadAll = -1,
+    adReadLine = -2
+} StreamReadEnum;
+
+typedef [uuid(0000057c-0000-0010-8000-00aa006d2ea4)] enum SaveOptionsEnum
+{
+    adSaveCreateNotExist = 1,
+    adSaveCreateOverWrite = 2
+} SaveOptionsEnum;
+
+typedef [uuid(0000057a-0000-0010-8000-00aa006d2ea4)] enum StreamOpenOptionsEnum
+{
+    adOpenStreamUnspecified = -1,
+    adOpenStreamAsync = 1,
+    adOpenStreamFromRecord = 4
+} StreamOpenOptionsEnum;
+
+typedef [uuid(0000057b-0000-0010-8000-00aa006d2ea4)] enum StreamWriteEnum
+{
+    adWriteChar = 0,
+    adWriteLine = 1
+} StreamWriteEnum;
+
+typedef [uuid(00000531-0000-0010-8000-00aa006d2ea4)] 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;
+
+[
+    uuid(00000503-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Property : IDispatch
+{
+    [id(00000000), propget]
+    HRESULT __stdcall Value(
+        [out, retval] VARIANT *val);
+
+    [id(00000000), propput]
+    HRESULT __stdcall Value(
+        [in] VARIANT val);
+
+    [id(0x60020002), propget]
+    HRESULT __stdcall Name(
+        [out, retval] BSTR *str);
+
+    [id(0x60020003), propget]
+    HRESULT __stdcall Type(
+        [out, retval] DataTypeEnum *type);
+
+    [id(0x60020004), propget]
+    HRESULT __stdcall Attributes(
+        [out, retval] LONG *attributes);
+
+    [id(0x60020004), propput]
+    HRESULT __stdcall Attributes(
+        [in] LONG attributes);
+};
+
+[
+    uuid(00000512-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface _Collection : IDispatch
+{
+    [id(0x60020000), propget]
+    HRESULT __stdcall Count(
+        [out, retval] LONG *count);
+
+    [id(0xfffffffc), restricted]
+    HRESULT __stdcall _NewEnum(
+        [out, retval] IUnknown **object);
+
+    [id(0x60020002)]
+    HRESULT __stdcall Refresh();
+};
+
+[
+    uuid(00000504-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Properties : _Collection
+{
+    [id(00000000), propget]
+    HRESULT __stdcall Item(
+        [in] VARIANT index,
+        [out, retval] Property **object);
+};
+
+[
+    uuid(00000534-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface _ADO : IDispatch
+{
+    [id(0x000001f4), propget]
+    HRESULT __stdcall Properties(
+        [out, retval] Properties **object);
+};
+
+[
+    uuid(0000054c-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation,
+    hidden
+]
+interface Field20 : _ADO
+{
+    [id(0x00000455), propget]
+    HRESULT __stdcall ActualSize(
+        [out, retval] LONG *size);
+
+    [id(0x0000040c), propget]
+    HRESULT __stdcall Attributes(
+        [out, retval] LONG *attrs);
+
+    [id(0x0000044f), propget]
+    HRESULT __stdcall DefinedSize(
+        [out, retval] LONG *size);
+
+    [id(0x0000044c), propget]
+    HRESULT __stdcall Name(
+        [out, retval] BSTR *str);
+
+    [id(0x0000044e), propget]
+    HRESULT __stdcall Type(
+        [out, retval] DataTypeEnum *type);
+
+    [id(00000000), propget]
+    HRESULT __stdcall Value(
+        [out, retval] VARIANT *val);
+
+    [id(00000000), propput]
+    HRESULT __stdcall Value(
+        [in] VARIANT val);
+
+    [id(0x60030007), propget]
+    HRESULT __stdcall Precision(
+        [out, retval] unsigned char *precision);
+
+    [id(0x60030008), propget]
+    HRESULT __stdcall NumericScale(
+        [out, retval] unsigned char *scale);
+
+    [id(0x00000453)]
+    HRESULT __stdcall AppendChunk(
+        [in] VARIANT data);
+
+    [id(0x00000454)]
+    HRESULT __stdcall GetChunk(
+        [in] LONG length,
+        [out, retval] VARIANT *var);
+
+    [id(0x00000450), propget]
+    HRESULT __stdcall OriginalValue(
+        [out, retval] VARIANT *val);
+
+    [id(0x00000451), propget]
+    HRESULT __stdcall UnderlyingValue(
+        [out, retval] VARIANT *val);
+
+    [id(0x6003000d), propget]
+    HRESULT __stdcall DataFormat(
+        [out, retval] IUnknown **format);
+
+    [id(0x6003000d), propputref]
+    HRESULT __stdcall DataFormat(
+        [in] IUnknown *format);
+
+    [id(0x60030007), propput]
+    HRESULT __stdcall Precision(
+        [in] unsigned char precision);
+
+    [id(0x60030008), propput]
+    HRESULT __stdcall NumericScale(
+        [in] unsigned char scale);
+
+    [id(0x0000044e), propput]
+    HRESULT __stdcall Type(
+        [in] DataTypeEnum type);
+
+    [id(0x0000044f), propput]
+    HRESULT __stdcall DefinedSize(
+        [in] LONG size);
+
+    [id(0x0000040c), propput]
+    HRESULT __stdcall Attributes(
+        [in] LONG attrs);
+};
+
+[
+    uuid(00000569-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Field : Field20
+{
+    [id(0x0000045c), propget]
+    HRESULT __stdcall Status(
+        [out, retval] LONG *status);
+};
+
+[
+    uuid(00000506-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Fields15 : _Collection
+{
+    [id(00000000), propget]
+    HRESULT __stdcall Item(
+        [in] VARIANT index,
+        [out, retval] Field **object);
+};
+
+[
+    uuid(0000054d-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Fields20 : Fields15
+{
+    [id(0x60030001)]
+    HRESULT __stdcall _Append(
+        [in] BSTR name,
+        [in] DataTypeEnum type,
+        [in, defaultvalue(0)] LONG size,
+        [in, defaultvalue(adFldUnspecified)] FieldAttributeEnum attr);
+
+    [id(0x60030002)]
+    HRESULT __stdcall Delete(
+        [in] VARIANT index);
+};
+
+[
+    uuid(00000564-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Fields : Fields20
+{
+    [id(0x60040001)]
+    HRESULT __stdcall Append(
+        [in] BSTR name,
+        [in] DataTypeEnum type,
+        [in, defaultvalue(0)] LONG size,
+        [in, defaultvalue(adFldUnspecified)] FieldAttributeEnum attr,
+        [in, optional] VARIANT value);
+
+    [id(0x60040002)]
+    HRESULT __stdcall Update();
+
+    [id(0x60040003)]
+    HRESULT __stdcall Resync(
+        [in, defaultvalue(adResyncAllValues)] ResyncEnum resync_values);
+
+    [id(0x60040004)]
+    HRESULT __stdcall CancelUpdate();
+};
+
+[
+    uuid(0000050e-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Recordset15 : _ADO
+{
+    [id(0x000003e8), propget]
+    HRESULT __stdcall AbsolutePosition(
+        [out, retval] PositionEnum_Param *position);
+
+    [id(0x000003e8), propput]
+    HRESULT __stdcall AbsolutePosition(
+        [in] PositionEnum_Param position);
+
+    [id(0x000003e9), propputref]
+    HRESULT __stdcall ActiveConnection(
+        [in] IDispatch *connection);
+
+    [id(0x000003e9), propput]
+    HRESULT __stdcall ActiveConnection(
+        [in] VARIANT connection);
+
+    [id(0x000003e9), propget]
+    HRESULT __stdcall ActiveConnection(
+        [out, retval] VARIANT *connection);
+
+    [id(0x000003ea), propget]
+    HRESULT __stdcall BOF(
+        [out, retval] VARIANT_BOOL *bof);
+
+    [id(0x000003eb), propget]
+    HRESULT __stdcall Bookmark(
+        [out, retval] VARIANT *bookmark);
+
+    [id(0x000003eb), propput]
+    HRESULT __stdcall Bookmark(
+        [in] VARIANT bookmark);
+
+    [id(0x000003ec), propget]
+    HRESULT __stdcall CacheSize(
+        [out, retval] LONG *size);
+
+    [id(0x000003ec), propput]
+    HRESULT __stdcall CacheSize(
+        [in] LONG size);
+
+    [id(0x000003ed), propget]
+    HRESULT __stdcall CursorType(
+        [out, retval] CursorTypeEnum *cursor_type);
+
+    [id(0x000003ed), propput]
+    HRESULT __stdcall CursorType(
+        [in] CursorTypeEnum cursor_type);
+
+    [id(0x000003ee), propget]
+    HRESULT __stdcall EOF(
+        [out, retval] VARIANT_BOOL *eof);
+
+    [id(00000000), propget]
+    HRESULT __stdcall Fields(
+        [out, retval] Fields **object);
+
+    [id(0x000003f0), propget]
+    HRESULT __stdcall LockType(
+        [out, retval] LockTypeEnum *lock_type);
+
+    [id(0x000003f0), propput]
+    HRESULT __stdcall LockType(
+        [in] LockTypeEnum lock_type);
+
+    [id(0x000003f1), propget]
+    HRESULT __stdcall MaxRecords(
+        [out, retval] LONG *max_records);
+
+    [id(0x000003f1), propput]
+    HRESULT __stdcall MaxRecords(
+        [in] LONG max_records);
+
+    [id(0x000003f2), propget]
+    HRESULT __stdcall RecordCount(
+        [out, retval] LONG *count);
+
+    [id(0x000003f3), propputref]
+    HRESULT __stdcall Source(
+        [in] IDispatch *source);
+
+    [id(0x000003f3), propput]
+    HRESULT __stdcall Source(
+        [in] BSTR source);
+
+    [id(0x000003f3), propget]
+    HRESULT __stdcall Source(
+        [out, retval] VARIANT *source);
+
+    [id(0x000003f4)]
+    HRESULT __stdcall AddNew(
+        [in, optional] VARIANT field_list,
+        [in, optional] VARIANT values);
+
+    [id(0x000003f5)]
+    HRESULT __stdcall CancelUpdate();
+
+    [id(0x000003f6)]
+    HRESULT __stdcall Close();
+
+    [id(0x000003f7)]
+    HRESULT __stdcall Delete(
+        [in, defaultvalue(adAffectCurrent)] AffectEnum affect_records);
+
+    [id(0x000003f8)]
+    HRESULT __stdcall GetRows(
+        [in, defaultvalue(-1)] LONG rows,
+        [in, optional] VARIANT start,
+        [in, optional] VARIANT fields,
+        [out, retval] VARIANT *var);
+
+    [id(0x000003f9)]
+    HRESULT __stdcall Move(
+        [in] LONG num_records,
+        [in, optional] VARIANT start);
+
+    [id(0x000003fa)]
+    HRESULT __stdcall MoveNext();
+
+    [id(0x000003fb)]
+    HRESULT __stdcall MovePrevious();
+
+    [id(0x000003fc)]
+    HRESULT __stdcall MoveFirst();
+
+    [id(0x000003fd)]
+    HRESULT __stdcall MoveLast();
+
+    [id(0x000003fe)]
+    HRESULT __stdcall Open(
+        [in, optional] VARIANT source,
+        [in, optional] VARIANT active_connection,
+        [in, defaultvalue(adOpenUnspecified)] CursorTypeEnum cursor_type,
+        [in, defaultvalue(adLockUnspecified)] LockTypeEnum lock_type,
+        [in, defaultvalue(-1)] LONG options);
+
+    [id(0x000003ff)]
+    HRESULT __stdcall Requery(
+        [in, defaultvalue(-1)] LONG options);
+
+    [id(0x60030022), hidden]
+    HRESULT __stdcall _xResync(
+        [in, defaultvalue(adAffectAll)] AffectEnum affect_records);
+
+    [id(0x00000401)]
+    HRESULT __stdcall Update(
+        [in, optional] VARIANT fields,
+        [in, optional] VARIANT values);
+
+    [id(0x00000417), propget]
+    HRESULT __stdcall AbsolutePage(
+        [out, retval] PositionEnum_Param *position);
+
+    [id(0x00000417), propput]
+    HRESULT __stdcall AbsolutePage(
+        [in] PositionEnum_Param position);
+
+    [id(0x00000402), propget]
+    HRESULT __stdcall EditMode(
+        [out, retval] EditModeEnum *mode);
+
+    [id(0x00000406), propget]
+    HRESULT __stdcall Filter(
+        [out, retval] VARIANT *criteria);
+
+    [id(0x00000406), propput]
+    HRESULT __stdcall Filter(
+        [in] VARIANT criteria);
+
+    [id(0x0000041a), propget]
+    HRESULT __stdcall PageCount(
+        [out, retval] LONG *count);
+
+    [id(0x00000418), propget]
+    HRESULT __stdcall PageSize(
+        [out, retval] LONG *size);
+
+    [id(0x00000418), propput]
+    HRESULT __stdcall PageSize(
+        [in] LONG size);
+
+    [id(0x00000407), propget]
+    HRESULT __stdcall Sort(
+        [out, retval] BSTR *criteria);
+
+    [id(0x00000407), propput]
+    HRESULT __stdcall Sort(
+        [in] BSTR criteria);
+
+    [id(0x00000405), propget]
+    HRESULT __stdcall Status(
+        [out, retval] LONG *status);
+
+    [id(0x0000041e), propget]
+    HRESULT __stdcall State(
+        [out, retval] LONG *state);
+
+    [id(0x60030030), hidden]
+    HRESULT __stdcall _xClone(
+        [out, retval] _Recordset **object);
+
+    [id(0x0000040b)]
+    HRESULT __stdcall UpdateBatch(
+        [in, defaultvalue(adAffectAll)] AffectEnum affect_records);
+
+    [id(0x00000419)]
+    HRESULT __stdcall CancelBatch(
+        [in, defaultvalue(adAffectAll)] AffectEnum affect_records);
+
+    [id(0x0000041b), propget]
+    HRESULT __stdcall CursorLocation(
+        [out, retval] CursorLocationEnum *cursor_loc);
+
+    [id(0x0000041b), propput]
+    HRESULT __stdcall CursorLocation(
+        [in] CursorLocationEnum cursor_loc);
+
+    [id(0x0000041c)]
+    HRESULT __stdcall NextRecordset(
+        [out, optional] VARIANT *records_affected,
+        [out, retval] _Recordset **record_set);
+
+    [id(0x0000040c)]
+    HRESULT __stdcall Supports(
+        [in] CursorOptionEnum cursor_options,
+        [out, retval] VARIANT_BOOL *ret);
+
+    [id(0xfffffff8), propget, hidden]
+    HRESULT __stdcall Collect(
+        [in] VARIANT index,
+        [out, retval] VARIANT *var);
+
+    [id(0xfffffff8), propput, hidden]
+    HRESULT __stdcall Collect(
+        [in] VARIANT index,
+        [in] VARIANT var);
+
+    [id(0x0000041d), propget]
+    HRESULT __stdcall MarshalOptions(
+        [out, retval] MarshalOptionsEnum *options);
+
+    [id(0x0000041d), propput]
+    HRESULT __stdcall MarshalOptions(
+        [in] MarshalOptionsEnum options);
+
+    [id(0x00000422)]
+    HRESULT __stdcall Find(
+        [in] BSTR criteria,
+        [in, defaultvalue(0)] LONG skip_records,
+        [in, defaultvalue(adSearchForward)] SearchDirectionEnum search_direction,
+        [in, optional] VARIANT start);
+};
+
+[
+    uuid(0000054f-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Recordset20 : Recordset15
+{
+    [id(0x0000041f)]
+    HRESULT __stdcall Cancel();
+
+    [id(0x00000420), propget]
+    HRESULT __stdcall DataSource(
+        [out, retval] IUnknown **data_source);
+
+    [id(0x00000420), propputref]
+    HRESULT __stdcall DataSource(
+        [in] IUnknown *data_source);
+
+    [hidden]
+    HRESULT __stdcall _xSave(
+        [in, optional] BSTR filename,
+        [in, defaultvalue(adPersistADTG)] PersistFormatEnum persist_format);
+
+    [id(0x00000425), propget]
+    HRESULT __stdcall ActiveCommand(
+        [out, retval] IDispatch **cmd);
+
+    [id(0x00000427), propput]
+    HRESULT __stdcall StayInSync(
+        [in] VARIANT_BOOL stay_in_sync);
+
+    [id(0x00000427), propget]
+    HRESULT __stdcall StayInSync(
+        [out, retval] VARIANT_BOOL *stay_in_sync);
+
+    [id(0x00000426)]
+    HRESULT __stdcall GetString(
+        [in, defaultvalue(adClipString)] StringFormatEnum string_format,
+        [in, defaultvalue(-1)] LONG num_rows,
+        [in, optional] BSTR column_delimeter,
+        [in, optional] BSTR row_delimeter,
+        [in, optional] BSTR null_expr,
+        [out, retval] BSTR *ret_string);
+
+    [id(0x00000428), propget]
+    HRESULT __stdcall DataMember(
+        [out, retval] BSTR *data_member);
+
+    [id(0x00000428), propput]
+    HRESULT __stdcall DataMember(
+        [in] BSTR data_member);
+
+    [id(0x00000429)]
+    HRESULT __stdcall CompareBookmarks(
+        [in] VARIANT bookmark1,
+        [in] VARIANT bookmark2,
+        [out, retval] CompareEnum *compare);
+
+    [id(0x0000040a)]
+    HRESULT __stdcall Clone(
+        [in, defaultvalue(adLockUnspecified)] LockTypeEnum lock_type,
+        [out, retval] _Recordset **object);
+
+    [id(0x00000400)]
+    HRESULT __stdcall Resync(
+        [in, defaultvalue(adAffectAll)] AffectEnum affect_records,
+        [in, defaultvalue(adResyncAllValues)] ResyncEnum resync_values);
+};
+
+[
+    uuid(00000555-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Recordset21 : Recordset20
+{
+    [id(0x0000042a)]
+    HRESULT __stdcall Seek(
+        [in] VARIANT key_values,
+        [in, defaultvalue(adSeekFirstEQ)] SeekEnum seek_option);
+
+    [id(0x0000042b), propput]
+    HRESULT __stdcall Index(
+        [in] BSTR index);
+
+    [id(0x0000042b), propget]
+    HRESULT __stdcall Index(
+        [out, retval] BSTR *index);
+};
+
+[
+    uuid(00000556-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface _Recordset : Recordset21
+{
+    [id(0x00000421)]
+    HRESULT Save(
+        [in, optional] VARIANT destination,
+        [in, defaultvalue(adPersistADTG)] PersistFormatEnum persist_format);
+};
+
+[
+    uuid(00000500-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Error : IDispatch
+{
+    [id(0x60020000), propget]
+    HRESULT __stdcall Number(
+        [out, retval] LONG *number);
+
+    [id(0x60020001), propget]
+    HRESULT __stdcall Source(
+        [out, retval] BSTR *str);
+
+    [id(00000000), propget]
+    HRESULT __stdcall Description(
+        [out, retval] BSTR *str);
+
+    [id(0x60020003), propget]
+    HRESULT __stdcall HelpFile(
+        [out, retval] BSTR *str);
+
+    [id(0x60020004), propget]
+    HRESULT __stdcall HelpContext(
+        [out, retval] LONG *ctx);
+
+    [id(0x60020005), propget]
+    HRESULT __stdcall SQLState(
+        [out, retval] BSTR *str);
+
+    [id(0x60020006), propget]
+    HRESULT __stdcall NativeError(
+        [out, retval] LONG *error);
+};
+
+[
+    uuid(00000501-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Errors : _Collection
+{
+    [id(00000000), propget]
+    HRESULT __stdcall Item(
+        [in] VARIANT index,
+        [out, retval] Error **object);
+
+    [id(0x60030001)]
+    HRESULT __stdcall Clear();
+};
+
+[
+    uuid(00000515-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    oleautomation
+]
+interface Connection15 : _ADO
+{
+    [id(00000000), propget]
+    HRESULT __stdcall ConnectionString(
+        [out, retval] BSTR *str);
+
+    [id(00000000), propput]
+    HRESULT __stdcall ConnectionString(
+        [in] BSTR str);
+
+    [id(0x00000002), propget]
+    HRESULT __stdcall CommandTimeout(
+        [out, retval] LONG *timeout);
+
+    [id(0x00000002), propput]
+    HRESULT __stdcall CommandTimeout(
+        [in] LONG timeout);
+
+    [id(0x00000003), propget]
+    HRESULT __stdcall ConnectionTimeout(
+        [out, retval] LONG *timeout);
+
+    [id(0x00000003), propput]
+    HRESULT __stdcall ConnectionTimeout(
+        [in] LONG timeout);
+
+    [id(0x00000004), propget]
+    HRESULT __stdcall Version(
+        [out, retval] BSTR *str);
+
+    [id(0x00000005)]
+    HRESULT __stdcall Close();
+
+    [id(0x00000006)]
+    HRESULT __stdcall Execute(
+        [in] BSTR command,
+        [out, optional] VARIANT *records_affected,
+        [in, defaultvalue(-1)] LONG options,
+        [out, retval] _Recordset **record_set);
+
+    [id(0x00000007)]
+    HRESULT __stdcall BeginTrans(
+        [out, retval] LONG *transaction_level);
+
+    [id(0x00000008)]
+    HRESULT __stdcall CommitTrans();
+
+    [id(0x00000009)]
+    HRESULT __stdcall RollbackTrans();
+
+    [id(0x0000000a)]
+    HRESULT __stdcall Open(
+        [in, defaultvalue("")] BSTR connection_str,
+        [in, defaultvalue("")] BSTR user_id,
+        [in, defaultvalue("")] BSTR password,
+        [in, defaultvalue(-1)] LONG options);
+
+    [id(0x0000000b), propget]
+    HRESULT __stdcall Errors(
+        [out, retval] Errors **object);
+
+    [id(0x0000000c), propget]
+    HRESULT __stdcall DefaultDatabase(
+        [out, retval] BSTR *str);
+
+    [id(0x0000000c), propput]
+    HRESULT __stdcall DefaultDatabase(
+        [in] BSTR str);
+
+    [id(0x0000000d), propget]
+    HRESULT __stdcall IsolationLevel(
+        [out, retval] IsolationLevelEnum *level);
+
+    [id(0x0000000d), propput]
+    HRESULT __stdcall IsolationLevel(
+        [in] IsolationLevelEnum level);
+
+    [id(0x0000000e), propget]
+    HRESULT __stdcall Attributes(
+        [out, retval] LONG *attr);
+
+    [id(0x0000000e), propput]
+    HRESULT __stdcall Attributes(
+        [in] LONG attr);
+
+    [id(0x0000000f), propget]
+    HRESULT __stdcall CursorLocation(
+        [out, retval] CursorLocationEnum *cursor_loc);
+
+    [id(0x0000000f), propput]
+    HRESULT __stdcall CursorLocation(
+        [in] CursorLocationEnum cursor_loc);
+
+    [id(0x00000010), propget]
+    HRESULT __stdcall Mode(
+        [out, retval] ConnectModeEnum *mode);
+
+    [id(0x00000010), propput]
+    HRESULT __stdcall Mode(
+        [in] ConnectModeEnum mode);
+
+    [id(0x00000011), propget]
+    HRESULT __stdcall Provider(
+        [out, retval] BSTR *str);
+
+    [id(0x00000011), propput]
+    HRESULT __stdcall Provider(
+        [in] BSTR str);
+
+    [id(0x00000012), propget]
+    HRESULT __stdcall State(
+        [out, retval] LONG *state);
+
+    [id(0x00000013)]
+    HRESULT __stdcall OpenSchema(
+        [in] SchemaEnum schema,
+        [in, optional] VARIANT restrictions,
+        [in, optional] VARIANT schema_id,
+        [out, retval] _Recordset **record_set);
+};
+
+[
+    uuid(00000550-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    oleautomation
+]
+interface _Connection : Connection15
+{
+    [id(0x00000015)]
+    HRESULT __stdcall Cancel();
+};
+
+[
+    uuid(0000050c-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface _Parameter : _ADO
+{
+    [id(0x60030000), propget]
+    HRESULT __stdcall Name(
+        [out, retval] BSTR *str);
+
+    [id(0x60030000), propput]
+    HRESULT __stdcall Name(
+        [in] BSTR str);
+
+    [id(00000000), propget]
+    HRESULT __stdcall Value(
+        [out, retval] VARIANT *val);
+
+    [id(00000000), propput]
+    HRESULT __stdcall Value(
+        [in] VARIANT val);
+
+    [id(0x60030004), propget]
+    HRESULT __stdcall Type(
+        [out, retval] DataTypeEnum *data_type);
+
+    [id(0x60030004), propput]
+    HRESULT __stdcall Type(
+        [in] DataTypeEnum data_type);
+
+    [id(0x60030006), propput]
+    HRESULT __stdcall Direction(
+        [in] ParameterDirectionEnum direction);
+
+    [id(0x60030006), propget]
+    HRESULT __stdcall Direction(
+        [out, retval] ParameterDirectionEnum *direction);
+
+    [id(0x60030008), propput]
+    HRESULT __stdcall Precision(
+        [in] unsigned char precision);
+
+    [id(0x60030008), propget]
+    HRESULT __stdcall Precision(
+        [out, retval] unsigned char *precision);
+
+    [id(0x6003000a), propput]
+    HRESULT __stdcall NumericScale(
+        [in] unsigned char scale);
+
+    [id(0x6003000a), propget]
+    HRESULT __stdcall NumericScale(
+        [out, retval] unsigned char *scale);
+
+    [id(0x6003000c), propput]
+    HRESULT __stdcall Size(
+        [in] LONG size);
+
+    [id(0x6003000c), propget]
+    HRESULT __stdcall Size(
+        [out, retval] LONG *size);
+
+    [id(0x6003000e)]
+    HRESULT __stdcall AppendChunk(
+        [in] VARIANT val);
+
+    [id(0x6003000f), propget]
+    HRESULT __stdcall Attributes(
+        [out, retval] LONG *attrs);
+
+    [id(0x6003000f), propput]
+    HRESULT __stdcall Attributes(
+        [in] LONG attrs);
+};
+
+[
+    uuid(00000513-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface _DynaCollection : _Collection
+{
+    [id(0x60030000)]
+    HRESULT __stdcall Append(
+        [in] IDispatch *object);
+
+    [id(0x60030001)]
+    HRESULT __stdcall Delete(
+        [in] VARIANT index);
+};
+
+[
+    uuid(0000050d-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Parameters : _DynaCollection
+{
+    [id(00000000), propget]
+    HRESULT __stdcall Item(
+        [in] VARIANT index,
+        [out, retval] _Parameter **object);
+};
+
+[
+    uuid(00000508-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Command15 : _ADO
+{
+    [id(0x60030000), propget]
+    HRESULT __stdcall ActiveConnection(
+        [out, retval] _Connection **object);
+
+    [id(0x60030000), propputref]
+    HRESULT __stdcall ActiveConnection(
+        [in] _Connection *object);
+
+    [id(0x60030000), propput]
+    HRESULT __stdcall ActiveConnection(
+        [in] VARIANT object);
+
+    [id(0x60030003), propget]
+    HRESULT __stdcall CommandText(
+        [out, retval] BSTR *str);
+
+    [id(0x60030003), propput]
+    HRESULT __stdcall CommandText(
+        [in] BSTR str);
+
+    [id(0x60030005), propget]
+    HRESULT __stdcall CommandTimeout(
+        [out, retval] LONG *timeout);
+
+    [id(0x60030005), propput]
+    HRESULT __stdcall CommandTimeout(
+        [in] LONG timeout);
+
+    [id(0x60030007), propget]
+    HRESULT __stdcall Prepared(
+        [out, retval] VARIANT_BOOL *prepared);
+
+    [id(0x60030007), propput]
+    HRESULT __stdcall Prepared(
+        [in] VARIANT_BOOL prepared);
+
+    [id(0x60030009)]
+    HRESULT __stdcall Execute(
+        [out, optional] VARIANT *records_affected,
+        [in, optional] VARIANT *parameters,
+        [in, defaultvalue(-1)] LONG options,
+        [out, retval] _Recordset **record_set);
+
+    [id(0x6003000a)]
+    HRESULT __stdcall CreateParameter(
+        [in,  defaultvalue("")] BSTR name,
+        [in, defaultvalue(adEmpty)] DataTypeEnum type,
+        [in, defaultvalue(adParamInput)] ParameterDirectionEnum direction,
+        [in, defaultvalue(0)] LONG size,
+        [in, optional] VARIANT value,
+        [out, retval] _Parameter **parameter);
+
+    [id(00000000), propget]
+    HRESULT __stdcall Parameters(
+        [out, retval] Parameters **object);
+
+    [id(0x6003000c), propput]
+    HRESULT __stdcall CommandType(
+        [in] CommandTypeEnum cmd_type);
+
+    [id(0x6003000c), propget]
+    HRESULT __stdcall CommandType(
+        [out, retval] CommandTypeEnum *cmd_type);
+
+    [id(0x6003000e), propget]
+    HRESULT __stdcall Name(
+        [out, retval] BSTR *name);
+
+    [id(0x6003000e), propput]
+    HRESULT __stdcall Name(
+        [in] BSTR name);
+};
+
+[
+    uuid(0000054e-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface Command25 : Command15
+{
+    [id(0x60030010), propget]
+    HRESULT __stdcall State(
+        [out, retval] LONG *state);
+
+    [id(0x60030011)]
+    HRESULT __stdcall Cancel();
+};
+
+[
+    uuid(b08400bd-f9d1-4d02-b856-71d5dba123e9),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface _Command : Command25
+{
+    [id(0x60030012), propputref]
+    HRESULT __stdcall CommandStream(
+        [in] IUnknown *stream);
+
+    [id(0x60030012), propget]
+    HRESULT __stdcall CommandStream(
+        [out, retval] VARIANT *stream);
+
+    [id(0x60030013), propput]
+    HRESULT __stdcall Dialect(
+        [in] BSTR dialect);
+
+    [id(0x60030013), propget]
+    HRESULT __stdcall Dialect(
+        [out, retval] BSTR *dialect);
+
+    [id(0x60030014), propput]
+    HRESULT __stdcall NamedParameters(
+        [in] VARIANT_BOOL named_parameters);
+
+    [id(0x60030014), propget]
+    HRESULT __stdcall NamedParameters(
+        [out, retval] VARIANT_BOOL *named_parameters);
+};
+
+[
+    uuid(00000400-0000-0010-8000-00aa006d2ea4)
+]
+dispinterface ConnectionEvents
+{
+    properties:
+    methods:
+    [id(00000000)]
+    HRESULT InfoMessage(
+        [in] Error *error,
+        [in, out] EventStatusEnum *status,
+        [in] _Connection *Connection);
+
+    [id(0x00000001)]
+    HRESULT BeginTransComplete(
+        [in] LONG TransactionLevel,
+        [in] Error *error,
+        [in, out] EventStatusEnum *status,
+        [in] _Connection *connection);
+
+    [id(0x00000003)]
+    HRESULT CommitTransComplete(
+        [in] Error *error,
+        [in, out] EventStatusEnum *status,
+        [in] _Connection *connection);
+
+    [id(0x00000002)]
+    HRESULT RollbackTransComplete(
+        [in] Error *error,
+        [in, out] EventStatusEnum *status,
+        [in] _Connection *connection);
+
+    [id(0x00000004)]
+    HRESULT WillExecute(
+        [in, out] BSTR *source,
+        [in, out] CursorTypeEnum *cursor_type,
+        [in, out] LockTypeEnum *lock_type,
+        [in, out] LONG *options,
+        [in, out] EventStatusEnum *status,
+        [in] _Command *command,
+        [in] _Recordset *record_set,
+        [in] _Connection *connection);
+
+    [id(0x00000005)]
+    HRESULT ExecuteComplete(
+        [in] LONG records_affected,
+        [in] Error *error,
+        [in, out] EventStatusEnum *status,
+        [in] _Command *command,
+        [in] _Recordset *record_set,
+        [in] _Connection *connection);
+
+    [id(0x00000006)]
+    HRESULT WillConnect(
+        [in, out] BSTR *string,
+        [in, out] BSTR *userid,
+        [in, out] BSTR *password,
+        [in, out] LONG *options,
+        [in, out] EventStatusEnum *status,
+        [in] _Connection *connection);
+
+    [id(0x00000007)]
+    HRESULT ConnectComplete(
+        [in] Error *error,
+        [in, out] EventStatusEnum *status,
+        [in] _Connection *connection);
+
+    [id(0x00000008)]
+    HRESULT Disconnect(
+        [in, out] EventStatusEnum *status,
+        [in] _Connection *connection);
+};
+
+[
+    uuid(00000562-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface _Record : _ADO
+{
+    [id(1), propget]
+    HRESULT __stdcall ActiveConnection(
+        [out, retval] VARIANT *connection);
+
+    [id(1), propput]
+    HRESULT __stdcall ActiveConnection(
+        [in] BSTR connection);
+
+    [id(1), propputref]
+    HRESULT ActiveConnection(
+        [in] _Connection *connection);
+
+    [id(2), propget]
+    HRESULT __stdcall State(
+        [out, retval] ObjectStateEnum *state);
+
+    [id(3), propget]
+    HRESULT __stdcall Source(
+        [out, retval] VARIANT *source);
+
+    [id(3), propput]
+    HRESULT __stdcall Source(
+        [in] BSTR source);
+
+    [id(3), propputref]
+    HRESULT __stdcall Source(
+        [in] IDispatch *source);
+
+    [id(4), propget]
+    HRESULT __stdcall Mode(
+        [out, retval] ConnectModeEnum *mode);
+
+    [id(4), propput]
+    HRESULT __stdcall Mode(
+        [in] ConnectModeEnum mode);
+
+    [id(5), propget]
+    HRESULT __stdcall ParentURL(
+        [out, retval] BSTR *parent_URL);
+
+    [id(6)]
+    HRESULT __stdcall MoveRecord(
+        [in, defaultvalue("")] BSTR source,
+        [in, defaultvalue("")] BSTR Destination,
+        [in, optional] BSTR UserName,
+        [in, optional] BSTR Password,
+        [in, defaultvalue(adMoveUnspecified)] MoveRecordOptionsEnum Options,
+        [in, optional] VARIANT_BOOL Async,
+        [out, retval] BSTR *pbstrNewURL);
+
+    [id(7)]
+    HRESULT __stdcall CopyRecord(
+        [in, defaultvalue("")] BSTR source,
+        [in, defaultvalue("")] BSTR destination,
+        [in, optional] BSTR username,
+        [in, optional] BSTR password,
+        [in, defaultvalue(adCopyUnspecified)] CopyRecordOptionsEnum options,
+        [in, optional] VARIANT_BOOL async,
+        [out, retval] BSTR *new_URL);
+
+    [id(8)]
+    HRESULT __stdcall DeleteRecord(
+        [in] BSTR source,
+        [in, optional] VARIANT_BOOL async);
+
+    [id(9)]
+    HRESULT __stdcall Open(
+        [in, optional] VARIANT source,
+        [in, optional] VARIANT active_connection,
+        [in, optional] ConnectModeEnum mode,
+        [in, defaultvalue(adFailIfNotExists)] RecordCreateOptionsEnum create_options,
+        [in, defaultvalue(adOpenRecordUnspecified)] RecordOpenOptionsEnum options,
+        [in, optional] BSTR username,
+        [in, optional] BSTR password);
+
+    [id(10)]
+    HRESULT __stdcall Close();
+
+    [id(0), propget]
+    HRESULT __stdcall Fields(
+        [out, retval] Fields **fields);
+
+    [id(11), propget]
+    HRESULT __stdcall RecordType(
+        [out, retval] RecordTypeEnum *type);
+
+    [id(12)]
+    HRESULT __stdcall GetChildren(
+        [out, retval] _Recordset **record_set);
+
+    [id(13)]
+    HRESULT __stdcall Cancel();
+};
+
+[
+    uuid(00000565-0000-0010-8000-00aa006d2ea4),
+    odl,
+    dual,
+    nonextensible,
+    oleautomation
+]
+interface _Stream : IDispatch
+{
+    [id(1), propget]
+    HRESULT __stdcall Size(
+        [out, retval] LONG *size);
+
+    [id(2), propget]
+    HRESULT __stdcall EOS(
+        [out, retval] VARIANT_BOOL *eos);
+
+    [id(3), propget]
+    HRESULT __stdcall Position(
+        [out, retval] LONG *position);
+
+    [id(3), propput]
+    HRESULT __stdcall Position(
+        [in] LONG position);
+
+    [id(4), propget]
+    HRESULT __stdcall Type(
+        [out, retval] StreamTypeEnum *type);
+
+    [id(4), propput]
+    HRESULT __stdcall Type(
+        [in] StreamTypeEnum type);
+
+    [id(5), propget]
+    HRESULT __stdcall LineSeparator(
+        [out, retval] LineSeparatorEnum *separator);
+
+    [id(5), propput]
+    HRESULT __stdcall LineSeparator(
+        [in] LineSeparatorEnum separator);
+
+    [id(6), propget]
+    HRESULT __stdcall State(
+        [out, retval] ObjectStateEnum *state);
+
+    [id(7), propget]
+    HRESULT __stdcall Mode(
+        [out, retval] ConnectModeEnum *mode);
+
+    [id(7), propput]
+    HRESULT __stdcall Mode(
+        [in] ConnectModeEnum mode);
+
+    [id(8), propget]
+    HRESULT Charset(
+        [out, retval] BSTR *charset);
+
+    [id(8), propput]
+    HRESULT Charset(
+        [in] BSTR charset);
+
+    [id(9)]
+    HRESULT __stdcall Read(
+        [in, defaultvalue(adReadAll)] LONG num_bytes,
+        [out, retval] VARIANT *val);
+
+    [id(10)]
+    HRESULT __stdcall Open(
+        [in, optional] VARIANT source,
+        [in, defaultvalue(adModeUnknown)] ConnectModeEnum mode,
+        [in, defaultvalue(adOpenStreamUnspecified)] StreamOpenOptionsEnum options,
+        [in, optional] BSTR username,
+        [in, optional] BSTR password);
+
+    [id(11)]
+    HRESULT __stdcall Close(void);
+
+    [id(12)]
+    HRESULT __stdcall SkipLine(void);
+
+    [id(13)]
+    HRESULT __stdcall Write(
+        [in] VARIANT buffer);
+
+    [id(14)]
+    HRESULT __stdcall SetEOS(void);
+
+    [id(15)]
+    HRESULT __stdcall CopyTo(
+        [in] _Stream *dest,
+        [in, defaultvalue(-1)] LONG size);
+
+    [id(16)]
+    HRESULT __stdcall Flush(void);
+
+    [id(17)]
+    HRESULT __stdcall SaveToFile(
+        [in] BSTR FileName,
+        [in, defaultvalue(adSaveCreateNotExist)] SaveOptionsEnum options);
+
+    [id(18)]
+    HRESULT __stdcall LoadFromFile(
+        [in] BSTR filename);
+
+    [id(19)]
+    HRESULT __stdcall ReadText(
+        [in, defaultvalue(adReadAll)] LONG size,
+        [out, retval] BSTR *str);
+
+    [id(20)]
+    HRESULT __stdcall WriteText(
+        [in] BSTR data,
+        [in, defaultvalue(adWriteChar)] StreamWriteEnum options);
+
+    [id(21)]
+    HRESULT __stdcall Cancel(void);
+};
+
+[
+    uuid(00000266-0000-0010-8000-00aa006d2ea4)
+]
+dispinterface RecordsetEvents
+{
+    properties:
+    methods:
+    [id(0x00000009)]
+    HRESULT WillChangeField(
+        [in] LONG count,
+        [in] VARIANT fields,
+        [in, out] EventStatusEnum *status,
+        [in] _Recordset *record_set);
+
+    [id(0x0000000a)]
+    HRESULT FieldChangeComplete(
+        [in] LONG count,
+        [in] VARIANT fields,
+        [in] Error *error,
+        [in, out] EventStatusEnum *status,
+        [in] _Recordset *record_set);
+
+    [id(0x0000000b)]
+    HRESULT WillChangeRecord(
+        [in] EventReasonEnum reason,
+        [in] LONG count,
+        [in, out] EventStatusEnum *status,
+        [in] _Recordset *record_set);
+
+    [id(0x0000000c)]
+    HRESULT RecordChangeComplete(
+        [in] EventReasonEnum reason,
+        [in] LONG count,
+        [in] Error *error,
+        [in, out] EventStatusEnum *status,
+        [in] _Recordset *record_set);
+
+    [id(0x0000000d)]
+    HRESULT WillChangeRecordset(
+        [in] EventReasonEnum reason,
+        [in, out] EventStatusEnum *status,
+        [in] _Recordset *record_set);
+
+    [id(0x0000000e)]
+    HRESULT RecordsetChangeComplete(
+        [in] EventReasonEnum reason,
+        [in] Error *error,
+        [in, out] EventStatusEnum *status,
+        [in] _Recordset *record_set);
+
+    [id(0x0000000f)]
+    HRESULT WillMove(
+        [in] EventReasonEnum reason,
+        [in, out] EventStatusEnum *status,
+        [in] _Recordset *record_set);
+
+    [id(0x00000010)]
+    HRESULT MoveComplete(
+        [in] EventReasonEnum reason,
+        [in] Error *error,
+        [in, out] EventStatusEnum *status,
+        [in] _Recordset *record_set);
+
+    [id(0x00000011)]
+    HRESULT EndOfRecordset(
+        [in, out] VARIANT_BOOL *more_data,
+        [in, out] EventStatusEnum *status,
+        [in] _Recordset *record_set);
+
+    [id(0x00000012)]
+    HRESULT FetchProgress(
+        [in] LONG progress,
+        [in] LONG max_progress,
+        [in, out] EventStatusEnum *status,
+        [in] _Recordset *record_set);
+
+    [id(0x00000013)]
+    HRESULT FetchComplete(
+        [in] Error *error,
+        [in, out] EventStatusEnum *status,
+        [in] _Recordset *record_set);
+};
+
+[
+    uuid(00000538-0000-0010-8000-00aa006d2ea4),
+    odl,
+    hidden
+]
+interface ADODebugging : IUnknown
+{
+    HRESULT __stdcall IsGlobalDebugMode(
+        VARIANT_BOOL *debugging_on);
+
+    HRESULT __stdcall SetGlobalDebugMode(
+        IUnknown *debugger,
+        VARIANT_BOOL debugging_on);
+};
+
+[
+    uuid(00000516-0000-0010-8000-00aa006d2ea4),
+    odl,
+    restricted
+]
+interface ADOConnectionConstruction15 : IUnknown
+{
+    [propget]
+    HRESULT __stdcall DSO(
+        [out, retval] IUnknown **dso);
+
+    [propget]
+    HRESULT __stdcall Session(
+        [out, retval] IUnknown **session);
+
+    HRESULT __stdcall WrapDSOandSession(
+        [in] IUnknown *dso,
+        [in] IUnknown *session);
+};
+
+[
+    uuid(00000551-0000-0010-8000-00aa006d2ea4),
+    odl,
+    restricted
+]
+interface ADOConnectionConstruction : ADOConnectionConstruction15
+{
+};
+
+[
+    uuid(00000517-0000-0010-8000-00aa006d2ea4),
+    odl,
+    restricted
+]
+interface ADOCommandConstruction : IUnknown
+{
+    [propget]
+    HRESULT __stdcall OLEDBCommand(
+        [out, retval] IUnknown **command);
+
+    [propput]
+    HRESULT __stdcall OLEDBCommand(
+        [in] IUnknown *command);
+};
+
+[
+    uuid(00000283-0000-0010-8000-00aa006d2ea4),
+    odl,
+    restricted
+]
+interface ADORecordsetConstruction : IDispatch
+{
+    [propget]
+    HRESULT __stdcall Rowset(
+        [out, retval] IUnknown **row_set);
+
+    [propput]
+    HRESULT __stdcall Rowset(
+        [in] IUnknown *row_set);
+
+    [propget]
+    HRESULT __stdcall Chapter(
+        [out, retval] LONG *chapter);
+
+    [propput]
+    HRESULT __stdcall Chapter(
+        [in] LONG chapter);
+
+    [propget]
+    HRESULT __stdcall RowPosition(
+        [out, retval] IUnknown **row_pos);
+
+    [propput]
+    HRESULT __stdcall RowPosition(
+        [in] IUnknown *row_pos);
+};
+
+[
+    uuid(2a75196c-d9eb-4129-b803-931327f72d5c),
+    version(2.8)
+]
+library ADODB
+{
+    importlib("stdole2.tlb");
+
+    [
+        uuid(00000514-0000-0010-8000-00aa006d2ea4),
+    ]
+    coclass Connection
+    {
+        [default] interface _Connection;
+        [default, source] dispinterface ConnectionEvents;
+    };
+
+    [
+        uuid(00000507-0000-0010-8000-00aa006d2ea4),
+    ]
+    coclass Command
+    {
+        [default] interface _Command;
+    };
+
+    [
+        uuid(00000535-0000-0010-8000-00aa006d2ea4),
+    ]
+    coclass Recordset
+    {
+        [default] interface _Recordset;
+        [default, source] dispinterface RecordsetEvents;
+    };
+
+    [
+        uuid(0000050b-0000-0010-8000-00aa006d2ea4),
+    ]
+    coclass Parameter
+    {
+        [default] interface _Parameter;
+    };
+
+    [
+        uuid(00000560-0000-0010-8000-00aa006d2ea4),
+    ]
+    coclass Record
+    {
+        [default] interface _Record;
+    };
+
+    [
+        uuid(00000566-0000-0010-8000-00aa006d2ea4),
+    ]
+    coclass Stream
+    {
+        [default] interface _Stream;
+    };
+}
-- 
2.20.1




More information about the wine-devel mailing list