git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.SDAC@3 6f543ec7-021b-7e4c-98c9-62eafc7fb9a8
833 lines
30 KiB
ObjectPascal
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.
|