| /** | 
 |  * This file is part of the mingw-w64 runtime package. | 
 |  * No warranty is given; refer to the file DISCLAIMER within this package. | 
 |  */ | 
 |  | 
 | #ifndef _ADOINT_H_ | 
 | #define _ADOINT_H_ | 
 |  | 
 | #include <winapifamily.h> | 
 |  | 
 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) | 
 |  | 
 | #ifndef _INC_TCHAR | 
 | #include <tchar.h> | 
 | #endif | 
 |  | 
 | #ifndef DECLSPEC_UUID | 
 | #define DECLSPEC_UUID(x) | 
 | #endif | 
 |  | 
 | #ifndef __REQUIRED_RPCNDR_H_VERSION__ | 
 | #define __REQUIRED_RPCNDR_H_VERSION__ 500 | 
 | #endif | 
 |  | 
 | #ifndef __REQUIRED_RPCSAL_H_VERSION__ | 
 | #define __REQUIRED_RPCSAL_H_VERSION__ 100 | 
 | #endif | 
 | #include "rpc.h" | 
 | #include "rpcndr.h" | 
 | #ifndef __RPCNDR_H_VERSION__ | 
 | #error this stub requires an updated version of <rpcndr.h> | 
 | #endif | 
 | #ifndef __ado10_h__ | 
 | #define __ado10_h__ | 
 |  | 
 | #ifndef ___ADOCollection_FWD_DEFINED__ | 
 | #define ___ADOCollection_FWD_DEFINED__ | 
 | typedef interface _ADOCollection _ADOCollection; | 
 | #endif | 
 | #ifndef ___ADODynaCollection_FWD_DEFINED__ | 
 | #define ___ADODynaCollection_FWD_DEFINED__ | 
 | typedef interface _ADODynaCollection _ADODynaCollection; | 
 | #endif | 
 | #ifndef ___ADO_FWD_DEFINED__ | 
 | #define ___ADO_FWD_DEFINED__ | 
 | typedef interface _ADO _ADO; | 
 | #endif | 
 | #ifndef __Error_FWD_DEFINED__ | 
 | #define __Error_FWD_DEFINED__ | 
 | typedef interface ADOError Error; | 
 | #endif | 
 | #ifndef __Errors_FWD_DEFINED__ | 
 | #define __Errors_FWD_DEFINED__ | 
 | typedef interface ADOErrors Errors; | 
 | #endif | 
 | #ifndef __Command15_FWD_DEFINED__ | 
 | #define __Command15_FWD_DEFINED__ | 
 | typedef interface Command15 Command15; | 
 | #endif | 
 | #ifndef __Command25_FWD_DEFINED__ | 
 | #define __Command25_FWD_DEFINED__ | 
 | typedef interface Command25 Command25; | 
 | #endif | 
 | #ifndef ___Command_FWD_DEFINED__ | 
 | #define ___Command_FWD_DEFINED__ | 
 | typedef interface _ADOCommand _Command; | 
 | #endif | 
 | #ifndef __ConnectionEventsVt_FWD_DEFINED__ | 
 | #define __ConnectionEventsVt_FWD_DEFINED__ | 
 | typedef interface ConnectionEventsVt ConnectionEventsVt; | 
 | #endif | 
 | #ifndef __RecordsetEventsVt_FWD_DEFINED__ | 
 | #define __RecordsetEventsVt_FWD_DEFINED__ | 
 | typedef interface RecordsetEventsVt RecordsetEventsVt; | 
 | #endif | 
 | #ifndef __ConnectionEvents_FWD_DEFINED__ | 
 | #define __ConnectionEvents_FWD_DEFINED__ | 
 | typedef interface ConnectionEvents ConnectionEvents; | 
 | #endif | 
 | #ifndef __RecordsetEvents_FWD_DEFINED__ | 
 | #define __RecordsetEvents_FWD_DEFINED__ | 
 | typedef interface RecordsetEvents RecordsetEvents; | 
 | #endif | 
 | #ifndef __Connection15_FWD_DEFINED__ | 
 | #define __Connection15_FWD_DEFINED__ | 
 | typedef interface Connection15 Connection15; | 
 | #endif | 
 | #ifndef ___Connection_FWD_DEFINED__ | 
 | #define ___Connection_FWD_DEFINED__ | 
 | typedef interface _ADOConnection _Connection; | 
 | #endif | 
 | #ifndef __ADOConnectionConstruction15_FWD_DEFINED__ | 
 | #define __ADOConnectionConstruction15_FWD_DEFINED__ | 
 | typedef interface ADOConnectionConstruction15 ADOConnectionConstruction15; | 
 | #endif | 
 | #ifndef __ADOConnectionConstruction_FWD_DEFINED__ | 
 | #define __ADOConnectionConstruction_FWD_DEFINED__ | 
 | typedef interface ADOConnectionConstruction ADOConnectionConstruction; | 
 | #endif | 
 | #ifndef __Connection_FWD_DEFINED__ | 
 | #define __Connection_FWD_DEFINED__ | 
 | #ifdef __cplusplus | 
 | typedef class ADOConnection Connection; | 
 | #else | 
 | typedef struct ADOConnection Connection; | 
 | #endif | 
 | #endif | 
 | #ifndef ___Record_FWD_DEFINED__ | 
 | #define ___Record_FWD_DEFINED__ | 
 | typedef interface _ADORecord _Record; | 
 | #endif | 
 | #ifndef __Record_FWD_DEFINED__ | 
 | #define __Record_FWD_DEFINED__ | 
 | #ifdef __cplusplus | 
 | typedef class ADORecord Record; | 
 | #else | 
 | typedef struct ADORecord Record; | 
 | #endif | 
 | #endif | 
 | #ifndef ___Stream_FWD_DEFINED__ | 
 | #define ___Stream_FWD_DEFINED__ | 
 | typedef interface _ADOStream _Stream; | 
 | #endif | 
 | #ifndef __Stream_FWD_DEFINED__ | 
 | #define __Stream_FWD_DEFINED__ | 
 | #ifdef __cplusplus | 
 | typedef class ADOStream Stream; | 
 | #else | 
 | typedef struct ADOStream Stream; | 
 | #endif | 
 | #endif | 
 | #ifndef __ADORecordConstruction_FWD_DEFINED__ | 
 | #define __ADORecordConstruction_FWD_DEFINED__ | 
 | typedef interface ADORecordConstruction ADORecordConstruction; | 
 | #endif | 
 | #ifndef __ADOStreamConstruction_FWD_DEFINED__ | 
 | #define __ADOStreamConstruction_FWD_DEFINED__ | 
 | typedef interface ADOStreamConstruction ADOStreamConstruction; | 
 | #endif | 
 | #ifndef __ADOCommandConstruction_FWD_DEFINED__ | 
 | #define __ADOCommandConstruction_FWD_DEFINED__ | 
 | typedef interface ADOCommandConstruction ADOCommandConstruction; | 
 | #endif | 
 | #ifndef __Command_FWD_DEFINED__ | 
 | #define __Command_FWD_DEFINED__ | 
 | #ifdef __cplusplus | 
 | typedef class ADOCommand Command; | 
 | #else | 
 | typedef struct ADOCommand Command; | 
 | #endif | 
 | #endif | 
 | #ifndef __Recordset_FWD_DEFINED__ | 
 | #define __Recordset_FWD_DEFINED__ | 
 | #ifdef __cplusplus | 
 | typedef class ADORecordset Recordset; | 
 | #else | 
 | typedef struct ADORecordset Recordset; | 
 | #endif | 
 | #endif | 
 | #ifndef __Recordset15_FWD_DEFINED__ | 
 | #define __Recordset15_FWD_DEFINED__ | 
 | typedef interface Recordset15 Recordset15; | 
 | #endif | 
 | #ifndef __Recordset20_FWD_DEFINED__ | 
 | #define __Recordset20_FWD_DEFINED__ | 
 | typedef interface Recordset20 Recordset20; | 
 | #endif | 
 | #ifndef __Recordset21_FWD_DEFINED__ | 
 | #define __Recordset21_FWD_DEFINED__ | 
 | typedef interface Recordset21 Recordset21; | 
 | #endif | 
 | #ifndef ___Recordset_FWD_DEFINED__ | 
 | #define ___Recordset_FWD_DEFINED__ | 
 | typedef interface _ADORecordset _Recordset; | 
 | #endif | 
 | #ifndef __ADORecordsetConstruction_FWD_DEFINED__ | 
 | #define __ADORecordsetConstruction_FWD_DEFINED__ | 
 | typedef interface ADORecordsetConstruction ADORecordsetConstruction; | 
 | #endif | 
 | #ifndef __Field15_FWD_DEFINED__ | 
 | #define __Field15_FWD_DEFINED__ | 
 | typedef interface Field15 Field15; | 
 | #endif | 
 | #ifndef __Field20_FWD_DEFINED__ | 
 | #define __Field20_FWD_DEFINED__ | 
 | typedef interface Field20 Field20; | 
 | #endif | 
 | #ifndef __Field_FWD_DEFINED__ | 
 | #define __Field_FWD_DEFINED__ | 
 | typedef interface ADOField Field; | 
 | #endif | 
 | #ifndef __Fields15_FWD_DEFINED__ | 
 | #define __Fields15_FWD_DEFINED__ | 
 | typedef interface Fields15 Fields15; | 
 | #endif | 
 | #ifndef __Fields20_FWD_DEFINED__ | 
 | #define __Fields20_FWD_DEFINED__ | 
 | typedef interface Fields20 Fields20; | 
 | #endif | 
 | #ifndef __Fields_FWD_DEFINED__ | 
 | #define __Fields_FWD_DEFINED__ | 
 | typedef interface ADOFields Fields; | 
 | #endif | 
 | #ifndef ___Parameter_FWD_DEFINED__ | 
 | #define ___Parameter_FWD_DEFINED__ | 
 | typedef interface _ADOParameter _Parameter; | 
 | #endif | 
 | #ifndef __Parameter_FWD_DEFINED__ | 
 | #define __Parameter_FWD_DEFINED__ | 
 | #ifdef __cplusplus | 
 | typedef class ADOParameter Parameter; | 
 | #else | 
 | typedef struct ADOParameter Parameter; | 
 | #endif | 
 | #endif | 
 | #ifndef __Parameters_FWD_DEFINED__ | 
 | #define __Parameters_FWD_DEFINED__ | 
 | typedef interface ADOParameters Parameters; | 
 | #endif | 
 | #ifndef __Property_FWD_DEFINED__ | 
 | #define __Property_FWD_DEFINED__ | 
 | typedef interface ADOProperty Property; | 
 | #endif | 
 | #ifndef __Properties_FWD_DEFINED__ | 
 | #define __Properties_FWD_DEFINED__ | 
 | typedef interface ADOProperties Properties; | 
 | #endif | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | #ifdef _WIN64 | 
 |  | 
 |   typedef LONGLONG ADO_LONGPTR; | 
 | #else | 
 |  | 
 |   typedef LONG ADO_LONGPTR; | 
 | #endif | 
 |   extern RPC_IF_HANDLE __MIDL_itf_ado10_0000_0000_v0_0_c_ifspec; | 
 |   extern RPC_IF_HANDLE __MIDL_itf_ado10_0000_0000_v0_0_s_ifspec; | 
 | #ifndef __ADODB_LIBRARY_DEFINED__ | 
 | #define __ADODB_LIBRARY_DEFINED__ | 
 |  | 
 |   typedef DECLSPEC_UUID ("0000051B-0000-0010-8000-00AA006D2EA4") | 
 |   enum CursorTypeEnum { adOpenUnspecified = -1, | 
 |     adOpenForwardOnly = 0, | 
 |     adOpenKeyset = 1, | 
 |     adOpenDynamic = 2, | 
 |     adOpenStatic = 3 | 
 |   } CursorTypeEnum; | 
 |   typedef DECLSPEC_UUID ("0000051C-0000-0010-8000-00AA006D2EA4") | 
 |   enum CursorOptionEnum { adHoldRecords = 0x100, | 
 |     adMovePrevious = 0x200, | 
 |     adAddNew = 0x1000400, | 
 |     adDelete = 0x1000800, | 
 |     adUpdate = 0x1008000, | 
 |     adBookmark = 0x2000, | 
 |     adApproxPosition = 0x4000, | 
 |     adUpdateBatch = 0x10000, | 
 |     adResync = 0x20000, | 
 |     adNotify = 0x40000, | 
 |     adFind = 0x80000, | 
 |     adSeek = 0x400000, | 
 |     adIndex = 0x800000 | 
 |   } CursorOptionEnum; | 
 |   typedef DECLSPEC_UUID ("0000051D-0000-0010-8000-00AA006D2EA4") | 
 |   enum LockTypeEnum { adLockUnspecified = -1, | 
 |     adLockReadOnly = 1, | 
 |     adLockPessimistic = 2, | 
 |     adLockOptimistic = 3, | 
 |     adLockBatchOptimistic = 4 | 
 |   } LockTypeEnum; | 
 |   typedef DECLSPEC_UUID ("0000051E-0000-0010-8000-00AA006D2EA4") | 
 |   enum ExecuteOptionEnum { adOptionUnspecified = -1, | 
 |     adAsyncExecute = 0x10, | 
 |     adAsyncFetch = 0x20, | 
 |     adAsyncFetchNonBlocking = 0x40, | 
 |     adExecuteNoRecords = 0x80, | 
 |     adExecuteStream = 0x400, | 
 |     adExecuteRecord = 0x800 | 
 |   } ExecuteOptionEnum; | 
 |   typedef DECLSPEC_UUID ("00000541-0000-0010-8000-00AA006D2EA4") | 
 |   enum ConnectOptionEnum { adConnectUnspecified = -1, | 
 |     adAsyncConnect = 0x10 | 
 |   } ConnectOptionEnum; | 
 |   typedef DECLSPEC_UUID ("00000532-0000-0010-8000-00AA006D2EA4") | 
 |   enum ObjectStateEnum { adStateClosed = 0, | 
 |     adStateOpen = 0x1, | 
 |     adStateConnecting = 0x2, | 
 |     adStateExecuting = 0x4, | 
 |     adStateFetching = 0x8 | 
 |   } ObjectStateEnum; | 
 |   typedef DECLSPEC_UUID ("0000052F-0000-0010-8000-00AA006D2EA4") | 
 |   enum CursorLocationEnum { adUseNone = 1, | 
 |     adUseServer = 2, | 
 |     adUseClient = 3, | 
 |     adUseClientBatch = 3 | 
 |   } CursorLocationEnum; | 
 |   typedef DECLSPEC_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 DECLSPEC_UUID ("00000525-0000-0010-8000-00AA006D2EA4") | 
 |   enum FieldAttributeEnum { adFldUnspecified = -1, | 
 |     adFldMayDefer = 0x2, | 
 |     adFldUpdatable = 0x4, | 
 |     adFldUnknownUpdatable = 0x8, | 
 |     adFldFixed = 0x10, | 
 |     adFldIsNullable = 0x20, | 
 |     adFldMayBeNull = 0x40, | 
 |     adFldLong = 0x80, | 
 |     adFldRowID = 0x100, | 
 |     adFldRowVersion = 0x200, | 
 |     adFldCacheDeferred = 0x1000, | 
 |     adFldIsChapter = 0x2000, | 
 |     adFldNegativeScale = 0x4000, | 
 |     adFldKeyColumn = 0x8000, | 
 |     adFldIsRowURL = 0x10000, | 
 |     adFldIsDefaultStream = 0x20000, | 
 |     adFldIsCollection = 0x40000 | 
 |   } FieldAttributeEnum; | 
 |   typedef DECLSPEC_UUID ("00000526-0000-0010-8000-00AA006D2EA4") | 
 |   enum EditModeEnum { adEditNone = 0, | 
 |     adEditInProgress = 0x1, | 
 |     adEditAdd = 0x2, | 
 |     adEditDelete = 0x4 | 
 |   } EditModeEnum; | 
 |   typedef DECLSPEC_UUID ("00000527-0000-0010-8000-00AA006D2EA4") | 
 |   enum RecordStatusEnum { adRecOK = 0, | 
 |     adRecNew = 0x1, | 
 |     adRecModified = 0x2, | 
 |     adRecDeleted = 0x4, | 
 |     adRecUnmodified = 0x8, | 
 |     adRecInvalid = 0x10, | 
 |     adRecMultipleChanges = 0x40, | 
 |     adRecPendingChanges = 0x80, | 
 |     adRecCanceled = 0x100, | 
 |     adRecCantRelease = 0x400, | 
 |     adRecConcurrencyViolation = 0x800, | 
 |     adRecIntegrityViolation = 0x1000, | 
 |     adRecMaxChangesExceeded = 0x2000, | 
 |     adRecObjectOpen = 0x4000, | 
 |     adRecOutOfMemory = 0x8000, | 
 |     adRecPermissionDenied = 0x10000, | 
 |     adRecSchemaViolation = 0x20000, | 
 |     adRecDBDeleted = 0x40000 | 
 |   } RecordStatusEnum; | 
 |   typedef DECLSPEC_UUID ("00000542-0000-0010-8000-00AA006D2EA4") | 
 |   enum GetRowsOptionEnum { adGetRowsRest = -1 | 
 |   } GetRowsOptionEnum; | 
 |   typedef DECLSPEC_UUID ("00000528-0000-0010-8000-00AA006D2EA4") | 
 |   enum PositionEnum { adPosUnknown = -1, | 
 |     adPosBOF = -2, | 
 |     adPosEOF = -3 | 
 |   } PositionEnum; | 
 | #ifdef _WIN64 | 
 |   typedef LONGLONG PositionEnum_Param; | 
 | #else | 
 |   typedef PositionEnum PositionEnum_Param; | 
 | #endif | 
 |   typedef | 
 |   enum BookmarkEnum { adBookmarkCurrent = 0, | 
 |     adBookmarkFirst = 1, | 
 |     adBookmarkLast = 2 | 
 |   } BookmarkEnum; | 
 |   typedef DECLSPEC_UUID ("00000540-0000-0010-8000-00AA006D2EA4") | 
 |   enum MarshalOptionsEnum { adMarshalAll = 0, | 
 |     adMarshalModifiedOnly = 1 | 
 |   } MarshalOptionsEnum; | 
 |   typedef DECLSPEC_UUID ("00000543-0000-0010-8000-00AA006D2EA4") | 
 |   enum AffectEnum { adAffectCurrent = 1, | 
 |     adAffectGroup = 2, | 
 |     adAffectAll = 3, | 
 |     adAffectAllChapters = 4 | 
 |   } AffectEnum; | 
 |   typedef DECLSPEC_UUID ("00000544-0000-0010-8000-00AA006D2EA4") | 
 |   enum ResyncEnum { adResyncUnderlyingValues = 1, | 
 |     adResyncAllValues = 2 | 
 |   } ResyncEnum; | 
 |   typedef DECLSPEC_UUID ("00000545-0000-0010-8000-00AA006D2EA4") | 
 |   enum CompareEnum { adCompareLessThan = 0, | 
 |     adCompareEqual = 1, | 
 |     adCompareGreaterThan = 2, | 
 |     adCompareNotEqual = 3, | 
 |     adCompareNotComparable = 4 | 
 |   } CompareEnum; | 
 |   typedef DECLSPEC_UUID ("00000546-0000-0010-8000-00AA006D2EA4") | 
 |   enum FilterGroupEnum { adFilterNone = 0, | 
 |     adFilterPendingRecords = 1, | 
 |     adFilterAffectedRecords = 2, | 
 |     adFilterFetchedRecords = 3, | 
 |     adFilterPredicate = 4, | 
 |     adFilterConflictingRecords = 5 | 
 |   } FilterGroupEnum; | 
 |   typedef DECLSPEC_UUID ("00000547-0000-0010-8000-00AA006D2EA4") | 
 |   enum SearchDirectionEnum { adSearchForward = 1, | 
 |     adSearchBackward = -1 | 
 |   } SearchDirectionEnum; | 
 |   typedef SearchDirectionEnum SearchDirection; | 
 |   typedef DECLSPEC_UUID ("00000548-0000-0010-8000-00AA006D2EA4") | 
 |   enum PersistFormatEnum { adPersistADTG = 0, | 
 |     adPersistXML = 1 | 
 |   } PersistFormatEnum; | 
 |   typedef DECLSPEC_UUID ("00000549-0000-0010-8000-00AA006D2EA4") | 
 |   enum StringFormatEnum { adClipString = 2 | 
 |   } StringFormatEnum; | 
 |   typedef DECLSPEC_UUID ("00000520-0000-0010-8000-00AA006D2EA4") | 
 |   enum ConnectPromptEnum { adPromptAlways = 1, | 
 |     adPromptComplete = 2, | 
 |     adPromptCompleteRequired = 3, | 
 |     adPromptNever = 4 | 
 |   } ConnectPromptEnum; | 
 |   typedef DECLSPEC_UUID ("00000521-0000-0010-8000-00AA006D2EA4") | 
 |   enum ConnectModeEnum { adModeUnknown = 0, | 
 |     adModeRead = 1, | 
 |     adModeWrite = 2, | 
 |     adModeReadWrite = 3, | 
 |     adModeShareDenyRead = 4, | 
 |     adModeShareDenyWrite = 8, | 
 |     adModeShareExclusive = 0xc, | 
 |     adModeShareDenyNone = 0x10, | 
 |     adModeRecursive = 0x400000 | 
 |   } ConnectModeEnum; | 
 |   typedef DECLSPEC_UUID ("00000570-0000-0010-8000-00AA006D2EA4") | 
 |   enum RecordCreateOptionsEnum { adCreateCollection = 0x2000, | 
 |     adCreateStructDoc = (int) 0x80000000, | 
 |     adCreateNonCollection = (int) 0, | 
 |     adOpenIfExists = (int) 0x2000000, | 
 |     adCreateOverwrite = (int) 0x4000000, | 
 |     adFailIfNotExists = (int) -1 | 
 |   } RecordCreateOptionsEnum; | 
 |   typedef DECLSPEC_UUID ("00000571-0000-0010-8000-00AA006D2EA4") | 
 |   enum RecordOpenOptionsEnum { adOpenRecordUnspecified = -1, | 
 |     adOpenSource = 0x800000, | 
 |     adOpenOutput = 0x800000, | 
 |     adOpenAsync = 0x1000, | 
 |     adDelayFetchStream = 0x4000, | 
 |     adDelayFetchFields = 0x8000, | 
 |     adOpenExecuteCommand = 0x10000 | 
 |   } RecordOpenOptionsEnum; | 
 |   typedef DECLSPEC_UUID ("00000523-0000-0010-8000-00AA006D2EA4") | 
 |   enum IsolationLevelEnum { adXactUnspecified = 0xffffffff, | 
 |     adXactChaos = 0x10, | 
 |     adXactReadUncommitted = 0x100, | 
 |     adXactBrowse = 0x100, | 
 |     adXactCursorStability = 0x1000, | 
 |     adXactReadCommitted = 0x1000, | 
 |     adXactRepeatableRead = 0x10000, | 
 |     adXactSerializable = 0x100000, | 
 |     adXactIsolated = 0x100000 | 
 |   } IsolationLevelEnum; | 
 |   typedef DECLSPEC_UUID ("00000524-0000-0010-8000-00AA006D2EA4") | 
 |   enum XactAttributeEnum { adXactCommitRetaining = 0x20000, | 
 |     adXactAbortRetaining = 0x40000, | 
 |     adXactAsyncPhaseOne = 0x80000, | 
 |     adXactSyncPhaseOne = 0x100000 | 
 |   } XactAttributeEnum; | 
 |   typedef DECLSPEC_UUID ("00000529-0000-0010-8000-00AA006D2EA4") | 
 |   enum PropertyAttributesEnum { adPropNotSupported = 0, | 
 |     adPropRequired = 0x1, | 
 |     adPropOptional = 0x2, | 
 |     adPropRead = 0x200, | 
 |     adPropWrite = 0x400 | 
 |   } PropertyAttributesEnum; | 
 |   typedef DECLSPEC_UUID ("0000052A-0000-0010-8000-00AA006D2EA4") | 
 |   enum ErrorValueEnum { adErrProviderFailed = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xbb8), | 
 |     adErrInvalidArgument = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xbb9), | 
 |     adErrOpeningFile = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xbba), | 
 |     adErrReadFile = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xbbb), | 
 |     adErrWriteFile = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xbbc), | 
 |     adErrNoCurrentRecord = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xbcd), | 
 |     adErrIllegalOperation = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xc93), | 
 |     adErrCantChangeProvider = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xc94), | 
 |     adErrInTransaction = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xcae), | 
 |     adErrFeatureNotAvailable = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xcb3), | 
 |     adErrItemNotFound = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xcc1), | 
 |     adErrObjectInCollection = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xd27), | 
 |     adErrObjectNotSet = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xd5c), | 
 |     adErrDataConversion = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xd5d), | 
 |     adErrObjectClosed = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe78), | 
 |     adErrObjectOpen = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe79), | 
 |     adErrProviderNotFound = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe7a), | 
 |     adErrBoundToCommand = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe7b), | 
 |     adErrInvalidParamInfo = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe7c), | 
 |     adErrInvalidConnection = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe7d), | 
 |     adErrNotReentrant = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe7e), | 
 |     adErrStillExecuting = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe7f), | 
 |     adErrOperationCancelled = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe80), | 
 |     adErrStillConnecting = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe81), | 
 |     adErrInvalidTransaction = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe82), | 
 |     adErrNotExecuting = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe83), | 
 |     adErrUnsafeOperation = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe84), | 
 |     adwrnSecurityDialog = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe85), | 
 |     adwrnSecurityDialogHeader = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe86), | 
 |     adErrIntegrityViolation = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe87), | 
 |     adErrPermissionDenied = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe88), | 
 |     adErrDataOverflow = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe89), | 
 |     adErrSchemaViolation = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe8a), | 
 |     adErrSignMismatch = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe8b), | 
 |     adErrCantConvertvalue = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe8c), | 
 |     adErrCantCreate = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe8d), | 
 |     adErrColumnNotOnThisRow = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe8e), | 
 |     adErrURLDoesNotExist = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe8f), | 
 |     adErrTreePermissionDenied = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe90), | 
 |     adErrInvalidURL = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe91), | 
 |     adErrResourceLocked = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe92), | 
 |     adErrResourceExists = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe93), | 
 |     adErrCannotComplete = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe94), | 
 |     adErrVolumeNotFound = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe95), | 
 |     adErrOutOfSpace = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe96), | 
 |     adErrResourceOutOfScope = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe97), | 
 |     adErrUnavailable = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe98), | 
 |     adErrURLNamedRowDoesNotExist = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe99), | 
 |     adErrDelResOutOfScope = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe9a), | 
 |     adErrPropInvalidColumn = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe9b), | 
 |     adErrPropInvalidOption = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe9c), | 
 |     adErrPropInvalidValue = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe9d), | 
 |     adErrPropConflicting = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe9e), | 
 |     adErrPropNotAllSettable = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xe9f), | 
 |     adErrPropNotSet = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xea0), | 
 |     adErrPropNotSettable = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xea1), | 
 |     adErrPropNotSupported = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xea2), | 
 |     adErrCatalogNotSet = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xea3), | 
 |     adErrCantChangeConnection = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xea4), | 
 |     adErrFieldsUpdateFailed = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xea5), | 
 |     adErrDenyNotSupported = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xea6), | 
 |     adErrDenyTypeNotSupported = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xea7), | 
 |     adErrProviderNotSpecified = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xea9), | 
 |     adErrConnectionStringTooLong = MAKE_HRESULT (SEVERITY_ERROR, FACILITY_CONTROL, 0xeaa) | 
 |   } ErrorValueEnum; | 
 |   typedef DECLSPEC_UUID ("0000052B-0000-0010-8000-00AA006D2EA4") | 
 |   enum ParameterAttributesEnum { adParamSigned = 0x10, | 
 |     adParamNullable = 0x40, | 
 |     adParamLong = 0x80 | 
 |   } ParameterAttributesEnum; | 
 |   typedef DECLSPEC_UUID ("0000052C-0000-0010-8000-00AA006D2EA4") | 
 |   enum ParameterDirectionEnum { adParamUnknown = 0, | 
 |     adParamInput = 0x1, | 
 |     adParamOutput = 0x2, | 
 |     adParamInputOutput = 0x3, | 
 |     adParamReturnValue = 0x4 | 
 |   } ParameterDirectionEnum; | 
 |   typedef DECLSPEC_UUID ("0000052E-0000-0010-8000-00AA006D2EA4") | 
 |   enum CommandTypeEnum { adCmdUnspecified = -1, | 
 |     adCmdUnknown = 0x8, | 
 |     adCmdText = 0x1, | 
 |     adCmdTable = 0x2, | 
 |     adCmdStoredProc = 0x4, | 
 |     adCmdFile = 0x100, | 
 |     adCmdTableDirect = 0x200 | 
 |   } CommandTypeEnum; | 
 |   typedef DECLSPEC_UUID ("00000530-0000-0010-8000-00AA006D2EA4") | 
 |   enum EventStatusEnum { adStatusOK = 0x1, | 
 |     adStatusErrorsOccurred = 0x2, | 
 |     adStatusCantDeny = 0x3, | 
 |     adStatusCancel = 0x4, | 
 |     adStatusUnwantedEvent = 0x5 | 
 |   } EventStatusEnum; | 
 |   typedef DECLSPEC_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; | 
 |   typedef DECLSPEC_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 DECLSPEC_UUID ("0000057E-0000-0010-8000-00AA006D2EA4") | 
 |   enum FieldStatusEnum { adFieldOK = 0, | 
 |     adFieldCantConvertValue = 2, | 
 |     adFieldIsNull = 3, | 
 |     adFieldTruncated = 4, | 
 |     adFieldSignMismatch = 5, | 
 |     adFieldDataOverflow = 6, | 
 |     adFieldCantCreate = 7, | 
 |     adFieldUnavailable = 8, | 
 |     adFieldPermissionDenied = 9, | 
 |     adFieldIntegrityViolation = 10, | 
 |     adFieldSchemaViolation = 11, | 
 |     adFieldBadStatus = 12, | 
 |     adFieldDefault = 13, | 
 |     adFieldIgnore = 15, | 
 |     adFieldDoesNotExist = 16, | 
 |     adFieldInvalidURL = 17, | 
 |     adFieldResourceLocked = 18, | 
 |     adFieldResourceExists = 19, | 
 |     adFieldCannotComplete = 20, | 
 |     adFieldVolumeNotFound = 21, | 
 |     adFieldOutOfSpace = 22, | 
 |     adFieldCannotDeleteSource = 23, | 
 |     adFieldReadOnly = 24, | 
 |     adFieldResourceOutOfScope = 25, | 
 |     adFieldAlreadyExists = 26, | 
 |     adFieldPendingInsert = 0x10000, | 
 |     adFieldPendingDelete = 0x20000, | 
 |     adFieldPendingChange = 0x40000, | 
 |     adFieldPendingUnknown = 0x80000, | 
 |     adFieldPendingUnknownDelete = 0x100000 | 
 |   } FieldStatusEnum; | 
 |   typedef DECLSPEC_UUID ("00000552-0000-0010-8000-00AA006D2EA4") | 
 |   enum SeekEnum { adSeekFirstEQ = 0x1, | 
 |     adSeekLastEQ = 0x2, | 
 |     adSeekAfterEQ = 0x4, | 
 |     adSeekAfter = 0x8, | 
 |     adSeekBeforeEQ = 0x10, | 
 |     adSeekBefore = 0x20 | 
 |   } SeekEnum; | 
 | #ifndef _COMMON_ADC_AND_ADO_PROPS_ | 
 | #define _COMMON_ADC_AND_ADO_PROPS_ | 
 |   typedef DECLSPEC_UUID ("0000054A-0000-0010-8000-00AA006D2EA4") | 
 |   enum ADCPROP_UPDATECRITERIA_ENUM { adCriteriaKey = 0, | 
 |     adCriteriaAllCols = 1, | 
 |     adCriteriaUpdCols = 2, | 
 |     adCriteriaTimeStamp = 3 | 
 |   } ADCPROP_UPDATECRITERIA_ENUM; | 
 |   typedef DECLSPEC_UUID ("0000054B-0000-0010-8000-00AA006D2EA4") | 
 |   enum ADCPROP_ASYNCTHREADPRIORITY_ENUM { adPriorityLowest = 1, | 
 |     adPriorityBelowNormal = 2, | 
 |     adPriorityNormal = 3, | 
 |     adPriorityAboveNormal = 4, | 
 |     adPriorityHighest = 5 | 
 |   } ADCPROP_ASYNCTHREADPRIORITY_ENUM; | 
 |   typedef DECLSPEC_UUID ("00000554-0000-0010-8000-00AA006D2EA4") | 
 |   enum ADCPROP_AUTORECALC_ENUM { adRecalcUpFront = 0, | 
 |     adRecalcAlways = 1 | 
 |   } ADCPROP_AUTORECALC_ENUM; | 
 |   typedef DECLSPEC_UUID ("00000553-0000-0010-8000-00AA006D2EA4") | 
 |   enum ADCPROP_UPDATERESYNC_ENUM { adResyncNone = 0, | 
 |     adResyncAutoIncrement = 1, | 
 |     adResyncConflicts = 2, | 
 |     adResyncUpdates = 4, | 
 |     adResyncInserts = 8, | 
 |     adResyncAll = 15 | 
 |   } ADCPROP_UPDATERESYNC_ENUM; | 
 | #endif | 
 |   typedef ADCPROP_UPDATERESYNC_ENUM CEResyncEnum; | 
 |   typedef DECLSPEC_UUID ("00000573-0000-0010-8000-00AA006D2EA4") | 
 |   enum MoveRecordOptionsEnum { adMoveUnspecified = -1, | 
 |     adMoveOverWrite = 1, | 
 |     adMoveDontUpdateLinks = 2, | 
 |     adMoveAllowEmulation = 4 | 
 |   } MoveRecordOptionsEnum; | 
 |   typedef DECLSPEC_UUID ("00000574-0000-0010-8000-00AA006D2EA4") | 
 |   enum CopyRecordOptionsEnum { adCopyUnspecified = -1, | 
 |     adCopyOverWrite = 1, | 
 |     adCopyAllowEmulation = 4, | 
 |     adCopyNonRecursive = 2 | 
 |   } CopyRecordOptionsEnum; | 
 |   typedef DECLSPEC_UUID ("00000576-0000-0010-8000-00AA006D2EA4") | 
 |   enum StreamTypeEnum { adTypeBinary = 1, | 
 |     adTypeText = 2 | 
 |   } StreamTypeEnum; | 
 |   typedef DECLSPEC_UUID ("00000577-0000-0010-8000-00AA006D2EA4") | 
 |   enum LineSeparatorEnum { adLF = 10, | 
 |     adCR = 13, | 
 |     adCRLF = -1 | 
 |   } LineSeparatorEnum; | 
 |   typedef DECLSPEC_UUID ("0000057A-0000-0010-8000-00AA006D2EA4") | 
 |   enum StreamOpenOptionsEnum { adOpenStreamUnspecified = -1, | 
 |     adOpenStreamAsync = 1, | 
 |     adOpenStreamFromRecord = 4 | 
 |   } StreamOpenOptionsEnum; | 
 |   typedef DECLSPEC_UUID ("0000057B-0000-0010-8000-00AA006D2EA4") | 
 |   enum StreamWriteEnum { adWriteChar = 0, | 
 |     adWriteLine = 1, | 
 |     stWriteChar = 0, | 
 |     stWriteLine = 1 | 
 |   } StreamWriteEnum; | 
 |   typedef DECLSPEC_UUID ("0000057C-0000-0010-8000-00AA006D2EA4") | 
 |   enum SaveOptionsEnum { adSaveCreateNotExist = 1, | 
 |     adSaveCreateOverWrite = 2 | 
 |   } SaveOptionsEnum; | 
 |   typedef | 
 |   enum FieldEnum { adDefaultStream = -1, | 
 |     adRecordURL = -2 | 
 |   } FieldEnum; | 
 |   typedef | 
 |   enum StreamReadEnum { adReadAll = -1, | 
 |     adReadLine = -2 | 
 |   } StreamReadEnum; | 
 |   typedef DECLSPEC_UUID ("0000057D-0000-0010-8000-00AA006D2EA4") | 
 |   enum RecordTypeEnum { adSimpleRecord = 0, | 
 |     adCollectionRecord = 1, | 
 |     adStructDoc = 2 | 
 |   } RecordTypeEnum; | 
 |   EXTERN_C const IID LIBID_ADODB; | 
 | #ifndef ___ADOCollection_INTERFACE_DEFINED__ | 
 | #define ___ADOCollection_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID__ADOCollection; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000512-0000-0010-8000-00AA006D2EA4") | 
 |   _ADOCollection : public IDispatch { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Count (long *c) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE _NewEnum (IUnknown **ppvObject) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Refresh (void) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct _ADOCollectionVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (_ADOCollection *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (_ADOCollection *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (_ADOCollection *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (_ADOCollection *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (_ADOCollection *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (_ADOCollection *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (_ADOCollection *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Count) (_ADOCollection *This, long *c); | 
 |     HRESULT (STDMETHODCALLTYPE *_NewEnum) (_ADOCollection *This, IUnknown **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Refresh) (_ADOCollection *This); | 
 |     END_INTERFACE | 
 |   } _ADOCollectionVtbl; | 
 |   interface _ADOCollection { | 
 |     CONST_VTBL struct _ADOCollectionVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define _ADOCollection_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define _ADOCollection_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define _ADOCollection_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define _ADOCollection_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define _ADOCollection_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define _ADOCollection_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define _ADOCollection_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define _Collection_get_Count(This, c) ((This)->lpVtbl ->get_Count (This, c)) | 
 | #define _ADOCollection__NewEnum(This, ppvObject) ((This)->lpVtbl ->_NewEnum (This, ppvObject)) | 
 | #define _ADOCollection_Refresh(This) ((This)->lpVtbl ->Refresh (This)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef ___ADODynaCollection_INTERFACE_DEFINED__ | 
 | #define ___ADODynaCollection_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID__ADODynaCollection; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000513-0000-0010-8000-00AA006D2EA4") | 
 |   _ADODynaCollection : public _ADOCollection { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE Append (IDispatch *Object) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Delete (VARIANT Index) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct _ADODynaCollectionVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (_ADODynaCollection *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (_ADODynaCollection *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (_ADODynaCollection *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (_ADODynaCollection *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (_ADODynaCollection *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (_ADODynaCollection *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (_ADODynaCollection *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Count) (_ADODynaCollection *This, long *c); | 
 |     HRESULT (STDMETHODCALLTYPE *_NewEnum) (_ADODynaCollection *This, IUnknown **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Refresh) (_ADODynaCollection *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Append) (_ADODynaCollection *This, IDispatch *Object); | 
 |     HRESULT (STDMETHODCALLTYPE *Delete) (_ADODynaCollection *This, VARIANT Index); | 
 |     END_INTERFACE | 
 |   } _ADODynaCollectionVtbl; | 
 |   interface _ADODynaCollection { | 
 |     CONST_VTBL struct _ADODynaCollectionVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define _ADODynaCollection_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define _ADODynaCollection_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define _ADODynaCollection_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define _ADODynaCollection_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define _ADODynaCollection_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define _ADODynaCollection_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define _ADODynaCollection_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define _DynaCollection_get_Count(This, c) ((This)->lpVtbl ->get_Count (This, c)) | 
 | #define _ADODynaCollection__NewEnum(This, ppvObject) ((This)->lpVtbl ->_NewEnum (This, ppvObject)) | 
 | #define _ADODynaCollection_Refresh(This) ((This)->lpVtbl ->Refresh (This)) | 
 | #define _ADODynaCollection_Append(This, Object) ((This)->lpVtbl ->Append (This, Object)) | 
 | #define _ADODynaCollection_Delete(This, Index) ((This)->lpVtbl ->Delete (This, Index)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef ___ADO_INTERFACE_DEFINED__ | 
 | #define ___ADO_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID__ADO; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000534-0000-0010-8000-00AA006D2EA4") | 
 |   _ADO : public IDispatch { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Properties (ADOProperties **ppvObject) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct _ADOVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (_ADO *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (_ADO *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (_ADO *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (_ADO *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (_ADO *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (_ADO *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (_ADO *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (_ADO *This, ADOProperties **ppvObject); | 
 |     END_INTERFACE | 
 |   } _ADOVtbl; | 
 |   interface _ADO { | 
 |     CONST_VTBL struct _ADOVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define _ADO_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define _ADO_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define _ADO_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define _ADO_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define _ADO_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define _ADO_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define _ADO_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define _ADO_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Error_INTERFACE_DEFINED__ | 
 | #define __Error_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Error; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000500-0000-0010-8000-00AA006D2EA4") | 
 |   ADOError : public IDispatch { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Number (long *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Source (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Description (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_HelpFile (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_HelpContext (long *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_SQLState (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_NativeError (long *pl) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct ErrorVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADOError *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADOError *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADOError *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (ADOError *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (ADOError *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (ADOError *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (ADOError *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Number) (ADOError *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Source) (ADOError *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Description) (ADOError *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_HelpFile) (ADOError *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_HelpContext) (ADOError *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_SQLState) (ADOError *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_NativeError) (ADOError *This, long *pl); | 
 |     END_INTERFACE | 
 |   } ErrorVtbl; | 
 |   interface Error { | 
 |     CONST_VTBL struct ErrorVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Error_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Error_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Error_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Error_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Error_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Error_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Error_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Error_get_Number(This, pl) ((This)->lpVtbl ->get_Number (This, pl)) | 
 | #define Error_get_Source(This, pbstr) ((This)->lpVtbl ->get_Source (This, pbstr)) | 
 | #define Error_get_Description(This, pbstr) ((This)->lpVtbl ->get_Description (This, pbstr)) | 
 | #define Error_get_HelpFile(This, pbstr) ((This)->lpVtbl ->get_HelpFile (This, pbstr)) | 
 | #define Error_get_HelpContext(This, pl) ((This)->lpVtbl ->get_HelpContext (This, pl)) | 
 | #define Error_get_SQLState(This, pbstr) ((This)->lpVtbl ->get_SQLState (This, pbstr)) | 
 | #define Error_get_NativeError(This, pl) ((This)->lpVtbl ->get_NativeError (This, pl)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Errors_INTERFACE_DEFINED__ | 
 | #define __Errors_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Errors; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000501-0000-0010-8000-00AA006D2EA4") | 
 |   ADOErrors : public _ADOCollection { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Item (VARIANT Index, ADOError **ppvObject) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Clear (void) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct ErrorsVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADOErrors *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADOErrors *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADOErrors *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (ADOErrors *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (ADOErrors *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (ADOErrors *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (ADOErrors *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Count) (ADOErrors *This, long *c); | 
 |     HRESULT (STDMETHODCALLTYPE *_NewEnum) (ADOErrors *This, IUnknown **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Refresh) (ADOErrors *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Item) (ADOErrors *This, VARIANT Index, ADOError **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Clear) (ADOErrors *This); | 
 |     END_INTERFACE | 
 |   } ErrorsVtbl; | 
 |   interface Errors { | 
 |     CONST_VTBL struct ErrorsVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Errors_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Errors_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Errors_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Errors_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Errors_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Errors_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Errors_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Errors_get_Count(This, c) ((This)->lpVtbl ->get_Count (This, c)) | 
 | #define Errors__NewEnum(This, ppvObject) ((This)->lpVtbl ->_NewEnum (This, ppvObject)) | 
 | #define Errors_Refresh(This) ((This)->lpVtbl ->Refresh (This)) | 
 | #define Errors_get_Item(This, Index, ppvObject) ((This)->lpVtbl ->get_Item (This, Index, ppvObject)) | 
 | #define Errors_Clear(This) ((This)->lpVtbl ->Clear (This)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Command15_INTERFACE_DEFINED__ | 
 | #define __Command15_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Command15; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000508-0000-0010-8000-00AA006D2EA4") | 
 |   Command15 : public _ADO { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_ActiveConnection (_ADOConnection **ppvObject) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE putref_ActiveConnection (_ADOConnection *pCon) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_ActiveConnection (VARIANT vConn) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_CommandText (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_CommandText (BSTR bstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_CommandTimeout (LONG *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_CommandTimeout (LONG Timeout) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Prepared (VARIANT_BOOL *pfPrepared) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Prepared (VARIANT_BOOL fPrepared) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Execute (VARIANT *RecordsAffected, VARIANT *Parameters, long Options, _ADORecordset **ppirs) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE CreateParameter (BSTR Name, DataTypeEnum Type, ParameterDirectionEnum Direction, ADO_LONGPTR Size, VARIANT Value, _ADOParameter **ppiprm) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Parameters (ADOParameters **ppvObject) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_CommandType (CommandTypeEnum lCmdType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_CommandType (CommandTypeEnum *plCmdType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Name (BSTR *pbstrName) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Name (BSTR bstrName) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct Command15Vtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (Command15 *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (Command15 *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (Command15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (Command15 *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (Command15 *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (Command15 *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (Command15 *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (Command15 *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActiveConnection) (Command15 *This, _ADOConnection **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_ActiveADOConnection) (Command15 *This, _ADOConnection *pCon); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ActiveConnection) (Command15 *This, VARIANT vConn); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CommandText) (Command15 *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CommandText) (Command15 *This, BSTR bstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CommandTimeout) (Command15 *This, LONG *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CommandTimeout) (Command15 *This, LONG Timeout); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Prepared) (Command15 *This, VARIANT_BOOL *pfPrepared); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Prepared) (Command15 *This, VARIANT_BOOL fPrepared); | 
 |     HRESULT (STDMETHODCALLTYPE *Execute) (Command15 *This, VARIANT *RecordsAffected, VARIANT *Parameters, long Options, _ADORecordset **ppirs); | 
 |     HRESULT (STDMETHODCALLTYPE *CreateParameter) (Command15 *This, BSTR Name, DataTypeEnum Type, ParameterDirectionEnum Direction, ADO_LONGPTR Size, VARIANT Value, _ADOParameter **ppiprm); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Parameters) (Command15 *This, ADOParameters **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CommandType) (Command15 *This, CommandTypeEnum lCmdType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CommandType) (Command15 *This, CommandTypeEnum *plCmdType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Name) (Command15 *This, BSTR *pbstrName); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Name) (Command15 *This, BSTR bstrName); | 
 |     END_INTERFACE | 
 |   } Command15Vtbl; | 
 |   interface Command15 { | 
 |     CONST_VTBL struct Command15Vtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Command15_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Command15_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Command15_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Command15_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Command15_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Command15_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Command15_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Command15_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define Command15_get_ActiveConnection(This, ppvObject) ((This)->lpVtbl ->get_ActiveConnection (This, ppvObject)) | 
 | #define Command15_putref_ActiveConnection(This, pCon) ((This)->lpVtbl ->putref_ActiveConnection (This, pCon)) | 
 | #define Command15_put_ActiveConnection(This, vConn) ((This)->lpVtbl ->put_ActiveConnection (This, vConn)) | 
 | #define Command15_get_CommandText(This, pbstr) ((This)->lpVtbl ->get_CommandText (This, pbstr)) | 
 | #define Command15_put_CommandText(This, bstr) ((This)->lpVtbl ->put_CommandText (This, bstr)) | 
 | #define Command15_get_CommandTimeout(This, pl) ((This)->lpVtbl ->get_CommandTimeout (This, pl)) | 
 | #define Command15_put_CommandTimeout(This, Timeout) ((This)->lpVtbl ->put_CommandTimeout (This, Timeout)) | 
 | #define Command15_get_Prepared(This, pfPrepared) ((This)->lpVtbl ->get_Prepared (This, pfPrepared)) | 
 | #define Command15_put_Prepared(This, fPrepared) ((This)->lpVtbl ->put_Prepared (This, fPrepared)) | 
 | #define Command15_Execute(This, RecordsAffected, Parameters, Options, ppirs) ((This)->lpVtbl ->Execute (This, RecordsAffected, Parameters, Options, ppirs)) | 
 | #define Command15_CreateParameter(This, Name, Type, Direction, Size, Value, ppiprm) ((This)->lpVtbl ->CreateParameter (This, Name, Type, Direction, Size, Value, ppiprm)) | 
 | #define Command15_get_Parameters(This, ppvObject) ((This)->lpVtbl ->get_Parameters (This, ppvObject)) | 
 | #define Command15_put_CommandType(This, lCmdType) ((This)->lpVtbl ->put_CommandType (This, lCmdType)) | 
 | #define Command15_get_CommandType(This, plCmdType) ((This)->lpVtbl ->get_CommandType (This, plCmdType)) | 
 | #define Command15_get_Name(This, pbstrName) ((This)->lpVtbl ->get_Name (This, pbstrName)) | 
 | #define Command15_put_Name(This, bstrName) ((This)->lpVtbl ->put_Name (This, bstrName)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Command25_INTERFACE_DEFINED__ | 
 | #define __Command25_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Command25; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("0000054E-0000-0010-8000-00AA006D2EA4") | 
 |   Command25 : public Command15 { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_State (LONG *plObjState) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Cancel (void) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct Command25Vtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (Command25 *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (Command25 *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (Command25 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (Command25 *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (Command25 *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (Command25 *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (Command25 *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (Command25 *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActiveConnection) (Command25 *This, _ADOConnection **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_ActiveADOConnection) (Command25 *This, _ADOConnection *pCon); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ActiveConnection) (Command25 *This, VARIANT vConn); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CommandText) (Command25 *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CommandText) (Command25 *This, BSTR bstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CommandTimeout) (Command25 *This, LONG *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CommandTimeout) (Command25 *This, LONG Timeout); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Prepared) (Command25 *This, VARIANT_BOOL *pfPrepared); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Prepared) (Command25 *This, VARIANT_BOOL fPrepared); | 
 |     HRESULT (STDMETHODCALLTYPE *Execute) (Command25 *This, VARIANT *RecordsAffected, VARIANT *Parameters, long Options, _ADORecordset **ppirs); | 
 |     HRESULT (STDMETHODCALLTYPE *CreateParameter) (Command25 *This, BSTR Name, DataTypeEnum Type, ParameterDirectionEnum Direction, ADO_LONGPTR Size, VARIANT Value, _ADOParameter **ppiprm); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Parameters) (Command25 *This, ADOParameters **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CommandType) (Command25 *This, CommandTypeEnum lCmdType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CommandType) (Command25 *This, CommandTypeEnum *plCmdType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Name) (Command25 *This, BSTR *pbstrName); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Name) (Command25 *This, BSTR bstrName); | 
 |     HRESULT (STDMETHODCALLTYPE *get_State) (Command25 *This, LONG *plObjState); | 
 |     HRESULT (STDMETHODCALLTYPE *Cancel) (Command25 *This); | 
 |     END_INTERFACE | 
 |   } Command25Vtbl; | 
 |   interface Command25 { | 
 |     CONST_VTBL struct Command25Vtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Command25_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Command25_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Command25_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Command25_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Command25_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Command25_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Command25_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Command25_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define Command25_get_ActiveConnection(This, ppvObject) ((This)->lpVtbl ->get_ActiveConnection (This, ppvObject)) | 
 | #define Command25_putref_ActiveConnection(This, pCon) ((This)->lpVtbl ->putref_ActiveConnection (This, pCon)) | 
 | #define Command25_put_ActiveConnection(This, vConn) ((This)->lpVtbl ->put_ActiveConnection (This, vConn)) | 
 | #define Command25_get_CommandText(This, pbstr) ((This)->lpVtbl ->get_CommandText (This, pbstr)) | 
 | #define Command25_put_CommandText(This, bstr) ((This)->lpVtbl ->put_CommandText (This, bstr)) | 
 | #define Command25_get_CommandTimeout(This, pl) ((This)->lpVtbl ->get_CommandTimeout (This, pl)) | 
 | #define Command25_put_CommandTimeout(This, Timeout) ((This)->lpVtbl ->put_CommandTimeout (This, Timeout)) | 
 | #define Command25_get_Prepared(This, pfPrepared) ((This)->lpVtbl ->get_Prepared (This, pfPrepared)) | 
 | #define Command25_put_Prepared(This, fPrepared) ((This)->lpVtbl ->put_Prepared (This, fPrepared)) | 
 | #define Command25_Execute(This, RecordsAffected, Parameters, Options, ppirs) ((This)->lpVtbl ->Execute (This, RecordsAffected, Parameters, Options, ppirs)) | 
 | #define Command25_CreateParameter(This, Name, Type, Direction, Size, Value, ppiprm) ((This)->lpVtbl ->CreateParameter (This, Name, Type, Direction, Size, Value, ppiprm)) | 
 | #define Command25_get_Parameters(This, ppvObject) ((This)->lpVtbl ->get_Parameters (This, ppvObject)) | 
 | #define Command25_put_CommandType(This, lCmdType) ((This)->lpVtbl ->put_CommandType (This, lCmdType)) | 
 | #define Command25_get_CommandType(This, plCmdType) ((This)->lpVtbl ->get_CommandType (This, plCmdType)) | 
 | #define Command25_get_Name(This, pbstrName) ((This)->lpVtbl ->get_Name (This, pbstrName)) | 
 | #define Command25_put_Name(This, bstrName) ((This)->lpVtbl ->put_Name (This, bstrName)) | 
 | #define Command25_get_State(This, plObjState) ((This)->lpVtbl ->get_State (This, plObjState)) | 
 | #define Command25_Cancel(This) ((This)->lpVtbl ->Cancel (This)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef ___Command_INTERFACE_DEFINED__ | 
 | #define ___Command_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID__Command; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("B08400BD-F9D1-4D02-B856-71D5DBA123E9") | 
 |   _ADOCommand : public Command25 { | 
 |     public: | 
 |     virtual HRESULT __stdcall putref_CommandStream (IUnknown *pStream) = 0; | 
 |     virtual HRESULT __stdcall get_CommandStream (VARIANT *pvStream) = 0; | 
 |     virtual HRESULT __stdcall put_Dialect (BSTR bstrDialect) = 0; | 
 |     virtual HRESULT __stdcall get_Dialect (BSTR *pbstrDialect) = 0; | 
 |     virtual HRESULT __stdcall put_NamedParameters (VARIANT_BOOL fNamedParameters) = 0; | 
 |     virtual HRESULT __stdcall get_NamedParameters (VARIANT_BOOL *pfNamedParameters) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct _CommandVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (_ADOCommand *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (_ADOCommand *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (_ADOCommand *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (_ADOCommand *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (_ADOCommand *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (_ADOCommand *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (_ADOCommand *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (_ADOCommand *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActiveConnection) (_ADOCommand *This, _ADOConnection **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_ActiveADOConnection) (_ADOCommand *This, _ADOConnection *pCon); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ActiveConnection) (_ADOCommand *This, VARIANT vConn); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CommandText) (_ADOCommand *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CommandText) (_ADOCommand *This, BSTR bstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CommandTimeout) (_ADOCommand *This, LONG *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CommandTimeout) (_ADOCommand *This, LONG Timeout); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Prepared) (_ADOCommand *This, VARIANT_BOOL *pfPrepared); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Prepared) (_ADOCommand *This, VARIANT_BOOL fPrepared); | 
 |     HRESULT (STDMETHODCALLTYPE *Execute) (_ADOCommand *This, VARIANT *RecordsAffected, VARIANT *Parameters, long Options, _ADORecordset **ppirs); | 
 |     HRESULT (STDMETHODCALLTYPE *CreateParameter) (_ADOCommand *This, BSTR Name, DataTypeEnum Type, ParameterDirectionEnum Direction, ADO_LONGPTR Size, VARIANT Value, _ADOParameter **ppiprm); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Parameters) (_ADOCommand *This, ADOParameters **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CommandType) (_ADOCommand *This, CommandTypeEnum lCmdType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CommandType) (_ADOCommand *This, CommandTypeEnum *plCmdType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Name) (_ADOCommand *This, BSTR *pbstrName); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Name) (_ADOCommand *This, BSTR bstrName); | 
 |     HRESULT (STDMETHODCALLTYPE *get_State) (_ADOCommand *This, LONG *plObjState); | 
 |     HRESULT (STDMETHODCALLTYPE *Cancel) (_ADOCommand *This); | 
 |     HRESULT (__stdcall *putref_CommandADOStream) (_ADOCommand *This, IUnknown *pStream); | 
 |     HRESULT (__stdcall *get_CommandStream) (_ADOCommand *This, VARIANT *pvStream); | 
 |     HRESULT (__stdcall *put_Dialect) (_ADOCommand *This, BSTR bstrDialect); | 
 |     HRESULT (__stdcall *get_Dialect) (_ADOCommand *This, BSTR *pbstrDialect); | 
 |     HRESULT (__stdcall *put_NamedParameters) (_ADOCommand *This, VARIANT_BOOL fNamedParameters); | 
 |     HRESULT (__stdcall *get_NamedParameters) (_ADOCommand *This, VARIANT_BOOL *pfNamedParameters); | 
 |     END_INTERFACE | 
 |   } _CommandVtbl; | 
 |   interface _Command { | 
 |     CONST_VTBL struct _CommandVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define _Command_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define _Command_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define _Command_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define _Command_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define _Command_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define _Command_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define _Command_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define _Command_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define _Command_get_ActiveConnection(This, ppvObject) ((This)->lpVtbl ->get_ActiveConnection (This, ppvObject)) | 
 | #define _Command_putref_ActiveConnection(This, pCon) ((This)->lpVtbl ->putref_ActiveConnection (This, pCon)) | 
 | #define _Command_put_ActiveConnection(This, vConn) ((This)->lpVtbl ->put_ActiveConnection (This, vConn)) | 
 | #define _Command_get_CommandText(This, pbstr) ((This)->lpVtbl ->get_CommandText (This, pbstr)) | 
 | #define _Command_put_CommandText(This, bstr) ((This)->lpVtbl ->put_CommandText (This, bstr)) | 
 | #define _Command_get_CommandTimeout(This, pl) ((This)->lpVtbl ->get_CommandTimeout (This, pl)) | 
 | #define _Command_put_CommandTimeout(This, Timeout) ((This)->lpVtbl ->put_CommandTimeout (This, Timeout)) | 
 | #define _Command_get_Prepared(This, pfPrepared) ((This)->lpVtbl ->get_Prepared (This, pfPrepared)) | 
 | #define _Command_put_Prepared(This, fPrepared) ((This)->lpVtbl ->put_Prepared (This, fPrepared)) | 
 | #define _Command_Execute(This, RecordsAffected, Parameters, Options, ppirs) ((This)->lpVtbl ->Execute (This, RecordsAffected, Parameters, Options, ppirs)) | 
 | #define _Command_CreateParameter(This, Name, Type, Direction, Size, Value, ppiprm) ((This)->lpVtbl ->CreateParameter (This, Name, Type, Direction, Size, Value, ppiprm)) | 
 | #define _Command_get_Parameters(This, ppvObject) ((This)->lpVtbl ->get_Parameters (This, ppvObject)) | 
 | #define _Command_put_CommandType(This, lCmdType) ((This)->lpVtbl ->put_CommandType (This, lCmdType)) | 
 | #define _Command_get_CommandType(This, plCmdType) ((This)->lpVtbl ->get_CommandType (This, plCmdType)) | 
 | #define _Command_get_Name(This, pbstrName) ((This)->lpVtbl ->get_Name (This, pbstrName)) | 
 | #define _Command_put_Name(This, bstrName) ((This)->lpVtbl ->put_Name (This, bstrName)) | 
 | #define _Command_get_State(This, plObjState) ((This)->lpVtbl ->get_State (This, plObjState)) | 
 | #define _Command_Cancel(This) ((This)->lpVtbl ->Cancel (This)) | 
 | #define _Command_putref_CommandStream(This, pStream) ((This)->lpVtbl ->putref_CommandStream (This, pStream)) | 
 | #define _Command_get_CommandStream(This, pvStream) ((This)->lpVtbl ->get_CommandStream (This, pvStream)) | 
 | #define _Command_put_Dialect(This, bstrDialect) ((This)->lpVtbl ->put_Dialect (This, bstrDialect)) | 
 | #define _Command_get_Dialect(This, pbstrDialect) ((This)->lpVtbl ->get_Dialect (This, pbstrDialect)) | 
 | #define _Command_put_NamedParameters(This, fNamedParameters) ((This)->lpVtbl ->put_NamedParameters (This, fNamedParameters)) | 
 | #define _Command_get_NamedParameters(This, pfNamedParameters) ((This)->lpVtbl ->get_NamedParameters (This, pfNamedParameters)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __ConnectionEventsVt_INTERFACE_DEFINED__ | 
 | #define __ConnectionEventsVt_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_ConnectionEventsVt; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000402-0000-0010-8000-00AA006D2EA4") | 
 |   ConnectionEventsVt : public IUnknown { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE InfoMessage (ADOError *pError, EventStatusEnum *adStatus, _ADOConnection *pConnection) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE BeginTransComplete (LONG TransactionLevel, ADOError *pError, EventStatusEnum *adStatus, _ADOConnection *pConnection) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE CommitTransComplete (ADOError *pError, EventStatusEnum *adStatus, _ADOConnection *pConnection) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE RollbackTransComplete (ADOError *pError, EventStatusEnum *adStatus, _ADOConnection *pConnection) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE WillExecute (BSTR *Source, CursorTypeEnum *CursorType, LockTypeEnum *LockType, long *Options, EventStatusEnum *adStatus, _ADOCommand *pCommand, _ADORecordset *pRecordset, _ADOConnection *pConnection) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE ExecuteComplete (LONG RecordsAffected, ADOError *pError, EventStatusEnum *adStatus, _ADOCommand *pCommand, _ADORecordset *pRecordset, _ADOConnection *pConnection) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE WillConnect (BSTR *ConnectionString, BSTR *UserID, BSTR *Password, long *Options, EventStatusEnum *adStatus, _ADOConnection *pConnection) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE ConnectComplete (ADOError *pError, EventStatusEnum *adStatus, _ADOConnection *pConnection) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Disconnect (EventStatusEnum *adStatus, _ADOConnection *pConnection) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct ConnectionEventsVtVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ConnectionEventsVt *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ConnectionEventsVt *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ConnectionEventsVt *This); | 
 |     HRESULT (STDMETHODCALLTYPE *InfoMessage) (ConnectionEventsVt *This, ADOError *pError, EventStatusEnum *adStatus, _ADOConnection *pConnection); | 
 |     HRESULT (STDMETHODCALLTYPE *BeginTransComplete) (ConnectionEventsVt *This, LONG TransactionLevel, ADOError *pError, EventStatusEnum *adStatus, _ADOConnection *pConnection); | 
 |     HRESULT (STDMETHODCALLTYPE *CommitTransComplete) (ConnectionEventsVt *This, ADOError *pError, EventStatusEnum *adStatus, _ADOConnection *pConnection); | 
 |     HRESULT (STDMETHODCALLTYPE *RollbackTransComplete) (ConnectionEventsVt *This, ADOError *pError, EventStatusEnum *adStatus, _ADOConnection *pConnection); | 
 |     HRESULT (STDMETHODCALLTYPE *WillExecute) (ConnectionEventsVt *This, BSTR *Source, CursorTypeEnum *CursorType, LockTypeEnum *LockType, long *Options, EventStatusEnum *adStatus, _ADOCommand *pCommand, _ADORecordset *pRecordset, _ADOConnection *pConnection); | 
 |     HRESULT (STDMETHODCALLTYPE *ExecuteComplete) (ConnectionEventsVt *This, LONG RecordsAffected, ADOError *pError, EventStatusEnum *adStatus, _ADOCommand *pCommand, _ADORecordset *pRecordset, _ADOConnection *pConnection); | 
 |     HRESULT (STDMETHODCALLTYPE *WillConnect) (ConnectionEventsVt *This, BSTR *ConnectionString, BSTR *UserID, BSTR *Password, long *Options, EventStatusEnum *adStatus, _ADOConnection *pConnection); | 
 |     HRESULT (STDMETHODCALLTYPE *ConnectComplete) (ConnectionEventsVt *This, ADOError *pError, EventStatusEnum *adStatus, _ADOConnection *pConnection); | 
 |     HRESULT (STDMETHODCALLTYPE *Disconnect) (ConnectionEventsVt *This, EventStatusEnum *adStatus, _ADOConnection *pConnection); | 
 |     END_INTERFACE | 
 |   } ConnectionEventsVtVtbl; | 
 |   interface ConnectionEventsVt { | 
 |     CONST_VTBL struct ConnectionEventsVtVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define ConnectionEventsVt_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define ConnectionEventsVt_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define ConnectionEventsVt_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define ConnectionEventsVt_InfoMessage(This, pError, adStatus, pConnection) ((This)->lpVtbl ->InfoMessage (This, pError, adStatus, pConnection)) | 
 | #define ConnectionEventsVt_BeginTransComplete(This, TransactionLevel, pError, adStatus, pConnection) ((This)->lpVtbl ->BeginTransComplete (This, TransactionLevel, pError, adStatus, pConnection)) | 
 | #define ConnectionEventsVt_CommitTransComplete(This, pError, adStatus, pConnection) ((This)->lpVtbl ->CommitTransComplete (This, pError, adStatus, pConnection)) | 
 | #define ConnectionEventsVt_RollbackTransComplete(This, pError, adStatus, pConnection) ((This)->lpVtbl ->RollbackTransComplete (This, pError, adStatus, pConnection)) | 
 | #define ConnectionEventsVt_WillExecute(This, Source, CursorType, LockType, Options, adStatus, pCommand, pRecordset, pConnection) ((This)->lpVtbl ->WillExecute (This, Source, CursorType, LockType, Options, adStatus, pCommand, pRecordset, pConnection)) | 
 | #define ConnectionEventsVt_ExecuteComplete(This, RecordsAffected, pError, adStatus, pCommand, pRecordset, pConnection) ((This)->lpVtbl ->ExecuteComplete (This, RecordsAffected, pError, adStatus, pCommand, pRecordset, pConnection)) | 
 | #define ConnectionEventsVt_WillConnect(This, ConnectionString, UserID, Password, Options, adStatus, pConnection) ((This)->lpVtbl ->WillConnect (This, ConnectionString, UserID, Password, Options, adStatus, pConnection)) | 
 | #define ConnectionEventsVt_ConnectComplete(This, pError, adStatus, pConnection) ((This)->lpVtbl ->ConnectComplete (This, pError, adStatus, pConnection)) | 
 | #define ConnectionEventsVt_Disconnect(This, adStatus, pConnection) ((This)->lpVtbl ->Disconnect (This, adStatus, pConnection)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __RecordsetEventsVt_INTERFACE_DEFINED__ | 
 | #define __RecordsetEventsVt_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_RecordsetEventsVt; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000403-0000-0010-8000-00AA006D2EA4") | 
 |   RecordsetEventsVt : public IUnknown { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE WillChangeField (LONG cFields, VARIANT Fields, EventStatusEnum *adStatus, _ADORecordset *pRecordset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE FieldChangeComplete (LONG cFields, VARIANT Fields, ADOError *pError, EventStatusEnum *adStatus, _ADORecordset *pRecordset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE WillChangeRecord (EventReasonEnum adReason, LONG cRecords, EventStatusEnum *adStatus, _ADORecordset *pRecordset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE RecordChangeComplete (EventReasonEnum adReason, LONG cRecords, ADOError *pError, EventStatusEnum *adStatus, _ADORecordset *pRecordset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE WillChangeRecordset (EventReasonEnum adReason, EventStatusEnum *adStatus, _ADORecordset *pRecordset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE RecordsetChangeComplete (EventReasonEnum adReason, ADOError *pError, EventStatusEnum *adStatus, _ADORecordset *pRecordset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE WillMove (EventReasonEnum adReason, EventStatusEnum *adStatus, _ADORecordset *pRecordset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE MoveComplete (EventReasonEnum adReason, ADOError *pError, EventStatusEnum *adStatus, _ADORecordset *pRecordset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE EndOfRecordset (VARIANT_BOOL *fMoreData, EventStatusEnum *adStatus, _ADORecordset *pRecordset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE FetchProgress (long Progress, long MaxProgress, EventStatusEnum *adStatus, _ADORecordset *pRecordset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE FetchComplete (ADOError *pError, EventStatusEnum *adStatus, _ADORecordset *pRecordset) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct RecordsetEventsVtVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (RecordsetEventsVt *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (RecordsetEventsVt *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (RecordsetEventsVt *This); | 
 |     HRESULT (STDMETHODCALLTYPE *WillChangeADOField) (RecordsetEventsVt *This, LONG cFields, VARIANT Fields, EventStatusEnum *adStatus, _ADORecordset *pRecordset); | 
 |     HRESULT (STDMETHODCALLTYPE *FieldChangeComplete) (RecordsetEventsVt *This, LONG cFields, VARIANT Fields, ADOError *pError, EventStatusEnum *adStatus, _ADORecordset *pRecordset); | 
 |     HRESULT (STDMETHODCALLTYPE *WillChangeADORecord) (RecordsetEventsVt *This, EventReasonEnum adReason, LONG cRecords, EventStatusEnum *adStatus, _ADORecordset *pRecordset); | 
 |     HRESULT (STDMETHODCALLTYPE *RecordChangeComplete) (RecordsetEventsVt *This, EventReasonEnum adReason, LONG cRecords, ADOError *pError, EventStatusEnum *adStatus, _ADORecordset *pRecordset); | 
 |     HRESULT (STDMETHODCALLTYPE *WillChangeADORecordset) (RecordsetEventsVt *This, EventReasonEnum adReason, EventStatusEnum *adStatus, _ADORecordset *pRecordset); | 
 |     HRESULT (STDMETHODCALLTYPE *RecordsetChangeComplete) (RecordsetEventsVt *This, EventReasonEnum adReason, ADOError *pError, EventStatusEnum *adStatus, _ADORecordset *pRecordset); | 
 |     HRESULT (STDMETHODCALLTYPE *WillMove) (RecordsetEventsVt *This, EventReasonEnum adReason, EventStatusEnum *adStatus, _ADORecordset *pRecordset); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveComplete) (RecordsetEventsVt *This, EventReasonEnum adReason, ADOError *pError, EventStatusEnum *adStatus, _ADORecordset *pRecordset); | 
 |     HRESULT (STDMETHODCALLTYPE *EndOfADORecordset) (RecordsetEventsVt *This, VARIANT_BOOL *fMoreData, EventStatusEnum *adStatus, _ADORecordset *pRecordset); | 
 |     HRESULT (STDMETHODCALLTYPE *FetchProgress) (RecordsetEventsVt *This, long Progress, long MaxProgress, EventStatusEnum *adStatus, _ADORecordset *pRecordset); | 
 |     HRESULT (STDMETHODCALLTYPE *FetchComplete) (RecordsetEventsVt *This, ADOError *pError, EventStatusEnum *adStatus, _ADORecordset *pRecordset); | 
 |     END_INTERFACE | 
 |   } RecordsetEventsVtVtbl; | 
 |   interface RecordsetEventsVt { | 
 |     CONST_VTBL struct RecordsetEventsVtVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define RecordsetEventsVt_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define RecordsetEventsVt_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define RecordsetEventsVt_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define RecordsetEventsVt_WillChangeField(This, cFields, Fields, adStatus, pRecordset) ((This)->lpVtbl ->WillChangeField (This, cFields, Fields, adStatus, pRecordset)) | 
 | #define RecordsetEventsVt_FieldChangeComplete(This, cFields, Fields, pError, adStatus, pRecordset) ((This)->lpVtbl ->FieldChangeComplete (This, cFields, Fields, pError, adStatus, pRecordset)) | 
 | #define RecordsetEventsVt_WillChangeRecord(This, adReason, cRecords, adStatus, pRecordset) ((This)->lpVtbl ->WillChangeRecord (This, adReason, cRecords, adStatus, pRecordset)) | 
 | #define RecordsetEventsVt_RecordChangeComplete(This, adReason, cRecords, pError, adStatus, pRecordset) ((This)->lpVtbl ->RecordChangeComplete (This, adReason, cRecords, pError, adStatus, pRecordset)) | 
 | #define RecordsetEventsVt_WillChangeRecordset(This, adReason, adStatus, pRecordset) ((This)->lpVtbl ->WillChangeRecordset (This, adReason, adStatus, pRecordset)) | 
 | #define RecordsetEventsVt_RecordsetChangeComplete(This, adReason, pError, adStatus, pRecordset) ((This)->lpVtbl ->RecordsetChangeComplete (This, adReason, pError, adStatus, pRecordset)) | 
 | #define RecordsetEventsVt_WillMove(This, adReason, adStatus, pRecordset) ((This)->lpVtbl ->WillMove (This, adReason, adStatus, pRecordset)) | 
 | #define RecordsetEventsVt_MoveComplete(This, adReason, pError, adStatus, pRecordset) ((This)->lpVtbl ->MoveComplete (This, adReason, pError, adStatus, pRecordset)) | 
 | #define RecordsetEventsVt_EndOfRecordset(This, fMoreData, adStatus, pRecordset) ((This)->lpVtbl ->EndOfRecordset (This, fMoreData, adStatus, pRecordset)) | 
 | #define RecordsetEventsVt_FetchProgress(This, Progress, MaxProgress, adStatus, pRecordset) ((This)->lpVtbl ->FetchProgress (This, Progress, MaxProgress, adStatus, pRecordset)) | 
 | #define RecordsetEventsVt_FetchComplete(This, pError, adStatus, pRecordset) ((This)->lpVtbl ->FetchComplete (This, pError, adStatus, pRecordset)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __ConnectionEvents_DISPINTERFACE_DEFINED__ | 
 | #define __ConnectionEvents_DISPINTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID DIID_ConnectionEvents; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |   MIDL_INTERFACE ("00000400-0000-0010-8000-00AA006D2EA4") | 
 |   ConnectionEvents : public IDispatch { | 
 |   }; | 
 | #else | 
 |   typedef struct ConnectionEventsVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ConnectionEvents *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ConnectionEvents *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ConnectionEvents *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (ConnectionEvents *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (ConnectionEvents *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (ConnectionEvents *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (ConnectionEvents *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     END_INTERFACE | 
 |   } ConnectionEventsVtbl; | 
 |   interface ConnectionEvents { | 
 |     CONST_VTBL struct ConnectionEventsVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define ConnectionEvents_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define ConnectionEvents_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define ConnectionEvents_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define ConnectionEvents_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define ConnectionEvents_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define ConnectionEvents_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define ConnectionEvents_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __RecordsetEvents_DISPINTERFACE_DEFINED__ | 
 | #define __RecordsetEvents_DISPINTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID DIID_RecordsetEvents; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |   MIDL_INTERFACE ("00000266-0000-0010-8000-00AA006D2EA4") | 
 |   RecordsetEvents : public IDispatch { | 
 |   }; | 
 | #else | 
 |   typedef struct RecordsetEventsVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (RecordsetEvents *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (RecordsetEvents *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (RecordsetEvents *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (RecordsetEvents *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (RecordsetEvents *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (RecordsetEvents *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (RecordsetEvents *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     END_INTERFACE | 
 |   } RecordsetEventsVtbl; | 
 |   interface RecordsetEvents { | 
 |     CONST_VTBL struct RecordsetEventsVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define RecordsetEvents_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define RecordsetEvents_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define RecordsetEvents_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define RecordsetEvents_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define RecordsetEvents_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define RecordsetEvents_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define RecordsetEvents_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Connection15_INTERFACE_DEFINED__ | 
 | #define __Connection15_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Connection15; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000515-0000-0010-8000-00AA006D2EA4") | 
 |   Connection15 : public _ADO { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_ConnectionString (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_ConnectionString (BSTR bstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_CommandTimeout (LONG *plTimeout) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_CommandTimeout (LONG lTimeout) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_ConnectionTimeout (LONG *plTimeout) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_ConnectionTimeout (LONG lTimeout) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Version (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Close (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Execute (BSTR CommandText, VARIANT *RecordsAffected, long Options, _ADORecordset **ppiRset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE BeginTrans (long *TransactionLevel) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE CommitTrans (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE RollbackTrans (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Open (BSTR ConnectionString = NULL, BSTR UserID = NULL, BSTR Password = NULL, long Options = adOptionUnspecified) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Errors (ADOErrors **ppvObject) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_DefaultDatabase (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_DefaultDatabase (BSTR bstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_IsolationLevel (IsolationLevelEnum *Level) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_IsolationLevel (IsolationLevelEnum Level) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Attributes (long *plAttr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Attributes (long lAttr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_CursorLocation (CursorLocationEnum *plCursorLoc) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_CursorLocation (CursorLocationEnum lCursorLoc) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Mode (ConnectModeEnum *plMode) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Mode (ConnectModeEnum lMode) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Provider (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Provider (BSTR Provider) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_State (LONG *plObjState) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE OpenSchema (SchemaEnum Schema, VARIANT Restrictions, VARIANT SchemaID, _ADORecordset **pprset) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct Connection15Vtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (Connection15 *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (Connection15 *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (Connection15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (Connection15 *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (Connection15 *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (Connection15 *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (Connection15 *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (Connection15 *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ConnectionString) (Connection15 *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ConnectionString) (Connection15 *This, BSTR bstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CommandTimeout) (Connection15 *This, LONG *plTimeout); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CommandTimeout) (Connection15 *This, LONG lTimeout); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ConnectionTimeout) (Connection15 *This, LONG *plTimeout); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ConnectionTimeout) (Connection15 *This, LONG lTimeout); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Version) (Connection15 *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *Close) (Connection15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Execute) (Connection15 *This, BSTR CommandText, VARIANT *RecordsAffected, long Options, _ADORecordset **ppiRset); | 
 |     HRESULT (STDMETHODCALLTYPE *BeginTrans) (Connection15 *This, long *TransactionLevel); | 
 |     HRESULT (STDMETHODCALLTYPE *CommitTrans) (Connection15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *RollbackTrans) (Connection15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Open) (Connection15 *This, BSTR ConnectionString, BSTR UserID, BSTR Password, long Options); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Errors) (Connection15 *This, ADOErrors **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DefaultDatabase) (Connection15 *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_DefaultDatabase) (Connection15 *This, BSTR bstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_IsolationLevel) (Connection15 *This, IsolationLevelEnum *Level); | 
 |     HRESULT (STDMETHODCALLTYPE *put_IsolationLevel) (Connection15 *This, IsolationLevelEnum Level); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Attributes) (Connection15 *This, long *plAttr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Attributes) (Connection15 *This, long lAttr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CursorLocation) (Connection15 *This, CursorLocationEnum *plCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CursorLocation) (Connection15 *This, CursorLocationEnum lCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Mode) (Connection15 *This, ConnectModeEnum *plMode); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Mode) (Connection15 *This, ConnectModeEnum lMode); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Provider) (Connection15 *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Provider) (Connection15 *This, BSTR Provider); | 
 |     HRESULT (STDMETHODCALLTYPE *get_State) (Connection15 *This, LONG *plObjState); | 
 |     HRESULT (STDMETHODCALLTYPE *OpenSchema) (Connection15 *This, SchemaEnum Schema, VARIANT Restrictions, VARIANT SchemaID, _ADORecordset **pprset); | 
 |     END_INTERFACE | 
 |   } Connection15Vtbl; | 
 |   interface Connection15 { | 
 |     CONST_VTBL struct Connection15Vtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Connection15_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Connection15_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Connection15_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Connection15_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Connection15_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Connection15_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Connection15_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Connection15_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define Connection15_get_ConnectionString(This, pbstr) ((This)->lpVtbl ->get_ConnectionString (This, pbstr)) | 
 | #define Connection15_put_ConnectionString(This, bstr) ((This)->lpVtbl ->put_ConnectionString (This, bstr)) | 
 | #define Connection15_get_CommandTimeout(This, plTimeout) ((This)->lpVtbl ->get_CommandTimeout (This, plTimeout)) | 
 | #define Connection15_put_CommandTimeout(This, lTimeout) ((This)->lpVtbl ->put_CommandTimeout (This, lTimeout)) | 
 | #define Connection15_get_ConnectionTimeout(This, plTimeout) ((This)->lpVtbl ->get_ConnectionTimeout (This, plTimeout)) | 
 | #define Connection15_put_ConnectionTimeout(This, lTimeout) ((This)->lpVtbl ->put_ConnectionTimeout (This, lTimeout)) | 
 | #define Connection15_get_Version(This, pbstr) ((This)->lpVtbl ->get_Version (This, pbstr)) | 
 | #define Connection15_Close(This) ((This)->lpVtbl ->Close (This)) | 
 | #define Connection15_Execute(This, CommandText, RecordsAffected, Options, ppiRset) ((This)->lpVtbl ->Execute (This, CommandText, RecordsAffected, Options, ppiRset)) | 
 | #define Connection15_BeginTrans(This, TransactionLevel) ((This)->lpVtbl ->BeginTrans (This, TransactionLevel)) | 
 | #define Connection15_CommitTrans(This) ((This)->lpVtbl ->CommitTrans (This)) | 
 | #define Connection15_RollbackTrans(This) ((This)->lpVtbl ->RollbackTrans (This)) | 
 | #define Connection15_Open(This, ConnectionString, UserID, Password, Options) ((This)->lpVtbl ->Open (This, ConnectionString, UserID, Password, Options)) | 
 | #define Connection15_get_Errors(This, ppvObject) ((This)->lpVtbl ->get_Errors (This, ppvObject)) | 
 | #define Connection15_get_DefaultDatabase(This, pbstr) ((This)->lpVtbl ->get_DefaultDatabase (This, pbstr)) | 
 | #define Connection15_put_DefaultDatabase(This, bstr) ((This)->lpVtbl ->put_DefaultDatabase (This, bstr)) | 
 | #define Connection15_get_IsolationLevel(This, Level) ((This)->lpVtbl ->get_IsolationLevel (This, Level)) | 
 | #define Connection15_put_IsolationLevel(This, Level) ((This)->lpVtbl ->put_IsolationLevel (This, Level)) | 
 | #define Connection15_get_Attributes(This, plAttr) ((This)->lpVtbl ->get_Attributes (This, plAttr)) | 
 | #define Connection15_put_Attributes(This, lAttr) ((This)->lpVtbl ->put_Attributes (This, lAttr)) | 
 | #define Connection15_get_CursorLocation(This, plCursorLoc) ((This)->lpVtbl ->get_CursorLocation (This, plCursorLoc)) | 
 | #define Connection15_put_CursorLocation(This, lCursorLoc) ((This)->lpVtbl ->put_CursorLocation (This, lCursorLoc)) | 
 | #define Connection15_get_Mode(This, plMode) ((This)->lpVtbl ->get_Mode (This, plMode)) | 
 | #define Connection15_put_Mode(This, lMode) ((This)->lpVtbl ->put_Mode (This, lMode)) | 
 | #define Connection15_get_Provider(This, pbstr) ((This)->lpVtbl ->get_Provider (This, pbstr)) | 
 | #define Connection15_put_Provider(This, Provider) ((This)->lpVtbl ->put_Provider (This, Provider)) | 
 | #define Connection15_get_State(This, plObjState) ((This)->lpVtbl ->get_State (This, plObjState)) | 
 | #define Connection15_OpenSchema(This, Schema, Restrictions, SchemaID, pprset) ((This)->lpVtbl ->OpenSchema (This, Schema, Restrictions, SchemaID, pprset)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef ___Connection_INTERFACE_DEFINED__ | 
 | #define ___Connection_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID__Connection; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000550-0000-0010-8000-00AA006D2EA4") | 
 |   _ADOConnection : public Connection15 { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE Cancel (void) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct _ConnectionVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (_ADOConnection *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (_ADOConnection *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (_ADOConnection *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (_ADOConnection *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (_ADOConnection *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (_ADOConnection *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (_ADOConnection *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (_ADOConnection *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ConnectionString) (_ADOConnection *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ConnectionString) (_ADOConnection *This, BSTR bstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CommandTimeout) (_ADOConnection *This, LONG *plTimeout); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CommandTimeout) (_ADOConnection *This, LONG lTimeout); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ConnectionTimeout) (_ADOConnection *This, LONG *plTimeout); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ConnectionTimeout) (_ADOConnection *This, LONG lTimeout); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Version) (_ADOConnection *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *Close) (_ADOConnection *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Execute) (_ADOConnection *This, BSTR CommandText, VARIANT *RecordsAffected, long Options, _ADORecordset **ppiRset); | 
 |     HRESULT (STDMETHODCALLTYPE *BeginTrans) (_ADOConnection *This, long *TransactionLevel); | 
 |     HRESULT (STDMETHODCALLTYPE *CommitTrans) (_ADOConnection *This); | 
 |     HRESULT (STDMETHODCALLTYPE *RollbackTrans) (_ADOConnection *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Open) (_ADOConnection *This, BSTR ConnectionString, BSTR UserID, BSTR Password, long Options); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Errors) (_ADOConnection *This, ADOErrors **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DefaultDatabase) (_ADOConnection *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_DefaultDatabase) (_ADOConnection *This, BSTR bstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_IsolationLevel) (_ADOConnection *This, IsolationLevelEnum *Level); | 
 |     HRESULT (STDMETHODCALLTYPE *put_IsolationLevel) (_ADOConnection *This, IsolationLevelEnum Level); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Attributes) (_ADOConnection *This, long *plAttr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Attributes) (_ADOConnection *This, long lAttr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CursorLocation) (_ADOConnection *This, CursorLocationEnum *plCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CursorLocation) (_ADOConnection *This, CursorLocationEnum lCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Mode) (_ADOConnection *This, ConnectModeEnum *plMode); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Mode) (_ADOConnection *This, ConnectModeEnum lMode); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Provider) (_ADOConnection *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Provider) (_ADOConnection *This, BSTR Provider); | 
 |     HRESULT (STDMETHODCALLTYPE *get_State) (_ADOConnection *This, LONG *plObjState); | 
 |     HRESULT (STDMETHODCALLTYPE *OpenSchema) (_ADOConnection *This, SchemaEnum Schema, VARIANT Restrictions, VARIANT SchemaID, _ADORecordset **pprset); | 
 |     HRESULT (STDMETHODCALLTYPE *Cancel) (_ADOConnection *This); | 
 |     END_INTERFACE | 
 |   } _ConnectionVtbl; | 
 |   interface _Connection { | 
 |     CONST_VTBL struct _ConnectionVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define _Connection_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define _Connection_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define _Connection_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define _Connection_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define _Connection_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define _Connection_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define _Connection_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define _Connection_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define _Connection_get_ConnectionString(This, pbstr) ((This)->lpVtbl ->get_ConnectionString (This, pbstr)) | 
 | #define _Connection_put_ConnectionString(This, bstr) ((This)->lpVtbl ->put_ConnectionString (This, bstr)) | 
 | #define _Connection_get_CommandTimeout(This, plTimeout) ((This)->lpVtbl ->get_CommandTimeout (This, plTimeout)) | 
 | #define _Connection_put_CommandTimeout(This, lTimeout) ((This)->lpVtbl ->put_CommandTimeout (This, lTimeout)) | 
 | #define _Connection_get_ConnectionTimeout(This, plTimeout) ((This)->lpVtbl ->get_ConnectionTimeout (This, plTimeout)) | 
 | #define _Connection_put_ConnectionTimeout(This, lTimeout) ((This)->lpVtbl ->put_ConnectionTimeout (This, lTimeout)) | 
 | #define _Connection_get_Version(This, pbstr) ((This)->lpVtbl ->get_Version (This, pbstr)) | 
 | #define _Connection_Close(This) ((This)->lpVtbl ->Close (This)) | 
 | #define _Connection_Execute(This, CommandText, RecordsAffected, Options, ppiRset) ((This)->lpVtbl ->Execute (This, CommandText, RecordsAffected, Options, ppiRset)) | 
 | #define _Connection_BeginTrans(This, TransactionLevel) ((This)->lpVtbl ->BeginTrans (This, TransactionLevel)) | 
 | #define _Connection_CommitTrans(This) ((This)->lpVtbl ->CommitTrans (This)) | 
 | #define _Connection_RollbackTrans(This) ((This)->lpVtbl ->RollbackTrans (This)) | 
 | #define _Connection_Open(This, ConnectionString, UserID, Password, Options) ((This)->lpVtbl ->Open (This, ConnectionString, UserID, Password, Options)) | 
 | #define _Connection_get_Errors(This, ppvObject) ((This)->lpVtbl ->get_Errors (This, ppvObject)) | 
 | #define _Connection_get_DefaultDatabase(This, pbstr) ((This)->lpVtbl ->get_DefaultDatabase (This, pbstr)) | 
 | #define _Connection_put_DefaultDatabase(This, bstr) ((This)->lpVtbl ->put_DefaultDatabase (This, bstr)) | 
 | #define _Connection_get_IsolationLevel(This, Level) ((This)->lpVtbl ->get_IsolationLevel (This, Level)) | 
 | #define _Connection_put_IsolationLevel(This, Level) ((This)->lpVtbl ->put_IsolationLevel (This, Level)) | 
 | #define _Connection_get_Attributes(This, plAttr) ((This)->lpVtbl ->get_Attributes (This, plAttr)) | 
 | #define _Connection_put_Attributes(This, lAttr) ((This)->lpVtbl ->put_Attributes (This, lAttr)) | 
 | #define _Connection_get_CursorLocation(This, plCursorLoc) ((This)->lpVtbl ->get_CursorLocation (This, plCursorLoc)) | 
 | #define _Connection_put_CursorLocation(This, lCursorLoc) ((This)->lpVtbl ->put_CursorLocation (This, lCursorLoc)) | 
 | #define _Connection_get_Mode(This, plMode) ((This)->lpVtbl ->get_Mode (This, plMode)) | 
 | #define _Connection_put_Mode(This, lMode) ((This)->lpVtbl ->put_Mode (This, lMode)) | 
 | #define _Connection_get_Provider(This, pbstr) ((This)->lpVtbl ->get_Provider (This, pbstr)) | 
 | #define _Connection_put_Provider(This, Provider) ((This)->lpVtbl ->put_Provider (This, Provider)) | 
 | #define _Connection_get_State(This, plObjState) ((This)->lpVtbl ->get_State (This, plObjState)) | 
 | #define _Connection_OpenSchema(This, Schema, Restrictions, SchemaID, pprset) ((This)->lpVtbl ->OpenSchema (This, Schema, Restrictions, SchemaID, pprset)) | 
 | #define _Connection_Cancel(This) ((This)->lpVtbl ->Cancel (This)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __ADOConnectionConstruction15_INTERFACE_DEFINED__ | 
 | #define __ADOConnectionConstruction15_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_ADOConnectionConstruction15; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000516-0000-0010-8000-00AA006D2EA4") | 
 |   ADOConnectionConstruction15 : public IUnknown { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_DSO (IUnknown **ppDSO) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Session (IUnknown **ppSession) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE WrapDSOandSession (IUnknown *pDSO, IUnknown *pSession) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct ADOConnectionConstruction15Vtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADOConnectionConstruction15 *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADOConnectionConstruction15 *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADOConnectionConstruction15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DSO) (ADOConnectionConstruction15 *This, IUnknown **ppDSO); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Session) (ADOConnectionConstruction15 *This, IUnknown **ppSession); | 
 |     HRESULT (STDMETHODCALLTYPE *WrapDSOandSession) (ADOConnectionConstruction15 *This, IUnknown *pDSO, IUnknown *pSession); | 
 |     END_INTERFACE | 
 |   } ADOConnectionConstruction15Vtbl; | 
 |   interface ADOConnectionConstruction15 { | 
 |     CONST_VTBL struct ADOConnectionConstruction15Vtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define ADOConnectionConstruction15_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define ADOConnectionConstruction15_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define ADOConnectionConstruction15_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define ADOConnectionConstruction15_get_DSO(This, ppDSO) ((This)->lpVtbl ->get_DSO (This, ppDSO)) | 
 | #define ADOConnectionConstruction15_get_Session(This, ppSession) ((This)->lpVtbl ->get_Session (This, ppSession)) | 
 | #define ADOConnectionConstruction15_WrapDSOandSession(This, pDSO, pSession) ((This)->lpVtbl ->WrapDSOandSession (This, pDSO, pSession)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __ADOConnectionConstruction_INTERFACE_DEFINED__ | 
 | #define __ADOConnectionConstruction_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_ADOConnectionConstruction; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000551-0000-0010-8000-00AA006D2EA4") | 
 |   ADOConnectionConstruction : public ADOConnectionConstruction15 { | 
 |     public: | 
 |   }; | 
 | #else | 
 |   typedef struct ADOConnectionConstructionVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADOConnectionConstruction *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADOConnectionConstruction *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADOConnectionConstruction *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DSO) (ADOConnectionConstruction *This, IUnknown **ppDSO); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Session) (ADOConnectionConstruction *This, IUnknown **ppSession); | 
 |     HRESULT (STDMETHODCALLTYPE *WrapDSOandSession) (ADOConnectionConstruction *This, IUnknown *pDSO, IUnknown *pSession); | 
 |     END_INTERFACE | 
 |   } ADOConnectionConstructionVtbl; | 
 |   interface ADOConnectionConstruction { | 
 |     CONST_VTBL struct ADOConnectionConstructionVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define ADOConnectionConstruction_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define ADOConnectionConstruction_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define ADOConnectionConstruction_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define ADOConnectionConstruction_get_DSO(This, ppDSO) ((This)->lpVtbl ->get_DSO (This, ppDSO)) | 
 | #define ADOConnectionConstruction_get_Session(This, ppSession) ((This)->lpVtbl ->get_Session (This, ppSession)) | 
 | #define ADOConnectionConstruction_WrapDSOandSession(This, pDSO, pSession) ((This)->lpVtbl ->WrapDSOandSession (This, pDSO, pSession)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 |   EXTERN_C const CLSID CLSID_Connection; | 
 | #ifdef __cplusplus | 
 |   Connection; | 
 | #endif | 
 | #ifndef ___Record_INTERFACE_DEFINED__ | 
 | #define ___Record_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID__Record; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000562-0000-0010-8000-00AA006D2EA4") | 
 |   _ADORecord : public _ADO { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_ActiveConnection (VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_ActiveConnection (BSTR bstrConn) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE putref_ActiveConnection (_ADOConnection *Con) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_State (ObjectStateEnum *pState) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Source (VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Source (BSTR Source) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE putref_Source (IDispatch *Source) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Mode (ConnectModeEnum *pMode) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Mode (ConnectModeEnum Mode) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_ParentURL (BSTR *pbstrParentURL) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE MoveRecord (BSTR Source, BSTR Destination, BSTR UserName, BSTR Password, MoveRecordOptionsEnum Options, VARIANT_BOOL Async, BSTR *pbstrNewURL) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE CopyRecord (BSTR Source, BSTR Destination, BSTR UserName, BSTR Password, CopyRecordOptionsEnum Options, VARIANT_BOOL Async, BSTR *pbstrNewURL) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE DeleteRecord (BSTR Source = NULL, VARIANT_BOOL Async = 0) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Open (VARIANT Source, VARIANT ActiveConnection, ConnectModeEnum Mode = adModeUnknown, RecordCreateOptionsEnum CreateOptions = adFailIfNotExists, RecordOpenOptionsEnum Options = adOpenRecordUnspecified, BSTR UserName = NULL, BSTR Password = NULL) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Close (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Fields (ADOFields **ppFlds) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_RecordType (RecordTypeEnum *pType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE GetChildren (_ADORecordset **ppRSet) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Cancel (void) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct _RecordVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (_ADORecord *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (_ADORecord *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (_ADORecord *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (_ADORecord *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (_ADORecord *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (_ADORecord *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (_ADORecord *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (_ADORecord *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActiveConnection) (_ADORecord *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ActiveConnection) (_ADORecord *This, BSTR bstrConn); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_ActiveADOConnection) (_ADORecord *This, _ADOConnection *Con); | 
 |     HRESULT (STDMETHODCALLTYPE *get_State) (_ADORecord *This, ObjectStateEnum *pState); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Source) (_ADORecord *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Source) (_ADORecord *This, BSTR Source); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_Source) (_ADORecord *This, IDispatch *Source); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Mode) (_ADORecord *This, ConnectModeEnum *pMode); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Mode) (_ADORecord *This, ConnectModeEnum Mode); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ParentURL) (_ADORecord *This, BSTR *pbstrParentURL); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveADORecord) (_ADORecord *This, BSTR Source, BSTR Destination, BSTR UserName, BSTR Password, MoveRecordOptionsEnum Options, VARIANT_BOOL Async, BSTR *pbstrNewURL); | 
 |     HRESULT (STDMETHODCALLTYPE *CopyADORecord) (_ADORecord *This, BSTR Source, BSTR Destination, BSTR UserName, BSTR Password, CopyRecordOptionsEnum Options, VARIANT_BOOL Async, BSTR *pbstrNewURL); | 
 |     HRESULT (STDMETHODCALLTYPE *DeleteADORecord) (_ADORecord *This, BSTR Source, VARIANT_BOOL Async); | 
 |     HRESULT (STDMETHODCALLTYPE *Open) (_ADORecord *This, VARIANT Source, VARIANT ActiveConnection, ConnectModeEnum Mode, RecordCreateOptionsEnum CreateOptions, RecordOpenOptionsEnum Options, BSTR UserName, BSTR Password); | 
 |     HRESULT (STDMETHODCALLTYPE *Close) (_ADORecord *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Fields) (_ADORecord *This, ADOFields **ppFlds); | 
 |     HRESULT (STDMETHODCALLTYPE *get_RecordType) (_ADORecord *This, RecordTypeEnum *pType); | 
 |     HRESULT (STDMETHODCALLTYPE *GetChildren) (_ADORecord *This, _ADORecordset **ppRSet); | 
 |     HRESULT (STDMETHODCALLTYPE *Cancel) (_ADORecord *This); | 
 |     END_INTERFACE | 
 |   } _RecordVtbl; | 
 |   interface _Record { | 
 |     CONST_VTBL struct _RecordVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define _Record_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define _Record_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define _Record_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define _Record_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define _Record_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define _Record_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define _Record_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define _Record_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define _Record_get_ActiveConnection(This, pvar) ((This)->lpVtbl ->get_ActiveConnection (This, pvar)) | 
 | #define _Record_put_ActiveConnection(This, bstrConn) ((This)->lpVtbl ->put_ActiveConnection (This, bstrConn)) | 
 | #define _Record_putref_ActiveConnection(This, Con) ((This)->lpVtbl ->putref_ActiveConnection (This, Con)) | 
 | #define _Record_get_State(This, pState) ((This)->lpVtbl ->get_State (This, pState)) | 
 | #define _Record_get_Source(This, pvar) ((This)->lpVtbl ->get_Source (This, pvar)) | 
 | #define _Record_put_Source(This, Source) ((This)->lpVtbl ->put_Source (This, Source)) | 
 | #define _Record_putref_Source(This, Source) ((This)->lpVtbl ->putref_Source (This, Source)) | 
 | #define _Record_get_Mode(This, pMode) ((This)->lpVtbl ->get_Mode (This, pMode)) | 
 | #define _Record_put_Mode(This, Mode) ((This)->lpVtbl ->put_Mode (This, Mode)) | 
 | #define _Record_get_ParentURL(This, pbstrParentURL) ((This)->lpVtbl ->get_ParentURL (This, pbstrParentURL)) | 
 | #define _Record_MoveRecord(This, Source, Destination, UserName, Password, Options, Async, pbstrNewURL) ((This)->lpVtbl ->MoveRecord (This, Source, Destination, UserName, Password, Options, Async, pbstrNewURL)) | 
 | #define _Record_CopyRecord(This, Source, Destination, UserName, Password, Options, Async, pbstrNewURL) ((This)->lpVtbl ->CopyRecord (This, Source, Destination, UserName, Password, Options, Async, pbstrNewURL)) | 
 | #define _Record_DeleteRecord(This, Source, Async) ((This)->lpVtbl ->DeleteRecord (This, Source, Async)) | 
 | #define _Record_Open(This, Source, ActiveConnection, Mode, CreateOptions, Options, UserName, Password) ((This)->lpVtbl ->Open (This, Source, ActiveConnection, Mode, CreateOptions, Options, UserName, Password)) | 
 | #define _Record_Close(This) ((This)->lpVtbl ->Close (This)) | 
 | #define _Record_get_Fields(This, ppFlds) ((This)->lpVtbl ->get_Fields (This, ppFlds)) | 
 | #define _Record_get_RecordType(This, pType) ((This)->lpVtbl ->get_RecordType (This, pType)) | 
 | #define _Record_GetChildren(This, ppRSet) ((This)->lpVtbl ->GetChildren (This, ppRSet)) | 
 | #define _Record_Cancel(This) ((This)->lpVtbl ->Cancel (This)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 |   EXTERN_C const CLSID CLSID_Record; | 
 | #ifdef __cplusplus | 
 |   Record; | 
 | #endif | 
 | #ifndef ___Stream_INTERFACE_DEFINED__ | 
 | #define ___Stream_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID__Stream; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000565-0000-0010-8000-00AA006D2EA4") | 
 |   _ADOStream : public IDispatch { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Size (ADO_LONGPTR *pSize) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_EOS (VARIANT_BOOL *pEOS) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Position (ADO_LONGPTR *pPos) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Position (ADO_LONGPTR Position) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Type (StreamTypeEnum *pType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Type (StreamTypeEnum Type) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_LineSeparator (LineSeparatorEnum *pLS) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_LineSeparator (LineSeparatorEnum LineSeparator) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_State (ObjectStateEnum *pState) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Mode (ConnectModeEnum *pMode) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Mode (ConnectModeEnum Mode) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Charset (BSTR *pbstrCharset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Charset (BSTR Charset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Read (long NumBytes, VARIANT *pVal) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Open (VARIANT Source, ConnectModeEnum Mode = adModeUnknown, StreamOpenOptionsEnum Options = adOpenStreamUnspecified, BSTR UserName = NULL, BSTR Password = NULL) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Close (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE SkipLine (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Write (VARIANT Buffer) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE SetEOS (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE CopyTo (_ADOStream *DestStream, ADO_LONGPTR CharNumber = -1) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Flush (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE SaveToFile (BSTR FileName, SaveOptionsEnum Options = adSaveCreateNotExist) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE LoadFromFile (BSTR FileName) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE ReadText (long NumChars, BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE WriteText (BSTR Data, StreamWriteEnum Options = adWriteChar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Cancel (void) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct _StreamVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (_ADOStream *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (_ADOStream *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (_ADOStream *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (_ADOStream *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (_ADOStream *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (_ADOStream *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (_ADOStream *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Size) (_ADOStream *This, ADO_LONGPTR *pSize); | 
 |     HRESULT (STDMETHODCALLTYPE *get_EOS) (_ADOStream *This, VARIANT_BOOL *pEOS); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Position) (_ADOStream *This, ADO_LONGPTR *pPos); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Position) (_ADOStream *This, ADO_LONGPTR Position); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Type) (_ADOStream *This, StreamTypeEnum *pType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Type) (_ADOStream *This, StreamTypeEnum Type); | 
 |     HRESULT (STDMETHODCALLTYPE *get_LineSeparator) (_ADOStream *This, LineSeparatorEnum *pLS); | 
 |     HRESULT (STDMETHODCALLTYPE *put_LineSeparator) (_ADOStream *This, LineSeparatorEnum LineSeparator); | 
 |     HRESULT (STDMETHODCALLTYPE *get_State) (_ADOStream *This, ObjectStateEnum *pState); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Mode) (_ADOStream *This, ConnectModeEnum *pMode); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Mode) (_ADOStream *This, ConnectModeEnum Mode); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Charset) (_ADOStream *This, BSTR *pbstrCharset); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Charset) (_ADOStream *This, BSTR Charset); | 
 |     HRESULT (STDMETHODCALLTYPE *Read) (_ADOStream *This, long NumBytes, VARIANT *pVal); | 
 |     HRESULT (STDMETHODCALLTYPE *Open) (_ADOStream *This, VARIANT Source, ConnectModeEnum Mode, StreamOpenOptionsEnum Options, BSTR UserName, BSTR Password); | 
 |     HRESULT (STDMETHODCALLTYPE *Close) (_ADOStream *This); | 
 |     HRESULT (STDMETHODCALLTYPE *SkipLine) (_ADOStream *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Write) (_ADOStream *This, VARIANT Buffer); | 
 |     HRESULT (STDMETHODCALLTYPE *SetEOS) (_ADOStream *This); | 
 |     HRESULT (STDMETHODCALLTYPE *CopyTo) (_ADOStream *This, _ADOStream *DestStream, ADO_LONGPTR CharNumber); | 
 |     HRESULT (STDMETHODCALLTYPE *Flush) (_ADOStream *This); | 
 |     HRESULT (STDMETHODCALLTYPE *SaveToFile) (_ADOStream *This, BSTR FileName, SaveOptionsEnum Options); | 
 |     HRESULT (STDMETHODCALLTYPE *LoadFromFile) (_ADOStream *This, BSTR FileName); | 
 |     HRESULT (STDMETHODCALLTYPE *ReadText) (_ADOStream *This, long NumChars, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *WriteText) (_ADOStream *This, BSTR Data, StreamWriteEnum Options); | 
 |     HRESULT (STDMETHODCALLTYPE *Cancel) (_ADOStream *This); | 
 |     END_INTERFACE | 
 |   } _StreamVtbl; | 
 |   interface _Stream { | 
 |     CONST_VTBL struct _StreamVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define _Stream_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define _Stream_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define _Stream_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define _Stream_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define _Stream_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define _Stream_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define _Stream_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define _Stream_get_Size(This, pSize) ((This)->lpVtbl ->get_Size (This, pSize)) | 
 | #define _Stream_get_EOS(This, pEOS) ((This)->lpVtbl ->get_EOS (This, pEOS)) | 
 | #define _Stream_get_Position(This, pPos) ((This)->lpVtbl ->get_Position (This, pPos)) | 
 | #define _Stream_put_Position(This, Position) ((This)->lpVtbl ->put_Position (This, Position)) | 
 | #define _Stream_get_Type(This, pType) ((This)->lpVtbl ->get_Type (This, pType)) | 
 | #define _Stream_put_Type(This, Type) ((This)->lpVtbl ->put_Type (This, Type)) | 
 | #define _Stream_get_LineSeparator(This, pLS) ((This)->lpVtbl ->get_LineSeparator (This, pLS)) | 
 | #define _Stream_put_LineSeparator(This, LineSeparator) ((This)->lpVtbl ->put_LineSeparator (This, LineSeparator)) | 
 | #define _Stream_get_State(This, pState) ((This)->lpVtbl ->get_State (This, pState)) | 
 | #define _Stream_get_Mode(This, pMode) ((This)->lpVtbl ->get_Mode (This, pMode)) | 
 | #define _Stream_put_Mode(This, Mode) ((This)->lpVtbl ->put_Mode (This, Mode)) | 
 | #define _Stream_get_Charset(This, pbstrCharset) ((This)->lpVtbl ->get_Charset (This, pbstrCharset)) | 
 | #define _Stream_put_Charset(This, Charset) ((This)->lpVtbl ->put_Charset (This, Charset)) | 
 | #define _Stream_Read(This, NumBytes, pVal) ((This)->lpVtbl ->Read (This, NumBytes, pVal)) | 
 | #define _Stream_Open(This, Source, Mode, Options, UserName, Password) ((This)->lpVtbl ->Open (This, Source, Mode, Options, UserName, Password)) | 
 | #define _Stream_Close(This) ((This)->lpVtbl ->Close (This)) | 
 | #define _Stream_SkipLine(This) ((This)->lpVtbl ->SkipLine (This)) | 
 | #define _Stream_Write(This, Buffer) ((This)->lpVtbl ->Write (This, Buffer)) | 
 | #define _Stream_SetEOS(This) ((This)->lpVtbl ->SetEOS (This)) | 
 | #define _Stream_CopyTo(This, DestStream, CharNumber) ((This)->lpVtbl ->CopyTo (This, DestStream, CharNumber)) | 
 | #define _Stream_Flush(This) ((This)->lpVtbl ->Flush (This)) | 
 | #define _Stream_SaveToFile(This, FileName, Options) ((This)->lpVtbl ->SaveToFile (This, FileName, Options)) | 
 | #define _Stream_LoadFromFile(This, FileName) ((This)->lpVtbl ->LoadFromFile (This, FileName)) | 
 | #define _Stream_ReadText(This, NumChars, pbstr) ((This)->lpVtbl ->ReadText (This, NumChars, pbstr)) | 
 | #define _Stream_WriteText(This, Data, Options) ((This)->lpVtbl ->WriteText (This, Data, Options)) | 
 | #define _Stream_Cancel(This) ((This)->lpVtbl ->Cancel (This)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 |   EXTERN_C const CLSID CLSID_Stream; | 
 | #ifdef __cplusplus | 
 |   Stream; | 
 | #endif | 
 | #ifndef __ADORecordConstruction_INTERFACE_DEFINED__ | 
 | #define __ADORecordConstruction_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_ADORecordConstruction; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000567-0000-0010-8000-00AA006D2EA4") | 
 |   ADORecordConstruction : public IDispatch { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Row (IUnknown **ppRow) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Row (IUnknown *pRow) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_ParentRow (IUnknown *pRow) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct ADORecordConstructionVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADORecordConstruction *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADORecordConstruction *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADORecordConstruction *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (ADORecordConstruction *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (ADORecordConstruction *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (ADORecordConstruction *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (ADORecordConstruction *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Row) (ADORecordConstruction *This, IUnknown **ppRow); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Row) (ADORecordConstruction *This, IUnknown *pRow); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ParentRow) (ADORecordConstruction *This, IUnknown *pRow); | 
 |     END_INTERFACE | 
 |   } ADORecordConstructionVtbl; | 
 |   interface ADORecordConstruction { | 
 |     CONST_VTBL struct ADORecordConstructionVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define ADORecordConstruction_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define ADORecordConstruction_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define ADORecordConstruction_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define ADORecordConstruction_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define ADORecordConstruction_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define ADORecordConstruction_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define ADORecordConstruction_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define ADORecordConstruction_get_Row(This, ppRow) ((This)->lpVtbl ->get_Row (This, ppRow)) | 
 | #define ADORecordConstruction_put_Row(This, pRow) ((This)->lpVtbl ->put_Row (This, pRow)) | 
 | #define ADORecordConstruction_put_ParentRow(This, pRow) ((This)->lpVtbl ->put_ParentRow (This, pRow)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __ADOStreamConstruction_INTERFACE_DEFINED__ | 
 | #define __ADOStreamConstruction_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_ADOStreamConstruction; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000568-0000-0010-8000-00AA006D2EA4") | 
 |   ADOStreamConstruction : public IDispatch { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Stream (IUnknown **ppStm) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Stream (IUnknown *pStm) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct ADOStreamConstructionVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADOStreamConstruction *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADOStreamConstruction *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADOStreamConstruction *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (ADOStreamConstruction *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (ADOStreamConstruction *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (ADOStreamConstruction *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (ADOStreamConstruction *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Stream) (ADOStreamConstruction *This, IUnknown **ppStm); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Stream) (ADOStreamConstruction *This, IUnknown *pStm); | 
 |     END_INTERFACE | 
 |   } ADOStreamConstructionVtbl; | 
 |   interface ADOStreamConstruction { | 
 |     CONST_VTBL struct ADOStreamConstructionVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define ADOStreamConstruction_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define ADOStreamConstruction_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define ADOStreamConstruction_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define ADOStreamConstruction_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define ADOStreamConstruction_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define ADOStreamConstruction_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define ADOStreamConstruction_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define ADOStreamConstruction_get_Stream(This, ppStm) ((This)->lpVtbl ->get_Stream (This, ppStm)) | 
 | #define ADOStreamConstruction_put_Stream(This, pStm) ((This)->lpVtbl ->put_Stream (This, pStm)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __ADOCommandConstruction_INTERFACE_DEFINED__ | 
 | #define __ADOCommandConstruction_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_ADOCommandConstruction; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000517-0000-0010-8000-00AA006D2EA4") | 
 |   ADOCommandConstruction : public IUnknown { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_OLEDBCommand (IUnknown **ppOLEDBCommand) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_OLEDBCommand (IUnknown *pOLEDBCommand) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct ADOCommandConstructionVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADOCommandConstruction *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADOCommandConstruction *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADOCommandConstruction *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_OLEDBCommand) (ADOCommandConstruction *This, IUnknown **ppOLEDBCommand); | 
 |     HRESULT (STDMETHODCALLTYPE *put_OLEDBCommand) (ADOCommandConstruction *This, IUnknown *pOLEDBCommand); | 
 |     END_INTERFACE | 
 |   } ADOCommandConstructionVtbl; | 
 |   interface ADOCommandConstruction { | 
 |     CONST_VTBL struct ADOCommandConstructionVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define ADOCommandConstruction_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define ADOCommandConstruction_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define ADOCommandConstruction_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define ADOCommandConstruction_get_OLEDBCommand(This, ppOLEDBCommand) ((This)->lpVtbl ->get_OLEDBCommand (This, ppOLEDBCommand)) | 
 | #define ADOCommandConstruction_put_OLEDBCommand(This, pOLEDBCommand) ((This)->lpVtbl ->put_OLEDBCommand (This, pOLEDBCommand)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 |   EXTERN_C const CLSID CLSID_Command; | 
 | #ifdef __cplusplus | 
 |   Command; | 
 | #endif | 
 |   EXTERN_C const CLSID CLSID_Recordset; | 
 | #ifdef __cplusplus | 
 |   Recordset; | 
 | #endif | 
 | #ifndef __Recordset15_INTERFACE_DEFINED__ | 
 | #define __Recordset15_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Recordset15; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("0000050E-0000-0010-8000-00AA006D2EA4") | 
 |   Recordset15 : public _ADO { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_AbsolutePosition (PositionEnum_Param *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_AbsolutePosition (PositionEnum_Param Position) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE putref_ActiveConnection (IDispatch *pconn) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_ActiveConnection (VARIANT vConn) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_ActiveConnection (VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_BOF (VARIANT_BOOL *pb) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Bookmark (VARIANT *pvBookmark) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Bookmark (VARIANT vBookmark) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_CacheSize (long *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_CacheSize (long CacheSize) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_CursorType (CursorTypeEnum *plCursorType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_CursorType (CursorTypeEnum lCursorType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_EOF (VARIANT_BOOL *pb) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Fields (ADOFields **ppvObject) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_LockType (LockTypeEnum *plLockType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_LockType (LockTypeEnum lLockType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_MaxRecords (ADO_LONGPTR *plMaxRecords) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_MaxRecords (ADO_LONGPTR lMaxRecords) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_RecordCount (ADO_LONGPTR *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE putref_Source (IDispatch *pcmd) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Source (BSTR bstrConn) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Source (VARIANT *pvSource) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE AddNew (VARIANT FieldList, VARIANT Values) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE CancelUpdate (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Close (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Delete (AffectEnum AffectRecords = adAffectCurrent) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE GetRows (long Rows, VARIANT Start, VARIANT Fields, VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Move (ADO_LONGPTR NumRecords, VARIANT Start) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE MoveNext (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE MovePrevious (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE MoveFirst (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE MoveLast (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Open (VARIANT Source, VARIANT ActiveConnection, CursorTypeEnum CursorType = adOpenUnspecified, LockTypeEnum LockType = adLockUnspecified, LONG Options = adCmdUnspecified) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Requery (LONG Options = adOptionUnspecified) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE _xResync (AffectEnum AffectRecords = adAffectAll) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Update (VARIANT Fields, VARIANT Values) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_AbsolutePage (PositionEnum_Param *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_AbsolutePage (PositionEnum_Param Page) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_EditMode (EditModeEnum *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Filter (VARIANT *Criteria) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Filter (VARIANT Criteria) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_PageCount (ADO_LONGPTR *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_PageSize (long *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_PageSize (long PageSize) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Sort (BSTR *Criteria) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Sort (BSTR Criteria) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Status (long *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_State (LONG *plObjState) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE _xClone (_ADORecordset **ppvObject) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE UpdateBatch (AffectEnum AffectRecords = adAffectAll) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE CancelBatch (AffectEnum AffectRecords = adAffectAll) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_CursorLocation (CursorLocationEnum *plCursorLoc) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_CursorLocation (CursorLocationEnum lCursorLoc) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE NextRecordset (VARIANT *RecordsAffected, _ADORecordset **ppiRs) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Supports (CursorOptionEnum CursorOptions, VARIANT_BOOL *pb) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Collect (VARIANT Index, VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Collect (VARIANT Index, VARIANT value) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_MarshalOptions (MarshalOptionsEnum *peMarshal) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_MarshalOptions (MarshalOptionsEnum eMarshal) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Find (BSTR Criteria, ADO_LONGPTR SkipRecords, SearchDirectionEnum SearchDirection, VARIANT Start) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct Recordset15Vtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (Recordset15 *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (Recordset15 *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (Recordset15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (Recordset15 *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (Recordset15 *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (Recordset15 *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (Recordset15 *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (Recordset15 *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_AbsolutePosition) (Recordset15 *This, PositionEnum_Param *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_AbsolutePosition) (Recordset15 *This, PositionEnum_Param Position); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_ActiveADOConnection) (Recordset15 *This, IDispatch *pconn); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ActiveConnection) (Recordset15 *This, VARIANT vConn); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActiveConnection) (Recordset15 *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_BOF) (Recordset15 *This, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Bookmark) (Recordset15 *This, VARIANT *pvBookmark); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Bookmark) (Recordset15 *This, VARIANT vBookmark); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CacheSize) (Recordset15 *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CacheSize) (Recordset15 *This, long CacheSize); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CursorType) (Recordset15 *This, CursorTypeEnum *plCursorType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CursorType) (Recordset15 *This, CursorTypeEnum lCursorType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_EOF) (Recordset15 *This, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Fields) (Recordset15 *This, ADOFields **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_LockType) (Recordset15 *This, LockTypeEnum *plLockType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_LockType) (Recordset15 *This, LockTypeEnum lLockType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_MaxRecords) (Recordset15 *This, ADO_LONGPTR *plMaxRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *put_MaxRecords) (Recordset15 *This, ADO_LONGPTR lMaxRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *get_RecordCount) (Recordset15 *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_Source) (Recordset15 *This, IDispatch *pcmd); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Source) (Recordset15 *This, BSTR bstrConn); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Source) (Recordset15 *This, VARIANT *pvSource); | 
 |     HRESULT (STDMETHODCALLTYPE *AddNew) (Recordset15 *This, VARIANT FieldList, VARIANT Values); | 
 |     HRESULT (STDMETHODCALLTYPE *CancelUpdate) (Recordset15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Close) (Recordset15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Delete) (Recordset15 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *GetRows) (Recordset15 *This, long Rows, VARIANT Start, VARIANT Fields, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *Move) (Recordset15 *This, ADO_LONGPTR NumRecords, VARIANT Start); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveNext) (Recordset15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MovePrevious) (Recordset15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveFirst) (Recordset15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveLast) (Recordset15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Open) (Recordset15 *This, VARIANT Source, VARIANT ActiveConnection, CursorTypeEnum CursorType, LockTypeEnum LockType, LONG Options); | 
 |     HRESULT (STDMETHODCALLTYPE *Requery) (Recordset15 *This, LONG Options); | 
 |     HRESULT (STDMETHODCALLTYPE *_xResync) (Recordset15 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *Update) (Recordset15 *This, VARIANT Fields, VARIANT Values); | 
 |     HRESULT (STDMETHODCALLTYPE *get_AbsolutePage) (Recordset15 *This, PositionEnum_Param *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_AbsolutePage) (Recordset15 *This, PositionEnum_Param Page); | 
 |     HRESULT (STDMETHODCALLTYPE *get_EditMode) (Recordset15 *This, EditModeEnum *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Filter) (Recordset15 *This, VARIANT *Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Filter) (Recordset15 *This, VARIANT Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *get_PageCount) (Recordset15 *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_PageSize) (Recordset15 *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_PageSize) (Recordset15 *This, long PageSize); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Sort) (Recordset15 *This, BSTR *Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Sort) (Recordset15 *This, BSTR Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Status) (Recordset15 *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_State) (Recordset15 *This, LONG *plObjState); | 
 |     HRESULT (STDMETHODCALLTYPE *_xClone) (Recordset15 *This, _ADORecordset **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *UpdateBatch) (Recordset15 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *CancelBatch) (Recordset15 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CursorLocation) (Recordset15 *This, CursorLocationEnum *plCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CursorLocation) (Recordset15 *This, CursorLocationEnum lCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *NextADORecordset) (Recordset15 *This, VARIANT *RecordsAffected, _ADORecordset **ppiRs); | 
 |     HRESULT (STDMETHODCALLTYPE *Supports) (Recordset15 *This, CursorOptionEnum CursorOptions, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Collect) (Recordset15 *This, VARIANT Index, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Collect) (Recordset15 *This, VARIANT Index, VARIANT value); | 
 |     HRESULT (STDMETHODCALLTYPE *get_MarshalOptions) (Recordset15 *This, MarshalOptionsEnum *peMarshal); | 
 |     HRESULT (STDMETHODCALLTYPE *put_MarshalOptions) (Recordset15 *This, MarshalOptionsEnum eMarshal); | 
 |     HRESULT (STDMETHODCALLTYPE *Find) (Recordset15 *This, BSTR Criteria, ADO_LONGPTR SkipRecords, SearchDirectionEnum SearchDirection, VARIANT Start); | 
 |     END_INTERFACE | 
 |   } Recordset15Vtbl; | 
 |   interface Recordset15 { | 
 |     CONST_VTBL struct Recordset15Vtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Recordset15_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Recordset15_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Recordset15_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Recordset15_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Recordset15_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Recordset15_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Recordset15_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Recordset15_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define Recordset15_get_AbsolutePosition(This, pl) ((This)->lpVtbl ->get_AbsolutePosition (This, pl)) | 
 | #define Recordset15_put_AbsolutePosition(This, Position) ((This)->lpVtbl ->put_AbsolutePosition (This, Position)) | 
 | #define Recordset15_putref_ActiveConnection(This, pconn) ((This)->lpVtbl ->putref_ActiveConnection (This, pconn)) | 
 | #define Recordset15_put_ActiveConnection(This, vConn) ((This)->lpVtbl ->put_ActiveConnection (This, vConn)) | 
 | #define Recordset15_get_ActiveConnection(This, pvar) ((This)->lpVtbl ->get_ActiveConnection (This, pvar)) | 
 | #define Recordset15_get_BOF(This, pb) ((This)->lpVtbl ->get_BOF (This, pb)) | 
 | #define Recordset15_get_Bookmark(This, pvBookmark) ((This)->lpVtbl ->get_Bookmark (This, pvBookmark)) | 
 | #define Recordset15_put_Bookmark(This, vBookmark) ((This)->lpVtbl ->put_Bookmark (This, vBookmark)) | 
 | #define Recordset15_get_CacheSize(This, pl) ((This)->lpVtbl ->get_CacheSize (This, pl)) | 
 | #define Recordset15_put_CacheSize(This, CacheSize) ((This)->lpVtbl ->put_CacheSize (This, CacheSize)) | 
 | #define Recordset15_get_CursorType(This, plCursorType) ((This)->lpVtbl ->get_CursorType (This, plCursorType)) | 
 | #define Recordset15_put_CursorType(This, lCursorType) ((This)->lpVtbl ->put_CursorType (This, lCursorType)) | 
 | #define Recordset15_get_EOF(This, pb) ((This)->lpVtbl ->get_EOF (This, pb)) | 
 | #define Recordset15_get_Fields(This, ppvObject) ((This)->lpVtbl ->get_Fields (This, ppvObject)) | 
 | #define Recordset15_get_LockType(This, plLockType) ((This)->lpVtbl ->get_LockType (This, plLockType)) | 
 | #define Recordset15_put_LockType(This, lLockType) ((This)->lpVtbl ->put_LockType (This, lLockType)) | 
 | #define Recordset15_get_MaxRecords(This, plMaxRecords) ((This)->lpVtbl ->get_MaxRecords (This, plMaxRecords)) | 
 | #define Recordset15_put_MaxRecords(This, lMaxRecords) ((This)->lpVtbl ->put_MaxRecords (This, lMaxRecords)) | 
 | #define Recordset15_get_RecordCount(This, pl) ((This)->lpVtbl ->get_RecordCount (This, pl)) | 
 | #define Recordset15_putref_Source(This, pcmd) ((This)->lpVtbl ->putref_Source (This, pcmd)) | 
 | #define Recordset15_put_Source(This, bstrConn) ((This)->lpVtbl ->put_Source (This, bstrConn)) | 
 | #define Recordset15_get_Source(This, pvSource) ((This)->lpVtbl ->get_Source (This, pvSource)) | 
 | #define Recordset15_AddNew(This, FieldList, Values) ((This)->lpVtbl ->AddNew (This, FieldList, Values)) | 
 | #define Recordset15_CancelUpdate(This) ((This)->lpVtbl ->CancelUpdate (This)) | 
 | #define Recordset15_Close(This) ((This)->lpVtbl ->Close (This)) | 
 | #define Recordset15_Delete(This, AffectRecords) ((This)->lpVtbl ->Delete (This, AffectRecords)) | 
 | #define Recordset15_GetRows(This, Rows, Start, Fields, pvar) ((This)->lpVtbl ->GetRows (This, Rows, Start, Fields, pvar)) | 
 | #define Recordset15_Move(This, NumRecords, Start) ((This)->lpVtbl ->Move (This, NumRecords, Start)) | 
 | #define Recordset15_MoveNext(This) ((This)->lpVtbl ->MoveNext (This)) | 
 | #define Recordset15_MovePrevious(This) ((This)->lpVtbl ->MovePrevious (This)) | 
 | #define Recordset15_MoveFirst(This) ((This)->lpVtbl ->MoveFirst (This)) | 
 | #define Recordset15_MoveLast(This) ((This)->lpVtbl ->MoveLast (This)) | 
 | #define Recordset15_Open(This, Source, ActiveConnection, CursorType, LockType, Options) ((This)->lpVtbl ->Open (This, Source, ActiveConnection, CursorType, LockType, Options)) | 
 | #define Recordset15_Requery(This, Options) ((This)->lpVtbl ->Requery (This, Options)) | 
 | #define Recordset15__xResync(This, AffectRecords) ((This)->lpVtbl ->_xResync (This, AffectRecords)) | 
 | #define Recordset15_Update(This, Fields, Values) ((This)->lpVtbl ->Update (This, Fields, Values)) | 
 | #define Recordset15_get_AbsolutePage(This, pl) ((This)->lpVtbl ->get_AbsolutePage (This, pl)) | 
 | #define Recordset15_put_AbsolutePage(This, Page) ((This)->lpVtbl ->put_AbsolutePage (This, Page)) | 
 | #define Recordset15_get_EditMode(This, pl) ((This)->lpVtbl ->get_EditMode (This, pl)) | 
 | #define Recordset15_get_Filter(This, Criteria) ((This)->lpVtbl ->get_Filter (This, Criteria)) | 
 | #define Recordset15_put_Filter(This, Criteria) ((This)->lpVtbl ->put_Filter (This, Criteria)) | 
 | #define Recordset15_get_PageCount(This, pl) ((This)->lpVtbl ->get_PageCount (This, pl)) | 
 | #define Recordset15_get_PageSize(This, pl) ((This)->lpVtbl ->get_PageSize (This, pl)) | 
 | #define Recordset15_put_PageSize(This, PageSize) ((This)->lpVtbl ->put_PageSize (This, PageSize)) | 
 | #define Recordset15_get_Sort(This, Criteria) ((This)->lpVtbl ->get_Sort (This, Criteria)) | 
 | #define Recordset15_put_Sort(This, Criteria) ((This)->lpVtbl ->put_Sort (This, Criteria)) | 
 | #define Recordset15_get_Status(This, pl) ((This)->lpVtbl ->get_Status (This, pl)) | 
 | #define Recordset15_get_State(This, plObjState) ((This)->lpVtbl ->get_State (This, plObjState)) | 
 | #define Recordset15__xClone(This, ppvObject) ((This)->lpVtbl ->_xClone (This, ppvObject)) | 
 | #define Recordset15_UpdateBatch(This, AffectRecords) ((This)->lpVtbl ->UpdateBatch (This, AffectRecords)) | 
 | #define Recordset15_CancelBatch(This, AffectRecords) ((This)->lpVtbl ->CancelBatch (This, AffectRecords)) | 
 | #define Recordset15_get_CursorLocation(This, plCursorLoc) ((This)->lpVtbl ->get_CursorLocation (This, plCursorLoc)) | 
 | #define Recordset15_put_CursorLocation(This, lCursorLoc) ((This)->lpVtbl ->put_CursorLocation (This, lCursorLoc)) | 
 | #define Recordset15_NextRecordset(This, RecordsAffected, ppiRs) ((This)->lpVtbl ->NextRecordset (This, RecordsAffected, ppiRs)) | 
 | #define Recordset15_Supports(This, CursorOptions, pb) ((This)->lpVtbl ->Supports (This, CursorOptions, pb)) | 
 | #define Recordset15_get_Collect(This, Index, pvar) ((This)->lpVtbl ->get_Collect (This, Index, pvar)) | 
 | #define Recordset15_put_Collect(This, Index, value) ((This)->lpVtbl ->put_Collect (This, Index, value)) | 
 | #define Recordset15_get_MarshalOptions(This, peMarshal) ((This)->lpVtbl ->get_MarshalOptions (This, peMarshal)) | 
 | #define Recordset15_put_MarshalOptions(This, eMarshal) ((This)->lpVtbl ->put_MarshalOptions (This, eMarshal)) | 
 | #define Recordset15_Find(This, Criteria, SkipRecords, SearchDirection, Start) ((This)->lpVtbl ->Find (This, Criteria, SkipRecords, SearchDirection, Start)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Recordset20_INTERFACE_DEFINED__ | 
 | #define __Recordset20_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Recordset20; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("0000054F-0000-0010-8000-00AA006D2EA4") | 
 |   Recordset20 : public Recordset15 { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE Cancel (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_DataSource (IUnknown **ppunkDataSource) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE putref_DataSource (IUnknown *punkDataSource) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE _xSave (BSTR FileName = NULL, PersistFormatEnum PersistFormat = adPersistADTG) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_ActiveCommand (IDispatch **ppCmd) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_StayInSync (VARIANT_BOOL bStayInSync) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_StayInSync (VARIANT_BOOL *pbStayInSync) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE GetString (StringFormatEnum StringFormat, long NumRows, BSTR ColumnDelimeter, BSTR RowDelimeter, BSTR NullExpr, BSTR *pRetString) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_DataMember (BSTR *pbstrDataMember) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_DataMember (BSTR bstrDataMember) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE CompareBookmarks (VARIANT Bookmark1, VARIANT Bookmark2, CompareEnum *pCompare) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Clone (LockTypeEnum LockType, _ADORecordset **ppvObject) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Resync (AffectEnum AffectRecords = adAffectAll, ResyncEnum ResyncValues = adResyncAllValues) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct Recordset20Vtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (Recordset20 *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (Recordset20 *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (Recordset20 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (Recordset20 *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (Recordset20 *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (Recordset20 *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (Recordset20 *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (Recordset20 *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_AbsolutePosition) (Recordset20 *This, PositionEnum_Param *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_AbsolutePosition) (Recordset20 *This, PositionEnum_Param Position); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_ActiveADOConnection) (Recordset20 *This, IDispatch *pconn); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ActiveConnection) (Recordset20 *This, VARIANT vConn); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActiveConnection) (Recordset20 *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_BOF) (Recordset20 *This, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Bookmark) (Recordset20 *This, VARIANT *pvBookmark); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Bookmark) (Recordset20 *This, VARIANT vBookmark); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CacheSize) (Recordset20 *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CacheSize) (Recordset20 *This, long CacheSize); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CursorType) (Recordset20 *This, CursorTypeEnum *plCursorType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CursorType) (Recordset20 *This, CursorTypeEnum lCursorType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_EOF) (Recordset20 *This, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Fields) (Recordset20 *This, ADOFields **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_LockType) (Recordset20 *This, LockTypeEnum *plLockType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_LockType) (Recordset20 *This, LockTypeEnum lLockType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_MaxRecords) (Recordset20 *This, ADO_LONGPTR *plMaxRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *put_MaxRecords) (Recordset20 *This, ADO_LONGPTR lMaxRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *get_RecordCount) (Recordset20 *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_Source) (Recordset20 *This, IDispatch *pcmd); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Source) (Recordset20 *This, BSTR bstrConn); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Source) (Recordset20 *This, VARIANT *pvSource); | 
 |     HRESULT (STDMETHODCALLTYPE *AddNew) (Recordset20 *This, VARIANT FieldList, VARIANT Values); | 
 |     HRESULT (STDMETHODCALLTYPE *CancelUpdate) (Recordset20 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Close) (Recordset20 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Delete) (Recordset20 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *GetRows) (Recordset20 *This, long Rows, VARIANT Start, VARIANT Fields, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *Move) (Recordset20 *This, ADO_LONGPTR NumRecords, VARIANT Start); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveNext) (Recordset20 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MovePrevious) (Recordset20 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveFirst) (Recordset20 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveLast) (Recordset20 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Open) (Recordset20 *This, VARIANT Source, VARIANT ActiveConnection, CursorTypeEnum CursorType, LockTypeEnum LockType, LONG Options); | 
 |     HRESULT (STDMETHODCALLTYPE *Requery) (Recordset20 *This, LONG Options); | 
 |     HRESULT (STDMETHODCALLTYPE *_xResync) (Recordset20 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *Update) (Recordset20 *This, VARIANT Fields, VARIANT Values); | 
 |     HRESULT (STDMETHODCALLTYPE *get_AbsolutePage) (Recordset20 *This, PositionEnum_Param *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_AbsolutePage) (Recordset20 *This, PositionEnum_Param Page); | 
 |     HRESULT (STDMETHODCALLTYPE *get_EditMode) (Recordset20 *This, EditModeEnum *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Filter) (Recordset20 *This, VARIANT *Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Filter) (Recordset20 *This, VARIANT Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *get_PageCount) (Recordset20 *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_PageSize) (Recordset20 *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_PageSize) (Recordset20 *This, long PageSize); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Sort) (Recordset20 *This, BSTR *Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Sort) (Recordset20 *This, BSTR Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Status) (Recordset20 *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_State) (Recordset20 *This, LONG *plObjState); | 
 |     HRESULT (STDMETHODCALLTYPE *_xClone) (Recordset20 *This, _ADORecordset **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *UpdateBatch) (Recordset20 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *CancelBatch) (Recordset20 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CursorLocation) (Recordset20 *This, CursorLocationEnum *plCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CursorLocation) (Recordset20 *This, CursorLocationEnum lCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *NextADORecordset) (Recordset20 *This, VARIANT *RecordsAffected, _ADORecordset **ppiRs); | 
 |     HRESULT (STDMETHODCALLTYPE *Supports) (Recordset20 *This, CursorOptionEnum CursorOptions, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Collect) (Recordset20 *This, VARIANT Index, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Collect) (Recordset20 *This, VARIANT Index, VARIANT value); | 
 |     HRESULT (STDMETHODCALLTYPE *get_MarshalOptions) (Recordset20 *This, MarshalOptionsEnum *peMarshal); | 
 |     HRESULT (STDMETHODCALLTYPE *put_MarshalOptions) (Recordset20 *This, MarshalOptionsEnum eMarshal); | 
 |     HRESULT (STDMETHODCALLTYPE *Find) (Recordset20 *This, BSTR Criteria, ADO_LONGPTR SkipRecords, SearchDirectionEnum SearchDirection, VARIANT Start); | 
 |     HRESULT (STDMETHODCALLTYPE *Cancel) (Recordset20 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DataSource) (Recordset20 *This, IUnknown **ppunkDataSource); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_DataSource) (Recordset20 *This, IUnknown *punkDataSource); | 
 |     HRESULT (STDMETHODCALLTYPE *_xSave) (Recordset20 *This, BSTR FileName, PersistFormatEnum PersistFormat); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActiveCommand) (Recordset20 *This, IDispatch **ppCmd); | 
 |     HRESULT (STDMETHODCALLTYPE *put_StayInSync) (Recordset20 *This, VARIANT_BOOL bStayInSync); | 
 |     HRESULT (STDMETHODCALLTYPE *get_StayInSync) (Recordset20 *This, VARIANT_BOOL *pbStayInSync); | 
 |     HRESULT (STDMETHODCALLTYPE *GetString) (Recordset20 *This, StringFormatEnum StringFormat, long NumRows, BSTR ColumnDelimeter, BSTR RowDelimeter, BSTR NullExpr, BSTR *pRetString); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DataMember) (Recordset20 *This, BSTR *pbstrDataMember); | 
 |     HRESULT (STDMETHODCALLTYPE *put_DataMember) (Recordset20 *This, BSTR bstrDataMember); | 
 |     HRESULT (STDMETHODCALLTYPE *CompareBookmarks) (Recordset20 *This, VARIANT Bookmark1, VARIANT Bookmark2, CompareEnum *pCompare); | 
 |     HRESULT (STDMETHODCALLTYPE *Clone) (Recordset20 *This, LockTypeEnum LockType, _ADORecordset **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Resync) (Recordset20 *This, AffectEnum AffectRecords, ResyncEnum ResyncValues); | 
 |     END_INTERFACE | 
 |   } Recordset20Vtbl; | 
 |   interface Recordset20 { | 
 |     CONST_VTBL struct Recordset20Vtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Recordset20_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Recordset20_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Recordset20_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Recordset20_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Recordset20_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Recordset20_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Recordset20_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Recordset20_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define Recordset20_get_AbsolutePosition(This, pl) ((This)->lpVtbl ->get_AbsolutePosition (This, pl)) | 
 | #define Recordset20_put_AbsolutePosition(This, Position) ((This)->lpVtbl ->put_AbsolutePosition (This, Position)) | 
 | #define Recordset20_putref_ActiveConnection(This, pconn) ((This)->lpVtbl ->putref_ActiveConnection (This, pconn)) | 
 | #define Recordset20_put_ActiveConnection(This, vConn) ((This)->lpVtbl ->put_ActiveConnection (This, vConn)) | 
 | #define Recordset20_get_ActiveConnection(This, pvar) ((This)->lpVtbl ->get_ActiveConnection (This, pvar)) | 
 | #define Recordset20_get_BOF(This, pb) ((This)->lpVtbl ->get_BOF (This, pb)) | 
 | #define Recordset20_get_Bookmark(This, pvBookmark) ((This)->lpVtbl ->get_Bookmark (This, pvBookmark)) | 
 | #define Recordset20_put_Bookmark(This, vBookmark) ((This)->lpVtbl ->put_Bookmark (This, vBookmark)) | 
 | #define Recordset20_get_CacheSize(This, pl) ((This)->lpVtbl ->get_CacheSize (This, pl)) | 
 | #define Recordset20_put_CacheSize(This, CacheSize) ((This)->lpVtbl ->put_CacheSize (This, CacheSize)) | 
 | #define Recordset20_get_CursorType(This, plCursorType) ((This)->lpVtbl ->get_CursorType (This, plCursorType)) | 
 | #define Recordset20_put_CursorType(This, lCursorType) ((This)->lpVtbl ->put_CursorType (This, lCursorType)) | 
 | #define Recordset20_get_EOF(This, pb) ((This)->lpVtbl ->get_EOF (This, pb)) | 
 | #define Recordset20_get_Fields(This, ppvObject) ((This)->lpVtbl ->get_Fields (This, ppvObject)) | 
 | #define Recordset20_get_LockType(This, plLockType) ((This)->lpVtbl ->get_LockType (This, plLockType)) | 
 | #define Recordset20_put_LockType(This, lLockType) ((This)->lpVtbl ->put_LockType (This, lLockType)) | 
 | #define Recordset20_get_MaxRecords(This, plMaxRecords) ((This)->lpVtbl ->get_MaxRecords (This, plMaxRecords)) | 
 | #define Recordset20_put_MaxRecords(This, lMaxRecords) ((This)->lpVtbl ->put_MaxRecords (This, lMaxRecords)) | 
 | #define Recordset20_get_RecordCount(This, pl) ((This)->lpVtbl ->get_RecordCount (This, pl)) | 
 | #define Recordset20_putref_Source(This, pcmd) ((This)->lpVtbl ->putref_Source (This, pcmd)) | 
 | #define Recordset20_put_Source(This, bstrConn) ((This)->lpVtbl ->put_Source (This, bstrConn)) | 
 | #define Recordset20_get_Source(This, pvSource) ((This)->lpVtbl ->get_Source (This, pvSource)) | 
 | #define Recordset20_AddNew(This, FieldList, Values) ((This)->lpVtbl ->AddNew (This, FieldList, Values)) | 
 | #define Recordset20_CancelUpdate(This) ((This)->lpVtbl ->CancelUpdate (This)) | 
 | #define Recordset20_Close(This) ((This)->lpVtbl ->Close (This)) | 
 | #define Recordset20_Delete(This, AffectRecords) ((This)->lpVtbl ->Delete (This, AffectRecords)) | 
 | #define Recordset20_GetRows(This, Rows, Start, Fields, pvar) ((This)->lpVtbl ->GetRows (This, Rows, Start, Fields, pvar)) | 
 | #define Recordset20_Move(This, NumRecords, Start) ((This)->lpVtbl ->Move (This, NumRecords, Start)) | 
 | #define Recordset20_MoveNext(This) ((This)->lpVtbl ->MoveNext (This)) | 
 | #define Recordset20_MovePrevious(This) ((This)->lpVtbl ->MovePrevious (This)) | 
 | #define Recordset20_MoveFirst(This) ((This)->lpVtbl ->MoveFirst (This)) | 
 | #define Recordset20_MoveLast(This) ((This)->lpVtbl ->MoveLast (This)) | 
 | #define Recordset20_Open(This, Source, ActiveConnection, CursorType, LockType, Options) ((This)->lpVtbl ->Open (This, Source, ActiveConnection, CursorType, LockType, Options)) | 
 | #define Recordset20_Requery(This, Options) ((This)->lpVtbl ->Requery (This, Options)) | 
 | #define Recordset20__xResync(This, AffectRecords) ((This)->lpVtbl ->_xResync (This, AffectRecords)) | 
 | #define Recordset20_Update(This, Fields, Values) ((This)->lpVtbl ->Update (This, Fields, Values)) | 
 | #define Recordset20_get_AbsolutePage(This, pl) ((This)->lpVtbl ->get_AbsolutePage (This, pl)) | 
 | #define Recordset20_put_AbsolutePage(This, Page) ((This)->lpVtbl ->put_AbsolutePage (This, Page)) | 
 | #define Recordset20_get_EditMode(This, pl) ((This)->lpVtbl ->get_EditMode (This, pl)) | 
 | #define Recordset20_get_Filter(This, Criteria) ((This)->lpVtbl ->get_Filter (This, Criteria)) | 
 | #define Recordset20_put_Filter(This, Criteria) ((This)->lpVtbl ->put_Filter (This, Criteria)) | 
 | #define Recordset20_get_PageCount(This, pl) ((This)->lpVtbl ->get_PageCount (This, pl)) | 
 | #define Recordset20_get_PageSize(This, pl) ((This)->lpVtbl ->get_PageSize (This, pl)) | 
 | #define Recordset20_put_PageSize(This, PageSize) ((This)->lpVtbl ->put_PageSize (This, PageSize)) | 
 | #define Recordset20_get_Sort(This, Criteria) ((This)->lpVtbl ->get_Sort (This, Criteria)) | 
 | #define Recordset20_put_Sort(This, Criteria) ((This)->lpVtbl ->put_Sort (This, Criteria)) | 
 | #define Recordset20_get_Status(This, pl) ((This)->lpVtbl ->get_Status (This, pl)) | 
 | #define Recordset20_get_State(This, plObjState) ((This)->lpVtbl ->get_State (This, plObjState)) | 
 | #define Recordset20__xClone(This, ppvObject) ((This)->lpVtbl ->_xClone (This, ppvObject)) | 
 | #define Recordset20_UpdateBatch(This, AffectRecords) ((This)->lpVtbl ->UpdateBatch (This, AffectRecords)) | 
 | #define Recordset20_CancelBatch(This, AffectRecords) ((This)->lpVtbl ->CancelBatch (This, AffectRecords)) | 
 | #define Recordset20_get_CursorLocation(This, plCursorLoc) ((This)->lpVtbl ->get_CursorLocation (This, plCursorLoc)) | 
 | #define Recordset20_put_CursorLocation(This, lCursorLoc) ((This)->lpVtbl ->put_CursorLocation (This, lCursorLoc)) | 
 | #define Recordset20_NextRecordset(This, RecordsAffected, ppiRs) ((This)->lpVtbl ->NextRecordset (This, RecordsAffected, ppiRs)) | 
 | #define Recordset20_Supports(This, CursorOptions, pb) ((This)->lpVtbl ->Supports (This, CursorOptions, pb)) | 
 | #define Recordset20_get_Collect(This, Index, pvar) ((This)->lpVtbl ->get_Collect (This, Index, pvar)) | 
 | #define Recordset20_put_Collect(This, Index, value) ((This)->lpVtbl ->put_Collect (This, Index, value)) | 
 | #define Recordset20_get_MarshalOptions(This, peMarshal) ((This)->lpVtbl ->get_MarshalOptions (This, peMarshal)) | 
 | #define Recordset20_put_MarshalOptions(This, eMarshal) ((This)->lpVtbl ->put_MarshalOptions (This, eMarshal)) | 
 | #define Recordset20_Find(This, Criteria, SkipRecords, SearchDirection, Start) ((This)->lpVtbl ->Find (This, Criteria, SkipRecords, SearchDirection, Start)) | 
 | #define Recordset20_Cancel(This) ((This)->lpVtbl ->Cancel (This)) | 
 | #define Recordset20_get_DataSource(This, ppunkDataSource) ((This)->lpVtbl ->get_DataSource (This, ppunkDataSource)) | 
 | #define Recordset20_putref_DataSource(This, punkDataSource) ((This)->lpVtbl ->putref_DataSource (This, punkDataSource)) | 
 | #define Recordset20__xSave(This, FileName, PersistFormat) ((This)->lpVtbl ->_xSave (This, FileName, PersistFormat)) | 
 | #define Recordset20_get_ActiveCommand(This, ppCmd) ((This)->lpVtbl ->get_ActiveCommand (This, ppCmd)) | 
 | #define Recordset20_put_StayInSync(This, bStayInSync) ((This)->lpVtbl ->put_StayInSync (This, bStayInSync)) | 
 | #define Recordset20_get_StayInSync(This, pbStayInSync) ((This)->lpVtbl ->get_StayInSync (This, pbStayInSync)) | 
 | #define Recordset20_GetString(This, StringFormat, NumRows, ColumnDelimeter, RowDelimeter, NullExpr, pRetString) ((This)->lpVtbl ->GetString (This, StringFormat, NumRows, ColumnDelimeter, RowDelimeter, NullExpr, pRetString)) | 
 | #define Recordset20_get_DataMember(This, pbstrDataMember) ((This)->lpVtbl ->get_DataMember (This, pbstrDataMember)) | 
 | #define Recordset20_put_DataMember(This, bstrDataMember) ((This)->lpVtbl ->put_DataMember (This, bstrDataMember)) | 
 | #define Recordset20_CompareBookmarks(This, Bookmark1, Bookmark2, pCompare) ((This)->lpVtbl ->CompareBookmarks (This, Bookmark1, Bookmark2, pCompare)) | 
 | #define Recordset20_Clone(This, LockType, ppvObject) ((This)->lpVtbl ->Clone (This, LockType, ppvObject)) | 
 | #define Recordset20_Resync(This, AffectRecords, ResyncValues) ((This)->lpVtbl ->Resync (This, AffectRecords, ResyncValues)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Recordset21_INTERFACE_DEFINED__ | 
 | #define __Recordset21_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Recordset21; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000555-0000-0010-8000-00AA006D2EA4") | 
 |   Recordset21 : public Recordset20 { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE Seek (VARIANT KeyValues, SeekEnum SeekOption = adSeekFirstEQ) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Index (BSTR Index) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Index (BSTR *pbstrIndex) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct Recordset21Vtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (Recordset21 *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (Recordset21 *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (Recordset21 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (Recordset21 *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (Recordset21 *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (Recordset21 *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (Recordset21 *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (Recordset21 *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_AbsolutePosition) (Recordset21 *This, PositionEnum_Param *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_AbsolutePosition) (Recordset21 *This, PositionEnum_Param Position); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_ActiveADOConnection) (Recordset21 *This, IDispatch *pconn); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ActiveConnection) (Recordset21 *This, VARIANT vConn); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActiveConnection) (Recordset21 *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_BOF) (Recordset21 *This, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Bookmark) (Recordset21 *This, VARIANT *pvBookmark); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Bookmark) (Recordset21 *This, VARIANT vBookmark); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CacheSize) (Recordset21 *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CacheSize) (Recordset21 *This, long CacheSize); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CursorType) (Recordset21 *This, CursorTypeEnum *plCursorType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CursorType) (Recordset21 *This, CursorTypeEnum lCursorType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_EOF) (Recordset21 *This, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Fields) (Recordset21 *This, ADOFields **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_LockType) (Recordset21 *This, LockTypeEnum *plLockType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_LockType) (Recordset21 *This, LockTypeEnum lLockType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_MaxRecords) (Recordset21 *This, ADO_LONGPTR *plMaxRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *put_MaxRecords) (Recordset21 *This, ADO_LONGPTR lMaxRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *get_RecordCount) (Recordset21 *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_Source) (Recordset21 *This, IDispatch *pcmd); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Source) (Recordset21 *This, BSTR bstrConn); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Source) (Recordset21 *This, VARIANT *pvSource); | 
 |     HRESULT (STDMETHODCALLTYPE *AddNew) (Recordset21 *This, VARIANT FieldList, VARIANT Values); | 
 |     HRESULT (STDMETHODCALLTYPE *CancelUpdate) (Recordset21 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Close) (Recordset21 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Delete) (Recordset21 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *GetRows) (Recordset21 *This, long Rows, VARIANT Start, VARIANT Fields, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *Move) (Recordset21 *This, ADO_LONGPTR NumRecords, VARIANT Start); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveNext) (Recordset21 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MovePrevious) (Recordset21 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveFirst) (Recordset21 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveLast) (Recordset21 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Open) (Recordset21 *This, VARIANT Source, VARIANT ActiveConnection, CursorTypeEnum CursorType, LockTypeEnum LockType, LONG Options); | 
 |     HRESULT (STDMETHODCALLTYPE *Requery) (Recordset21 *This, LONG Options); | 
 |     HRESULT (STDMETHODCALLTYPE *_xResync) (Recordset21 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *Update) (Recordset21 *This, VARIANT Fields, VARIANT Values); | 
 |     HRESULT (STDMETHODCALLTYPE *get_AbsolutePage) (Recordset21 *This, PositionEnum_Param *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_AbsolutePage) (Recordset21 *This, PositionEnum_Param Page); | 
 |     HRESULT (STDMETHODCALLTYPE *get_EditMode) (Recordset21 *This, EditModeEnum *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Filter) (Recordset21 *This, VARIANT *Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Filter) (Recordset21 *This, VARIANT Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *get_PageCount) (Recordset21 *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_PageSize) (Recordset21 *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_PageSize) (Recordset21 *This, long PageSize); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Sort) (Recordset21 *This, BSTR *Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Sort) (Recordset21 *This, BSTR Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Status) (Recordset21 *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_State) (Recordset21 *This, LONG *plObjState); | 
 |     HRESULT (STDMETHODCALLTYPE *_xClone) (Recordset21 *This, _ADORecordset **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *UpdateBatch) (Recordset21 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *CancelBatch) (Recordset21 *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CursorLocation) (Recordset21 *This, CursorLocationEnum *plCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CursorLocation) (Recordset21 *This, CursorLocationEnum lCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *NextADORecordset) (Recordset21 *This, VARIANT *RecordsAffected, _ADORecordset **ppiRs); | 
 |     HRESULT (STDMETHODCALLTYPE *Supports) (Recordset21 *This, CursorOptionEnum CursorOptions, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Collect) (Recordset21 *This, VARIANT Index, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Collect) (Recordset21 *This, VARIANT Index, VARIANT value); | 
 |     HRESULT (STDMETHODCALLTYPE *get_MarshalOptions) (Recordset21 *This, MarshalOptionsEnum *peMarshal); | 
 |     HRESULT (STDMETHODCALLTYPE *put_MarshalOptions) (Recordset21 *This, MarshalOptionsEnum eMarshal); | 
 |     HRESULT (STDMETHODCALLTYPE *Find) (Recordset21 *This, BSTR Criteria, ADO_LONGPTR SkipRecords, SearchDirectionEnum SearchDirection, VARIANT Start); | 
 |     HRESULT (STDMETHODCALLTYPE *Cancel) (Recordset21 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DataSource) (Recordset21 *This, IUnknown **ppunkDataSource); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_DataSource) (Recordset21 *This, IUnknown *punkDataSource); | 
 |     HRESULT (STDMETHODCALLTYPE *_xSave) (Recordset21 *This, BSTR FileName, PersistFormatEnum PersistFormat); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActiveCommand) (Recordset21 *This, IDispatch **ppCmd); | 
 |     HRESULT (STDMETHODCALLTYPE *put_StayInSync) (Recordset21 *This, VARIANT_BOOL bStayInSync); | 
 |     HRESULT (STDMETHODCALLTYPE *get_StayInSync) (Recordset21 *This, VARIANT_BOOL *pbStayInSync); | 
 |     HRESULT (STDMETHODCALLTYPE *GetString) (Recordset21 *This, StringFormatEnum StringFormat, long NumRows, BSTR ColumnDelimeter, BSTR RowDelimeter, BSTR NullExpr, BSTR *pRetString); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DataMember) (Recordset21 *This, BSTR *pbstrDataMember); | 
 |     HRESULT (STDMETHODCALLTYPE *put_DataMember) (Recordset21 *This, BSTR bstrDataMember); | 
 |     HRESULT (STDMETHODCALLTYPE *CompareBookmarks) (Recordset21 *This, VARIANT Bookmark1, VARIANT Bookmark2, CompareEnum *pCompare); | 
 |     HRESULT (STDMETHODCALLTYPE *Clone) (Recordset21 *This, LockTypeEnum LockType, _ADORecordset **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Resync) (Recordset21 *This, AffectEnum AffectRecords, ResyncEnum ResyncValues); | 
 |     HRESULT (STDMETHODCALLTYPE *Seek) (Recordset21 *This, VARIANT KeyValues, SeekEnum SeekOption); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Index) (Recordset21 *This, BSTR Index); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Index) (Recordset21 *This, BSTR *pbstrIndex); | 
 |     END_INTERFACE | 
 |   } Recordset21Vtbl; | 
 |   interface Recordset21 { | 
 |     CONST_VTBL struct Recordset21Vtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Recordset21_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Recordset21_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Recordset21_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Recordset21_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Recordset21_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Recordset21_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Recordset21_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Recordset21_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define Recordset21_get_AbsolutePosition(This, pl) ((This)->lpVtbl ->get_AbsolutePosition (This, pl)) | 
 | #define Recordset21_put_AbsolutePosition(This, Position) ((This)->lpVtbl ->put_AbsolutePosition (This, Position)) | 
 | #define Recordset21_putref_ActiveConnection(This, pconn) ((This)->lpVtbl ->putref_ActiveConnection (This, pconn)) | 
 | #define Recordset21_put_ActiveConnection(This, vConn) ((This)->lpVtbl ->put_ActiveConnection (This, vConn)) | 
 | #define Recordset21_get_ActiveConnection(This, pvar) ((This)->lpVtbl ->get_ActiveConnection (This, pvar)) | 
 | #define Recordset21_get_BOF(This, pb) ((This)->lpVtbl ->get_BOF (This, pb)) | 
 | #define Recordset21_get_Bookmark(This, pvBookmark) ((This)->lpVtbl ->get_Bookmark (This, pvBookmark)) | 
 | #define Recordset21_put_Bookmark(This, vBookmark) ((This)->lpVtbl ->put_Bookmark (This, vBookmark)) | 
 | #define Recordset21_get_CacheSize(This, pl) ((This)->lpVtbl ->get_CacheSize (This, pl)) | 
 | #define Recordset21_put_CacheSize(This, CacheSize) ((This)->lpVtbl ->put_CacheSize (This, CacheSize)) | 
 | #define Recordset21_get_CursorType(This, plCursorType) ((This)->lpVtbl ->get_CursorType (This, plCursorType)) | 
 | #define Recordset21_put_CursorType(This, lCursorType) ((This)->lpVtbl ->put_CursorType (This, lCursorType)) | 
 | #define Recordset21_get_EOF(This, pb) ((This)->lpVtbl ->get_EOF (This, pb)) | 
 | #define Recordset21_get_Fields(This, ppvObject) ((This)->lpVtbl ->get_Fields (This, ppvObject)) | 
 | #define Recordset21_get_LockType(This, plLockType) ((This)->lpVtbl ->get_LockType (This, plLockType)) | 
 | #define Recordset21_put_LockType(This, lLockType) ((This)->lpVtbl ->put_LockType (This, lLockType)) | 
 | #define Recordset21_get_MaxRecords(This, plMaxRecords) ((This)->lpVtbl ->get_MaxRecords (This, plMaxRecords)) | 
 | #define Recordset21_put_MaxRecords(This, lMaxRecords) ((This)->lpVtbl ->put_MaxRecords (This, lMaxRecords)) | 
 | #define Recordset21_get_RecordCount(This, pl) ((This)->lpVtbl ->get_RecordCount (This, pl)) | 
 | #define Recordset21_putref_Source(This, pcmd) ((This)->lpVtbl ->putref_Source (This, pcmd)) | 
 | #define Recordset21_put_Source(This, bstrConn) ((This)->lpVtbl ->put_Source (This, bstrConn)) | 
 | #define Recordset21_get_Source(This, pvSource) ((This)->lpVtbl ->get_Source (This, pvSource)) | 
 | #define Recordset21_AddNew(This, FieldList, Values) ((This)->lpVtbl ->AddNew (This, FieldList, Values)) | 
 | #define Recordset21_CancelUpdate(This) ((This)->lpVtbl ->CancelUpdate (This)) | 
 | #define Recordset21_Close(This) ((This)->lpVtbl ->Close (This)) | 
 | #define Recordset21_Delete(This, AffectRecords) ((This)->lpVtbl ->Delete (This, AffectRecords)) | 
 | #define Recordset21_GetRows(This, Rows, Start, Fields, pvar) ((This)->lpVtbl ->GetRows (This, Rows, Start, Fields, pvar)) | 
 | #define Recordset21_Move(This, NumRecords, Start) ((This)->lpVtbl ->Move (This, NumRecords, Start)) | 
 | #define Recordset21_MoveNext(This) ((This)->lpVtbl ->MoveNext (This)) | 
 | #define Recordset21_MovePrevious(This) ((This)->lpVtbl ->MovePrevious (This)) | 
 | #define Recordset21_MoveFirst(This) ((This)->lpVtbl ->MoveFirst (This)) | 
 | #define Recordset21_MoveLast(This) ((This)->lpVtbl ->MoveLast (This)) | 
 | #define Recordset21_Open(This, Source, ActiveConnection, CursorType, LockType, Options) ((This)->lpVtbl ->Open (This, Source, ActiveConnection, CursorType, LockType, Options)) | 
 | #define Recordset21_Requery(This, Options) ((This)->lpVtbl ->Requery (This, Options)) | 
 | #define Recordset21__xResync(This, AffectRecords) ((This)->lpVtbl ->_xResync (This, AffectRecords)) | 
 | #define Recordset21_Update(This, Fields, Values) ((This)->lpVtbl ->Update (This, Fields, Values)) | 
 | #define Recordset21_get_AbsolutePage(This, pl) ((This)->lpVtbl ->get_AbsolutePage (This, pl)) | 
 | #define Recordset21_put_AbsolutePage(This, Page) ((This)->lpVtbl ->put_AbsolutePage (This, Page)) | 
 | #define Recordset21_get_EditMode(This, pl) ((This)->lpVtbl ->get_EditMode (This, pl)) | 
 | #define Recordset21_get_Filter(This, Criteria) ((This)->lpVtbl ->get_Filter (This, Criteria)) | 
 | #define Recordset21_put_Filter(This, Criteria) ((This)->lpVtbl ->put_Filter (This, Criteria)) | 
 | #define Recordset21_get_PageCount(This, pl) ((This)->lpVtbl ->get_PageCount (This, pl)) | 
 | #define Recordset21_get_PageSize(This, pl) ((This)->lpVtbl ->get_PageSize (This, pl)) | 
 | #define Recordset21_put_PageSize(This, PageSize) ((This)->lpVtbl ->put_PageSize (This, PageSize)) | 
 | #define Recordset21_get_Sort(This, Criteria) ((This)->lpVtbl ->get_Sort (This, Criteria)) | 
 | #define Recordset21_put_Sort(This, Criteria) ((This)->lpVtbl ->put_Sort (This, Criteria)) | 
 | #define Recordset21_get_Status(This, pl) ((This)->lpVtbl ->get_Status (This, pl)) | 
 | #define Recordset21_get_State(This, plObjState) ((This)->lpVtbl ->get_State (This, plObjState)) | 
 | #define Recordset21__xClone(This, ppvObject) ((This)->lpVtbl ->_xClone (This, ppvObject)) | 
 | #define Recordset21_UpdateBatch(This, AffectRecords) ((This)->lpVtbl ->UpdateBatch (This, AffectRecords)) | 
 | #define Recordset21_CancelBatch(This, AffectRecords) ((This)->lpVtbl ->CancelBatch (This, AffectRecords)) | 
 | #define Recordset21_get_CursorLocation(This, plCursorLoc) ((This)->lpVtbl ->get_CursorLocation (This, plCursorLoc)) | 
 | #define Recordset21_put_CursorLocation(This, lCursorLoc) ((This)->lpVtbl ->put_CursorLocation (This, lCursorLoc)) | 
 | #define Recordset21_NextRecordset(This, RecordsAffected, ppiRs) ((This)->lpVtbl ->NextRecordset (This, RecordsAffected, ppiRs)) | 
 | #define Recordset21_Supports(This, CursorOptions, pb) ((This)->lpVtbl ->Supports (This, CursorOptions, pb)) | 
 | #define Recordset21_get_Collect(This, Index, pvar) ((This)->lpVtbl ->get_Collect (This, Index, pvar)) | 
 | #define Recordset21_put_Collect(This, Index, value) ((This)->lpVtbl ->put_Collect (This, Index, value)) | 
 | #define Recordset21_get_MarshalOptions(This, peMarshal) ((This)->lpVtbl ->get_MarshalOptions (This, peMarshal)) | 
 | #define Recordset21_put_MarshalOptions(This, eMarshal) ((This)->lpVtbl ->put_MarshalOptions (This, eMarshal)) | 
 | #define Recordset21_Find(This, Criteria, SkipRecords, SearchDirection, Start) ((This)->lpVtbl ->Find (This, Criteria, SkipRecords, SearchDirection, Start)) | 
 | #define Recordset21_Cancel(This) ((This)->lpVtbl ->Cancel (This)) | 
 | #define Recordset21_get_DataSource(This, ppunkDataSource) ((This)->lpVtbl ->get_DataSource (This, ppunkDataSource)) | 
 | #define Recordset21_putref_DataSource(This, punkDataSource) ((This)->lpVtbl ->putref_DataSource (This, punkDataSource)) | 
 | #define Recordset21__xSave(This, FileName, PersistFormat) ((This)->lpVtbl ->_xSave (This, FileName, PersistFormat)) | 
 | #define Recordset21_get_ActiveCommand(This, ppCmd) ((This)->lpVtbl ->get_ActiveCommand (This, ppCmd)) | 
 | #define Recordset21_put_StayInSync(This, bStayInSync) ((This)->lpVtbl ->put_StayInSync (This, bStayInSync)) | 
 | #define Recordset21_get_StayInSync(This, pbStayInSync) ((This)->lpVtbl ->get_StayInSync (This, pbStayInSync)) | 
 | #define Recordset21_GetString(This, StringFormat, NumRows, ColumnDelimeter, RowDelimeter, NullExpr, pRetString) ((This)->lpVtbl ->GetString (This, StringFormat, NumRows, ColumnDelimeter, RowDelimeter, NullExpr, pRetString)) | 
 | #define Recordset21_get_DataMember(This, pbstrDataMember) ((This)->lpVtbl ->get_DataMember (This, pbstrDataMember)) | 
 | #define Recordset21_put_DataMember(This, bstrDataMember) ((This)->lpVtbl ->put_DataMember (This, bstrDataMember)) | 
 | #define Recordset21_CompareBookmarks(This, Bookmark1, Bookmark2, pCompare) ((This)->lpVtbl ->CompareBookmarks (This, Bookmark1, Bookmark2, pCompare)) | 
 | #define Recordset21_Clone(This, LockType, ppvObject) ((This)->lpVtbl ->Clone (This, LockType, ppvObject)) | 
 | #define Recordset21_Resync(This, AffectRecords, ResyncValues) ((This)->lpVtbl ->Resync (This, AffectRecords, ResyncValues)) | 
 | #define Recordset21_Seek(This, KeyValues, SeekOption) ((This)->lpVtbl ->Seek (This, KeyValues, SeekOption)) | 
 | #define Recordset21_put_Index(This, Index) ((This)->lpVtbl ->put_Index (This, Index)) | 
 | #define Recordset21_get_Index(This, pbstrIndex) ((This)->lpVtbl ->get_Index (This, pbstrIndex)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef ___Recordset_INTERFACE_DEFINED__ | 
 | #define ___Recordset_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID__Recordset; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000556-0000-0010-8000-00AA006D2EA4") | 
 |   _ADORecordset : public Recordset21 { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE Save (VARIANT Destination, PersistFormatEnum PersistFormat = adPersistADTG) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct _RecordsetVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (_ADORecordset *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (_ADORecordset *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (_ADORecordset *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (_ADORecordset *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (_ADORecordset *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (_ADORecordset *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (_ADORecordset *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (_ADORecordset *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_AbsolutePosition) (_ADORecordset *This, PositionEnum_Param *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_AbsolutePosition) (_ADORecordset *This, PositionEnum_Param Position); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_ActiveADOConnection) (_ADORecordset *This, IDispatch *pconn); | 
 |     HRESULT (STDMETHODCALLTYPE *put_ActiveConnection) (_ADORecordset *This, VARIANT vConn); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActiveConnection) (_ADORecordset *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_BOF) (_ADORecordset *This, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Bookmark) (_ADORecordset *This, VARIANT *pvBookmark); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Bookmark) (_ADORecordset *This, VARIANT vBookmark); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CacheSize) (_ADORecordset *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CacheSize) (_ADORecordset *This, long CacheSize); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CursorType) (_ADORecordset *This, CursorTypeEnum *plCursorType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CursorType) (_ADORecordset *This, CursorTypeEnum lCursorType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_EOF) (_ADORecordset *This, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Fields) (_ADORecordset *This, ADOFields **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_LockType) (_ADORecordset *This, LockTypeEnum *plLockType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_LockType) (_ADORecordset *This, LockTypeEnum lLockType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_MaxRecords) (_ADORecordset *This, ADO_LONGPTR *plMaxRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *put_MaxRecords) (_ADORecordset *This, ADO_LONGPTR lMaxRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *get_RecordCount) (_ADORecordset *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_Source) (_ADORecordset *This, IDispatch *pcmd); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Source) (_ADORecordset *This, BSTR bstrConn); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Source) (_ADORecordset *This, VARIANT *pvSource); | 
 |     HRESULT (STDMETHODCALLTYPE *AddNew) (_ADORecordset *This, VARIANT FieldList, VARIANT Values); | 
 |     HRESULT (STDMETHODCALLTYPE *CancelUpdate) (_ADORecordset *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Close) (_ADORecordset *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Delete) (_ADORecordset *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *GetRows) (_ADORecordset *This, long Rows, VARIANT Start, VARIANT Fields, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *Move) (_ADORecordset *This, ADO_LONGPTR NumRecords, VARIANT Start); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveNext) (_ADORecordset *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MovePrevious) (_ADORecordset *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveFirst) (_ADORecordset *This); | 
 |     HRESULT (STDMETHODCALLTYPE *MoveLast) (_ADORecordset *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Open) (_ADORecordset *This, VARIANT Source, VARIANT ActiveConnection, CursorTypeEnum CursorType, LockTypeEnum LockType, LONG Options); | 
 |     HRESULT (STDMETHODCALLTYPE *Requery) (_ADORecordset *This, LONG Options); | 
 |     HRESULT (STDMETHODCALLTYPE *_xResync) (_ADORecordset *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *Update) (_ADORecordset *This, VARIANT Fields, VARIANT Values); | 
 |     HRESULT (STDMETHODCALLTYPE *get_AbsolutePage) (_ADORecordset *This, PositionEnum_Param *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_AbsolutePage) (_ADORecordset *This, PositionEnum_Param Page); | 
 |     HRESULT (STDMETHODCALLTYPE *get_EditMode) (_ADORecordset *This, EditModeEnum *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Filter) (_ADORecordset *This, VARIANT *Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Filter) (_ADORecordset *This, VARIANT Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *get_PageCount) (_ADORecordset *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_PageSize) (_ADORecordset *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *put_PageSize) (_ADORecordset *This, long PageSize); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Sort) (_ADORecordset *This, BSTR *Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Sort) (_ADORecordset *This, BSTR Criteria); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Status) (_ADORecordset *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_State) (_ADORecordset *This, LONG *plObjState); | 
 |     HRESULT (STDMETHODCALLTYPE *_xClone) (_ADORecordset *This, _ADORecordset **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *UpdateBatch) (_ADORecordset *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *CancelBatch) (_ADORecordset *This, AffectEnum AffectRecords); | 
 |     HRESULT (STDMETHODCALLTYPE *get_CursorLocation) (_ADORecordset *This, CursorLocationEnum *plCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *put_CursorLocation) (_ADORecordset *This, CursorLocationEnum lCursorLoc); | 
 |     HRESULT (STDMETHODCALLTYPE *NextADORecordset) (_ADORecordset *This, VARIANT *RecordsAffected, _ADORecordset **ppiRs); | 
 |     HRESULT (STDMETHODCALLTYPE *Supports) (_ADORecordset *This, CursorOptionEnum CursorOptions, VARIANT_BOOL *pb); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Collect) (_ADORecordset *This, VARIANT Index, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Collect) (_ADORecordset *This, VARIANT Index, VARIANT value); | 
 |     HRESULT (STDMETHODCALLTYPE *get_MarshalOptions) (_ADORecordset *This, MarshalOptionsEnum *peMarshal); | 
 |     HRESULT (STDMETHODCALLTYPE *put_MarshalOptions) (_ADORecordset *This, MarshalOptionsEnum eMarshal); | 
 |     HRESULT (STDMETHODCALLTYPE *Find) (_ADORecordset *This, BSTR Criteria, ADO_LONGPTR SkipRecords, SearchDirectionEnum SearchDirection, VARIANT Start); | 
 |     HRESULT (STDMETHODCALLTYPE *Cancel) (_ADORecordset *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DataSource) (_ADORecordset *This, IUnknown **ppunkDataSource); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_DataSource) (_ADORecordset *This, IUnknown *punkDataSource); | 
 |     HRESULT (STDMETHODCALLTYPE *_xSave) (_ADORecordset *This, BSTR FileName, PersistFormatEnum PersistFormat); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActiveCommand) (_ADORecordset *This, IDispatch **ppCmd); | 
 |     HRESULT (STDMETHODCALLTYPE *put_StayInSync) (_ADORecordset *This, VARIANT_BOOL bStayInSync); | 
 |     HRESULT (STDMETHODCALLTYPE *get_StayInSync) (_ADORecordset *This, VARIANT_BOOL *pbStayInSync); | 
 |     HRESULT (STDMETHODCALLTYPE *GetString) (_ADORecordset *This, StringFormatEnum StringFormat, long NumRows, BSTR ColumnDelimeter, BSTR RowDelimeter, BSTR NullExpr, BSTR *pRetString); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DataMember) (_ADORecordset *This, BSTR *pbstrDataMember); | 
 |     HRESULT (STDMETHODCALLTYPE *put_DataMember) (_ADORecordset *This, BSTR bstrDataMember); | 
 |     HRESULT (STDMETHODCALLTYPE *CompareBookmarks) (_ADORecordset *This, VARIANT Bookmark1, VARIANT Bookmark2, CompareEnum *pCompare); | 
 |     HRESULT (STDMETHODCALLTYPE *Clone) (_ADORecordset *This, LockTypeEnum LockType, _ADORecordset **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Resync) (_ADORecordset *This, AffectEnum AffectRecords, ResyncEnum ResyncValues); | 
 |     HRESULT (STDMETHODCALLTYPE *Seek) (_ADORecordset *This, VARIANT KeyValues, SeekEnum SeekOption); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Index) (_ADORecordset *This, BSTR Index); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Index) (_ADORecordset *This, BSTR *pbstrIndex); | 
 |     HRESULT (STDMETHODCALLTYPE *Save) (_ADORecordset *This, VARIANT Destination, PersistFormatEnum PersistFormat); | 
 |     END_INTERFACE | 
 |   } _RecordsetVtbl; | 
 |   interface _Recordset { | 
 |     CONST_VTBL struct _RecordsetVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define _Recordset_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define _Recordset_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define _Recordset_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define _Recordset_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define _Recordset_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define _Recordset_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define _Recordset_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define _Recordset_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define _Recordset_get_AbsolutePosition(This, pl) ((This)->lpVtbl ->get_AbsolutePosition (This, pl)) | 
 | #define _Recordset_put_AbsolutePosition(This, Position) ((This)->lpVtbl ->put_AbsolutePosition (This, Position)) | 
 | #define _Recordset_putref_ActiveConnection(This, pconn) ((This)->lpVtbl ->putref_ActiveConnection (This, pconn)) | 
 | #define _Recordset_put_ActiveConnection(This, vConn) ((This)->lpVtbl ->put_ActiveConnection (This, vConn)) | 
 | #define _Recordset_get_ActiveConnection(This, pvar) ((This)->lpVtbl ->get_ActiveConnection (This, pvar)) | 
 | #define _Recordset_get_BOF(This, pb) ((This)->lpVtbl ->get_BOF (This, pb)) | 
 | #define _Recordset_get_Bookmark(This, pvBookmark) ((This)->lpVtbl ->get_Bookmark (This, pvBookmark)) | 
 | #define _Recordset_put_Bookmark(This, vBookmark) ((This)->lpVtbl ->put_Bookmark (This, vBookmark)) | 
 | #define _Recordset_get_CacheSize(This, pl) ((This)->lpVtbl ->get_CacheSize (This, pl)) | 
 | #define _Recordset_put_CacheSize(This, CacheSize) ((This)->lpVtbl ->put_CacheSize (This, CacheSize)) | 
 | #define _Recordset_get_CursorType(This, plCursorType) ((This)->lpVtbl ->get_CursorType (This, plCursorType)) | 
 | #define _Recordset_put_CursorType(This, lCursorType) ((This)->lpVtbl ->put_CursorType (This, lCursorType)) | 
 | #define _Recordset_get_EOF(This, pb) ((This)->lpVtbl ->get_EOF (This, pb)) | 
 | #define _Recordset_get_Fields(This, ppvObject) ((This)->lpVtbl ->get_Fields (This, ppvObject)) | 
 | #define _Recordset_get_LockType(This, plLockType) ((This)->lpVtbl ->get_LockType (This, plLockType)) | 
 | #define _Recordset_put_LockType(This, lLockType) ((This)->lpVtbl ->put_LockType (This, lLockType)) | 
 | #define _Recordset_get_MaxRecords(This, plMaxRecords) ((This)->lpVtbl ->get_MaxRecords (This, plMaxRecords)) | 
 | #define _Recordset_put_MaxRecords(This, lMaxRecords) ((This)->lpVtbl ->put_MaxRecords (This, lMaxRecords)) | 
 | #define _Recordset_get_RecordCount(This, pl) ((This)->lpVtbl ->get_RecordCount (This, pl)) | 
 | #define _Recordset_putref_Source(This, pcmd) ((This)->lpVtbl ->putref_Source (This, pcmd)) | 
 | #define _Recordset_put_Source(This, bstrConn) ((This)->lpVtbl ->put_Source (This, bstrConn)) | 
 | #define _Recordset_get_Source(This, pvSource) ((This)->lpVtbl ->get_Source (This, pvSource)) | 
 | #define _Recordset_AddNew(This, FieldList, Values) ((This)->lpVtbl ->AddNew (This, FieldList, Values)) | 
 | #define _Recordset_CancelUpdate(This) ((This)->lpVtbl ->CancelUpdate (This)) | 
 | #define _Recordset_Close(This) ((This)->lpVtbl ->Close (This)) | 
 | #define _Recordset_Delete(This, AffectRecords) ((This)->lpVtbl ->Delete (This, AffectRecords)) | 
 | #define _Recordset_GetRows(This, Rows, Start, Fields, pvar) ((This)->lpVtbl ->GetRows (This, Rows, Start, Fields, pvar)) | 
 | #define _Recordset_Move(This, NumRecords, Start) ((This)->lpVtbl ->Move (This, NumRecords, Start)) | 
 | #define _Recordset_MoveNext(This) ((This)->lpVtbl ->MoveNext (This)) | 
 | #define _Recordset_MovePrevious(This) ((This)->lpVtbl ->MovePrevious (This)) | 
 | #define _Recordset_MoveFirst(This) ((This)->lpVtbl ->MoveFirst (This)) | 
 | #define _Recordset_MoveLast(This) ((This)->lpVtbl ->MoveLast (This)) | 
 | #define _Recordset_Open(This, Source, ActiveConnection, CursorType, LockType, Options) ((This)->lpVtbl ->Open (This, Source, ActiveConnection, CursorType, LockType, Options)) | 
 | #define _Recordset_Requery(This, Options) ((This)->lpVtbl ->Requery (This, Options)) | 
 | #define _Recordset__xResync(This, AffectRecords) ((This)->lpVtbl ->_xResync (This, AffectRecords)) | 
 | #define _Recordset_Update(This, Fields, Values) ((This)->lpVtbl ->Update (This, Fields, Values)) | 
 | #define _Recordset_get_AbsolutePage(This, pl) ((This)->lpVtbl ->get_AbsolutePage (This, pl)) | 
 | #define _Recordset_put_AbsolutePage(This, Page) ((This)->lpVtbl ->put_AbsolutePage (This, Page)) | 
 | #define _Recordset_get_EditMode(This, pl) ((This)->lpVtbl ->get_EditMode (This, pl)) | 
 | #define _Recordset_get_Filter(This, Criteria) ((This)->lpVtbl ->get_Filter (This, Criteria)) | 
 | #define _Recordset_put_Filter(This, Criteria) ((This)->lpVtbl ->put_Filter (This, Criteria)) | 
 | #define _Recordset_get_PageCount(This, pl) ((This)->lpVtbl ->get_PageCount (This, pl)) | 
 | #define _Recordset_get_PageSize(This, pl) ((This)->lpVtbl ->get_PageSize (This, pl)) | 
 | #define _Recordset_put_PageSize(This, PageSize) ((This)->lpVtbl ->put_PageSize (This, PageSize)) | 
 | #define _Recordset_get_Sort(This, Criteria) ((This)->lpVtbl ->get_Sort (This, Criteria)) | 
 | #define _Recordset_put_Sort(This, Criteria) ((This)->lpVtbl ->put_Sort (This, Criteria)) | 
 | #define _Recordset_get_Status(This, pl) ((This)->lpVtbl ->get_Status (This, pl)) | 
 | #define _Recordset_get_State(This, plObjState) ((This)->lpVtbl ->get_State (This, plObjState)) | 
 | #define _Recordset__xClone(This, ppvObject) ((This)->lpVtbl ->_xClone (This, ppvObject)) | 
 | #define _Recordset_UpdateBatch(This, AffectRecords) ((This)->lpVtbl ->UpdateBatch (This, AffectRecords)) | 
 | #define _Recordset_CancelBatch(This, AffectRecords) ((This)->lpVtbl ->CancelBatch (This, AffectRecords)) | 
 | #define _Recordset_get_CursorLocation(This, plCursorLoc) ((This)->lpVtbl ->get_CursorLocation (This, plCursorLoc)) | 
 | #define _Recordset_put_CursorLocation(This, lCursorLoc) ((This)->lpVtbl ->put_CursorLocation (This, lCursorLoc)) | 
 | #define _Recordset_NextRecordset(This, RecordsAffected, ppiRs) ((This)->lpVtbl ->NextRecordset (This, RecordsAffected, ppiRs)) | 
 | #define _Recordset_Supports(This, CursorOptions, pb) ((This)->lpVtbl ->Supports (This, CursorOptions, pb)) | 
 | #define _Recordset_get_Collect(This, Index, pvar) ((This)->lpVtbl ->get_Collect (This, Index, pvar)) | 
 | #define _Recordset_put_Collect(This, Index, value) ((This)->lpVtbl ->put_Collect (This, Index, value)) | 
 | #define _Recordset_get_MarshalOptions(This, peMarshal) ((This)->lpVtbl ->get_MarshalOptions (This, peMarshal)) | 
 | #define _Recordset_put_MarshalOptions(This, eMarshal) ((This)->lpVtbl ->put_MarshalOptions (This, eMarshal)) | 
 | #define _Recordset_Find(This, Criteria, SkipRecords, SearchDirection, Start) ((This)->lpVtbl ->Find (This, Criteria, SkipRecords, SearchDirection, Start)) | 
 | #define _Recordset_Cancel(This) ((This)->lpVtbl ->Cancel (This)) | 
 | #define _Recordset_get_DataSource(This, ppunkDataSource) ((This)->lpVtbl ->get_DataSource (This, ppunkDataSource)) | 
 | #define _Recordset_putref_DataSource(This, punkDataSource) ((This)->lpVtbl ->putref_DataSource (This, punkDataSource)) | 
 | #define _Recordset__xSave(This, FileName, PersistFormat) ((This)->lpVtbl ->_xSave (This, FileName, PersistFormat)) | 
 | #define _Recordset_get_ActiveCommand(This, ppCmd) ((This)->lpVtbl ->get_ActiveCommand (This, ppCmd)) | 
 | #define _Recordset_put_StayInSync(This, bStayInSync) ((This)->lpVtbl ->put_StayInSync (This, bStayInSync)) | 
 | #define _Recordset_get_StayInSync(This, pbStayInSync) ((This)->lpVtbl ->get_StayInSync (This, pbStayInSync)) | 
 | #define _Recordset_GetString(This, StringFormat, NumRows, ColumnDelimeter, RowDelimeter, NullExpr, pRetString) ((This)->lpVtbl ->GetString (This, StringFormat, NumRows, ColumnDelimeter, RowDelimeter, NullExpr, pRetString)) | 
 | #define _Recordset_get_DataMember(This, pbstrDataMember) ((This)->lpVtbl ->get_DataMember (This, pbstrDataMember)) | 
 | #define _Recordset_put_DataMember(This, bstrDataMember) ((This)->lpVtbl ->put_DataMember (This, bstrDataMember)) | 
 | #define _Recordset_CompareBookmarks(This, Bookmark1, Bookmark2, pCompare) ((This)->lpVtbl ->CompareBookmarks (This, Bookmark1, Bookmark2, pCompare)) | 
 | #define _Recordset_Clone(This, LockType, ppvObject) ((This)->lpVtbl ->Clone (This, LockType, ppvObject)) | 
 | #define _Recordset_Resync(This, AffectRecords, ResyncValues) ((This)->lpVtbl ->Resync (This, AffectRecords, ResyncValues)) | 
 | #define _Recordset_Seek(This, KeyValues, SeekOption) ((This)->lpVtbl ->Seek (This, KeyValues, SeekOption)) | 
 | #define _Recordset_put_Index(This, Index) ((This)->lpVtbl ->put_Index (This, Index)) | 
 | #define _Recordset_get_Index(This, pbstrIndex) ((This)->lpVtbl ->get_Index (This, pbstrIndex)) | 
 | #define _Recordset_Save(This, Destination, PersistFormat) ((This)->lpVtbl ->Save (This, Destination, PersistFormat)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __ADORecordsetConstruction_INTERFACE_DEFINED__ | 
 | #define __ADORecordsetConstruction_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_ADORecordsetConstruction; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000283-0000-0010-8000-00AA006D2EA4") | 
 |   ADORecordsetConstruction : public IDispatch { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Rowset (IUnknown **ppRowset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Rowset (IUnknown *pRowset) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Chapter (ADO_LONGPTR *plChapter) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Chapter (ADO_LONGPTR lChapter) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_RowPosition (IUnknown **ppRowPos) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_RowPosition (IUnknown *pRowPos) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct ADORecordsetConstructionVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADORecordsetConstruction *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADORecordsetConstruction *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADORecordsetConstruction *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (ADORecordsetConstruction *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (ADORecordsetConstruction *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (ADORecordsetConstruction *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (ADORecordsetConstruction *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Rowset) (ADORecordsetConstruction *This, IUnknown **ppRowset); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Rowset) (ADORecordsetConstruction *This, IUnknown *pRowset); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Chapter) (ADORecordsetConstruction *This, ADO_LONGPTR *plChapter); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Chapter) (ADORecordsetConstruction *This, ADO_LONGPTR lChapter); | 
 |     HRESULT (STDMETHODCALLTYPE *get_RowPosition) (ADORecordsetConstruction *This, IUnknown **ppRowPos); | 
 |     HRESULT (STDMETHODCALLTYPE *put_RowPosition) (ADORecordsetConstruction *This, IUnknown *pRowPos); | 
 |     END_INTERFACE | 
 |   } ADORecordsetConstructionVtbl; | 
 |   interface ADORecordsetConstruction { | 
 |     CONST_VTBL struct ADORecordsetConstructionVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define ADORecordsetConstruction_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define ADORecordsetConstruction_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define ADORecordsetConstruction_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define ADORecordsetConstruction_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define ADORecordsetConstruction_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define ADORecordsetConstruction_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define ADORecordsetConstruction_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define ADORecordsetConstruction_get_Rowset(This, ppRowset) ((This)->lpVtbl ->get_Rowset (This, ppRowset)) | 
 | #define ADORecordsetConstruction_put_Rowset(This, pRowset) ((This)->lpVtbl ->put_Rowset (This, pRowset)) | 
 | #define ADORecordsetConstruction_get_Chapter(This, plChapter) ((This)->lpVtbl ->get_Chapter (This, plChapter)) | 
 | #define ADORecordsetConstruction_put_Chapter(This, lChapter) ((This)->lpVtbl ->put_Chapter (This, lChapter)) | 
 | #define ADORecordsetConstruction_get_RowPosition(This, ppRowPos) ((This)->lpVtbl ->get_RowPosition (This, ppRowPos)) | 
 | #define ADORecordsetConstruction_put_RowPosition(This, pRowPos) ((This)->lpVtbl ->put_RowPosition (This, pRowPos)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Field15_INTERFACE_DEFINED__ | 
 | #define __Field15_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Field15; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000505-0000-0010-8000-00AA006D2EA4") | 
 |   Field15 : public _ADO { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_ActualSize (ADO_LONGPTR *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Attributes (long *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_DefinedSize (ADO_LONGPTR *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Name (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Type (DataTypeEnum *pDataType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Value (VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Value (VARIANT Val) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Precision (BYTE *pbPrecision) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_NumericScale (BYTE *pbNumericScale) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE AppendChunk (VARIANT Data) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE GetChunk (long Length, VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_OriginalValue (VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_UnderlyingValue (VARIANT *pvar) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct Field15Vtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (Field15 *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (Field15 *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (Field15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (Field15 *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (Field15 *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (Field15 *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (Field15 *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (Field15 *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActualSize) (Field15 *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Attributes) (Field15 *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DefinedSize) (Field15 *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Name) (Field15 *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Type) (Field15 *This, DataTypeEnum *pDataType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Value) (Field15 *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Value) (Field15 *This, VARIANT Val); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Precision) (Field15 *This, BYTE *pbPrecision); | 
 |     HRESULT (STDMETHODCALLTYPE *get_NumericScale) (Field15 *This, BYTE *pbNumericScale); | 
 |     HRESULT (STDMETHODCALLTYPE *AppendChunk) (Field15 *This, VARIANT Data); | 
 |     HRESULT (STDMETHODCALLTYPE *GetChunk) (Field15 *This, long Length, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_OriginalValue) (Field15 *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_UnderlyingValue) (Field15 *This, VARIANT *pvar); | 
 |     END_INTERFACE | 
 |   } Field15Vtbl; | 
 |   interface Field15 { | 
 |     CONST_VTBL struct Field15Vtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Field15_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Field15_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Field15_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Field15_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Field15_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Field15_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Field15_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Field15_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define Field15_get_ActualSize(This, pl) ((This)->lpVtbl ->get_ActualSize (This, pl)) | 
 | #define Field15_get_Attributes(This, pl) ((This)->lpVtbl ->get_Attributes (This, pl)) | 
 | #define Field15_get_DefinedSize(This, pl) ((This)->lpVtbl ->get_DefinedSize (This, pl)) | 
 | #define Field15_get_Name(This, pbstr) ((This)->lpVtbl ->get_Name (This, pbstr)) | 
 | #define Field15_get_Type(This, pDataType) ((This)->lpVtbl ->get_Type (This, pDataType)) | 
 | #define Field15_get_Value(This, pvar) ((This)->lpVtbl ->get_Value (This, pvar)) | 
 | #define Field15_put_Value(This, Val) ((This)->lpVtbl ->put_Value (This, Val)) | 
 | #define Field15_get_Precision(This, pbPrecision) ((This)->lpVtbl ->get_Precision (This, pbPrecision)) | 
 | #define Field15_get_NumericScale(This, pbNumericScale) ((This)->lpVtbl ->get_NumericScale (This, pbNumericScale)) | 
 | #define Field15_AppendChunk(This, Data) ((This)->lpVtbl ->AppendChunk (This, Data)) | 
 | #define Field15_GetChunk(This, Length, pvar) ((This)->lpVtbl ->GetChunk (This, Length, pvar)) | 
 | #define Field15_get_OriginalValue(This, pvar) ((This)->lpVtbl ->get_OriginalValue (This, pvar)) | 
 | #define Field15_get_UnderlyingValue(This, pvar) ((This)->lpVtbl ->get_UnderlyingValue (This, pvar)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Field20_INTERFACE_DEFINED__ | 
 | #define __Field20_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Field20; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("0000054C-0000-0010-8000-00AA006D2EA4") | 
 |   Field20 : public _ADO { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_ActualSize (ADO_LONGPTR *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Attributes (long *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_DefinedSize (ADO_LONGPTR *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Name (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Type (DataTypeEnum *pDataType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Value (VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Value (VARIANT Val) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Precision (BYTE *pbPrecision) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_NumericScale (BYTE *pbNumericScale) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE AppendChunk (VARIANT Data) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE GetChunk (long Length, VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_OriginalValue (VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_UnderlyingValue (VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_DataFormat (IUnknown **ppiDF) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE putref_DataFormat (IUnknown *piDF) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Precision (BYTE bPrecision) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_NumericScale (BYTE bScale) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Type (DataTypeEnum DataType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_DefinedSize (ADO_LONGPTR lSize) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Attributes (long lAttributes) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct Field20Vtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (Field20 *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (Field20 *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (Field20 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (Field20 *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (Field20 *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (Field20 *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (Field20 *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (Field20 *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActualSize) (Field20 *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Attributes) (Field20 *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DefinedSize) (Field20 *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Name) (Field20 *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Type) (Field20 *This, DataTypeEnum *pDataType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Value) (Field20 *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Value) (Field20 *This, VARIANT Val); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Precision) (Field20 *This, BYTE *pbPrecision); | 
 |     HRESULT (STDMETHODCALLTYPE *get_NumericScale) (Field20 *This, BYTE *pbNumericScale); | 
 |     HRESULT (STDMETHODCALLTYPE *AppendChunk) (Field20 *This, VARIANT Data); | 
 |     HRESULT (STDMETHODCALLTYPE *GetChunk) (Field20 *This, long Length, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_OriginalValue) (Field20 *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_UnderlyingValue) (Field20 *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DataFormat) (Field20 *This, IUnknown **ppiDF); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_DataFormat) (Field20 *This, IUnknown *piDF); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Precision) (Field20 *This, BYTE bPrecision); | 
 |     HRESULT (STDMETHODCALLTYPE *put_NumericScale) (Field20 *This, BYTE bScale); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Type) (Field20 *This, DataTypeEnum DataType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_DefinedSize) (Field20 *This, ADO_LONGPTR lSize); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Attributes) (Field20 *This, long lAttributes); | 
 |     END_INTERFACE | 
 |   } Field20Vtbl; | 
 |   interface Field20 { | 
 |     CONST_VTBL struct Field20Vtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Field20_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Field20_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Field20_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Field20_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Field20_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Field20_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Field20_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Field20_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define Field20_get_ActualSize(This, pl) ((This)->lpVtbl ->get_ActualSize (This, pl)) | 
 | #define Field20_get_Attributes(This, pl) ((This)->lpVtbl ->get_Attributes (This, pl)) | 
 | #define Field20_get_DefinedSize(This, pl) ((This)->lpVtbl ->get_DefinedSize (This, pl)) | 
 | #define Field20_get_Name(This, pbstr) ((This)->lpVtbl ->get_Name (This, pbstr)) | 
 | #define Field20_get_Type(This, pDataType) ((This)->lpVtbl ->get_Type (This, pDataType)) | 
 | #define Field20_get_Value(This, pvar) ((This)->lpVtbl ->get_Value (This, pvar)) | 
 | #define Field20_put_Value(This, Val) ((This)->lpVtbl ->put_Value (This, Val)) | 
 | #define Field20_get_Precision(This, pbPrecision) ((This)->lpVtbl ->get_Precision (This, pbPrecision)) | 
 | #define Field20_get_NumericScale(This, pbNumericScale) ((This)->lpVtbl ->get_NumericScale (This, pbNumericScale)) | 
 | #define Field20_AppendChunk(This, Data) ((This)->lpVtbl ->AppendChunk (This, Data)) | 
 | #define Field20_GetChunk(This, Length, pvar) ((This)->lpVtbl ->GetChunk (This, Length, pvar)) | 
 | #define Field20_get_OriginalValue(This, pvar) ((This)->lpVtbl ->get_OriginalValue (This, pvar)) | 
 | #define Field20_get_UnderlyingValue(This, pvar) ((This)->lpVtbl ->get_UnderlyingValue (This, pvar)) | 
 | #define Field20_get_DataFormat(This, ppiDF) ((This)->lpVtbl ->get_DataFormat (This, ppiDF)) | 
 | #define Field20_putref_DataFormat(This, piDF) ((This)->lpVtbl ->putref_DataFormat (This, piDF)) | 
 | #define Field20_put_Precision(This, bPrecision) ((This)->lpVtbl ->put_Precision (This, bPrecision)) | 
 | #define Field20_put_NumericScale(This, bScale) ((This)->lpVtbl ->put_NumericScale (This, bScale)) | 
 | #define Field20_put_Type(This, DataType) ((This)->lpVtbl ->put_Type (This, DataType)) | 
 | #define Field20_put_DefinedSize(This, lSize) ((This)->lpVtbl ->put_DefinedSize (This, lSize)) | 
 | #define Field20_put_Attributes(This, lAttributes) ((This)->lpVtbl ->put_Attributes (This, lAttributes)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Field_INTERFACE_DEFINED__ | 
 | #define __Field_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Field; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000569-0000-0010-8000-00AA006D2EA4") | 
 |   ADOField : public Field20 { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Status (long *pFStatus) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct FieldVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADOField *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADOField *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADOField *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (ADOField *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (ADOField *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (ADOField *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (ADOField *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (ADOField *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_ActualSize) (ADOField *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Attributes) (ADOField *This, long *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DefinedSize) (ADOField *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Name) (ADOField *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Type) (ADOField *This, DataTypeEnum *pDataType); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Value) (ADOField *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Value) (ADOField *This, VARIANT Val); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Precision) (ADOField *This, BYTE *pbPrecision); | 
 |     HRESULT (STDMETHODCALLTYPE *get_NumericScale) (ADOField *This, BYTE *pbNumericScale); | 
 |     HRESULT (STDMETHODCALLTYPE *AppendChunk) (ADOField *This, VARIANT Data); | 
 |     HRESULT (STDMETHODCALLTYPE *GetChunk) (ADOField *This, long Length, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_OriginalValue) (ADOField *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_UnderlyingValue) (ADOField *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *get_DataFormat) (ADOField *This, IUnknown **ppiDF); | 
 |     HRESULT (STDMETHODCALLTYPE *putref_DataFormat) (ADOField *This, IUnknown *piDF); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Precision) (ADOField *This, BYTE bPrecision); | 
 |     HRESULT (STDMETHODCALLTYPE *put_NumericScale) (ADOField *This, BYTE bScale); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Type) (ADOField *This, DataTypeEnum DataType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_DefinedSize) (ADOField *This, ADO_LONGPTR lSize); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Attributes) (ADOField *This, long lAttributes); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Status) (ADOField *This, long *pFStatus); | 
 |     END_INTERFACE | 
 |   } FieldVtbl; | 
 |   interface Field { | 
 |     CONST_VTBL struct FieldVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Field_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Field_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Field_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Field_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Field_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Field_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Field_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Field_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define Field_get_ActualSize(This, pl) ((This)->lpVtbl ->get_ActualSize (This, pl)) | 
 | #define Field_get_Attributes(This, pl) ((This)->lpVtbl ->get_Attributes (This, pl)) | 
 | #define Field_get_DefinedSize(This, pl) ((This)->lpVtbl ->get_DefinedSize (This, pl)) | 
 | #define Field_get_Name(This, pbstr) ((This)->lpVtbl ->get_Name (This, pbstr)) | 
 | #define Field_get_Type(This, pDataType) ((This)->lpVtbl ->get_Type (This, pDataType)) | 
 | #define Field_get_Value(This, pvar) ((This)->lpVtbl ->get_Value (This, pvar)) | 
 | #define Field_put_Value(This, Val) ((This)->lpVtbl ->put_Value (This, Val)) | 
 | #define Field_get_Precision(This, pbPrecision) ((This)->lpVtbl ->get_Precision (This, pbPrecision)) | 
 | #define Field_get_NumericScale(This, pbNumericScale) ((This)->lpVtbl ->get_NumericScale (This, pbNumericScale)) | 
 | #define Field_AppendChunk(This, Data) ((This)->lpVtbl ->AppendChunk (This, Data)) | 
 | #define Field_GetChunk(This, Length, pvar) ((This)->lpVtbl ->GetChunk (This, Length, pvar)) | 
 | #define Field_get_OriginalValue(This, pvar) ((This)->lpVtbl ->get_OriginalValue (This, pvar)) | 
 | #define Field_get_UnderlyingValue(This, pvar) ((This)->lpVtbl ->get_UnderlyingValue (This, pvar)) | 
 | #define Field_get_DataFormat(This, ppiDF) ((This)->lpVtbl ->get_DataFormat (This, ppiDF)) | 
 | #define Field_putref_DataFormat(This, piDF) ((This)->lpVtbl ->putref_DataFormat (This, piDF)) | 
 | #define Field_put_Precision(This, bPrecision) ((This)->lpVtbl ->put_Precision (This, bPrecision)) | 
 | #define Field_put_NumericScale(This, bScale) ((This)->lpVtbl ->put_NumericScale (This, bScale)) | 
 | #define Field_put_Type(This, DataType) ((This)->lpVtbl ->put_Type (This, DataType)) | 
 | #define Field_put_DefinedSize(This, lSize) ((This)->lpVtbl ->put_DefinedSize (This, lSize)) | 
 | #define Field_put_Attributes(This, lAttributes) ((This)->lpVtbl ->put_Attributes (This, lAttributes)) | 
 | #define Field_get_Status(This, pFStatus) ((This)->lpVtbl ->get_Status (This, pFStatus)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Fields15_INTERFACE_DEFINED__ | 
 | #define __Fields15_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Fields15; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000506-0000-0010-8000-00AA006D2EA4") | 
 |   Fields15 : public _ADOCollection { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Item (VARIANT Index, ADOField **ppvObject) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct Fields15Vtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (Fields15 *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (Fields15 *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (Fields15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (Fields15 *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (Fields15 *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (Fields15 *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (Fields15 *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Count) (Fields15 *This, long *c); | 
 |     HRESULT (STDMETHODCALLTYPE *_NewEnum) (Fields15 *This, IUnknown **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Refresh) (Fields15 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Item) (Fields15 *This, VARIANT Index, ADOField **ppvObject); | 
 |     END_INTERFACE | 
 |   } Fields15Vtbl; | 
 |   interface Fields15 { | 
 |     CONST_VTBL struct Fields15Vtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Fields15_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Fields15_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Fields15_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Fields15_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Fields15_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Fields15_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Fields15_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Fields15_get_Count(This, c) ((This)->lpVtbl ->get_Count (This, c)) | 
 | #define Fields15__NewEnum(This, ppvObject) ((This)->lpVtbl ->_NewEnum (This, ppvObject)) | 
 | #define Fields15_Refresh(This) ((This)->lpVtbl ->Refresh (This)) | 
 | #define Fields15_get_Item(This, Index, ppvObject) ((This)->lpVtbl ->get_Item (This, Index, ppvObject)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Fields20_INTERFACE_DEFINED__ | 
 | #define __Fields20_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Fields20; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("0000054D-0000-0010-8000-00AA006D2EA4") | 
 |   Fields20 : public Fields15 { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE _Append (BSTR Name, DataTypeEnum Type, ADO_LONGPTR DefinedSize = 0, FieldAttributeEnum Attrib = adFldUnspecified) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Delete (VARIANT Index) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct Fields20Vtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (Fields20 *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (Fields20 *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (Fields20 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (Fields20 *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (Fields20 *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (Fields20 *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (Fields20 *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Count) (Fields20 *This, long *c); | 
 |     HRESULT (STDMETHODCALLTYPE *_NewEnum) (Fields20 *This, IUnknown **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Refresh) (Fields20 *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Item) (Fields20 *This, VARIANT Index, ADOField **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *_Append) (Fields20 *This, BSTR Name, DataTypeEnum Type, ADO_LONGPTR DefinedSize, FieldAttributeEnum Attrib); | 
 |     HRESULT (STDMETHODCALLTYPE *Delete) (Fields20 *This, VARIANT Index); | 
 |     END_INTERFACE | 
 |   } Fields20Vtbl; | 
 |   interface Fields20 { | 
 |     CONST_VTBL struct Fields20Vtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Fields20_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Fields20_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Fields20_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Fields20_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Fields20_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Fields20_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Fields20_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Fields20_get_Count(This, c) ((This)->lpVtbl ->get_Count (This, c)) | 
 | #define Fields20__NewEnum(This, ppvObject) ((This)->lpVtbl ->_NewEnum (This, ppvObject)) | 
 | #define Fields20_Refresh(This) ((This)->lpVtbl ->Refresh (This)) | 
 | #define Fields20_get_Item(This, Index, ppvObject) ((This)->lpVtbl ->get_Item (This, Index, ppvObject)) | 
 | #define Fields20__Append(This, Name, Type, DefinedSize, Attrib) ((This)->lpVtbl ->_Append (This, Name, Type, DefinedSize, Attrib)) | 
 | #define Fields20_Delete(This, Index) ((This)->lpVtbl ->Delete (This, Index)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Fields_INTERFACE_DEFINED__ | 
 | #define __Fields_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Fields; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000564-0000-0010-8000-00AA006D2EA4") | 
 |   ADOFields : public Fields20 { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE Append (BSTR Name, DataTypeEnum Type, ADO_LONGPTR DefinedSize, FieldAttributeEnum Attrib, VARIANT FieldValue) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Update (void) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE Resync (ResyncEnum ResyncValues = adResyncAllValues) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE CancelUpdate (void) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct FieldsVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADOFields *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADOFields *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADOFields *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (ADOFields *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (ADOFields *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (ADOFields *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (ADOFields *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Count) (ADOFields *This, long *c); | 
 |     HRESULT (STDMETHODCALLTYPE *_NewEnum) (ADOFields *This, IUnknown **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Refresh) (ADOFields *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Item) (ADOFields *This, VARIANT Index, ADOField **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *_Append) (ADOFields *This, BSTR Name, DataTypeEnum Type, ADO_LONGPTR DefinedSize, FieldAttributeEnum Attrib); | 
 |     HRESULT (STDMETHODCALLTYPE *Delete) (ADOFields *This, VARIANT Index); | 
 |     HRESULT (STDMETHODCALLTYPE *Append) (ADOFields *This, BSTR Name, DataTypeEnum Type, ADO_LONGPTR DefinedSize, FieldAttributeEnum Attrib, VARIANT FieldValue); | 
 |     HRESULT (STDMETHODCALLTYPE *Update) (ADOFields *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Resync) (ADOFields *This, ResyncEnum ResyncValues); | 
 |     HRESULT (STDMETHODCALLTYPE *CancelUpdate) (ADOFields *This); | 
 |     END_INTERFACE | 
 |   } FieldsVtbl; | 
 |   interface Fields { | 
 |     CONST_VTBL struct FieldsVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Fields_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Fields_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Fields_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Fields_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Fields_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Fields_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Fields_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Fields_get_Count(This, c) ((This)->lpVtbl ->get_Count (This, c)) | 
 | #define Fields__NewEnum(This, ppvObject) ((This)->lpVtbl ->_NewEnum (This, ppvObject)) | 
 | #define Fields_Refresh(This) ((This)->lpVtbl ->Refresh (This)) | 
 | #define Fields_get_Item(This, Index, ppvObject) ((This)->lpVtbl ->get_Item (This, Index, ppvObject)) | 
 | #define Fields__Append(This, Name, Type, DefinedSize, Attrib) ((This)->lpVtbl ->_Append (This, Name, Type, DefinedSize, Attrib)) | 
 | #define Fields_Delete(This, Index) ((This)->lpVtbl ->Delete (This, Index)) | 
 | #define Fields_Append(This, Name, Type, DefinedSize, Attrib, FieldValue) ((This)->lpVtbl ->Append (This, Name, Type, DefinedSize, Attrib, FieldValue)) | 
 | #define Fields_Update(This) ((This)->lpVtbl ->Update (This)) | 
 | #define Fields_Resync(This, ResyncValues) ((This)->lpVtbl ->Resync (This, ResyncValues)) | 
 | #define Fields_CancelUpdate(This) ((This)->lpVtbl ->CancelUpdate (This)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef ___Parameter_INTERFACE_DEFINED__ | 
 | #define ___Parameter_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID__Parameter; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("0000050C-0000-0010-8000-00AA006D2EA4") | 
 |   _ADOParameter : public _ADO { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Name (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Name (BSTR bstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Value (VARIANT *pvar) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Value (VARIANT val) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Type (DataTypeEnum *psDataType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Type (DataTypeEnum sDataType) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Direction (ParameterDirectionEnum lParmDirection) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Direction (ParameterDirectionEnum *plParmDirection) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Precision (BYTE bPrecision) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Precision (BYTE *pbPrecision) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_NumericScale (BYTE bScale) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_NumericScale (BYTE *pbScale) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Size (ADO_LONGPTR l) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Size (ADO_LONGPTR *pl) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE AppendChunk (VARIANT Val) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Attributes (LONG *plParmAttribs) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Attributes (LONG lParmAttribs) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct _ParameterVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (_ADOParameter *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (_ADOParameter *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (_ADOParameter *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (_ADOParameter *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (_ADOParameter *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (_ADOParameter *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (_ADOParameter *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Properties) (_ADOParameter *This, ADOProperties **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Name) (_ADOParameter *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Name) (_ADOParameter *This, BSTR bstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Value) (_ADOParameter *This, VARIANT *pvar); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Value) (_ADOParameter *This, VARIANT val); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Type) (_ADOParameter *This, DataTypeEnum *psDataType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Type) (_ADOParameter *This, DataTypeEnum sDataType); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Direction) (_ADOParameter *This, ParameterDirectionEnum lParmDirection); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Direction) (_ADOParameter *This, ParameterDirectionEnum *plParmDirection); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Precision) (_ADOParameter *This, BYTE bPrecision); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Precision) (_ADOParameter *This, BYTE *pbPrecision); | 
 |     HRESULT (STDMETHODCALLTYPE *put_NumericScale) (_ADOParameter *This, BYTE bScale); | 
 |     HRESULT (STDMETHODCALLTYPE *get_NumericScale) (_ADOParameter *This, BYTE *pbScale); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Size) (_ADOParameter *This, ADO_LONGPTR l); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Size) (_ADOParameter *This, ADO_LONGPTR *pl); | 
 |     HRESULT (STDMETHODCALLTYPE *AppendChunk) (_ADOParameter *This, VARIANT Val); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Attributes) (_ADOParameter *This, LONG *plParmAttribs); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Attributes) (_ADOParameter *This, LONG lParmAttribs); | 
 |     END_INTERFACE | 
 |   } _ParameterVtbl; | 
 |   interface _Parameter { | 
 |     CONST_VTBL struct _ParameterVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define _Parameter_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define _Parameter_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define _Parameter_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define _Parameter_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define _Parameter_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define _Parameter_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define _Parameter_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define _Parameter_get_Properties(This, ppvObject) ((This)->lpVtbl ->get_Properties (This, ppvObject)) | 
 | #define _Parameter_get_Name(This, pbstr) ((This)->lpVtbl ->get_Name (This, pbstr)) | 
 | #define _Parameter_put_Name(This, bstr) ((This)->lpVtbl ->put_Name (This, bstr)) | 
 | #define _Parameter_get_Value(This, pvar) ((This)->lpVtbl ->get_Value (This, pvar)) | 
 | #define _Parameter_put_Value(This, val) ((This)->lpVtbl ->put_Value (This, val)) | 
 | #define _Parameter_get_Type(This, psDataType) ((This)->lpVtbl ->get_Type (This, psDataType)) | 
 | #define _Parameter_put_Type(This, sDataType) ((This)->lpVtbl ->put_Type (This, sDataType)) | 
 | #define _Parameter_put_Direction(This, lParmDirection) ((This)->lpVtbl ->put_Direction (This, lParmDirection)) | 
 | #define _Parameter_get_Direction(This, plParmDirection) ((This)->lpVtbl ->get_Direction (This, plParmDirection)) | 
 | #define _Parameter_put_Precision(This, bPrecision) ((This)->lpVtbl ->put_Precision (This, bPrecision)) | 
 | #define _Parameter_get_Precision(This, pbPrecision) ((This)->lpVtbl ->get_Precision (This, pbPrecision)) | 
 | #define _Parameter_put_NumericScale(This, bScale) ((This)->lpVtbl ->put_NumericScale (This, bScale)) | 
 | #define _Parameter_get_NumericScale(This, pbScale) ((This)->lpVtbl ->get_NumericScale (This, pbScale)) | 
 | #define _Parameter_put_Size(This, l) ((This)->lpVtbl ->put_Size (This, l)) | 
 | #define _Parameter_get_Size(This, pl) ((This)->lpVtbl ->get_Size (This, pl)) | 
 | #define _Parameter_AppendChunk(This, Val) ((This)->lpVtbl ->AppendChunk (This, Val)) | 
 | #define _Parameter_get_Attributes(This, plParmAttribs) ((This)->lpVtbl ->get_Attributes (This, plParmAttribs)) | 
 | #define _Parameter_put_Attributes(This, lParmAttribs) ((This)->lpVtbl ->put_Attributes (This, lParmAttribs)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 |   EXTERN_C const CLSID CLSID_Parameter; | 
 | #ifdef __cplusplus | 
 |   Parameter; | 
 | #endif | 
 | #ifndef __Parameters_INTERFACE_DEFINED__ | 
 | #define __Parameters_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Parameters; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("0000050D-0000-0010-8000-00AA006D2EA4") | 
 |   ADOParameters : public _ADODynaCollection { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Item (VARIANT Index, _ADOParameter **ppvObject) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct ParametersVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADOParameters *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADOParameters *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADOParameters *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (ADOParameters *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (ADOParameters *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (ADOParameters *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (ADOParameters *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Count) (ADOParameters *This, long *c); | 
 |     HRESULT (STDMETHODCALLTYPE *_NewEnum) (ADOParameters *This, IUnknown **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Refresh) (ADOParameters *This); | 
 |     HRESULT (STDMETHODCALLTYPE *Append) (ADOParameters *This, IDispatch *Object); | 
 |     HRESULT (STDMETHODCALLTYPE *Delete) (ADOParameters *This, VARIANT Index); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Item) (ADOParameters *This, VARIANT Index, _ADOParameter **ppvObject); | 
 |     END_INTERFACE | 
 |   } ParametersVtbl; | 
 |   interface Parameters { | 
 |     CONST_VTBL struct ParametersVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Parameters_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Parameters_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Parameters_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Parameters_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Parameters_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Parameters_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Parameters_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Parameters_get_Count(This, c) ((This)->lpVtbl ->get_Count (This, c)) | 
 | #define Parameters__NewEnum(This, ppvObject) ((This)->lpVtbl ->_NewEnum (This, ppvObject)) | 
 | #define Parameters_Refresh(This) ((This)->lpVtbl ->Refresh (This)) | 
 | #define Parameters_Append(This, Object) ((This)->lpVtbl ->Append (This, Object)) | 
 | #define Parameters_Delete(This, Index) ((This)->lpVtbl ->Delete (This, Index)) | 
 | #define Parameters_get_Item(This, Index, ppvObject) ((This)->lpVtbl ->get_Item (This, Index, ppvObject)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Property_INTERFACE_DEFINED__ | 
 | #define __Property_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Property; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000503-0000-0010-8000-00AA006D2EA4") | 
 |   ADOProperty : public IDispatch { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Value (VARIANT *pval) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Value (VARIANT val) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Name (BSTR *pbstr) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Type (DataTypeEnum *ptype) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Attributes (long *plAttributes) = 0; | 
 |     virtual HRESULT STDMETHODCALLTYPE put_Attributes (long lAttributes) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct PropertyVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADOProperty *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADOProperty *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADOProperty *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (ADOProperty *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (ADOProperty *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (ADOProperty *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (ADOProperty *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Value) (ADOProperty *This, VARIANT *pval); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Value) (ADOProperty *This, VARIANT val); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Name) (ADOProperty *This, BSTR *pbstr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Type) (ADOProperty *This, DataTypeEnum *ptype); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Attributes) (ADOProperty *This, long *plAttributes); | 
 |     HRESULT (STDMETHODCALLTYPE *put_Attributes) (ADOProperty *This, long lAttributes); | 
 |     END_INTERFACE | 
 |   } PropertyVtbl; | 
 |   interface Property { | 
 |     CONST_VTBL struct PropertyVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Property_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Property_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Property_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Property_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Property_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Property_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Property_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Property_get_Value(This, pval) ((This)->lpVtbl ->get_Value (This, pval)) | 
 | #define Property_put_Value(This, val) ((This)->lpVtbl ->put_Value (This, val)) | 
 | #define Property_get_Name(This, pbstr) ((This)->lpVtbl ->get_Name (This, pbstr)) | 
 | #define Property_get_Type(This, ptype) ((This)->lpVtbl ->get_Type (This, ptype)) | 
 | #define Property_get_Attributes(This, plAttributes) ((This)->lpVtbl ->get_Attributes (This, plAttributes)) | 
 | #define Property_put_Attributes(This, lAttributes) ((This)->lpVtbl ->put_Attributes (This, lAttributes)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #ifndef __Properties_INTERFACE_DEFINED__ | 
 | #define __Properties_INTERFACE_DEFINED__ | 
 |  | 
 |   EXTERN_C const IID IID_Properties; | 
 | #if defined (__cplusplus) && !defined (CINTERFACE) | 
 |  | 
 |   MIDL_INTERFACE ("00000504-0000-0010-8000-00AA006D2EA4") | 
 |   ADOProperties : public _ADOCollection { | 
 |     public: | 
 |     virtual HRESULT STDMETHODCALLTYPE get_Item (VARIANT Index, ADOProperty **ppvObject) = 0; | 
 |   }; | 
 | #else | 
 |   typedef struct PropertiesVtbl { | 
 |     BEGIN_INTERFACE HRESULT (STDMETHODCALLTYPE *QueryInterface) (ADOProperties *This, REFIID riid, void **ppvObject); | 
 |     ULONG (STDMETHODCALLTYPE *AddRef) (ADOProperties *This); | 
 |     ULONG (STDMETHODCALLTYPE *Release) (ADOProperties *This); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount) (ADOProperties *This, UINT *pctinfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetTypeInfo) (ADOProperties *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); | 
 |     HRESULT (STDMETHODCALLTYPE *GetIDsOfNames) (ADOProperties *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke) (ADOProperties *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Count) (ADOProperties *This, long *c); | 
 |     HRESULT (STDMETHODCALLTYPE *_NewEnum) (ADOProperties *This, IUnknown **ppvObject); | 
 |     HRESULT (STDMETHODCALLTYPE *Refresh) (ADOProperties *This); | 
 |     HRESULT (STDMETHODCALLTYPE *get_Item) (ADOProperties *This, VARIANT Index, ADOProperty **ppvObject); | 
 |     END_INTERFACE | 
 |   } PropertiesVtbl; | 
 |   interface Properties { | 
 |     CONST_VTBL struct PropertiesVtbl *lpVtbl; | 
 |   }; | 
 | #ifdef COBJMACROS | 
 | #define Properties_QueryInterface(This, riid, ppvObject) ((This)->lpVtbl ->QueryInterface (This, riid, ppvObject)) | 
 | #define Properties_AddRef(This) ((This)->lpVtbl ->AddRef (This)) | 
 | #define Properties_Release(This) ((This)->lpVtbl ->Release (This)) | 
 | #define Properties_GetTypeInfoCount(This, pctinfo) ((This)->lpVtbl ->GetTypeInfoCount (This, pctinfo)) | 
 | #define Properties_GetTypeInfo(This, iTInfo, lcid, ppTInfo) ((This)->lpVtbl ->GetTypeInfo (This, iTInfo, lcid, ppTInfo)) | 
 | #define Properties_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) ((This)->lpVtbl ->GetIDsOfNames (This, riid, rgszNames, cNames, lcid, rgDispId)) | 
 | #define Properties_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) ((This)->lpVtbl ->Invoke (This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)) | 
 | #define Properties_get_Count(This, c) ((This)->lpVtbl ->get_Count (This, c)) | 
 | #define Properties__NewEnum(This, ppvObject) ((This)->lpVtbl ->_NewEnum (This, ppvObject)) | 
 | #define Properties_Refresh(This) ((This)->lpVtbl ->Refresh (This)) | 
 | #define Properties_get_Item(This, Index, ppvObject) ((This)->lpVtbl ->get_Item (This, Index, ppvObject)) | 
 | #endif | 
 | #endif | 
 | #endif | 
 | #endif | 
 |  | 
 |   extern RPC_IF_HANDLE __MIDL_itf_ado10_0001_0035_v0_0_c_ifspec; | 
 |   extern RPC_IF_HANDLE __MIDL_itf_ado10_0001_0035_v0_0_s_ifspec; | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 | #endif | 
 | #define ADOCommand _ADOCommand | 
 | #define ADORecordset _ADORecordset | 
 | #define ADOTransaction _ADOTransaction | 
 | #define ADOParameter _ADOParameter | 
 | #define ADOConnection _ADOConnection | 
 | #define ADOCollection _ADOCollection | 
 | #define ADODynaCollection _ADODynaCollection | 
 | #define ADORecord _ADORecord | 
 | #define ADORecField _ADORecField | 
 | #define ADOStream _ADOStream | 
 | #endif | 
 | #endif |