Componentes.Terceros.SDAC/internal/4.10.0.10/1/Source/OLEDBIntf.pas
2007-10-05 14:48:18 +00:00

833 lines
30 KiB
ObjectPascal

unit OLEDBIntf;
interface
{$I Dac.inc}
uses
{$IFDEF VER6P}
FMTBcd,
{$ELSE}
DB,
{$ENDIF}
OLEDBC,
CLRClasses,
ActiveX,
Windows;
type
PIUnknown = ^IUnknown;
PUintArray = IntPtr;
TUintArray = array of UINT;
PPByte = ^PByte;
PPByteArray = IntPtr;
TPByteArray = array of PByte;
type
PDBTimeStamp = ^TDBTimeStamp;
DBTIMESTAMP = packed record
year: Smallint;
month: Word;
day: Word;
hour: Word;
minute: Word;
second: Word;
fraction: UINT;
end;
TDBTimeStamp = DBTIMESTAMP;
{$EXTERNALSYM DBTIMESTAMP}
type
PBoid = ^TBoid;
BOID = packed record
rgb_: array[0..15] of Byte;
end;
TBoid = BOID;
{$EXTERNALSYM BOID}
XACTTRANSINFO = packed record
uow: BOID;
isoLevel: Integer;
isoFlags: UINT;
grfTCSupported: UINT;
grfRMSupported: UINT;
grfTCSupportedRetaining: UINT;
grfRMSupportedRetaining: UINT;
end;
TXactTransInfo = XACTTRANSINFO;
{$EXTERNALSYM XACTTRANSINFO}
XACTOPT = packed record
ulTimeout: UINT;
szDescription: array[0..39] of Shortint;
end;
TXActOpt = XACTOPT;
{$EXTERNALSYM XACTOPT}
XACTSTATS = packed record
cOpen: UINT;
cCommitting: UINT;
cCommitted: UINT;
cAborting: UINT;
cAborted: UINT;
cInDoubt: UINT;
cHeuristicDecision: UINT;
timeTransactionsUp: FILETIME;
end;
TXactStats = XACTSTATS;
{$EXTERNALSYM XACTSTATS}
PDBBindExt = ^TDBBindExt;
DBBINDEXT = packed record
pExtension: IntPtr; // PByte;
ulExtension: UINT;
end;
TDBBindExt = DBBINDEXT;
{$EXTERNALSYM DBBINDEXT}
DBOBJECT = packed record
dwFlags: UINT;
iid: TGUID;
end;
TDBObject = DBOBJECT;
{$EXTERNALSYM DBOBJECT}
PDBBinding = ^TDBBinding;
DBBINDING = packed record
iOrdinal: UINT;
obValue: UINT;
obLength: UINT;
obStatus: UINT;
pTypeInfo: IntPtr; // IUnknown;
pObject: IntPtr; // PDBObject;
pBindExt: IntPtr; // PDBBindExt;
dwPart: DBPART;
dwMemOwner: DBMEMOWNER;
eParamIO: DBPARAMIO;
cbMaxLen: UINT;
dwFlags: UINT;
wType: DBTYPE;
bPrecision: Byte;
bScale: Byte;
end;
TDBBinding = DBBINDING;
{ $IFNDEF VER125}
{ $EXTERNALSYM DBBINDING}
{ $ENDIF}
// PDBBindingArray = ^TDBBindingArray;
// TDBBindingArray = array[0..MAXBOUND] of TDBBinding;
PDBBindingArray = IntPtr;
TDBBindingArray = array of TDBBinding;
DBIDNAME = record
case Integer of
0: (pwszName: PWideChar);
1: (ulPropid: UINT);
end;
TDBIDName = DBIDNAME;
DBIDGUID = record
case Integer of
0: (guid: TGUID);
1: (pguid: ^TGUID);
end;
TDBIDGuid = DBIDGUID;
DBPROPID = UINT;
{$EXTERNALSYM DBPROPID}
PDBPROPID = ^DBPROPID;
PDBPropIDArray = ^TDBPropIDArray;
TDBPropIDArray = array[0..MAXBOUND] of DBPROPID;
PPDBID = ^PDBID;
PDBID = ^DBID;
DBID = packed record
uGuid: DBIDGUID;
eKind: DBKIND;
uName: DBIDNAME;
end;
TDBID = DBID;
{$EXTERNALSYM DBID}
PDBIDArray = ^TDBIDArray;
TDBIDArray = array[0..MAXBOUND] of TDBID;
PDBPropIDSet = ^TDBPropIDSet;
DBPROPIDSET = packed record
rgPropertyIDs: IntPtr; // PDBPropIDArray;
cPropertyIDs: UINT;
guidPropertySet: TGUID;
end;
TDBPropIDSet = DBPROPIDSET;
{$EXTERNALSYM DBPROPIDSET}
PDBPropIDSetArray = ^TDBPropIDSetArray;
TDBPropIDSetArray = array[0..MAXBOUND] of TDBPropIDSet;
PDBProp = ^TDBProp;
DBPROP = packed record
dwPropertyID: DBPROPID;
dwOptions: DBPROPOPTIONS;
dwStatus: DBPROPSTATUS;
colid: DBID;
vValue: OleVariant;
end;
TDBProp = DBPROP;
{$EXTERNALSYM DBPROP}
PDBPropArray = IntPtr;
TDBPropArray = array[0..MAXBOUND] of TDBProp;
PPDBPropSet = ^PDBPropSet;
PDBPropSet = ^TDBPropSet;
DBPROPSET = packed record
rgProperties: PDBPropArray;
cProperties: UINT;
guidPropertySet: TGUID;
end;
TDBPropSet = DBPROPSET;
{$EXTERNALSYM DBPROPSET}
PDBPropSetArray = ^TDBPropSetArray;
TDBPropSetArray = array[0..MAXBOUND] of TDBPropSet;
PDBPropInfo = ^TDBPropInfo;
DBPROPINFO = packed record
pwszDescription: PWideChar;
dwPropertyID: DBPROPID;
dwFlags: DBPROPFLAGS;
vtType: Word;
vValues: OleVariant;
end;
TDBPropInfo = DBPROPINFO;
{$EXTERNALSYM DBPROPINFO}
PDBPropInfoArray = ^TDBPropInfoArray;
TDBPropInfoArray = array[0..MAXBOUND] of TDBPropInfo;
PDBPropInfoSet = IntPtr;
(*
PDBPropInfoSet = ^TDBPropInfoSet;
DBPROPINFOSET = packed record
rgPropertyInfos: PDBPropInfoArray;
cPropertyInfos: UINT;
guidPropertySet: TGUID;
end;
TDBPropInfoSet = DBPROPINFOSET;
{$EXTERNALSYM DBPROPINFOSET}
*)
PDBParams = ^TDBPARAMS;
DBPARAMS = packed record
pData: IntPtr;
cParamSets: UINT;
HACCESSOR: HACCESSOR;
end;
TDBParams = DBPARAMS;
{$EXTERNALSYM DBPARAMS}
PDBColumnInfo = ^TDBColumnInfo;
DBCOLUMNINFO = packed record
pwszName: PWideChar;
pTypeInfo: IntPtr;
iOrdinal: UINT;
dwFlags: DBCOLUMNFLAGS;
ulColumnSize: UINT;
wType: DBTYPE;
bPrecision: Byte;
bScale: Byte;
columnid: DBID;
end;
TDBColumnInfo = DBCOLUMNINFO;
{$EXTERNALSYM DBCOLUMNINFO}
PDBColumnInfoArray = ^TDBColumnInfoArray;
TDBColumnInfoArray = array[0..MAXCOLS] of TDBColumnInfo;
PDBLiteralInfo = ^DBLiteralInfo;
DBLITERALINFO = packed record
pwszLiteralValue: PWideChar;
pwszInvalidChars: PWideChar;
pwszInvalidStartingChars: PWideChar;
lt: UINT;
fSupported: BOOL;
cchMaxLen: UINT;
end;
TDBLiteralInfo = DBLITERALINFO;
{$EXTERNALSYM DBLITERALINFO}
PDBLiteralInfoArray = ^TDBLiteralInfoArray;
TDBLiteralInfoArray = array[0..MAXBOUND] of TDBLiteralInfo;
PDBColumnDesc = ^TDBColumnDesc;
DBCOLUMNDESC = packed record
pwszTypeName: PWideChar;
pTypeInfo: IntPtr;
rgPropertySets: IntPtr;
pclsid: IntPtr;
cPropertySets: UINT;
ulColumnSize: UINT;
dbcid: DBID;
wType: DBTYPE;
bPrecision: Byte;
bScale: Byte;
end;
TDBColumnDesc = DBCOLUMNDESC;
{$EXTERNALSYM DBCOLUMNDESC}
PErrorInfo = ^TErrorInfo;
ERRORINFO = packed record
hrError: HResult;
dwMinor: UINT;
clsid: TGUID;
iid: TGUID;
dispid: Integer;
end;
TErrorInfo = ERRORINFO;
{$EXTERNALSYM ERRORINFO}
PDBParamInfo = IntPtr;
(* PDBParamInfo = ^TDBParamInfo;
DBPARAMINFO = packed record
dwFlags: DBPARAMFLAGS;
iOrdinal: UINT;
pwszName: PWideChar;
pTypeInfo: ITypeInfo;
ulParamSize: UINT;
wType: DBTYPE;
bPrecision: Byte;
bScale: Byte;
end;
TDBParamInfo = DBPARAMINFO;
{$EXTERNALSYM DBPARAMINFO}*)
PDBParamBindInfo = ^TDBParamBindInfo;
DBPARAMBINDINFO = packed record
pwszDataSourceType: PWideChar;
pwszName: PWideChar;
ulParamSize: UINT;
dwFlags: DBPARAMFLAGS;
bPrecision: Byte;
bScale: Byte;
end;
TDBParamBindInfo = DBPARAMBINDINFO;
{$EXTERNALSYM DBPARAMBINDINFO}
PDBNumeric = ^TDBNumeric;
DB_NUMERIC = packed record
precision: Byte;
scale: Byte;
sign: Byte;
val: array[0..15] of Byte;
end;
TDBNumeric = DB_NUMERIC;
{$EXTERNALSYM DB_NUMERIC}
const
SizeOfTDBNumeric = SizeOf(TDBNumeric);
type
PDBParamBindInfoArray = ^TDBParamBindInfoArray;
TDBParamBindInfoArray = array[0..MAXBOUND] of TDBParamBindInfo;
// *********************************************************************//
// DBID Values
// *********************************************************************//
const
DB_NULLID: DBID = (uguid: (guid: (D1: 0; D2: 0; D3:0; D4: (0, 0, 0, 0, 0, 0, 0, 0))); ekind: DBKIND_GUID_PROPID; uname: (ulpropid:0));
{$EXTERNALSYM DB_NULLID}
type
TVariantArray = array [0..0] of OleVariant;
PVariantArray = ^TVariantArray;
TGUIDArray = array [0..0] of TGUID;
PGUIDArray = ^TGUIDArray;
// *********************************************************************//
// Interface: ITransaction
// GUID: {0FB15084-AF41-11CE-BD2B-204C4F4F5020}
// *********************************************************************//
{$IFNDEF VER6P}
{$NODEFINE ITransaction}
{$ENDIF}
ITransaction = interface(IUnknown)
['{0FB15084-AF41-11CE-BD2B-204C4F4F5020}']
function Commit(fRetaining: BOOL; grfTC: UINT; grfRM: UINT): HResult; stdcall;
function Abort(pboidReason: PBOID; fRetaining: BOOL; fAsync: BOOL): HResult; stdcall;
function GetTransactionInfo(out pinfo: XACTTRANSINFO): HResult; stdcall;
end;
// *********************************************************************//
// Interface: ITransactionOptions
// GUID: {3A6AD9E0-23B9-11CF-AD60-00AA00A74CCD}
// *********************************************************************//
ITransactionOptions = interface(IUnknown)
['{3A6AD9E0-23B9-11CF-AD60-00AA00A74CCD}']
function SetOptions(var pOptions: XACTOPT): HResult; stdcall;
function GetOptions(var pOptions: XACTOPT): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IAccessor
// GUID: {0C733A8C-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IAccessor = interface(IUnknown)
['{0C733A8C-2A1C-11CE-ADE5-00AA0044773D}']
function AddRefAccessor(HACCESSOR: HACCESSOR; pcRefCount: PUINT): HResult; stdcall;
function CreateAccessor(dwAccessorFlags: UINT; cBindings: UINT; rgBindings: PDBBindingArray;
cbRowSize: UINT; var phAccessor: HACCESSOR; rgStatus: PUintArray): HResult; stdcall;
function GetBindings(HACCESSOR: HACCESSOR; pdwAccessorFlags: PUINT; var pcBindings: UINT;
out prgBindings: PDBBinding): HResult; stdcall;
function ReleaseAccessor(HACCESSOR: HACCESSOR; pcRefCount: PUINT): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IRowset
// GUID: {0C733A7C-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IRowset = interface(IUnknown)
['{0C733A7C-2A1C-11CE-ADE5-00AA0044773D}']
function AddRefRows(cRows: UINT; rghRows: PUintArray; rgRefCounts: PUintArray;
rgRowStatus: PUintArray): HResult; stdcall;
function GetData(HROW: HROW; HACCESSOR: HACCESSOR; pData: IntPtr): HResult; stdcall;
function GetNextRows(hReserved: HCHAPTER; lRowsOffset: Integer; cRows: Integer;
out pcRowsObtained: UINT; var prghRows: PUintArray): HResult; stdcall;
function ReleaseRows(
cRows: UINT;
rghRows: PUintArray;
rgRowOptions,
rgRefCounts,
rgRowStatus: PUintArray): HResult; stdcall;
function RestartPosition(hReserved: HCHAPTER): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IRowsetInfo
// GUID: {0C733A55-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IRowsetInfo = interface(IUnknown)
['{0C733A55-2A1C-11CE-ADE5-00AA0044773D}']
function GetProperties(cPropertyIDSets: UINT; rgPropertyIDSets: PDBPropIDSetArray;
out pcPropertySets: UINT; out prgPropertySets: PDBPropSet): HResult; stdcall;
function GetReferencedRowset(iOrdinal: UINT; const riid: TGUID;
out ppReferencedRowset: IUnknown): HResult; stdcall;
function GetSpecification(const riid: TGUID; out ppSpecification: IUnknown): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IRowsetLocate
// GUID: {0C733A7D-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IRowsetLocate = interface(IRowset)
['{0C733A7D-2A1C-11CE-ADE5-00AA0044773D}']
function Compare(hReserved: HCHAPTER; cbBookmark1: UINT; pBookmark1: PByte;
cbBookmark2: UINT; pBookmark2: PByte; out pComparison: UINT): HResult; stdcall;
function GetRowsAt(hReserved1: HWATCHREGION; hReserved2: HCHAPTER; cbBookmark: UINT;
pBookmark: PByte; lRowsOffset: Integer; cRows: Integer;
out pcRowsObtained: UINT; var prghRows: PUintArray): HResult; stdcall;
function GetRowsByBookmark(hReserved: HCHAPTER; cRows: UINT; rgcbBookmarks: PUintArray;
rgpBookmarks: PPByteArray; rghRows, rgRowStatus: PUintArray): HResult; stdcall;
function Hash(hReserved: HCHAPTER; cBookmarks: UINT; rgcbBookmarks: PUintArray;
rgpBookmarks: PPByteArray; rgHashedValues,
rgBookmarkStatus: PUintArray): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IRowsetChange
// GUID: {0C733A05-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IRowsetChange = interface(IUnknown)
['{0C733A05-2A1C-11CE-ADE5-00AA0044773D}']
function DeleteRows(hReserved: HCHAPTER; cRows: UINT; rghRows: PUintArray;
rgRowStatus: PUintArray): HResult; stdcall;
function SetData(HROW: HROW; HACCESSOR: HACCESSOR; pData: IntPtr): HResult; stdcall;
function InsertRow(hReserved: HCHAPTER; HACCESSOR: HACCESSOR; pData: IntPtr;
out phRow: HROW): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IRowsetUpdate
// GUID: {0C733A6D-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IRowsetUpdate = interface(IRowsetChange)
['{0C733A6D-2A1C-11CE-ADE5-00AA0044773D}']
function GetOriginalData(HROW: HROW; HACCESSOR: HACCESSOR; pData: IntPtr): HResult; stdcall;
function GetPendingRows(hReserved: HCHAPTER; dwRowStatus: DBPENDINGSTATUS; pcPendingRows: PUINT;
prgPendingRows: PPHROW; prgPendingStatus: PPDBPENDINGSTATUS): HResult; stdcall;
function GetRowStatus(hReserved: HCHAPTER; cRows: UINT; rghRows: PUintArray;
rgPendingStatus: PUintArray): HResult; stdcall;
function Undo(
hReserved: HCHAPTER;
cRows: UINT;
rghRows: PUintArray;
pcRowsUndone: PUINT;
prgRowsUndone: PPHROW;
prgRowStatus: PPDBROWSTATUS
): HResult; stdcall;
function Update(
hReserved: HCHAPTER;
cRows: UINT;
rghRows: PUintArray;
pcRows: PUINT;
prgRows: PPHROW;
out prgRowStatus: PDBROWSTATUS
): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IMultipleResults
// GUID: {0C733A90-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IMultipleResults = interface(IUnknown)
['{0C733A90-2A1C-11CE-ADE5-00AA0044773D}']
function GetResult(
const punkOuter: IUnknown;
reserved: Integer;
const riid: TGUID;
out pcRowsAffected: Integer;
out ppRowset: IUnknown): HResult; stdcall;
end;
// *********************************************************************//
// Interface: ICommandPrepare
// GUID: {0C733A26-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
ICommandPrepare = interface(IUnknown)
['{0C733A26-2A1C-11CE-ADE5-00AA0044773D}']
function Prepare(cExpectedRuns: UINT): HResult; stdcall;
function Unprepare: HResult; stdcall;
end;
// *********************************************************************//
// Interface: ICommandProperties
// GUID: {0C733A79-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
ICommandProperties = interface(IUnknown)
['{0C733A79-2A1C-11CE-ADE5-00AA0044773D}']
function GetProperties(cPropertyIDSets: UINT; rgPropertyIDSets: PDBPropIDSetArray;
var pcPropertySets: UINT; out prgPropertySets: PDBPropSet): HResult; stdcall;
function SetProperties(cPropertySets: UINT; rgPropertySets: PDBPropSetArray): HResult; stdcall;
end;
// *********************************************************************//
// Interface: ICommand
// GUID: {0C733A63-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
ICommand = interface(IUnknown)
['{0C733A63-2A1C-11CE-ADE5-00AA0044773D}']
function Cancel: HResult; stdcall;
function Execute(
const punkOuter: IUnknown;
const riid: TGUID;
var pParams: DBPARAMS;
out pcRowsAffected: Integer;
out ppRowset: IUnknown): HResult; stdcall;
function GetDBSession(const riid: TGUID; out ppSession: IUnknown): HResult; stdcall;
end;
// *********************************************************************//
// Interface: ICommandText
// GUID: {0C733A27-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
ICommandText = interface(ICommand)
['{0C733A27-2A1C-11CE-ADE5-00AA0044773D}']
function GetCommandText(
var pguidDialect: TGUID;
out ppwszCommand: PWideChar): HResult; stdcall;
function SetCommandText(
const rguidDialect: TGUID;
pwszCommand: PWideChar): HResult; stdcall;
end;
// *********************************************************************//
// Interface: ICommandWithParameters
// GUID: {0C733A64-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
ICommandWithParameters = interface(IUnknown)
['{0C733A64-2A1C-11CE-ADE5-00AA0044773D}']
function GetParameterInfo(var pcParams: UINT32; out prgParamInfo: PDBPARAMINFO;
ppNamesBuffer: PPOleStr): HResult; stdcall;
function MapParameterNames(cParamNames: UINT; rgParamNames: POleStrList;
rgParamOrdinals: PUintArray): HResult; stdcall;
function SetParameterInfo(cParams: UINT; rgParamOrdinals: PUintArray;
rgParamBindInfo: PDBParamBindInfoArray): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IColumnsRowset
// GUID: {0C733A10-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IColumnsRowset = interface(IUnknown)
['{0C733A10-2A1C-11CE-ADE5-00AA0044773D}']
function GetAvailableColumns(var pcOptColumns: UINT;
var prgOptColumns: PDBID): HResult; stdcall;
function GetColumnsRowset(const punkOuter: IUnknown; cOptColumns: UINT;
rgOptColumns: PDBIDArray; const riid: TGUID; cPropertySets: UINT;
rgPropertySets: PDBPropSetArray; out pColRowset: IUnknown): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IColumnsInfo
// GUID: {0C733A11-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IColumnsInfo = interface(IUnknown)
['{0C733A11-2A1C-11CE-ADE5-00AA0044773D}']
function GetColumnInfo(var pcColumns: UINT; out prgInfo: PDBColumnInfo;
out ppStringsBuffer: IntPtr): HResult; stdcall;
function MapColumnIDs(cColumnIDs: UINT; rgColumnIDs: PDBIDArray;
rgColumns: PUintArray): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IDBCreateCommand
// GUID: {0C733A1D-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IDBCreateCommand = interface(IUnknown)
['{0C733A1D-2A1C-11CE-ADE5-00AA0044773D}']
function CreateCommand(const punkOuter: IUnknown; const riid: TGUID;
out ppCommand: IUnknown): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IDBCreateSession
// GUID: {0C733A5D-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IDBCreateSession = interface(IUnknown)
['{0C733A5D-2A1C-11CE-ADE5-00AA0044773D}']
function CreateSession(const punkOuter: IUnknown; const riid: TGUID;
out ppDBSession: IUnknown): HResult; stdcall;
end;
// *********************************************************************//
// Interface: ISourcesRowset
// GUID: {0C733A1E-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
ISourcesRowset = interface(IUnknown)
['{0C733A1E-2A1C-11CE-ADE5-00AA0044773D}']
function GetSourcesRowset(const punkOuter: IUnknown; const riid: TGUID; cPropertySets: UINT;
rgProperties: PDBPropSetArray; out ppSourcesRowset: IUnknown): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IDBProperties
// GUID: {0C733A8A-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IDBProperties = interface(IUnknown)
['{0C733A8A-2A1C-11CE-ADE5-00AA0044773D}']
function GetProperties(cPropertyIDSets: UINT; rgPropertyIDSets: PDBPropIDSetArray;
var pcPropertySets: UINT; out prgPropertySets: PDBPropSet): HResult; stdcall;
function GetPropertyInfo(cPropertyIDSets: UINT; rgPropertyIDSets: PDBPropIDSetArray;
var pcPropertyInfoSets: UINT; out prgPropertyInfoSets: PDBPropInfoSet;
ppDescBuffer: PPOleStr): HResult; stdcall;
function SetProperties(cPropertySets: UINT; rgPropertySets: PDBPropSetArray): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IDBInitialize
// GUID: {0C733A8B-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IDBInitialize = interface(IUnknown)
['{0C733A8B-2A1C-11CE-ADE5-00AA0044773D}']
function Initialize: HResult; stdcall;
function Uninitialize: HResult; stdcall;
end;
// *********************************************************************//
// Interface: IDBDataSourceAdmin
// GUID: {0C733A7A-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
IDBDataSourceAdmin = interface(IUnknown)
['{0C733A7A-2A1C-11CE-ADE5-00AA0044773D}']
function CreateDataSource(cPropertySets: UINT; rgPropertySets: PDBPropSetArray;
const punkOuter: IUnknown; const riid: TGUID; out ppDBSession: IUnknown): HResult; stdcall;
function DestroyDataSource: HResult; stdcall;
function GetCreationProperties(cPropertyIDSets: UINT; rgPropertyIDSets: PDBPropIDSetArray;
pcPropertyInfoSets: PUINT; out prgPropertyInfoSets: PDBPropInfoSet;
ppDescBuffer: PPOleStr): HResult; stdcall;
function ModifyDataSource(cPropertySets: UINT; rgPropertySets: PDBPropSetArray): HResult; stdcall;
end;
// *********************************************************************//
// Interface: ISessionProperties
// GUID: {0C733A85-2A1C-11CE-ADE5-00AA0044773d}
// *********************************************************************//
ISessionProperties = interface(IUnknown)
['{0C733A85-2A1C-11CE-ADE5-00AA0044773d}']
function GetProperties(cPropertyIDSets: UINT; rgPropertyIDSets: PDBPropIDSetArray;
var pcPropertySets: UINT; out prgPropertySets: PDBPropSet): HResult; stdcall;
function SetProperties(cPropertySets: UINT; rgPropertySets: PDBPropSetArray): HResult; stdcall;
end;
// *********************************************************************//
// Interface: ITransactionLocal
// GUID: {0C733A5F-2A1C-11CE-ADE5-00AA0044773D}
// *********************************************************************//
ITransactionLocal = interface(ITransaction)
['{0C733A5F-2A1C-11CE-ADE5-00AA0044773D}']
function GetOptionsObject(out ppOptions: ITransactionOptions): HResult; stdcall;
function StartTransaction(isoLevel: Integer; isoFlags: UINT;
const pOtherOptions: ITransactionOptions; pulTransactionLevel: PUINT): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IDBPromptInitialize
// GUID: {2206CCB0-19C1-11D1-89E0-00C04FD7A829}
// *********************************************************************//
IDBPromptInitialize = interface(IUnknown)
['{2206CCB0-19C1-11D1-89E0-00C04FD7A829}']
function PromptDataSource(const pUnkOuter: IUnknown; hWndParent: HWND;
dwPromptOptions: DBPROMPTOPTIONS; cSourceTypeFilter: ULONG;
rgSourceTypeFilter: PDBSOURCETYPE; pszProviderFilter: POleStr;
const riid: TIID; var DataSource: IUnknown): HResult; stdcall;
function PromptFileName(hWndParent: HWND; dwPromptOptions: DBPROMPTOPTIONS;
pwszInitialDirectory, pwszInitialFile: POleStr;
var ppwszSelectedFile: POleStr): HResult; stdcall;
end;
// *********************************************************************//
// Interface: IDataInitialize
// GUID: {2206CCB1-19C1-11D1-89E0-00C04FD7A829}
// *********************************************************************//
IDataInitialize = interface(IUnknown)
['{2206CCB1-19C1-11D1-89E0-00C04FD7A829}']
function GetDataSource(
const pUnkOuter: IUnknown;
dwClsCtx: DWORD;
pwszInitializationString: POleStr;
const riid: TIID;
var DataSource: IUnknown): HResult; stdcall;
function GetInitializationString(
const DataSource: IUnknown;
fIncludePassword: Boolean;
out pwszInitString: POleStr): HResult; stdcall;
function CreateDBInstance(const clsidProvider: TGUID;
const pUnkOuter: IUnknown;
dwClsCtx: DWORD; pwszReserved: POleStr;
riid: TIID;
var DataSource: IUnknown): HResult; stdcall;
function CreateDBInstanceEx(
const clsidProvider: TGUID;
const pUnkOuter: IUnknown;
dwClsCtx: DWORD;
pwszReserved: POleStr;
pServerInfo: PCoServerInfo;
cmq: ULONG;
rgmqResults: PMultiQI): HResult; stdcall;
function LoadStringFromStorage(
pwszFileName: POleStr;
out pwszInitializationString: POleStr): HResult; stdcall;
function WriteStringToStorage(
pwszFileName, pwszInitializationString: POleStr;
dwCreationDisposition: DWORD): HResult; stdcall;
end;
IDBSchemaRowset = interface (IUnknown)
['{0c733a7b-2a1c-11ce-ade5-00aa0044773d}']
function GetRowset (const pUnkOuter: IUnknown; const rguidSchema: TGUID;
cRestrictions: UINT; rgRestrictions: PVariantArray; const riid: TGUID;
cPropertySets: UINT; rgPropertySets: PDBPropSetArray;
out ppRowset: IUnknown): HResult; stdcall;
function GetSchemas (out pcSchemas: UINT; out prgSchemas: PGUIDArray;
prgRestrictionSupport: PUINTArray): HResult; stdcall;
end;
IOpenRowset = interface(IUnknown)
['{0c733a69-2a1c-11ce-ade5-00aa0044773d}']
function OpenRowset(const punkOuter: IUnknown; pTableID: PDBID;
pIndexID: PDBID; const riid: TGUID; cPropertySets: UINT;
rgPropertySets: PDBPropIDSetArray; out ppReferencedRowset: IUnknown): HRESULT; stdcall;
end;
IRowsetFastLoad = interface(IUnknown)
['{5CF4CA13-EF21-11d0-97E7-00C04FC2AD98}']
function InsertRow(HACCESSOR: HACCESSOR; pData: Pointer): HRESULT; stdcall;
function Commit(fDone: boolean): HRESULT; stdcall;
end;
IDBAsynchStatus = interface(IUnknown)
['{0c733a95-2a1c-11ce-ade5-00aa0044773d}']
function Abort(Chapter: HCHAPTER; Operation: DBASYNCHOP): HRESULT; stdcall;
function GetStatus(Chapter: HCHAPTER; Operation: DBASYNCHOP; var Progress: UINT;
var ProgressMax: UINT; var AsynchPhase: DWORD; var StatusText: PWideChar): HRESULT; stdcall;
end;
ISSAsynchStatus = interface(IDBAsynchStatus)
['{1FF1F743-8BB0-4c00-ACC4-C10E43B08FC1}']
function WaitForAsynchCompletion(MillisecTimeOut: DWORD): HRESULT; stdcall;
end;
IErrorRecords = interface (IUnknown)
['{0c733a67-2a1c-11ce-ade5-00aa0044773d}']
function (* [local] *) AddErrorRecord(
(* [in] *) const pErrorInfo: ERRORINFO;
(* [in] *) dwLookupID: DWORD;
(* [in] *) const pdispparams: DISPPARAMS;
(* [in] *) const punkCustomError: IUnknown;
(* [in] *) dwDynamicErrorID: DWORD): HResult; stdcall;
function (* [local] *) GetBasicErrorInfo(
(* [in] *) ulRecordNum: ULONG;
(* [out] *) out pErrorInfo: ERRORINFO): HResult; stdcall;
function (* [local] *) GetCustomErrorObject(
(* [in] *) ulRecordNum: ULONG;
(* [in] *) const riid: TGUID;
(* [iid_is][out] *) out ppObject: IUnknown): HResult; stdcall;
function (* [local] *) GetErrorInfo(
(* [in] *) ulRecordNum: ULONG;
(* [in] *) lcid: LCID;
(* [out] *) out ppErrorInfo: IErrorInfo): HResult; stdcall;
function (* [local] *) GetErrorParameters(
(* [in] *) ulRecordNum: ULONG;
(* [out] *) out pdispparams: DISPPARAMS): HResult; stdcall;
function (* [local] *) GetRecordCount(
(* [out] *) out pcRecords: ULONG): HResult; stdcall;
end;
{$EXTERNALSYM IErrorRecords}
// the structure returned by ISQLServerErrorInfo::GetSQLServerInfo
SSERRORINFO_ = record
pwszMessage: PWideChar;
pwszServer: PWideChar;
pwszProcedure: PWideChar;
lNative: UINT;
bState: BYTE;
bClass: BYTE;
wLineNumber: WORD;
end;
SSERRORINFO = record
pwszMessage: WideString;
pwszServer: WideString;
pwszProcedure: WideString;
lNative: UINT;
bState: BYTE;
bClass: BYTE;
wLineNumber: WORD;
end;
PSSERRORINFO = ^SSERRORINFO_;
type
ISQLServerErrorInfo = interface (IUnknown)
function GetErrorInfo(
(* [out] *) out ppErrorInfo: PSSERRORINFO;
(* [out] *) out ppStringsBuffer: IntPtr{PWideChar}): HResult; stdcall;
end;
/// WARINING - in 64bit OSes DBBKMARK is int64
DBBKMARK = integer;
implementation
initialization
Assert(SizeOf(DBProp) = SizeOfDBProp);
end.