home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / msado15.idl < prev    next >
Text File  |  1998-05-31  |  52KB  |  1,399 lines

  1. //--------------------------------------------------------------------
  2. // Microsoft ADO
  3. //
  4. // (c) 1996-1998 Microsoft Corporation.  All Rights Reserved.
  5. //
  6. //
  7. //
  8. // ADO interface definitions for inclusion in .IDL files
  9. //
  10. //--------------------------------------------------------------------
  11.  
  12. #ifndef DO_NO_IMPORTS
  13. import "oaidl.idl";
  14. #endif
  15.  
  16.  
  17. interface _Collection;
  18. interface _DynaCollection;
  19. interface _ADO;
  20. interface Properties;
  21. interface Property;
  22. interface Error;
  23. interface Errors;
  24. interface _Command;
  25. interface _Connection;
  26. interface _Recordset;
  27. interface Fields;
  28. interface Field;
  29. interface _Parameter;
  30. interface Parameters;
  31. interface ADODebugging;
  32. interface ConnectionEventsVt;
  33. interface RecordsetEventsVt;
  34. dispinterface ConnectionEvents;
  35. dispinterface RecordsetEvents;
  36. interface ADOConnectionConstruction;
  37. interface ADOCommandConstruction;
  38. interface ADORecordsetConstruction;
  39.  
  40.     typedef [uuid(0000051B-0000-0010-8000-00AA006D2EA4)]
  41.     enum {
  42.         adOpenUnspecified = -1,
  43.         adOpenForwardOnly = 0,
  44.         adOpenKeyset = 1,
  45.         adOpenDynamic = 2,
  46.         adOpenStatic = 3
  47.     } CursorTypeEnum;
  48.  
  49.     typedef [uuid(0000051C-0000-0010-8000-00AA006D2EA4)]
  50.     enum {
  51.         adHoldRecords = 256,
  52.         adMovePrevious = 512,
  53.         adAddNew = 16778240,
  54.         adDelete = 16779264,
  55.         adUpdate = 16809984,
  56.         adBookmark = 8192,
  57.         adApproxPosition = 16384,
  58.         adUpdateBatch = 65536,
  59.         adResync = 131072,
  60.         adNotify = 262144,
  61.         adFind = 524288
  62.     } CursorOptionEnum;
  63.  
  64.     typedef [uuid(0000051D-0000-0010-8000-00AA006D2EA4)]
  65.     enum {
  66.         adLockUnspecified = -1,
  67.         adLockReadOnly = 1,
  68.         adLockPessimistic = 2,
  69.         adLockOptimistic = 3,
  70.         adLockBatchOptimistic = 4
  71.     } LockTypeEnum;
  72.  
  73.     typedef [uuid(0000051E-0000-0010-8000-00AA006D2EA4)]
  74.     enum {
  75.         adOptionUnspecified = -1,
  76.         adAsyncExecute = 16,
  77.         adAsyncFetch = 32,
  78.         adAsyncFetchNonBlocking = 64,
  79.         adExecuteNoRecords = 128
  80.     } ExecuteOptionEnum;
  81.  
  82.     typedef [uuid(00000541-0000-0010-8000-00AA006D2EA4)]
  83.     enum {
  84.         adConnectUnspecified = -1,
  85.         adAsyncConnect = 16
  86.     } ConnectOptionEnum;
  87.  
  88.     typedef [uuid(00000532-0000-0010-8000-00AA006D2EA4)]
  89.     enum {
  90.         adStateClosed = 0,
  91.         adStateOpen = 1,
  92.         adStateConnecting = 2,
  93.         adStateExecuting = 4,
  94.         adStateFetching = 8
  95.     } ObjectStateEnum;
  96.  
  97.     typedef [uuid(0000052F-0000-0010-8000-00AA006D2EA4)]
  98.     enum {
  99.         adUseNone = 1,
  100.         adUseServer = 2,
  101.         adUseClient = 3,
  102.         adUseClientBatch = 3
  103.     } CursorLocationEnum;
  104.  
  105.     typedef [uuid(0000051F-0000-0010-8000-00AA006D2EA4)]
  106.     enum {
  107.         adEmpty = 0,
  108.         adTinyInt = 16,
  109.         adSmallInt = 2,
  110.         adInteger = 3,
  111.         adBigInt = 20,
  112.         adUnsignedTinyInt = 17,
  113.         adUnsignedSmallInt = 18,
  114.         adUnsignedInt = 19,
  115.         adUnsignedBigInt = 21,
  116.         adSingle = 4,
  117.         adDouble = 5,
  118.         adCurrency = 6,
  119.         adDecimal = 14,
  120.         adNumeric = 131,
  121.         adBoolean = 11,
  122.         adError = 10,
  123.         adUserDefined = 132,
  124.         adVariant = 12,
  125.         adIDispatch = 9,
  126.         adIUnknown = 13,
  127.         adGUID = 72,
  128.         adDate = 7,
  129.         adDBDate = 133,
  130.         adDBTime = 134,
  131.         adDBTimeStamp = 135,
  132.         adBSTR = 8,
  133.         adChar = 129,
  134.         adVarChar = 200,
  135.         adLongVarChar = 201,
  136.         adWChar = 130,
  137.         adVarWChar = 202,
  138.         adLongVarWChar = 203,
  139.         adBinary = 128,
  140.         adVarBinary = 204,
  141.         adLongVarBinary = 205,
  142.         adChapter = 136,
  143.         adFileTime = 64,
  144.         adDBFileTime = 137,
  145.         adPropVariant = 138,
  146.         adVarNumeric = 139
  147.     } DataTypeEnum;
  148.  
  149.     typedef [uuid(00000525-0000-0010-8000-00AA006D2EA4)]
  150.     enum {
  151.         adFldUnspecified = -1,
  152.         adFldMayDefer = 2,
  153.         adFldUpdatable = 4,
  154.         adFldUnknownUpdatable = 8,
  155.         adFldFixed = 16,
  156.         adFldIsNullable = 32,
  157.         adFldMayBeNull = 64,
  158.         adFldLong = 128,
  159.         adFldRowID = 256,
  160.         adFldRowVersion = 512,
  161.         adFldCacheDeferred = 4096,
  162.         adFldNegativeScale = 16384,
  163.         adFldKeyColumn = 32768
  164.     } FieldAttributeEnum;
  165.  
  166.     typedef [uuid(00000526-0000-0010-8000-00AA006D2EA4)]
  167.     enum {
  168.         adEditNone = 0,
  169.         adEditInProgress = 1,
  170.         adEditAdd = 2,
  171.         adEditDelete = 4
  172.     } EditModeEnum;
  173.  
  174.     typedef [uuid(00000527-0000-0010-8000-00AA006D2EA4)]
  175.     enum {
  176.         adRecOK = 0,
  177.         adRecNew = 1,
  178.         adRecModified = 2,
  179.         adRecDeleted = 4,
  180.         adRecUnmodified = 8,
  181.         adRecInvalid = 16,
  182.         adRecMultipleChanges = 64,
  183.         adRecPendingChanges = 128,
  184.         adRecCanceled = 256,
  185.         adRecCantRelease = 1024,
  186.         adRecConcurrencyViolation = 2048,
  187.         adRecIntegrityViolation = 4096,
  188.         adRecMaxChangesExceeded = 8192,
  189.         adRecObjectOpen = 16384,
  190.         adRecOutOfMemory = 32768,
  191.         adRecPermissionDenied = 65536,
  192.         adRecSchemaViolation = 131072,
  193.         adRecDBDeleted = 262144
  194.     } RecordStatusEnum;
  195.  
  196.     typedef [uuid(00000542-0000-0010-8000-00AA006D2EA4)]
  197.     enum {
  198.         adGetRowsRest = -1
  199.     } GetRowsOptionEnum;
  200.  
  201.     typedef [uuid(00000528-0000-0010-8000-00AA006D2EA4)]
  202.     enum {
  203.         adPosUnknown = -1,
  204.         adPosBOF = -2,
  205.         adPosEOF = -3
  206.     } PositionEnum;
  207.  
  208.     typedef enum {
  209.         adBookmarkCurrent = 0,
  210.         adBookmarkFirst = 1,
  211.         adBookmarkLast = 2
  212.     } BookmarkEnum;
  213.  
  214.     typedef [uuid(00000540-0000-0010-8000-00AA006D2EA4)]
  215.     enum {
  216.         adMarshalAll = 0,
  217.         adMarshalModifiedOnly = 1
  218.     } MarshalOptionsEnum;
  219.  
  220.     typedef [uuid(00000543-0000-0010-8000-00AA006D2EA4)]
  221.     enum {
  222.         adAffectCurrent = 1,
  223.         adAffectGroup = 2,
  224.         adAffectAll = 3,
  225.         adAffectAllChapters = 4
  226.     } AffectEnum;
  227.  
  228.     typedef [uuid(00000544-0000-0010-8000-00AA006D2EA4)]
  229.     enum {
  230.         adResyncUnderlyingValues = 1,
  231.         adResyncAllValues = 2
  232.     } ResyncEnum;
  233.  
  234.     typedef [uuid(00000545-0000-0010-8000-00AA006D2EA4)]
  235.     enum {
  236.         adCompareLessThan = 0,
  237.         adCompareEqual = 1,
  238.         adCompareGreaterThan = 2,
  239.         adCompareNotEqual = 3,
  240.         adCompareNotComparable = 4
  241.     } CompareEnum;
  242.  
  243.     typedef [uuid(00000546-0000-0010-8000-00AA006D2EA4)]
  244.     enum {
  245.         adFilterNone = 0,
  246.         adFilterPendingRecords = 1,
  247.         adFilterAffectedRecords = 2,
  248.         adFilterFetchedRecords = 3,
  249.         adFilterPredicate = 4,
  250.         adFilterConflictingRecords = 5
  251.     } FilterGroupEnum;
  252.  
  253.     typedef [uuid(00000547-0000-0010-8000-00AA006D2EA4)]
  254.     enum {
  255.         adSearchForward = 1,
  256.         adSearchBackward = -1
  257.     } SearchDirectionEnum;
  258.  
  259.     typedef [uuid(00000548-0000-0010-8000-00AA006D2EA4)]
  260.     enum {
  261.         adPersistADTG = 0,
  262.         adPersistXML = 1
  263.     } PersistFormatEnum;
  264.  
  265.     typedef [uuid(00000549-0000-0010-8000-00AA006D2EA4)]
  266.     enum {
  267.         adClipString = 2
  268.     } StringFormatEnum;
  269.  
  270.     typedef [uuid(0000054A-0000-0010-8000-00AA006D2EA4)]
  271.     enum {
  272.         adCriteriaKey = 0,
  273.         adCriteriaAllCols = 1,
  274.         adCriteriaUpdCols = 2,
  275.         adCriteriaTimeStamp = 3
  276.     } ADCPROP_UPDATECRITERIA_ENUM;
  277.  
  278.     typedef [uuid(0000054B-0000-0010-8000-00AA006D2EA4)]
  279.     enum {
  280.         adPriorityLowest = 1,
  281.         adPriorityBelowNormal = 2,
  282.         adPriorityNormal = 3,
  283.         adPriorityAboveNormal = 4,
  284.         adPriorityHighest = 5
  285.     } ADCPROP_ASYNCTHREADPRIORITY_ENUM;
  286.  
  287.     typedef [uuid(00000520-0000-0010-8000-00AA006D2EA4)]
  288.     enum {
  289.         adPromptAlways = 1,
  290.         adPromptComplete = 2,
  291.         adPromptCompleteRequired = 3,
  292.         adPromptNever = 4
  293.     } ConnectPromptEnum;
  294.  
  295.     typedef [uuid(00000521-0000-0010-8000-00AA006D2EA4)]
  296.     enum {
  297.         adModeUnknown = 0,
  298.         adModeRead = 1,
  299.         adModeWrite = 2,
  300.         adModeReadWrite = 3,
  301.         adModeShareDenyRead = 4,
  302.         adModeShareDenyWrite = 8,
  303.         adModeShareExclusive = 12,
  304.         adModeShareDenyNone = 16
  305.     } ConnectModeEnum;
  306.  
  307.     typedef [uuid(00000523-0000-0010-8000-00AA006D2EA4)]
  308.     enum {
  309.         adXactUnspecified = -1,
  310.         adXactChaos = 16,
  311.         adXactReadUncommitted = 256,
  312.         adXactBrowse = 256,
  313.         adXactCursorStability = 4096,
  314.         adXactReadCommitted = 4096,
  315.         adXactRepeatableRead = 65536,
  316.         adXactSerializable = 1048576,
  317.         adXactIsolated = 1048576
  318.     } IsolationLevelEnum;
  319.  
  320.     typedef [uuid(00000524-0000-0010-8000-00AA006D2EA4)]
  321.     enum {
  322.         adXactCommitRetaining = 131072,
  323.         adXactAbortRetaining = 262144,
  324.         adXactAsyncPhaseOne = 524288,
  325.         adXactSyncPhaseOne = 1048576
  326.     } XactAttributeEnum;
  327.  
  328.     typedef [uuid(00000529-0000-0010-8000-00AA006D2EA4)]
  329.     enum {
  330.         adPropNotSupported = 0,
  331.         adPropRequired = 1,
  332.         adPropOptional = 2,
  333.         adPropRead = 512,
  334.         adPropWrite = 1024
  335.     } PropertyAttributesEnum;
  336.  
  337.     typedef [uuid(0000052A-0000-0010-8000-00AA006D2EA4)]
  338.     enum {
  339.         adErrInvalidArgument = 3001,
  340.         adErrNoCurrentRecord = 3021,
  341.         adErrIllegalOperation = 3219,
  342.         adErrInTransaction = 3246,
  343.         adErrFeatureNotAvailable = 3251,
  344.         adErrItemNotFound = 3265,
  345.         adErrObjectInCollection = 3367,
  346.         adErrObjectNotSet = 3420,
  347.         adErrDataConversion = 3421,
  348.         adErrObjectClosed = 3704,
  349.         adErrObjectOpen = 3705,
  350.         adErrProviderNotFound = 3706,
  351.         adErrBoundToCommand = 3707,
  352.         adErrInvalidParamInfo = 3708,
  353.         adErrInvalidConnection = 3709,
  354.         adErrNotReentrant = 3710,
  355.         adErrStillExecuting = 3711,
  356.         adErrOperationCancelled = 3712,
  357.         adErrStillConnecting = 3713,
  358.         adErrNotExecuting = 3715,
  359.         adErrUnsafeOperation = 3716
  360.     } ErrorValueEnum;
  361.  
  362.     typedef [uuid(0000052B-0000-0010-8000-00AA006D2EA4)]
  363.     enum {
  364.         adParamSigned = 16,
  365.         adParamNullable = 64,
  366.         adParamLong = 128
  367.     } ParameterAttributesEnum;
  368.  
  369.     typedef [uuid(0000052C-0000-0010-8000-00AA006D2EA4)]
  370.     enum {
  371.         adParamUnknown = 0,
  372.         adParamInput = 1,
  373.         adParamOutput = 2,
  374.         adParamInputOutput = 3,
  375.         adParamReturnValue = 4
  376.     } ParameterDirectionEnum;
  377.  
  378.     typedef [uuid(0000052E-0000-0010-8000-00AA006D2EA4)]
  379.     enum {
  380.         adCmdUnspecified = -1,
  381.         adCmdUnknown = 8,
  382.         adCmdText = 1,
  383.         adCmdTable = 2,
  384.         adCmdStoredProc = 4,
  385.         adCmdFile = 256,
  386.         adCmdTableDirect = 512
  387.     } CommandTypeEnum;
  388.  
  389.     typedef [uuid(00000530-0000-0010-8000-00AA006D2EA4)]
  390.     enum {
  391.         adStatusOK = 1,
  392.         adStatusErrorsOccurred = 2,
  393.         adStatusCantDeny = 3,
  394.         adStatusCancel = 4,
  395.         adStatusUnwantedEvent = 5
  396.     } EventStatusEnum;
  397.  
  398.     typedef [uuid(00000531-0000-0010-8000-00AA006D2EA4)]
  399.     enum {
  400.         adRsnAddNew = 1,
  401.         adRsnDelete = 2,
  402.         adRsnUpdate = 3,
  403.         adRsnUndoUpdate = 4,
  404.         adRsnUndoAddNew = 5,
  405.         adRsnUndoDelete = 6,
  406.         adRsnRequery = 7,
  407.         adRsnResynch = 8,
  408.         adRsnClose = 9,
  409.         adRsnMove = 10,
  410.         adRsnFirstChange = 11,
  411.         adRsnMoveFirst = 12,
  412.         adRsnMoveNext = 13,
  413.         adRsnMovePrevious = 14,
  414.         adRsnMoveLast = 15
  415.     } EventReasonEnum;
  416.  
  417.     typedef [uuid(00000533-0000-0010-8000-00AA006D2EA4)]
  418.     enum {
  419.         adSchemaProviderSpecific = -1,
  420.         adSchemaAsserts = 0,
  421.         adSchemaCatalogs = 1,
  422.         adSchemaCharacterSets = 2,
  423.         adSchemaCollations = 3,
  424.         adSchemaColumns = 4,
  425.         adSchemaCheckConstraints = 5,
  426.         adSchemaConstraintColumnUsage = 6,
  427.         adSchemaConstraintTableUsage = 7,
  428.         adSchemaKeyColumnUsage = 8,
  429.         adSchemaReferentialContraints = 9,
  430.         adSchemaTableConstraints = 10,
  431.         adSchemaColumnsDomainUsage = 11,
  432.         adSchemaIndexes = 12,
  433.         adSchemaColumnPrivileges = 13,
  434.         adSchemaTablePrivileges = 14,
  435.         adSchemaUsagePrivileges = 15,
  436.         adSchemaProcedures = 16,
  437.         adSchemaSchemata = 17,
  438.         adSchemaSQLLanguages = 18,
  439.         adSchemaStatistics = 19,
  440.         adSchemaTables = 20,
  441.         adSchemaTranslations = 21,
  442.         adSchemaProviderTypes = 22,
  443.         adSchemaViews = 23,
  444.         adSchemaViewColumnUsage = 24,
  445.         adSchemaViewTableUsage = 25,
  446.         adSchemaProcedureParameters = 26,
  447.         adSchemaForeignKeys = 27,
  448.         adSchemaPrimaryKeys = 28,
  449.         adSchemaProcedureColumns = 29,
  450.         adSchemaDBInfoKeywords = 30,
  451.         adSchemaDBInfoLiterals = 31,
  452.         adSchemaCubes = 32,
  453.         adSchemaDimensions = 33,
  454.         adSchemaHierarchies = 34,
  455.         adSchemaLevels = 35,
  456.         adSchemaMeasures = 36,
  457.         adSchemaProperties = 37,
  458.         adSchemaMembers = 38
  459.     } SchemaEnum;
  460.  
  461.     [
  462.       odl,
  463.       uuid(00000512-0000-0010-8000-00AA006D2EA4),
  464.       dual,
  465.       nonextensible,
  466.       oleautomation
  467.     ]
  468.     interface _Collection : IDispatch {
  469.         [id(0x60020000), propget]
  470.         HRESULT _stdcall Count([out, retval] long* c);
  471.         [id(0xfffffffc), restricted]
  472.         HRESULT _stdcall _NewEnum([out, retval] IUnknown** ppvObject);
  473.         [id(0x60020002)]
  474.         HRESULT _stdcall Refresh();
  475.     };
  476.  
  477.     [
  478.       odl,
  479.       uuid(00000513-0000-0010-8000-00AA006D2EA4),
  480.       dual,
  481.       nonextensible,
  482.       oleautomation
  483.     ]
  484.     interface _DynaCollection : _Collection {
  485.         [id(0x60030000)]
  486.         HRESULT _stdcall Append([in] IDispatch* Object);
  487.         [id(0x60030001)]
  488.         HRESULT _stdcall Delete([in] VARIANT Index);
  489.     };
  490.  
  491.     [
  492.       odl,
  493.       uuid(00000534-0000-0010-8000-00AA006D2EA4),
  494.       dual,
  495.       nonextensible,
  496.       oleautomation
  497.     ]
  498.     interface _ADO : IDispatch {
  499.         [id(0x000001f4), propget]
  500.         HRESULT _stdcall Properties([out, retval] Properties** ppvObject);
  501.     };
  502.  
  503.     [
  504.       odl,
  505.       uuid(00000504-0000-0010-8000-00AA006D2EA4),
  506.       dual,
  507.       nonextensible,
  508.       oleautomation
  509.     ]
  510.     interface Properties : _Collection {
  511.         [id(00000000), propget]
  512.         HRESULT _stdcall Item(
  513.                         [in] VARIANT Index, 
  514.                         [out, retval] Property** ppvObject);
  515.     };
  516.  
  517.     [
  518.       odl,
  519.       uuid(00000503-0000-0010-8000-00AA006D2EA4),
  520.       dual,
  521.       nonextensible,
  522.       oleautomation
  523.     ]
  524.     interface Property : IDispatch {
  525.         [id(00000000), propget]
  526.         HRESULT _stdcall Value([out, retval] VARIANT* pval);
  527.         [id(00000000), propput]
  528.         HRESULT _stdcall Value([in] VARIANT pval);
  529.         [id(0x60020002), propget]
  530.         HRESULT _stdcall Name([out, retval] BSTR* pbstr);
  531.         [id(0x60020003), propget]
  532.         HRESULT _stdcall Type([out, retval] DataTypeEnum* ptype);
  533.         [id(0x60020004), propget]
  534.         HRESULT _stdcall Attributes([out, retval] long* plAttributes);
  535.         [id(0x60020004), propput]
  536.         HRESULT _stdcall Attributes([in] long plAttributes);
  537.     };
  538.  
  539.     [
  540.       odl,
  541.       uuid(00000500-0000-0010-8000-00AA006D2EA4),
  542.       dual,
  543.       nonextensible,
  544.       oleautomation
  545.     ]
  546.     interface Error : IDispatch {
  547.         [id(0x60020000), propget]
  548.         HRESULT _stdcall Number([out, retval] long* pl);
  549.         [id(0x60020001), propget]
  550.         HRESULT _stdcall Source([out, retval] BSTR* pbstr);
  551.         [id(00000000), propget]
  552.         HRESULT _stdcall Description([out, retval] BSTR* pbstr);
  553.         [id(0x60020003), propget]
  554.         HRESULT _stdcall HelpFile([out, retval] BSTR* pbstr);
  555.         [id(0x60020004), propget]
  556.         HRESULT _stdcall HelpContext([out, retval] long* pl);
  557.         [id(0x60020005), propget]
  558.         HRESULT _stdcall SQLState([out, retval] BSTR* pbstr);
  559.         [id(0x60020006), propget]
  560.         HRESULT _stdcall NativeError([out, retval] long* pl);
  561.     };
  562.  
  563.     [
  564.       odl,
  565.       uuid(00000501-0000-0010-8000-00AA006D2EA4),
  566.       dual,
  567.       nonextensible,
  568.       oleautomation
  569.     ]
  570.     interface Errors : _Collection {
  571.         [id(00000000), propget]
  572.         HRESULT _stdcall Item(
  573.                         [in] VARIANT Index, 
  574.                         [out, retval] Error** ppvObject);
  575.         [id(0x60030001)]
  576.         HRESULT _stdcall Clear();
  577.     };
  578.  
  579.     [
  580.       odl,
  581.       uuid(00000508-0000-0010-8000-00AA006D2EA4),
  582.       dual,
  583.       nonextensible,
  584.       oleautomation
  585.     ]
  586.     interface _Command : _ADO {
  587.         [id(0x60030000), propget]
  588.         HRESULT _stdcall ActiveConnection([out, retval] _Connection** ppvObject);
  589.         [id(0x60030000), propputref]
  590.         HRESULT _stdcall ActiveConnection([in] _Connection* ppvObject);
  591.         [id(0x60030000), propput]
  592.         HRESULT _stdcall ActiveConnection([in] VARIANT ppvObject);
  593.         [id(0x60030003), propget]
  594.         HRESULT _stdcall CommandText([out, retval] BSTR* pbstr);
  595.         [id(0x60030003), propput]
  596.         HRESULT _stdcall CommandText([in] BSTR pbstr);
  597.         [id(0x60030005), propget]
  598.         HRESULT _stdcall CommandTimeout([out, retval] long* pl);
  599.         [id(0x60030005), propput]
  600.         HRESULT _stdcall CommandTimeout([in] long pl);
  601.         [id(0x60030007), propget]
  602.         HRESULT _stdcall Prepared([out, retval] VARIANT_BOOL* pfPrepared);
  603.         [id(0x60030007), propput]
  604.         HRESULT _stdcall Prepared([in] VARIANT_BOOL pfPrepared);
  605.         [id(0x60030009)]
  606.         HRESULT _stdcall Execute(
  607.                         [out, optional] VARIANT* RecordsAffected, 
  608.                         [in, optional] VARIANT* Parameters, 
  609.                         [in, optional, defaultvalue(-1)] long Options, 
  610.                         [out, retval] _Recordset** ppiRs);
  611.         [id(0x6003000a)]
  612.         HRESULT _stdcall CreateParameter(
  613.                         [in, optional, defaultvalue("")] BSTR Name, 
  614.                         [in, optional, defaultvalue(0)] DataTypeEnum Type, 
  615.                         [in, optional, defaultvalue(1)] ParameterDirectionEnum Direction, 
  616.                         [in, optional, defaultvalue(0)] long Size, 
  617.                         [in, optional] VARIANT Value, 
  618.                         [out, retval] _Parameter** ppiprm);
  619.         [id(00000000), propget]
  620.         HRESULT _stdcall Parameters([out, retval] Parameters** ppvObject);
  621.         [id(0x6003000c), propput]
  622.         HRESULT _stdcall CommandType([in] CommandTypeEnum plCmdType);
  623.         [id(0x6003000c), propget]
  624.         HRESULT _stdcall CommandType([out, retval] CommandTypeEnum* plCmdType);
  625.         [id(0x6003000e), propget]
  626.         HRESULT _stdcall Name([out, retval] BSTR* pbstrName);
  627.         [id(0x6003000e), propput]
  628.         HRESULT _stdcall Name([in] BSTR pbstrName);
  629.         [id(0x60030010), propget]
  630.         HRESULT _stdcall State([out, retval] long* plObjState);
  631.         [id(0x60030011)]
  632.         HRESULT _stdcall Cancel();
  633.     };
  634.  
  635.     [
  636.       odl,
  637.       uuid(00000515-0000-0010-8000-00AA006D2EA4),
  638.       dual,
  639.       oleautomation
  640.     ]
  641.     interface _Connection : _ADO {
  642.         [id(00000000), propget]
  643.         HRESULT _stdcall ConnectionString([out, retval] BSTR* pbstr);
  644.         [id(00000000), propput]
  645.         HRESULT _stdcall ConnectionString([in] BSTR pbstr);
  646.         [id(0x00000002), propget]
  647.         HRESULT _stdcall CommandTimeout([out, retval] long* plTimeout);
  648.         [id(0x00000002), propput]
  649.         HRESULT _stdcall CommandTimeout([in] long plTimeout);
  650.         [id(0x00000003), propget]
  651.         HRESULT _stdcall ConnectionTimeout([out, retval] long* plTimeout);
  652.         [id(0x00000003), propput]
  653.         HRESULT _stdcall ConnectionTimeout([in] long plTimeout);
  654.         [id(0x00000004), propget]
  655.         HRESULT _stdcall Version([out, retval] BSTR* pbstr);
  656.         [id(0x00000005)]
  657.         HRESULT _stdcall Close();
  658.         [id(0x00000006)]
  659.         HRESULT _stdcall Execute(
  660.                         [in] BSTR CommandText, 
  661.                         [out, optional] VARIANT* RecordsAffected, 
  662.                         [in, optional, defaultvalue(-1)] long Options, 
  663.                         [out, retval] _Recordset** ppiRset);
  664.         [id(0x00000007)]
  665.         HRESULT _stdcall BeginTrans([out, retval] long* TransactionLevel);
  666.         [id(0x00000008)]
  667.         HRESULT _stdcall CommitTrans();
  668.         [id(0x00000009)]
  669.         HRESULT _stdcall RollbackTrans();
  670.         [id(0x0000000a)]
  671.         HRESULT _stdcall Open(
  672.                         [in, optional, defaultvalue("")] BSTR ConnectionString, 
  673.                         [in, optional, defaultvalue("")] BSTR UserID, 
  674.                         [in, optional, defaultvalue("")] BSTR Password, 
  675.                         [in, optional, defaultvalue(-1)] long Options);
  676.         [id(0x0000000b), propget]
  677.         HRESULT _stdcall Errors([out, retval] Errors** ppvObject);
  678.         [id(0x0000000c), propget]
  679.         HRESULT _stdcall DefaultDatabase([out, retval] BSTR* pbstr);
  680.         [id(0x0000000c), propput]
  681.         HRESULT _stdcall DefaultDatabase([in] BSTR pbstr);
  682.         [id(0x0000000d), propget]
  683.         HRESULT _stdcall IsolationLevel([out, retval] IsolationLevelEnum* Level);
  684.         [id(0x0000000d), propput]
  685.         HRESULT _stdcall IsolationLevel([in] IsolationLevelEnum Level);
  686.         [id(0x0000000e), propget]
  687.         HRESULT _stdcall Attributes([out, retval] long* plAttr);
  688.         [id(0x0000000e), propput]
  689.         HRESULT _stdcall Attributes([in] long plAttr);
  690.         [id(0x0000000f), propget]
  691.         HRESULT _stdcall CursorLocation([out, retval] CursorLocationEnum* plCursorLoc);
  692.         [id(0x0000000f), propput]
  693.         HRESULT _stdcall CursorLocation([in] CursorLocationEnum plCursorLoc);
  694.         [id(0x00000010), propget]
  695.         HRESULT _stdcall Mode([out, retval] ConnectModeEnum* plMode);
  696.         [id(0x00000010), propput]
  697.         HRESULT _stdcall Mode([in] ConnectModeEnum plMode);
  698.         [id(0x00000011), propget]
  699.         HRESULT _stdcall Provider([out, retval] BSTR* pbstr);
  700.         [id(0x00000011), propput]
  701.         HRESULT _stdcall Provider([in] BSTR pbstr);
  702.         [id(0x00000012), propget]
  703.         HRESULT _stdcall State([out, retval] long* plObjState);
  704.         [id(0x00000013)]
  705.         HRESULT _stdcall OpenSchema(
  706.                         [in] SchemaEnum Schema, 
  707.                         [in, optional] VARIANT Restrictions, 
  708.                         [in, optional] VARIANT SchemaID, 
  709.                         [out, retval] _Recordset** pprset);
  710.         [id(0x00000015)]
  711.         HRESULT _stdcall Cancel();
  712.     };
  713.  
  714.     [
  715.       odl,
  716.       uuid(0000050E-0000-0010-8000-00AA006D2EA4),
  717.       dual,
  718.       nonextensible,
  719.       oleautomation
  720.     ]
  721.     interface _Recordset : _ADO {
  722.         [id(0x000003e8), propget]
  723.         HRESULT _stdcall AbsolutePosition([out, retval] PositionEnum* pl);
  724.         [id(0x000003e8), propput]
  725.         HRESULT _stdcall AbsolutePosition([in] PositionEnum pl);
  726.         [id(0x000003e9), propputref]
  727.         HRESULT _stdcall ActiveConnection([in] IDispatch* pvar);
  728.         [id(0x000003e9), propput]
  729.         HRESULT _stdcall ActiveConnection([in] VARIANT pvar);
  730.         [id(0x000003e9), propget]
  731.         HRESULT _stdcall ActiveConnection([out, retval] VARIANT* pvar);
  732.         [id(0x000003ea), propget]
  733.         HRESULT _stdcall BOF([out, retval] VARIANT_BOOL* pb);
  734.         [id(0x000003eb), propget]
  735.         HRESULT _stdcall Bookmark([out, retval] VARIANT* pvBookmark);
  736.         [id(0x000003eb), propput]
  737.         HRESULT _stdcall Bookmark([in] VARIANT pvBookmark);
  738.         [id(0x000003ec), propget]
  739.         HRESULT _stdcall CacheSize([out, retval] long* pl);
  740.         [id(0x000003ec), propput]
  741.         HRESULT _stdcall CacheSize([in] long pl);
  742.         [id(0x000003ed), propget]
  743.         HRESULT _stdcall CursorType([out, retval] CursorTypeEnum* plCursorType);
  744.         [id(0x000003ed), propput]
  745.         HRESULT _stdcall CursorType([in] CursorTypeEnum plCursorType);
  746.         [id(0x000003ee), propget]
  747.         HRESULT _stdcall EOF([out, retval] VARIANT_BOOL* pb);
  748.         [id(00000000), propget]
  749.         HRESULT _stdcall Fields([out, retval] Fields** ppvObject);
  750.         [id(0x000003f0), propget]
  751.         HRESULT _stdcall LockType([out, retval] LockTypeEnum* plLockType);
  752.         [id(0x000003f0), propput]
  753.         HRESULT _stdcall LockType([in] LockTypeEnum plLockType);
  754.         [id(0x000003f1), propget]
  755.         HRESULT _stdcall MaxRecords([out, retval] long* plMaxRecords);
  756.         [id(0x000003f1), propput]
  757.         HRESULT _stdcall MaxRecords([in] long plMaxRecords);
  758.         [id(0x000003f2), propget]
  759.         HRESULT _stdcall RecordCount([out, retval] long* pl);
  760.         [id(0x000003f3), propputref]
  761.         HRESULT _stdcall Source([in] IDispatch* pvSource);
  762.         [id(0x000003f3), propput]
  763.         HRESULT _stdcall Source([in] BSTR pvSource);
  764.         [id(0x000003f3), propget]
  765.         HRESULT _stdcall Source([out, retval] VARIANT* pvSource);
  766.         [id(0x000003f4)]
  767.         HRESULT _stdcall AddNew(
  768.                         [in, optional] VARIANT FieldList, 
  769.                         [in, optional] VARIANT Values);
  770.         [id(0x000003f5)]
  771.         HRESULT _stdcall CancelUpdate();
  772.         [id(0x000003f6)]
  773.         HRESULT _stdcall Close();
  774.         [id(0x000003f7)]
  775.         HRESULT _stdcall Delete([in, optional, defaultvalue(1)] AffectEnum AffectRecords);
  776.         [id(0x000003f8)]
  777.         HRESULT _stdcall GetRows(
  778.                         [in, optional, defaultvalue(-1)] long Rows, 
  779.                         [in, optional] VARIANT Start, 
  780.                         [in, optional] VARIANT Fields, 
  781.                         [out, retval] VARIANT* pvar);
  782.         [id(0x000003f9)]
  783.         HRESULT _stdcall Move(
  784.                         [in] long NumRecords, 
  785.                         [in, optional] VARIANT Start);
  786.         [id(0x000003fa)]
  787.         HRESULT _stdcall MoveNext();
  788.         [id(0x000003fb)]
  789.         HRESULT _stdcall MovePrevious();
  790.         [id(0x000003fc)]
  791.         HRESULT _stdcall MoveFirst();
  792.         [id(0x000003fd)]
  793.         HRESULT _stdcall MoveLast();
  794.         [id(0x000003fe)]
  795.         HRESULT _stdcall Open(
  796.                         [in, optional] VARIANT Source, 
  797.                         [in, optional] VARIANT ActiveConnection, 
  798.                         [in, optional, defaultvalue(-1)] CursorTypeEnum CursorType, 
  799.                         [in, optional, defaultvalue(-1)] LockTypeEnum LockType, 
  800.                         [in, optional, defaultvalue(-1)] long Options);
  801.         [id(0x000003ff)]
  802.         HRESULT _stdcall Requery([in, optional, defaultvalue(-1)] long Options);
  803.         [id(0x60030022), hidden]
  804.         HRESULT _stdcall _xResync([in, optional, defaultvalue(3)] AffectEnum AffectRecords);
  805.         [id(0x00000401)]
  806.         HRESULT _stdcall Update(
  807.                         [in, optional] VARIANT Fields, 
  808.                         [in, optional] VARIANT Values);
  809.         [id(0x00000417), propget]
  810.         HRESULT _stdcall AbsolutePage([out, retval] PositionEnum* pl);
  811.         [id(0x00000417), propput]
  812.         HRESULT _stdcall AbsolutePage([in] PositionEnum pl);
  813.         [id(0x00000402), propget]
  814.         HRESULT _stdcall EditMode([out, retval] EditModeEnum* pl);
  815.         [id(0x00000406), propget]
  816.         HRESULT _stdcall Filter([out, retval] VARIANT* Criteria);
  817.         [id(0x00000406), propput]
  818.         HRESULT _stdcall Filter([in] VARIANT Criteria);
  819.         [id(0x0000041a), propget]
  820.         HRESULT _stdcall PageCount([out, retval] long* pl);
  821.         [id(0x00000418), propget]
  822.         HRESULT _stdcall PageSize([out, retval] long* pl);
  823.         [id(0x00000418), propput]
  824.         HRESULT _stdcall PageSize([in] long pl);
  825.         [id(0x00000407), propget]
  826.         HRESULT _stdcall Sort([out, retval] BSTR* Criteria);
  827.         [id(0x00000407), propput]
  828.         HRESULT _stdcall Sort([in] BSTR Criteria);
  829.         [id(0x00000405), propget]
  830.         HRESULT _stdcall Status([out, retval] long* pl);
  831.         [id(0x0000041e), propget]
  832.         HRESULT _stdcall State([out, retval] long* plObjState);
  833.         [id(0x60030030), hidden]
  834.         HRESULT _stdcall _xClone([out, retval] _Recordset** ppvObject);
  835.         [id(0x0000040b)]
  836.         HRESULT _stdcall UpdateBatch([in, optional, defaultvalue(3)] AffectEnum AffectRecords);
  837.         [id(0x00000419)]
  838.         HRESULT _stdcall CancelBatch([in, optional, defaultvalue(3)] AffectEnum AffectRecords);
  839.         [id(0x0000041b), propget]
  840.         HRESULT _stdcall CursorLocation([out, retval] CursorLocationEnum* plCursorLoc);
  841.         [id(0x0000041b), propput]
  842.         HRESULT _stdcall CursorLocation([in] CursorLocationEnum plCursorLoc);
  843.         [id(0x0000041c)]
  844.         HRESULT _stdcall NextRecordset(
  845.                         [out, optional] VARIANT* RecordsAffected, 
  846.                         [out, retval] _Recordset** ppiRs);
  847.         [id(0x0000040c)]
  848.         HRESULT _stdcall Supports(
  849.                         [in] CursorOptionEnum CursorOptions, 
  850.                         [out, retval] VARIANT_BOOL* pb);
  851.         [id(0xfffffff8), propget, hidden]
  852.         HRESULT _stdcall Collect(
  853.                         [in] VARIANT Index, 
  854.                         [out, retval] VARIANT* pvar);
  855.         [id(0xfffffff8), propput, hidden]
  856.         HRESULT _stdcall Collect(
  857.                         [in] VARIANT Index, 
  858.                         [in] VARIANT pvar);
  859.         [id(0x0000041d), propget]
  860.         HRESULT _stdcall MarshalOptions([out, retval] MarshalOptionsEnum* peMarshal);
  861.         [id(0x0000041d), propput]
  862.         HRESULT _stdcall MarshalOptions([in] MarshalOptionsEnum peMarshal);
  863.         [id(0x00000422)]
  864.         HRESULT _stdcall Find(
  865.                         [in] BSTR Criteria, 
  866.                         [in, optional, defaultvalue(0)] long SkipRecords, 
  867.                         [in, optional, defaultvalue(1)] SearchDirectionEnum SearchDirection, 
  868.                         [in, optional] VARIANT Start);
  869.         [id(0x0000041f)]
  870.         HRESULT _stdcall Cancel();
  871.         [id(0x00000420), propget]
  872.         HRESULT _stdcall DataSource([out, retval] IUnknown** ppunkDataSource);
  873.         [id(0x00000420), propputref]
  874.         HRESULT _stdcall DataSource([in] IUnknown* ppunkDataSource);
  875.         [id(0x00000421)]
  876.         HRESULT _stdcall Save(
  877.                         [in, optional] BSTR FileName, 
  878.                         [in, optional, defaultvalue(0)] PersistFormatEnum PersistFormat);
  879.         [id(0x00000425), propget]
  880.         HRESULT _stdcall ActiveCommand([out, retval] IDispatch** ppCmd);
  881.         [id(0x00000427), propput]
  882.         HRESULT _stdcall StayInSync([in] VARIANT_BOOL pbStayInSync);
  883.         [id(0x00000427), propget]
  884.         HRESULT _stdcall StayInSync([out, retval] VARIANT_BOOL* pbStayInSync);
  885.         [id(0x00000426)]
  886.         HRESULT _stdcall GetString(
  887.                         [in, optional, defaultvalue(2)] StringFormatEnum StringFormat, 
  888.                         [in, optional, defaultvalue(-1)] long NumRows, 
  889.                         [in, optional] BSTR ColumnDelimeter, 
  890.                         [in, optional] BSTR RowDelimeter, 
  891.                         [in, optional] BSTR NullExpr, 
  892.                         [out, retval] BSTR* pRetString);
  893.         [id(0x00000428), propget]
  894.         HRESULT _stdcall DataMember([out, retval] BSTR* pbstrDataMember);
  895.         [id(0x00000428), propput]
  896.         HRESULT _stdcall DataMember([in] BSTR pbstrDataMember);
  897.         [id(0x00000429)]
  898.         HRESULT _stdcall CompareBookmarks(
  899.                         [in] VARIANT Bookmark1, 
  900.                         [in] VARIANT Bookmark2, 
  901.                         [out, retval] CompareEnum* pCompare);
  902.         [id(0x0000040a)]
  903.         HRESULT _stdcall Clone(
  904.                         [in, optional, defaultvalue(-1)] LockTypeEnum LockType, 
  905.                         [out, retval] _Recordset** ppvObject);
  906.         [id(0x00000400)]
  907.         HRESULT _stdcall Resync(
  908.                         [in, optional, defaultvalue(3)] AffectEnum AffectRecords, 
  909.                         [in, optional, defaultvalue(2)] ResyncEnum ResyncValues);
  910.     };
  911.  
  912.     [
  913.       odl,
  914.       uuid(00000506-0000-0010-8000-00AA006D2EA4),
  915.       dual,
  916.       nonextensible,
  917.       oleautomation
  918.     ]
  919.     interface Fields : _Collection {
  920.         [id(00000000), propget]
  921.         HRESULT _stdcall Item(
  922.                         [in] VARIANT Index, 
  923.                         [out, retval] Field** ppvObject);
  924.         [id(0x60030001)]
  925.         HRESULT _stdcall Append(
  926.                         [in] BSTR Name, 
  927.                         [in] DataTypeEnum Type, 
  928.                         [in, optional, defaultvalue(0)] long DefinedSize, 
  929.                         [in, optional, defaultvalue(-1)] FieldAttributeEnum Attrib);
  930.         [id(0x60030002)]
  931.         HRESULT _stdcall Delete([in] VARIANT Index);
  932.     };
  933.  
  934.     [
  935.       odl,
  936.       uuid(00000505-0000-0010-8000-00AA006D2EA4),
  937.       dual,
  938.       nonextensible,
  939.       oleautomation
  940.     ]
  941.     interface Field : _ADO {
  942.         [id(0x00000455), propget]
  943.         HRESULT _stdcall ActualSize([out, retval] long* pl);
  944.         [id(0x0000040c), propget]
  945.         HRESULT _stdcall Attributes([out, retval] long* pl);
  946.         [id(0x0000044f), propget]
  947.         HRESULT _stdcall DefinedSize([out, retval] long* pl);
  948.         [id(0x0000044c), propget]
  949.         HRESULT _stdcall Name([out, retval] BSTR* pbstr);
  950.         [id(0x0000044e), propget]
  951.         HRESULT _stdcall Type([out, retval] DataTypeEnum* pDataType);
  952.         [id(00000000), propget]
  953.         HRESULT _stdcall Value([out, retval] VARIANT* pvar);
  954.         [id(00000000), propput]
  955.         HRESULT _stdcall Value([in] VARIANT pvar);
  956.         [id(0x60030007), propget]
  957.         HRESULT _stdcall Precision([out, retval] unsigned char* pbPrecision);
  958.         [id(0x60030008), propget]
  959.         HRESULT _stdcall NumericScale([out, retval] unsigned char* pbNumericScale);
  960.         [id(0x00000453)]
  961.         HRESULT _stdcall AppendChunk([in] VARIANT Data);
  962.         [id(0x00000454)]
  963.         HRESULT _stdcall GetChunk(
  964.                         [in] long Length, 
  965.                         [out, retval] VARIANT* pvar);
  966.         [id(0x00000450), propget]
  967.         HRESULT _stdcall OriginalValue([out, retval] VARIANT* pvar);
  968.         [id(0x00000451), propget]
  969.         HRESULT _stdcall UnderlyingValue([out, retval] VARIANT* pvar);
  970.         [id(0x6003000d), propget]
  971.         HRESULT _stdcall DataFormat([out, retval] IUnknown** ppiDF);
  972.         [id(0x6003000d), propputref]
  973.         HRESULT _stdcall DataFormat([in] IUnknown* ppiDF);
  974.         [id(0x60030007), propput]
  975.         HRESULT _stdcall Precision([in] unsigned char pbPrecision);
  976.         [id(0x60030008), propput]
  977.         HRESULT _stdcall NumericScale([in] unsigned char pbNumericScale);
  978.         [id(0x0000044e), propput]
  979.         HRESULT _stdcall Type([in] DataTypeEnum pDataType);
  980.         [id(0x0000044f), propput]
  981.         HRESULT _stdcall DefinedSize([in] long pl);
  982.         [id(0x0000040c), propput]
  983.         HRESULT _stdcall Attributes([in] long pl);
  984.     };
  985.  
  986.     [
  987.       odl,
  988.       uuid(0000050C-0000-0010-8000-00AA006D2EA4),
  989.       dual,
  990.       nonextensible,
  991.       oleautomation
  992.     ]
  993.     interface _Parameter : _ADO {
  994.         [id(0x60030000), propget]
  995.         HRESULT _stdcall Name([out, retval] BSTR* pbstr);
  996.         [id(0x60030000), propput]
  997.         HRESULT _stdcall Name([in] BSTR pbstr);
  998.         [id(00000000), propget]
  999.         HRESULT _stdcall Value([out, retval] VARIANT* pvar);
  1000.         [id(00000000), propput]
  1001.         HRESULT _stdcall Value([in] VARIANT pvar);
  1002.         [id(0x60030004), propget]
  1003.         HRESULT _stdcall Type([out, retval] DataTypeEnum* psDataType);
  1004.         [id(0x60030004), propput]
  1005.         HRESULT _stdcall Type([in] DataTypeEnum psDataType);
  1006.         [id(0x60030006), propput]
  1007.         HRESULT _stdcall Direction([in] ParameterDirectionEnum plParmDirection);
  1008.         [id(0x60030006), propget]
  1009.         HRESULT _stdcall Direction([out, retval] ParameterDirectionEnum* plParmDirection);
  1010.         [id(0x60030008), propput]
  1011.         HRESULT _stdcall Precision([in] unsigned char pbPrecision);
  1012.         [id(0x60030008), propget]
  1013.         HRESULT _stdcall Precision([out, retval] unsigned char* pbPrecision);
  1014.         [id(0x6003000a), propput]
  1015.         HRESULT _stdcall NumericScale([in] unsigned char pbScale);
  1016.         [id(0x6003000a), propget]
  1017.         HRESULT _stdcall NumericScale([out, retval] unsigned char* pbScale);
  1018.         [id(0x6003000c), propput]
  1019.         HRESULT _stdcall Size([in] long pl);
  1020.         [id(0x6003000c), propget]
  1021.         HRESULT _stdcall Size([out, retval] long* pl);
  1022.         [id(0x6003000e)]
  1023.         HRESULT _stdcall AppendChunk([in] VARIANT Val);
  1024.         [id(0x6003000f), propget]
  1025.         HRESULT _stdcall Attributes([out, retval] long* plParmAttribs);
  1026.         [id(0x6003000f), propput]
  1027.         HRESULT _stdcall Attributes([in] long plParmAttribs);
  1028.     };
  1029.  
  1030.     [
  1031.       odl,
  1032.       uuid(0000050D-0000-0010-8000-00AA006D2EA4),
  1033.       dual,
  1034.       nonextensible,
  1035.       oleautomation
  1036.     ]
  1037.     interface Parameters : _DynaCollection {
  1038.         [id(00000000), propget]
  1039.         HRESULT _stdcall Item(
  1040.                         [in] VARIANT Index, 
  1041.                         [out, retval] _Parameter** ppvObject);
  1042.     };
  1043.  
  1044.     [
  1045.       odl,
  1046.       uuid(00000538-0000-0010-8000-00AA006D2EA4),
  1047.       hidden
  1048.     ]
  1049.     interface ADODebugging : IUnknown {
  1050.         HRESULT _stdcall IsGlobalDebugMode(VARIANT_BOOL* pfDebuggingOn);
  1051.         HRESULT _stdcall SetGlobalDebugMode(
  1052.                         IUnknown* pDebugger, 
  1053.                         VARIANT_BOOL fDebuggingOn);
  1054.     };
  1055.  
  1056.     [
  1057.       odl,
  1058.       uuid(00000402-0000-0010-8000-00AA006D2EA4),
  1059.       hidden
  1060.     ]
  1061.     interface ConnectionEventsVt : IUnknown {
  1062.         HRESULT _stdcall InfoMessage(
  1063.                         [in] Error* pError, 
  1064.                         [in, out] EventStatusEnum* adStatus, 
  1065.                         [in] _Connection* pConnection);
  1066.         HRESULT _stdcall BeginTransComplete(
  1067.                         [in] long TransactionLevel, 
  1068.                         [in] Error* pError, 
  1069.                         [in, out] EventStatusEnum* adStatus, 
  1070.                         [in] _Connection* pConnection);
  1071.         HRESULT _stdcall CommitTransComplete(
  1072.                         [in] Error* pError, 
  1073.                         [in, out] EventStatusEnum* adStatus, 
  1074.                         [in] _Connection* pConnection);
  1075.         HRESULT _stdcall RollbackTransComplete(
  1076.                         [in] Error* pError, 
  1077.                         [in, out] EventStatusEnum* adStatus, 
  1078.                         [in] _Connection* pConnection);
  1079.         HRESULT _stdcall WillExecute(
  1080.                         [in, out] BSTR* Source, 
  1081.                         [in, out] CursorTypeEnum* CursorType, 
  1082.                         [in, out] LockTypeEnum* LockType, 
  1083.                         [in, out] long* Options, 
  1084.                         [in, out] EventStatusEnum* adStatus, 
  1085.                         [in] _Command* pCommand, 
  1086.                         [in] _Recordset* pRecordset, 
  1087.                         [in] _Connection* pConnection);
  1088.         HRESULT _stdcall ExecuteComplete(
  1089.                         [in] long RecordsAffected, 
  1090.                         [in] Error* pError, 
  1091.                         [in, out] EventStatusEnum* adStatus, 
  1092.                         [in] _Command* pCommand, 
  1093.                         [in] _Recordset* pRecordset, 
  1094.                         [in] _Connection* pConnection);
  1095.         HRESULT _stdcall WillConnect(
  1096.                         [in, out] BSTR* ConnectionString, 
  1097.                         [in, out] BSTR* UserID, 
  1098.                         [in, out] BSTR* Password, 
  1099.                         [in, out] long* Options, 
  1100.                         [in, out] EventStatusEnum* adStatus, 
  1101.                         [in] _Connection* pConnection);
  1102.         HRESULT _stdcall ConnectComplete(
  1103.                         [in] Error* pError, 
  1104.                         [in, out] EventStatusEnum* adStatus, 
  1105.                         [in] _Connection* pConnection);
  1106.         HRESULT _stdcall Disconnect(
  1107.                         [in, out] EventStatusEnum* adStatus, 
  1108.                         [in] _Connection* pConnection);
  1109.     };
  1110.  
  1111.     [
  1112.       odl,
  1113.       uuid(00000403-0000-0010-8000-00AA006D2EA4),
  1114.       hidden
  1115.     ]
  1116.     interface RecordsetEventsVt : IUnknown {
  1117.         HRESULT _stdcall WillChangeField(
  1118.                         [in] long cFields, 
  1119.                         [in] VARIANT Fields, 
  1120.                         [in, out] EventStatusEnum* adStatus, 
  1121.                         [in] _Recordset* pRecordset);
  1122.         HRESULT _stdcall FieldChangeComplete(
  1123.                         [in] long cFields, 
  1124.                         [in] VARIANT Fields, 
  1125.                         [in] Error* pError, 
  1126.                         [in, out] EventStatusEnum* adStatus, 
  1127.                         [in] _Recordset* pRecordset);
  1128.         HRESULT _stdcall WillChangeRecord(
  1129.                         [in] EventReasonEnum adReason, 
  1130.                         [in] long cRecords, 
  1131.                         [in, out] EventStatusEnum* adStatus, 
  1132.                         [in] _Recordset* pRecordset);
  1133.         HRESULT _stdcall RecordChangeComplete(
  1134.                         [in] EventReasonEnum adReason, 
  1135.                         [in] long cRecords, 
  1136.                         [in] Error* pError, 
  1137.                         [in, out] EventStatusEnum* adStatus, 
  1138.                         [in] _Recordset* pRecordset);
  1139.         HRESULT _stdcall WillChangeRecordset(
  1140.                         [in] EventReasonEnum adReason, 
  1141.                         [in, out] EventStatusEnum* adStatus, 
  1142.                         [in] _Recordset* pRecordset);
  1143.         HRESULT _stdcall RecordsetChangeComplete(
  1144.                         [in] EventReasonEnum adReason, 
  1145.                         [in] Error* pError, 
  1146.                         [in, out] EventStatusEnum* adStatus, 
  1147.                         [in] _Recordset* pRecordset);
  1148.         HRESULT _stdcall WillMove(
  1149.                         [in] EventReasonEnum adReason, 
  1150.                         [in, out] EventStatusEnum* adStatus, 
  1151.                         [in] _Recordset* pRecordset);
  1152.         HRESULT _stdcall MoveComplete(
  1153.                         [in] EventReasonEnum adReason, 
  1154.                         [in] Error* pError, 
  1155.                         [in, out] EventStatusEnum* adStatus, 
  1156.                         [in] _Recordset* pRecordset);
  1157.         HRESULT _stdcall EndOfRecordset(
  1158.                         [in, out] VARIANT_BOOL* fMoreData, 
  1159.                         [in, out] EventStatusEnum* adStatus, 
  1160.                         [in] _Recordset* pRecordset);
  1161.         HRESULT _stdcall FetchProgress(
  1162.                         [in] long Progress, 
  1163.                         [in] long MaxProgress, 
  1164.                         [in, out] EventStatusEnum* adStatus, 
  1165.                         [in] _Recordset* pRecordset);
  1166.         HRESULT _stdcall FetchComplete(
  1167.                         [in] Error* pError, 
  1168.                         [in, out] EventStatusEnum* adStatus, 
  1169.                         [in] _Recordset* pRecordset);
  1170.     };
  1171.  
  1172.     [
  1173.       uuid(00000400-0000-0010-8000-00AA006D2EA4)
  1174.     ]
  1175.     dispinterface ConnectionEvents {
  1176.         properties:
  1177.         methods:
  1178.             [id(00000000)]
  1179.             HRESULT InfoMessage(
  1180.                             [in] Error* pError, 
  1181.                             [in, out] EventStatusEnum* adStatus, 
  1182.                             [in] _Connection* pConnection);
  1183.             [id(0x00000001)]
  1184.             HRESULT BeginTransComplete(
  1185.                             [in] long TransactionLevel, 
  1186.                             [in] Error* pError, 
  1187.                             [in, out] EventStatusEnum* adStatus, 
  1188.                             [in] _Connection* pConnection);
  1189.             [id(0x00000003)]
  1190.             HRESULT CommitTransComplete(
  1191.                             [in] Error* pError, 
  1192.                             [in, out] EventStatusEnum* adStatus, 
  1193.                             [in] _Connection* pConnection);
  1194.             [id(0x00000002)]
  1195.             HRESULT RollbackTransComplete(
  1196.                             [in] Error* pError, 
  1197.                             [in, out] EventStatusEnum* adStatus, 
  1198.                             [in] _Connection* pConnection);
  1199.             [id(0x00000004)]
  1200.             HRESULT WillExecute(
  1201.                             [in, out] BSTR* Source, 
  1202.                             [in, out] CursorTypeEnum* CursorType, 
  1203.                             [in, out] LockTypeEnum* LockType, 
  1204.                             [in, out] long* Options, 
  1205.                             [in, out] EventStatusEnum* adStatus, 
  1206.                             [in] _Command* pCommand, 
  1207.                             [in] _Recordset* pRecordset, 
  1208.                             [in] _Connection* pConnection);
  1209.             [id(0x00000005)]
  1210.             HRESULT ExecuteComplete(
  1211.                             [in] long RecordsAffected, 
  1212.                             [in] Error* pError, 
  1213.                             [in, out] EventStatusEnum* adStatus, 
  1214.                             [in] _Command* pCommand, 
  1215.                             [in] _Recordset* pRecordset, 
  1216.                             [in] _Connection* pConnection);
  1217.             [id(0x00000006)]
  1218.             HRESULT WillConnect(
  1219.                             [in, out] BSTR* ConnectionString, 
  1220.                             [in, out] BSTR* UserID, 
  1221.                             [in, out] BSTR* Password, 
  1222.                             [in, out] long* Options, 
  1223.                             [in, out] EventStatusEnum* adStatus, 
  1224.                             [in] _Connection* pConnection);
  1225.             [id(0x00000007)]
  1226.             HRESULT ConnectComplete(
  1227.                             [in] Error* pError, 
  1228.                             [in, out] EventStatusEnum* adStatus, 
  1229.                             [in] _Connection* pConnection);
  1230.             [id(0x00000008)]
  1231.             HRESULT Disconnect(
  1232.                             [in, out] EventStatusEnum* adStatus, 
  1233.                             [in] _Connection* pConnection);
  1234.     };
  1235.  
  1236.     [
  1237.       uuid(00000266-0000-0010-8000-00AA006D2EA4)
  1238.     ]
  1239.     dispinterface RecordsetEvents {
  1240.         properties:
  1241.         methods:
  1242.             [id(0x00000009)]
  1243.             HRESULT WillChangeField(
  1244.                             [in] long cFields, 
  1245.                             [in] VARIANT Fields, 
  1246.                             [in, out] EventStatusEnum* adStatus, 
  1247.                             [in] _Recordset* pRecordset);
  1248.             [id(0x0000000a)]
  1249.             HRESULT FieldChangeComplete(
  1250.                             [in] long cFields, 
  1251.                             [in] VARIANT Fields, 
  1252.                             [in] Error* pError, 
  1253.                             [in, out] EventStatusEnum* adStatus, 
  1254.                             [in] _Recordset* pRecordset);
  1255.             [id(0x0000000b)]
  1256.             HRESULT WillChangeRecord(
  1257.                             [in] EventReasonEnum adReason, 
  1258.                             [in] long cRecords, 
  1259.                             [in, out] EventStatusEnum* adStatus, 
  1260.                             [in] _Recordset* pRecordset);
  1261.             [id(0x0000000c)]
  1262.             HRESULT RecordChangeComplete(
  1263.                             [in] EventReasonEnum adReason, 
  1264.                             [in] long cRecords, 
  1265.                             [in] Error* pError, 
  1266.                             [in, out] EventStatusEnum* adStatus, 
  1267.                             [in] _Recordset* pRecordset);
  1268.             [id(0x0000000d)]
  1269.             HRESULT WillChangeRecordset(
  1270.                             [in] EventReasonEnum adReason, 
  1271.                             [in, out] EventStatusEnum* adStatus, 
  1272.                             [in] _Recordset* pRecordset);
  1273.             [id(0x0000000e)]
  1274.             HRESULT RecordsetChangeComplete(
  1275.                             [in] EventReasonEnum adReason, 
  1276.                             [in] Error* pError, 
  1277.                             [in, out] EventStatusEnum* adStatus, 
  1278.                             [in] _Recordset* pRecordset);
  1279.             [id(0x0000000f)]
  1280.             HRESULT WillMove(
  1281.                             [in] EventReasonEnum adReason, 
  1282.                             [in, out] EventStatusEnum* adStatus, 
  1283.                             [in] _Recordset* pRecordset);
  1284.             [id(0x00000010)]
  1285.             HRESULT MoveComplete(
  1286.                             [in] EventReasonEnum adReason, 
  1287.                             [in] Error* pError, 
  1288.                             [in, out] EventStatusEnum* adStatus, 
  1289.                             [in] _Recordset* pRecordset);
  1290.             [id(0x00000011)]
  1291.             HRESULT EndOfRecordset(
  1292.                             [in, out] VARIANT_BOOL* fMoreData, 
  1293.                             [in, out] EventStatusEnum* adStatus, 
  1294.                             [in] _Recordset* pRecordset);
  1295.             [id(0x00000012)]
  1296.             HRESULT FetchProgress(
  1297.                             [in] long Progress, 
  1298.                             [in] long MaxProgress, 
  1299.                             [in, out] EventStatusEnum* adStatus, 
  1300.                             [in] _Recordset* pRecordset);
  1301.             [id(0x00000013)]
  1302.             HRESULT FetchComplete(
  1303.                             [in] Error* pError, 
  1304.                             [in, out] EventStatusEnum* adStatus, 
  1305.                             [in] _Recordset* pRecordset);
  1306.     };
  1307.  
  1308.     [
  1309.       odl,
  1310.       uuid(00000516-0000-0010-8000-00AA006D2EA4),
  1311.       restricted
  1312.     ]
  1313.     interface ADOConnectionConstruction : IUnknown {
  1314.         [propget]
  1315.         HRESULT _stdcall DSO([out, retval] IUnknown** ppDSO);
  1316.         [propget]
  1317.         HRESULT _stdcall Session([out, retval] IUnknown** ppSession);
  1318.         HRESULT _stdcall WrapDSOandSession(
  1319.                         [in] IUnknown* pDSO, 
  1320.                         [in] IUnknown* pSession);
  1321.     };
  1322.  
  1323.     [
  1324.       odl,
  1325.       uuid(00000283-0000-0010-8000-00AA006D2EA4),
  1326.       restricted
  1327.     ]
  1328.     interface ADORecordsetConstruction : IDispatch {
  1329.         [propget]
  1330.         HRESULT _stdcall Rowset([out, retval] IUnknown** ppRowset);
  1331.         [propput]
  1332.         HRESULT _stdcall Rowset([in] IUnknown* ppRowset);
  1333.         [propget]
  1334.         HRESULT _stdcall Chapter([out, retval] long* plChapter);
  1335.         [propput]
  1336.         HRESULT _stdcall Chapter([in] long plChapter);
  1337.         [propget]
  1338.         HRESULT _stdcall RowPosition([out, retval] IUnknown** ppRowPos);
  1339.         [propput]
  1340.         HRESULT _stdcall RowPosition([in] IUnknown* ppRowPos);
  1341.     };
  1342.  
  1343.     [
  1344.       odl,
  1345.       uuid(00000517-0000-0010-8000-00AA006D2EA4),
  1346.       restricted
  1347.     ]
  1348.     interface ADOCommandConstruction : IUnknown {
  1349.         [propget]
  1350.         HRESULT _stdcall OLEDBCommand([out, retval] IUnknown** ppOLEDBCommand);
  1351.         [propput]
  1352.         HRESULT _stdcall OLEDBCommand([in] IUnknown* ppOLEDBCommand);
  1353.     };
  1354.  
  1355. [
  1356.   uuid(00000200-0000-0010-8000-00AA006D2EA4),
  1357.   version(2.0),
  1358.   helpstring("Microsoft ActiveX Data Objects 2.0 Library")
  1359. ]
  1360. library ADODB
  1361. {
  1362.     // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
  1363.     importlib("stdole2.tlb");
  1364.  
  1365.     [
  1366.       uuid(00000514-0000-0010-8000-00AA006D2EA4),
  1367.       licensed
  1368.     ]
  1369.     coclass Connection {
  1370.         [default] interface _Connection;
  1371.         [default, source] dispinterface ConnectionEvents;
  1372.     };
  1373.  
  1374.     [
  1375.       uuid(00000507-0000-0010-8000-00AA006D2EA4),
  1376.       licensed
  1377.     ]
  1378.     coclass Command {
  1379.         [default] interface _Command;
  1380.     };
  1381.  
  1382.     [
  1383.       uuid(00000535-0000-0010-8000-00AA006D2EA4),
  1384.       licensed
  1385.     ]
  1386.     coclass Recordset {
  1387.         [default] interface _Recordset;
  1388.         [default, source] dispinterface RecordsetEvents;
  1389.     };
  1390.  
  1391.     [
  1392.       uuid(0000050B-0000-0010-8000-00AA006D2EA4),
  1393.       licensed
  1394.     ]
  1395.     coclass Parameter {
  1396.         [default] interface _Parameter;
  1397.     };
  1398. };
  1399.