diff --git a/configure b/configure index 822669da7e1..1035da0e883 100755 --- a/configure +++ b/configure @@ -1409,6 +1409,7 @@ enable_mpr enable_mprapi enable_msacm32_drv enable_msacm32 +enable_msado15 enable_msadp32_acm enable_msasn1 enable_mscat32 @@ -20583,6 +20584,7 @@ wine_fn_config_makefile dlls/msacm.dll16 enable_win16 wine_fn_config_makefile dlls/msacm32.drv enable_msacm32_drv wine_fn_config_makefile dlls/msacm32 enable_msacm32 wine_fn_config_makefile dlls/msacm32/tests enable_tests +wine_fn_config_makefile dlls/msado15 enable_msado15 wine_fn_config_makefile dlls/msadp32.acm enable_msadp32_acm wine_fn_config_makefile dlls/msasn1 enable_msasn1 wine_fn_config_makefile dlls/mscat32 enable_mscat32 diff --git a/configure.ac b/configure.ac index 7f2c3cda235..06ac9c6c713 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 00000000000..f87e81af38d --- /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 00000000000..0c5b2615d0a --- /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 +#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 00000000000..6d0e061a537 --- /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 00000000000..f3a77df3ac0 --- /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 421e3d6c598..2e9a921df70 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 00000000000..a1d5e28038b --- /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 Value( + [out, retval] VARIANT *val); + + [id(00000000), propput] + HRESULT Value( + [in] VARIANT val); + + [id(0x60020002), propget] + HRESULT Name( + [out, retval] BSTR *str); + + [id(0x60020003), propget] + HRESULT Type( + [out, retval] DataTypeEnum *type); + + [id(0x60020004), propget] + HRESULT Attributes( + [out, retval] LONG *attributes); + + [id(0x60020004), propput] + HRESULT Attributes( + [in] LONG attributes); +}; + +[ + uuid(00000512-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface _Collection : IDispatch +{ + [id(0x60020000), propget] + HRESULT Count( + [out, retval] LONG *count); + + [id(0xfffffffc), restricted] + HRESULT _NewEnum( + [out, retval] IUnknown **object); + + [id(0x60020002)] + HRESULT Refresh(); +}; + +[ + uuid(00000504-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface Properties : _Collection +{ + [id(00000000), propget] + HRESULT 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 Properties( + [out, retval] Properties **object); +}; + +[ + uuid(0000054c-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation, + hidden +] +interface Field20 : _ADO +{ + [id(0x00000455), propget] + HRESULT ActualSize( + [out, retval] LONG *size); + + [id(0x0000040c), propget] + HRESULT Attributes( + [out, retval] LONG *attrs); + + [id(0x0000044f), propget] + HRESULT DefinedSize( + [out, retval] LONG *size); + + [id(0x0000044c), propget] + HRESULT Name( + [out, retval] BSTR *str); + + [id(0x0000044e), propget] + HRESULT Type( + [out, retval] DataTypeEnum *type); + + [id(00000000), propget] + HRESULT Value( + [out, retval] VARIANT *val); + + [id(00000000), propput] + HRESULT Value( + [in] VARIANT val); + + [id(0x60030007), propget] + HRESULT Precision( + [out, retval] unsigned char *precision); + + [id(0x60030008), propget] + HRESULT NumericScale( + [out, retval] unsigned char *scale); + + [id(0x00000453)] + HRESULT AppendChunk( + [in] VARIANT data); + + [id(0x00000454)] + HRESULT GetChunk( + [in] LONG length, + [out, retval] VARIANT *var); + + [id(0x00000450), propget] + HRESULT OriginalValue( + [out, retval] VARIANT *val); + + [id(0x00000451), propget] + HRESULT UnderlyingValue( + [out, retval] VARIANT *val); + + [id(0x6003000d), propget] + HRESULT DataFormat( + [out, retval] IUnknown **format); + + [id(0x6003000d), propputref] + HRESULT DataFormat( + [in] IUnknown *format); + + [id(0x60030007), propput] + HRESULT Precision( + [in] unsigned char precision); + + [id(0x60030008), propput] + HRESULT NumericScale( + [in] unsigned char scale); + + [id(0x0000044e), propput] + HRESULT Type( + [in] DataTypeEnum type); + + [id(0x0000044f), propput] + HRESULT DefinedSize( + [in] LONG size); + + [id(0x0000040c), propput] + HRESULT Attributes( + [in] LONG attrs); +}; + +[ + uuid(00000569-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface Field : Field20 +{ + [id(0x0000045c), propget] + HRESULT Status( + [out, retval] LONG *status); +}; + +[ + uuid(00000506-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface Fields15 : _Collection +{ + [id(00000000), propget] + HRESULT Item( + [in] VARIANT index, + [out, retval] Field **object); +}; + +[ + uuid(0000054d-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface Fields20 : Fields15 +{ + [id(0x60030001)] + HRESULT _Append( + [in] BSTR name, + [in] DataTypeEnum type, + [in, defaultvalue(0)] LONG size, + [in, defaultvalue(adFldUnspecified)] FieldAttributeEnum attr); + + [id(0x60030002)] + HRESULT Delete( + [in] VARIANT index); +}; + +[ + uuid(00000564-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface Fields : Fields20 +{ + [id(0x60040001)] + HRESULT Append( + [in] BSTR name, + [in] DataTypeEnum type, + [in, defaultvalue(0)] LONG size, + [in, defaultvalue(adFldUnspecified)] FieldAttributeEnum attr, + [in, optional] VARIANT value); + + [id(0x60040002)] + HRESULT Update(); + + [id(0x60040003)] + HRESULT Resync( + [in, defaultvalue(adResyncAllValues)] ResyncEnum resync_values); + + [id(0x60040004)] + HRESULT CancelUpdate(); +}; + +[ + uuid(0000050e-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface Recordset15 : _ADO +{ + [id(0x000003e8), propget] + HRESULT AbsolutePosition( + [out, retval] PositionEnum_Param *position); + + [id(0x000003e8), propput] + HRESULT AbsolutePosition( + [in] PositionEnum_Param position); + + [id(0x000003e9), propputref] + HRESULT ActiveConnection( + [in] IDispatch *connection); + + [id(0x000003e9), propput] + HRESULT ActiveConnection( + [in] VARIANT connection); + + [id(0x000003e9), propget] + HRESULT ActiveConnection( + [out, retval] VARIANT *connection); + + [id(0x000003ea), propget] + HRESULT BOF( + [out, retval] VARIANT_BOOL *bof); + + [id(0x000003eb), propget] + HRESULT Bookmark( + [out, retval] VARIANT *bookmark); + + [id(0x000003eb), propput] + HRESULT Bookmark( + [in] VARIANT bookmark); + + [id(0x000003ec), propget] + HRESULT CacheSize( + [out, retval] LONG *size); + + [id(0x000003ec), propput] + HRESULT CacheSize( + [in] LONG size); + + [id(0x000003ed), propget] + HRESULT CursorType( + [out, retval] CursorTypeEnum *cursor_type); + + [id(0x000003ed), propput] + HRESULT CursorType( + [in] CursorTypeEnum cursor_type); + + [id(0x000003ee), propget] + HRESULT EOF( + [out, retval] VARIANT_BOOL *eof); + + [id(00000000), propget] + HRESULT Fields( + [out, retval] Fields **object); + + [id(0x000003f0), propget] + HRESULT LockType( + [out, retval] LockTypeEnum *lock_type); + + [id(0x000003f0), propput] + HRESULT LockType( + [in] LockTypeEnum lock_type); + + [id(0x000003f1), propget] + HRESULT MaxRecords( + [out, retval] LONG *max_records); + + [id(0x000003f1), propput] + HRESULT MaxRecords( + [in] LONG max_records); + + [id(0x000003f2), propget] + HRESULT RecordCount( + [out, retval] LONG *count); + + [id(0x000003f3), propputref] + HRESULT Source( + [in] IDispatch *source); + + [id(0x000003f3), propput] + HRESULT Source( + [in] BSTR source); + + [id(0x000003f3), propget] + HRESULT Source( + [out, retval] VARIANT *source); + + [id(0x000003f4)] + HRESULT AddNew( + [in, optional] VARIANT field_list, + [in, optional] VARIANT values); + + [id(0x000003f5)] + HRESULT CancelUpdate(); + + [id(0x000003f6)] + HRESULT Close(); + + [id(0x000003f7)] + HRESULT Delete( + [in, defaultvalue(adAffectCurrent)] AffectEnum affect_records); + + [id(0x000003f8)] + HRESULT GetRows( + [in, defaultvalue(-1)] LONG rows, + [in, optional] VARIANT start, + [in, optional] VARIANT fields, + [out, retval] VARIANT *var); + + [id(0x000003f9)] + HRESULT Move( + [in] LONG num_records, + [in, optional] VARIANT start); + + [id(0x000003fa)] + HRESULT MoveNext(); + + [id(0x000003fb)] + HRESULT MovePrevious(); + + [id(0x000003fc)] + HRESULT MoveFirst(); + + [id(0x000003fd)] + HRESULT MoveLast(); + + [id(0x000003fe)] + HRESULT 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 Requery( + [in, defaultvalue(-1)] LONG options); + + [id(0x60030022), hidden] + HRESULT _xResync( + [in, defaultvalue(adAffectAll)] AffectEnum affect_records); + + [id(0x00000401)] + HRESULT Update( + [in, optional] VARIANT fields, + [in, optional] VARIANT values); + + [id(0x00000417), propget] + HRESULT AbsolutePage( + [out, retval] PositionEnum_Param *position); + + [id(0x00000417), propput] + HRESULT AbsolutePage( + [in] PositionEnum_Param position); + + [id(0x00000402), propget] + HRESULT EditMode( + [out, retval] EditModeEnum *mode); + + [id(0x00000406), propget] + HRESULT Filter( + [out, retval] VARIANT *criteria); + + [id(0x00000406), propput] + HRESULT Filter( + [in] VARIANT criteria); + + [id(0x0000041a), propget] + HRESULT PageCount( + [out, retval] LONG *count); + + [id(0x00000418), propget] + HRESULT PageSize( + [out, retval] LONG *size); + + [id(0x00000418), propput] + HRESULT PageSize( + [in] LONG size); + + [id(0x00000407), propget] + HRESULT Sort( + [out, retval] BSTR *criteria); + + [id(0x00000407), propput] + HRESULT Sort( + [in] BSTR criteria); + + [id(0x00000405), propget] + HRESULT Status( + [out, retval] LONG *status); + + [id(0x0000041e), propget] + HRESULT State( + [out, retval] LONG *state); + + [id(0x60030030), hidden] + HRESULT _xClone( + [out, retval] _Recordset **object); + + [id(0x0000040b)] + HRESULT UpdateBatch( + [in, defaultvalue(adAffectAll)] AffectEnum affect_records); + + [id(0x00000419)] + HRESULT CancelBatch( + [in, defaultvalue(adAffectAll)] AffectEnum affect_records); + + [id(0x0000041b), propget] + HRESULT CursorLocation( + [out, retval] CursorLocationEnum *cursor_loc); + + [id(0x0000041b), propput] + HRESULT CursorLocation( + [in] CursorLocationEnum cursor_loc); + + [id(0x0000041c)] + HRESULT NextRecordset( + [out, optional] VARIANT *records_affected, + [out, retval] _Recordset **record_set); + + [id(0x0000040c)] + HRESULT Supports( + [in] CursorOptionEnum cursor_options, + [out, retval] VARIANT_BOOL *ret); + + [id(0xfffffff8), propget, hidden] + HRESULT Collect( + [in] VARIANT index, + [out, retval] VARIANT *var); + + [id(0xfffffff8), propput, hidden] + HRESULT Collect( + [in] VARIANT index, + [in] VARIANT var); + + [id(0x0000041d), propget] + HRESULT MarshalOptions( + [out, retval] MarshalOptionsEnum *options); + + [id(0x0000041d), propput] + HRESULT MarshalOptions( + [in] MarshalOptionsEnum options); + + [id(0x00000422)] + HRESULT 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 Cancel(); + + [id(0x00000420), propget] + HRESULT DataSource( + [out, retval] IUnknown **data_source); + + [id(0x00000420), propputref] + HRESULT DataSource( + [in] IUnknown *data_source); + + [hidden] + HRESULT _xSave( + [in, optional] BSTR filename, + [in, defaultvalue(adPersistADTG)] PersistFormatEnum persist_format); + + [id(0x00000425), propget] + HRESULT ActiveCommand( + [out, retval] IDispatch **cmd); + + [id(0x00000427), propput] + HRESULT StayInSync( + [in] VARIANT_BOOL stay_in_sync); + + [id(0x00000427), propget] + HRESULT StayInSync( + [out, retval] VARIANT_BOOL *stay_in_sync); + + [id(0x00000426)] + HRESULT 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 DataMember( + [out, retval] BSTR *data_member); + + [id(0x00000428), propput] + HRESULT DataMember( + [in] BSTR data_member); + + [id(0x00000429)] + HRESULT CompareBookmarks( + [in] VARIANT bookmark1, + [in] VARIANT bookmark2, + [out, retval] CompareEnum *compare); + + [id(0x0000040a)] + HRESULT Clone( + [in, defaultvalue(adLockUnspecified)] LockTypeEnum lock_type, + [out, retval] _Recordset **object); + + [id(0x00000400)] + HRESULT 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 Seek( + [in] VARIANT key_values, + [in, defaultvalue(adSeekFirstEQ)] SeekEnum seek_option); + + [id(0x0000042b), propput] + HRESULT Index( + [in] BSTR index); + + [id(0x0000042b), propget] + HRESULT 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 Number( + [out, retval] LONG *number); + + [id(0x60020001), propget] + HRESULT Source( + [out, retval] BSTR *str); + + [id(00000000), propget] + HRESULT Description( + [out, retval] BSTR *str); + + [id(0x60020003), propget] + HRESULT HelpFile( + [out, retval] BSTR *str); + + [id(0x60020004), propget] + HRESULT HelpContext( + [out, retval] LONG *ctx); + + [id(0x60020005), propget] + HRESULT SQLState( + [out, retval] BSTR *str); + + [id(0x60020006), propget] + HRESULT NativeError( + [out, retval] LONG *error); +}; + +[ + uuid(00000501-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface Errors : _Collection +{ + [id(00000000), propget] + HRESULT Item( + [in] VARIANT index, + [out, retval] Error **object); + + [id(0x60030001)] + HRESULT Clear(); +}; + +[ + uuid(00000515-0000-0010-8000-00aa006d2ea4), + odl, + dual, + oleautomation +] +interface Connection15 : _ADO +{ + [id(00000000), propget] + HRESULT ConnectionString( + [out, retval] BSTR *str); + + [id(00000000), propput] + HRESULT ConnectionString( + [in] BSTR str); + + [id(0x00000002), propget] + HRESULT CommandTimeout( + [out, retval] LONG *timeout); + + [id(0x00000002), propput] + HRESULT CommandTimeout( + [in] LONG timeout); + + [id(0x00000003), propget] + HRESULT ConnectionTimeout( + [out, retval] LONG *timeout); + + [id(0x00000003), propput] + HRESULT ConnectionTimeout( + [in] LONG timeout); + + [id(0x00000004), propget] + HRESULT Version( + [out, retval] BSTR *str); + + [id(0x00000005)] + HRESULT Close(); + + [id(0x00000006)] + HRESULT Execute( + [in] BSTR command, + [out, optional] VARIANT *records_affected, + [in, defaultvalue(-1)] LONG options, + [out, retval] _Recordset **record_set); + + [id(0x00000007)] + HRESULT BeginTrans( + [out, retval] LONG *transaction_level); + + [id(0x00000008)] + HRESULT CommitTrans(); + + [id(0x00000009)] + HRESULT RollbackTrans(); + + [id(0x0000000a)] + HRESULT Open( + [in, defaultvalue("")] BSTR connection_str, + [in, defaultvalue("")] BSTR user_id, + [in, defaultvalue("")] BSTR password, + [in, defaultvalue(-1)] LONG options); + + [id(0x0000000b), propget] + HRESULT Errors( + [out, retval] Errors **object); + + [id(0x0000000c), propget] + HRESULT DefaultDatabase( + [out, retval] BSTR *str); + + [id(0x0000000c), propput] + HRESULT DefaultDatabase( + [in] BSTR str); + + [id(0x0000000d), propget] + HRESULT IsolationLevel( + [out, retval] IsolationLevelEnum *level); + + [id(0x0000000d), propput] + HRESULT IsolationLevel( + [in] IsolationLevelEnum level); + + [id(0x0000000e), propget] + HRESULT Attributes( + [out, retval] LONG *attr); + + [id(0x0000000e), propput] + HRESULT Attributes( + [in] LONG attr); + + [id(0x0000000f), propget] + HRESULT CursorLocation( + [out, retval] CursorLocationEnum *cursor_loc); + + [id(0x0000000f), propput] + HRESULT CursorLocation( + [in] CursorLocationEnum cursor_loc); + + [id(0x00000010), propget] + HRESULT Mode( + [out, retval] ConnectModeEnum *mode); + + [id(0x00000010), propput] + HRESULT Mode( + [in] ConnectModeEnum mode); + + [id(0x00000011), propget] + HRESULT Provider( + [out, retval] BSTR *str); + + [id(0x00000011), propput] + HRESULT Provider( + [in] BSTR str); + + [id(0x00000012), propget] + HRESULT State( + [out, retval] LONG *state); + + [id(0x00000013)] + HRESULT 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 Cancel(); +}; + +[ + uuid(0000050c-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface _Parameter : _ADO +{ + [id(0x60030000), propget] + HRESULT Name( + [out, retval] BSTR *str); + + [id(0x60030000), propput] + HRESULT Name( + [in] BSTR str); + + [id(00000000), propget] + HRESULT Value( + [out, retval] VARIANT *val); + + [id(00000000), propput] + HRESULT Value( + [in] VARIANT val); + + [id(0x60030004), propget] + HRESULT Type( + [out, retval] DataTypeEnum *data_type); + + [id(0x60030004), propput] + HRESULT Type( + [in] DataTypeEnum data_type); + + [id(0x60030006), propput] + HRESULT Direction( + [in] ParameterDirectionEnum direction); + + [id(0x60030006), propget] + HRESULT Direction( + [out, retval] ParameterDirectionEnum *direction); + + [id(0x60030008), propput] + HRESULT Precision( + [in] unsigned char precision); + + [id(0x60030008), propget] + HRESULT Precision( + [out, retval] unsigned char *precision); + + [id(0x6003000a), propput] + HRESULT NumericScale( + [in] unsigned char scale); + + [id(0x6003000a), propget] + HRESULT NumericScale( + [out, retval] unsigned char *scale); + + [id(0x6003000c), propput] + HRESULT Size( + [in] LONG size); + + [id(0x6003000c), propget] + HRESULT Size( + [out, retval] LONG *size); + + [id(0x6003000e)] + HRESULT AppendChunk( + [in] VARIANT val); + + [id(0x6003000f), propget] + HRESULT Attributes( + [out, retval] LONG *attrs); + + [id(0x6003000f), propput] + HRESULT Attributes( + [in] LONG attrs); +}; + +[ + uuid(00000513-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface _DynaCollection : _Collection +{ + [id(0x60030000)] + HRESULT Append( + [in] IDispatch *object); + + [id(0x60030001)] + HRESULT Delete( + [in] VARIANT index); +}; + +[ + uuid(0000050d-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface Parameters : _DynaCollection +{ + [id(00000000), propget] + HRESULT 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 ActiveConnection( + [out, retval] _Connection **object); + + [id(0x60030000), propputref] + HRESULT ActiveConnection( + [in] _Connection *object); + + [id(0x60030000), propput] + HRESULT ActiveConnection( + [in] VARIANT object); + + [id(0x60030003), propget] + HRESULT CommandText( + [out, retval] BSTR *str); + + [id(0x60030003), propput] + HRESULT CommandText( + [in] BSTR str); + + [id(0x60030005), propget] + HRESULT CommandTimeout( + [out, retval] LONG *timeout); + + [id(0x60030005), propput] + HRESULT CommandTimeout( + [in] LONG timeout); + + [id(0x60030007), propget] + HRESULT Prepared( + [out, retval] VARIANT_BOOL *prepared); + + [id(0x60030007), propput] + HRESULT Prepared( + [in] VARIANT_BOOL prepared); + + [id(0x60030009)] + HRESULT Execute( + [out, optional] VARIANT *records_affected, + [in, optional] VARIANT *parameters, + [in, defaultvalue(-1)] LONG options, + [out, retval] _Recordset **record_set); + + [id(0x6003000a)] + HRESULT 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 Parameters( + [out, retval] Parameters **object); + + [id(0x6003000c), propput] + HRESULT CommandType( + [in] CommandTypeEnum cmd_type); + + [id(0x6003000c), propget] + HRESULT CommandType( + [out, retval] CommandTypeEnum *cmd_type); + + [id(0x6003000e), propget] + HRESULT Name( + [out, retval] BSTR *name); + + [id(0x6003000e), propput] + HRESULT Name( + [in] BSTR name); +}; + +[ + uuid(0000054e-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface Command25 : Command15 +{ + [id(0x60030010), propget] + HRESULT State( + [out, retval] LONG *state); + + [id(0x60030011)] + HRESULT Cancel(); +}; + +[ + uuid(b08400bd-f9d1-4d02-b856-71d5dba123e9), + odl, + dual, + nonextensible, + oleautomation +] +interface _Command : Command25 +{ + [id(0x60030012), propputref] + HRESULT CommandStream( + [in] IUnknown *stream); + + [id(0x60030012), propget] + HRESULT CommandStream( + [out, retval] VARIANT *stream); + + [id(0x60030013), propput] + HRESULT Dialect( + [in] BSTR dialect); + + [id(0x60030013), propget] + HRESULT Dialect( + [out, retval] BSTR *dialect); + + [id(0x60030014), propput] + HRESULT NamedParameters( + [in] VARIANT_BOOL named_parameters); + + [id(0x60030014), propget] + HRESULT 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 ActiveConnection( + [out, retval] VARIANT *connection); + + [id(1), propput] + HRESULT ActiveConnection( + [in] BSTR connection); + + [id(1), propputref] + HRESULT ActiveConnection( + [in] _Connection *connection); + + [id(2), propget] + HRESULT State( + [out, retval] ObjectStateEnum *state); + + [id(3), propget] + HRESULT Source( + [out, retval] VARIANT *source); + + [id(3), propput] + HRESULT Source( + [in] BSTR source); + + [id(3), propputref] + HRESULT Source( + [in] IDispatch *source); + + [id(4), propget] + HRESULT Mode( + [out, retval] ConnectModeEnum *mode); + + [id(4), propput] + HRESULT Mode( + [in] ConnectModeEnum mode); + + [id(5), propget] + HRESULT ParentURL( + [out, retval] BSTR *parent_URL); + + [id(6)] + HRESULT 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 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 DeleteRecord( + [in] BSTR source, + [in, optional] VARIANT_BOOL async); + + [id(9)] + HRESULT 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 Close(); + + [id(0), propget] + HRESULT Fields( + [out, retval] Fields **fields); + + [id(11), propget] + HRESULT RecordType( + [out, retval] RecordTypeEnum *type); + + [id(12)] + HRESULT GetChildren( + [out, retval] _Recordset **record_set); + + [id(13)] + HRESULT Cancel(); +}; + +[ + uuid(00000565-0000-0010-8000-00aa006d2ea4), + odl, + dual, + nonextensible, + oleautomation +] +interface _Stream : IDispatch +{ + [id(1), propget] + HRESULT Size( + [out, retval] LONG *size); + + [id(2), propget] + HRESULT EOS( + [out, retval] VARIANT_BOOL *eos); + + [id(3), propget] + HRESULT Position( + [out, retval] LONG *position); + + [id(3), propput] + HRESULT Position( + [in] LONG position); + + [id(4), propget] + HRESULT Type( + [out, retval] StreamTypeEnum *type); + + [id(4), propput] + HRESULT Type( + [in] StreamTypeEnum type); + + [id(5), propget] + HRESULT LineSeparator( + [out, retval] LineSeparatorEnum *separator); + + [id(5), propput] + HRESULT LineSeparator( + [in] LineSeparatorEnum separator); + + [id(6), propget] + HRESULT State( + [out, retval] ObjectStateEnum *state); + + [id(7), propget] + HRESULT Mode( + [out, retval] ConnectModeEnum *mode); + + [id(7), propput] + HRESULT Mode( + [in] ConnectModeEnum mode); + + [id(8), propget] + HRESULT Charset( + [out, retval] BSTR *charset); + + [id(8), propput] + HRESULT Charset( + [in] BSTR charset); + + [id(9)] + HRESULT Read( + [in, defaultvalue(adReadAll)] LONG num_bytes, + [out, retval] VARIANT *val); + + [id(10)] + HRESULT 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 Close(void); + + [id(12)] + HRESULT SkipLine(void); + + [id(13)] + HRESULT Write( + [in] VARIANT buffer); + + [id(14)] + HRESULT SetEOS(void); + + [id(15)] + HRESULT CopyTo( + [in] _Stream *dest, + [in, defaultvalue(-1)] LONG size); + + [id(16)] + HRESULT Flush(void); + + [id(17)] + HRESULT SaveToFile( + [in] BSTR FileName, + [in, defaultvalue(adSaveCreateNotExist)] SaveOptionsEnum options); + + [id(18)] + HRESULT LoadFromFile( + [in] BSTR filename); + + [id(19)] + HRESULT ReadText( + [in, defaultvalue(adReadAll)] LONG size, + [out, retval] BSTR *str); + + [id(20)] + HRESULT WriteText( + [in] BSTR data, + [in, defaultvalue(adWriteChar)] StreamWriteEnum options); + + [id(21)] + HRESULT 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 IsGlobalDebugMode( + VARIANT_BOOL *debugging_on); + + HRESULT SetGlobalDebugMode( + IUnknown *debugger, + VARIANT_BOOL debugging_on); +}; + +[ + uuid(00000516-0000-0010-8000-00aa006d2ea4), + odl, + restricted +] +interface ADOConnectionConstruction15 : IUnknown +{ + [propget] + HRESULT DSO( + [out, retval] IUnknown **dso); + + [propget] + HRESULT Session( + [out, retval] IUnknown **session); + + HRESULT 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 OLEDBCommand( + [out, retval] IUnknown **command); + + [propput] + HRESULT OLEDBCommand( + [in] IUnknown *command); +}; + +[ + uuid(00000283-0000-0010-8000-00aa006d2ea4), + odl, + restricted +] +interface ADORecordsetConstruction : IDispatch +{ + [propget] + HRESULT Rowset( + [out, retval] IUnknown **row_set); + + [propput] + HRESULT Rowset( + [in] IUnknown *row_set); + + [propget] + HRESULT Chapter( + [out, retval] LONG *chapter); + + [propput] + HRESULT Chapter( + [in] LONG chapter); + + [propget] + HRESULT RowPosition( + [out, retval] IUnknown **row_pos); + + [propput] + HRESULT 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; + }; +}