OLE DB Structures and Enumerated Types

Type Defined in Used in
typedef DWORD DBACCESSORFLAGS;
enum DBACCESSORFLAGSENUM {
  DBACCESSOR_INVALID,
  DBACCESSOR_PASSBYREF,
  DBACCESSOR_ROWDATA,
  DBACCESSOR_PARAMETERDATA,
  DBACCESSOR_OPTIMIZED
};
IAccessor::
CreateAccessor
IAccessor::CreateAccessor

IAccessor::GetBindings


typedef struct tagDBBINDEXT {
  BYTE * pExtension;
  ULONG  ulExtension;
} DBBINDEXT;
"DBBINDING
Structures
" in Chapter 6
DBBINDING

typedef struct tagDBBINDING {
  ULONG   iOrdinal;
  ULONG   obValue;
  ULONG   obLength;
  ULONG   obStatus;
  ITypeInfo * pTypeInfo;
  DBOBJECT *  pObject;
  DBBINDEXT * pBindExt;
  DBPART  dwPart;
  DBMEMOWNER  dwMemOwner;
  DBPARAMIO eParamIO;
  ULONG   cbMaxLen;
  DWORD   dwFlags;
  DBTYPE  wType;
  BYTE    bPrecision;
  BYTE    bScale;
} DBBINDING;
"DBBINDING
Structures
" in Chapter 6
IAccessor::CreateAccessor

IAccessor::GetBindings

typedef DWORD DBBINDFLAG;
enum DBBINDFLAGENUM {
  DBBINDFLAG_HTML
};
IAccessor::
CreateAccessor
IAccessor::CreateAccessor
typedef DWORD DBBINDSTATUS;
enum DBBINDSTATUSENUM {
  DBBINDSTATUS_OK
  DBBINDSTATUS_BADORDINAL
  DBBINDSTATUS_UNSUPPORTEDCONVERSION
  DBBINDSTATUS_BADBINDINFO
  DBBINDSTATUS_BADSTORAGEFLAGS
  DBBINDSTATUS_NOINTERFACE
};
IAccessor::
CreateAccessor
IAccessor::CreateAccessor
typedef enum tagDBBOOKMARK {
  DBBMK_INVALID,
  DBBMK_FIRST,
  DBBMK_LAST
} DBBOOKMARK;
"Standard Bookmarks" in Chapter 4
typedef struct tagDBCOLUMNDESC {
  LPOLESTR  pwszTypeName;
  ITypeInfo * pTypeInfo;
  DBPROPSET * rgPropertySets;
  CLSID *   pclsid;
  ULONG   cPropertySets;
  ULONG   ulColumnSize;
  DBID    dbcid;
  DBTYPE  wType;
  BYTE    bPrecision;
  BYTE    bScale;
} DBCOLUMNDESC;
ITableDefinition::
CreateTable
ITableDefinition::
CreateAddColumn

ITableDefinition::
CreateTable


typedef DWORD DBCOLUMNFLAGS;
enum DBCOLUMNFLAGSENUM {
  DBCOLUMNFLAGS_ISBOOKMARK,
  DBCOLUMNFLAGS_MAYDEFER,
  DBCOLUMNFLAGS_WRITE,
  DBCOLUMNFLAGS_WRITEUNKNOWN,
  DBCOLUMNFLAGS_ISFIXEDLENGTH,
  DBCOLUMNFLAGS_ISNULLABLE,
  DBCOLUMNFLAGS_MAYBENULL,
  DBCOLUMNFLAGS_ISLONG,
  DBCOLUMNFLAGS_ISROWID,
  DBCOLUMNFLAGS_ISROWVER,
  DBCOLUMNFLAGS_CACHEDEFERRED
};
IColumnsInfo::
GetColumnInfo
DBCOLUMNINFO

typedef struct tagDBCOLUMNINFO {
  LPOLESTR  pwszName;
  ITypeInfo * pTypeInfo;
  ULONG   iOrdinal;
  DBCOLUMNFLAGS dwFlags;
  ULONG   ulColumnSize;
  DBTYPE    wType;
  BYTE    bPrecision;
  BYTE    bScale;
  DBID    columnid;
} DBCOLUMNINFO;
IColumnsInfo::
GetColumnInfo
IColumnsInfo::
GetColumnInfo
typedef DWORD DBCOMPARE;
enum DBCOMPAREENUM {
  DBCOMPARE_LT,
  DBCOMPARE_EQ,
  DBCOMPARE_GT,
  DBCOMPARE_NE,
  DBCOMPARE_NOTCOMPARABLE
};
IRowsetLocate::
Compare
IRowsetLocate::Compare
typedef DWORD DBCOMPAREOP;
enum DBCOMPAREOPSENUM {
  DBCOMPAREOPS_LT,
  DBCOMPAREOPS_LE,
  DBCOMPAREOPS_EQ,
  DBCOMPAREOPS_GE,
  DBCOMPAREOPS_GT,
  DBCOMPAREOPS_BEGINSWITH,
  DBCOMPAREOPS_NOTBEGINSWITH,
  DBCOMPAREOPS_CONTAINS,
  DBCOMPAREOPS_NOTCONTAINS,
  DBCOMPAREOPS_NE,
  DBCOMPAREOPS_IGNORE,
  DBCOMPAREOPS_CASESENSITIVE,
  DBCOMPAREOPS_CASEINSENSITIVE
};
IRowsetFind::
FindNextRow
IRowsetFind::FindNextRow

IViewFilter::GetFilter

IViewFilter::SetFilter

typedef DWORD DBCONVERTFLAGS;
enum DBCONVERTFLAGSENUM {
  DBCONVERTFLAGS_COLUMN,
  DBCONVERTFLAGS_ISFIXEDLENGTH,
  DBCONVERTFLAGS_ISLONG,
  DBCONVERTFLAGS_PARAMETER,
  DBCONVERTFLAGS_FROMVARIANT
};
IConvertType::
CanConvert
IConvertType::CanConvert

typedef struct tagDBDATE {
  SHORT  year;
  USHORT month;
  USHORT day;
} DBDATE;
"Type Indicators" in Appendix A

typedef DWORD DBEVENTPHASE;
enum DBEVENTPHASEENUM {
  DBEVENTPHASE_OKTODO,
  DBEVENTPHASE_ABOUTTODO,
  DBEVENTPHASE_SYNCHAFTER,
  DBEVENTPHASE_FAILEDTODO,
  DBEVENTPHASE_DIDEVENT
};
IRowsetNotify IRowsetNotify::
OnFieldChange

IRowsetNotify::
OnRowChange

IRowsetNotify::
OnRowsetChange


typedef struct tagDBID {
  union {
  GUID guid;
  GUID * pguid;
  } uGuid;
  DBKIND eKind;
  union {
  LPOLESTR pwszName;
  ULONG  ulPropid;
  } uName;
} DBID;
"Column IDs" in
Chapter 4
DBCOLUMNDESC

DBCOLUMNINFO

DBINDEXCOLUMNDESC

DBPROP

IColumnsInfo::
MapColumnIDs

IColumnsRowset::
GetAvailableColumns

IColumnsRowset::
GetColumnsRowset

IIndexDefinition::
CreateIndex

IIndexDefinition::
DropIndex

IOpenRowset::
OpenRowset

ITableDefinition::
AddColumn

ITableDefinition::
CreateTable

ITableDefinition::
DropColumn

ITableDefinition::DropTable


typedef DWORD DBINDEX_COL_ORDER;
enum DBINDEX_COL_ORDERENUM {
  DBINDEX_COL_ORDER_ASC,
  DBINDEX_COL_ORDER_DESC
};
IIndexDefinition::
CreateIndex
DBINDEXCOLUMNDESC

typedef struct tagDBINDEXCOLUMNDESC {
  DBID  *   pColumnID;
  DBINDEX_COL_ORDER eIndexColOrder;
} DBINDEXCOLUMNDESC;
IIndexDefinition::
CreateIndex
IIndexDefinition::
CreateIndex

IRowsetIndex::
GetIndexInfo


typedef DWORD DBKIND;
enum DBKINDENUM {
  DBKIND_GUID_NAME,
  DBKIND_GUID_PROPID,
  DBKIND_NAME,
  DBKIND_PGUID_NAME,
  DBKIND_PGUID_PROPID,
  DBKIND_PROPID,
  DBKIND_GUID
};
"Column IDs" in
Chapter 4
DBID

typedef DWORD DBLITERAL;
enum DBLITERALENUM {
  DBLITERAL_INVALID,
  DBLITERAL_BINARY_LITERAL,
  DBLITERAL_CATALOG_NAME,
  DBLITERAL_CATALOG_SEPARATOR,
  DBLITERAL_CHAR_LITERAL,
  DBLITERAL_COLUMN_ALIAS,
  DBLITERAL_COLUMN_NAME,
  DBLITERAL_CORRELATION_NAME,
  DBLITERAL_CURSOR_NAME,
  DBLITERAL_ESCAPE_PERCENT_PREFIX,
  DBLITERAL_ESCAPE_PERCENT_SUFFIX,
  DBLITERAL_ESCAPE_UNDERSCORE_PREFIX,
  DBLITERAL_ESCAPE_UNDERSCORE_SUFFIX,
  DBLITERAL_INDEX_NAME,
  DBLITERAL_LIKE_PERCENT,
  DBLITERAL_LIKE_UNDERSCORE,
  DBLITERAL_PROCEDURE_NAME,
  DBLITERAL_QUOTE_PREFIX,
  DBLITERAL_QUOTE_SUFFIX,
  DBLITERAL_SCHEMA_NAME,
  DBLITERAL_SCHEMA_SEPARATOR,
  DBLITERAL_TABLE_NAME,
  DBLITERAL_TEXT_COMMAND,
  DBLITERAL_USER_NAME,
  DBLITERAL_VIEW_NAME
};
IDBInfo::
GetLiteralInfo
IDBInfo::GetLiteralInfo

typedef DWORD DBMEMOWNER;
enum DBMEMOWNERENUM {
  DBMEMOWNER_CLIENTOWNED,
  DBMEMOWNER_PROVIDEROWNED
};
"DBBINDING
Structures
" in Chapter 6
DBBINDING

typedef struct tagDB_NUMERIC {
  BYTE precision;
  BYTE scale;
  BYTE sign;
  BYTE val[16];
} DB_NUMERIC;
"Type Indicators" in Appendix A

typedef struct tagDBOBJECT {
  DWORD dwFlags;
  IID iid;
} DBOBJECT;
"DBBINDING
Structures
" in Chapter 6
DBBINDING

typedef struct tagDBPARAMBINDINFO {
  LPOLESTR   pwszDataSourceType;
  LPOLESTR   pwszName;
  ULONG    ulParamSize;
  DBPARAMFLAGS dwFlags;
  BYTE   bPrecision;
  BYTE   bScale;
} DBPARAMBINDINFO;
ICommandWith-
Parameters::
SetParameterInfo
ICommandWithParameters::SetParameterInfo

typedef DWORD DBPARAMFLAGS;
enum DBPARAMFLAGSENUM {
  DBPARAMFLAGS_ISINPUT,
  DBPARAMFLAGS_ISOUTPUT,
  DBPARAMFLAGS_ISSIGNED,
  DBPARAMFLAGS_ISNULLABLE,
  DBPARAMFLAGS_ISLONG
};
ICommandWith-
Parameters::
GetParameterInfo
DBPARAMBINDINFO
DBPARAMINFO

typedef struct tagDBPARAMINFO {
  DBPARAMFLAGS dwFlags;
  ULONG    iOrdinal;
  LPOLESTR   pwszName;
  ITypeInfo *  pTypeInfo;
  ULONG    ulParamSize;
  DBTYPE   wType;
  BYTE   bPrecision;
  BYTE   bScale;
} DBPARAMINFO;
ICommandWith-
Parameters::
GetParameterInfo
ICommandWithParameters::GetParameterInfo

typedef DWORD DBPARAMIO;
enum DBPARAMIOENUM {
  DBPARAMIO_NOTPARAM,
  DBPARAMIO_INPUT,
  DBPARAMIO_OUTPUT
};
"DBBINDING
Structures
" in Chapter 6
DBBINDING

typedef struct tagDBPARAMS {
  void *  pData;
  ULONG   cParamSets;
  HACCESSOR hAccessor;
} DBPARAMS;
ICommand::Execute ICommand::Execute

typedef DWORD DBPART;
enum DBPARTENUM {
  DBPART_INVALID,
  DBPART_VALUE,
  DBPART_LENGTH,
  DBPART_STATUS
};
"DBBINDING
Structures
" in Chapter 6
DBBINDING

typedef DWORD DBPENDINGSTATUS;
enum DBPENDINGSTATUSENUM {
  DBPENDINGSTATUS_NEW,
  DBPENDINGSTATUS_CHANGED,
  DBPENDINGSTATUS_DELETED,
  DBPENDINGSTATUS_UNCHANGED,
  DBPENDINGSTATUS_INVALIDROW
};
"Row States" in
Chapter 5
IRowsetUpdate::
GetPendingRows

IRowsetUpdate::
GetRowStatus


typedef struct tagDBPROP {
  DBPROPID  dwPropertyID;
  DBPROPOPTIONS dwOptions;
  DBPROPSTATUS  dwStatus;
  DBID    colid;
  VARIANT   vValue;
} DBPROP;
"DBPROP Structure" in Chapter 11 DBPROPSET

typedef DWORD DBPROPFLAGS;
enum DBPROPFLAGSENUM {
  DBPROPFLAGS_NOTSUPPORTED,
  DBPROPFLAGS_COLUMN,
  DBPROPFLAGS_DATASOURCE,
  DBPROPFLAGS_DATASOURCECREATE,
  DBPROPFLAGS_DATASOURCEINFO,
  DBPROPFLAGS_DBINIT,
  DBPROPFLAGS_INDEX,
  DBPROPFLAGS_ROWSET,
  DBPROPFLAGS_TABLE,
  DBPROPFLAGS_COLUMNOK,
  DBPROPFLAGS_READ,
  DBPROPFLAGS_WRITE,
  DBPROPFLAGS_REQUIRED,
  DBPROPFLAGS_SESSION
};
"DBPROPFLAGS Enumerated Type" in Chapter 11 DBPROPINFO

typedef struct tagDBPROPIDSET {
  DBPROPID * rgPropertyIDs;
  ULONG  cPropertyIDs;
  GUID   guidPropertySet;
} DBPROPIDSET;
"DBPROPIDSET Structure" in Chapter 11 ICommandProperties::
GetProperties

IDBDataSourceAdmin::
GetCreationProperties

IDBProperties::
GetProperties

IDBProperties::
GetPropertyInfo

IRowsetInfo::
GetProperties

ISessionProperties::
GetProperties

typedef struct tagDBPROPINFO {
  LPOLESTR  pwszDescription;
  DBPROPID  dwPropertyID;
  DBPROPFLAGS dwFlags;
  VARTYPE   vtType;
  VARIANT   vValues;
} DBPROPINFO;
"DBPROPINFO Structure" in Chapter 11 DBPROPINFOSET
typedef struct tagDBPROPINFOSET {
  DBPROPINFO * rgPropertyInfos;
  ULONG    cPropertyInfos;
  GUID   guidPropertySet;
} DBPROPINFOSET;
"DBPROPINFOSET Structure" in Chapter 11 IDBDataSourceAdmin::
GetCreationProperties

IDBProperties::
GetPropertyInfo

typedef DWORD DBPROPOPTIONS;
enum DBPROPOPTIONSENUM {
  DBPROPOPTIONS_REQUIRED,
  DBPROPOPTIONS_OPTIONAL
};
"DBPROPOPTIONS Enumerated Type" in Chapter 11 DBPROP

typedef struct tagDBPROPSET {
  DBPROP * rgProperties;
  ULONG  cProperties;
  GUID   guidPropertySet;
} DBPROPSET;
"DBPROPSET
Structure
" in Chapter 11
DBCOLUMNDESC
IColumnsRowset::
GetColumnsRowset

ICommandProperties::
GetProperties

ICommandProperties::
SetProperties

IDBDataSourceAdmin::
CreateDataSource

IDBDataSourceAdmin::
ModifyDataSource

IDBProperties::
GetProperties

IDBProperties::
SetProperties

IDBSchemaRowset::
GetRowset

IIndexDefinition::
CreateIndex

IOpenRowset::
OpenRowset

IRowsetIndex::
GetIndexInfo

IRowsetInfo::GetProperties

ISessionProperties::
GetProperties

ISessionProperties::
SetProperties

ISourcesRowset::
GetSourcesRowset

ITableDefinition::
CreateTable


typedef DWORD DBPROPSTATUS;
enum DBPROPSTATUSENUM {
  DBPROPSTATUS_OK,
  DBPROPSTATUS_NOTSUPPORTED,
  DBPROPSTATUS_BADVALUE,
  DBPROPSTATUS_BADOPTION,
  DBPROPSTATUS_BADCOLUMN,
  DBPROPSTATUS_NOTALLSETTABLE,
  DBPROPSTATUS_NOTSETTABLE,
  DBPROPSTATUS_NOTSET,
  DBPROPSTATUS_CONFLICTING
};
"DBPROPSTATUS Enumerated Type" in Chapter 11 DBPROP

typedef DWORD DBRANGE;
enum DBRANGEENUM {
  DBRANGE_INCLUSIVESTART,
  DBRANGE_INCLUSIVEEND,
  DBRANGE_EXCLUSIVESTART,
  DBRANGE_EXCLUSIVEEND,
  DBRANGE_EXCLUDENULLS,
  DBRANGE_PREFIX,
  DBRANGE_MATCH
};
IRowsetIndex::
SetRange
IRowsetIndex::SetRange

typedef DWORD DBREASON;
enum DBREASONENUM {
  DBREASON_ROWSET_FETCHPOSITIONCHANGE,
  DBREASON_ROWSET_RELEASE,
  DBREASON_ROWSET_CHANGED,
  DBREASON_COLUMN_SET,
  DBREASON_COLUMN_RECALCULATED,
  DBREASON_ROW_ACTIVATE,
  DBREASON_ROW_RELEASE,
  DBREASON_ROW_DELETE,
  DBREASON_ROW_FIRSTCHANGE,
  DBREASON_ROW_INSERT,
  DBREASON_ROW_RESYNCH,
  DBREASON_ROW_UNDOCHANGE,
  DBREASON_ROW_UNDOINSERT,
  DBREASON_ROW_UNDODELETE,
  DBREASON_ROW_UPDATE
};
IRowsetNotify IRowsetNotify::
OnFieldChange

IRowsetNotify::
OnRowChange

IRowsetNotify::
OnRowsetChange


typedef DWORD DBROWSTATUS;
enum DBROWSTATUSENUM {
  DBROWSTATUS_S_OK,
  DBROWSTATUS_S_MULTIPLECHANGES,
  DBROWSTATUS_S_PENDINGCHANGES,
  DBROWSTATUS_S_NOCHANGE,
  DBROWSTATUS_E_CANCELED,
  DBROWSTATUS_E_CANTRELEASE,
  DBROWSTATUS_E_CONCURRENCYVIOLATION,
  DBROWSTATUS_E_DELETED,
  DBROWSTATUS_E_FAIL,
  DBROWSTATUS_E_PENDINGINSERT,
  DBROWSTATUS_E_NEWLYINSERTED,
  DBROWSTATUS_E_INTEGRITYVIOLATION,
  DBROWSTATUS_E_INVALID,
  DBROWSTATUS_E_MAXPENDCHANGESEXCEEDED,
  DBROWSTATUS_E_OBJECTOPEN,
  DBROWSTATUS_E_OUTOFMEMORY,
  DBROWSTATUS_E_PERMISSIONDENIED,
  DBROWSTATUS_E_LIMITREACHED,
  DBROWSTATUS_E_SCHEMAVIOLATION
};
"Arrays of Errors" in Chapter 13 IRowset::AddRefRows

IRowset::ReleaseRows

IRowsetChange::
DeleteRows

IRowsetLocate::
GetRowsByBookmark

IRowsetLocate::Hash

IRowsetRefresh::
RefreshVisibleData

IRowsetUpdate::Undo

IRowsetUpdate::Update


typedef DWORD DBSEEK;
enum DBSEEKENUM {
  DBSEEK_INVALID,
  DBSEEK_FIRSTEQ,
  DBSEEK_LASTEQ,
  DBSEEK_GE,
  DBSEEK_GT,
  DBSEEK_LE,
  DBSEEK_LT
};
IRowsetIndex::Seek IRowsetIndex::Seek

typedef DWORD DBSORT;
enum DBSORTENUM {
  DBSORT_ASCENDING = 0,
  DBSORT_DESCENDING
};
IViewSort::
SetSortOrder
IViewSort::SetSortOrder
typedef DWORD DBSOURCETYPE;
enum DBSOURCETYPEENUM {
  DBSOURCETYPE_DATASOURCE,
  DBSOURCETYPE_ENUMERATOR
};
ISourcesRowset::
GetSourcesRowset
ISourcesRowset::
GetSourcesRowset

typedef DWORD DBSTATUS;
enum DBSTATUSENUM {
  DBSTATUS_S_OK,
  DBSTATUS_E_BADACCESSOR,
  DBSTATUS_E_CANTCONVERTVALUE,
  DBSTATUS_S_ISNULL,
  DBSTATUS_S_TRUNCATED,
  DBSTATUS_E_SIGNMISMATCH,
  DBSTATUS_E_DATAOVERFLOW,
  DBSTATUS_E_CANTCREATE,
  DBSTATUS_E_UNAVAILABLE,
  DBSTATUS_E_PERMISSIONDENIED,
  DBSTATUS_S_DEFAULT,DBSTATUS_E_INTEGRITYVIOLATION,
  DBSTATUS_E_SCHEMAVIOLATION,
  DBSTATUS_E_BADSTATUS,
  DBSTATUS_S_DEFAULT
  };
"Status" in Chapter 6

typedef struct tagDBTIME {
  USHORT hour;
  USHORT minute;
  USHORT second;
} DBTIME;
"Type Indicators" in Appendix A

typedef struct tagDBTIMESTAMP {
  SHORT  year;
  USHORT month;
  USHORT day;
  USHORT hour;
  USHORT minute;
  USHORT second;
  ULONG  fraction;
} DBTIMESTAMP;
"Type Indicators" in Appendix A

typedef struct tagFILETIME {
  DWORD  dwLowDateTime;
  DWORD  dwHighDateTime;
} DBFILETIME;
"Type Indicators" in Appendix A

typedef WORD DBTYPE;
enum DBTYPEENUM {
  DBTYPE_EMPTY,
  DBTYPE_NULL,
  DBTYPE_I2,
  DBTYPE_I4,
  DBTYPE_R4,
  DBTYPE_R8,
  DBTYPE_CY,
  DBTYPE_DATE,
  DBTYPE_BSTR,
  DBTYPE_IDISPATCH,
  DBTYPE_ERROR,
  DBTYPE_BOOL,
  DBTYPE_VARIANT,
  DBTYPE_IUNKNOWN,
  DBTYPE_DECIMAL,
  DBTYPE_UI1,
  DBTYPE_ARRAY,
  DBTYPE_BYREF,
  DBTYPE_I1,
  DBTYPE_UI2,
  DBTYPE_UI4,
  DBTYPE_I8,
  DBTYPE_UI8,
  DBTYPE_GUID,
  DBTYPE_VECTOR,
  DBTYPE_RESERVED,
  DBTYPE_BYTES,
  DBTYPE_STR,
  DBTYPE_WSTR,
  DBTYPE_NUMERIC,
  DBTYPE_UDT,
  DBTYPE_DBDATE,
  DBTYPE_DBTIME,
  DBTYPE_DBTIMESTAMP,
  DBTYPE_FILETIME,
DBTYPE_HCHAPTER,
DBTYPE_PROPVARIANT,
DBTYPE_VARNUMERIC
};
"Type Indicators" in Appendix A DBBINDING

DBCOLUMNINFO

DBPARAMINFO

DBCOLUMNDESC

IConvertType::CanConvert


typedef struct tagDBVECTOR {
  ULONG  size;
  void * ptr;
} DBVECTOR;
"Type Indicators" in Appendix A

typedef struct tagDEC {
 USHORT wReserved;
 union {
  struct {
   BYTE scale;
   BYTE sign;
  };
  USHORT signscale;
 };
 ULONG Hi32;
 union {
  struct {
   ULONG Lo32;
   ULONG Mid32;
  };
  ULONGLONG Lo64;
 };
} DECIMAL;
"Type Indicators" in Appendix A

typedef struct tagERRORINFO {
  HRESULT hrError;
  DWORD dwMinor;
  CLSID clsid;
  IID   iid;
  DISPID  dispid;
} ERRORINFO;
"Error Records" in
Chapter 13
IErrorRecords::
AddErrorRecord

IErrorRecords::
GetBasicErrorInfo

typedef struct XACTTRANSINFO {
  XACTUOW  uow;
  ISOLEVEL isoLevel;
  ULONG  isoFlags;
  DWORD  grfTCSupported;
  DWORD  grfRMSupported;
  DWORD  grfTCSupportedRetaining;
  DWORD  grfRMSupportedRetaining;
} XACTTRANSINFO;
ITransaction::
GetTransactionInfo
ITransaction::
GetTransactionInfo
typedef struct XACTOPT {
  ULONG   ulTimeout;
  unsigned char
   szDescription[MAX_TRAN_DESC];
} XACTOPT
ITransactionOptions::
SetOptions
ITransactionOptions::
GetOptions

ITransactionOptions::
SetOptions