--- ibx/trunk/fbintf/IB.pas 2018/01/25 16:48:38 142 +++ ibx/trunk/fbintf/IB.pas 2018/02/23 12:11:21 143 @@ -773,6 +773,7 @@ type function getAsInteger: integer; procedure DecodeIDCluster(var ConnectionType: integer; var DBFileName, DBSiteName: AnsiString); function getAsBytes: TByteArray; + function getAsDateTime: TDateTime; procedure DecodeVersionString(var Version: byte; var VersionString: AnsiString); function getOperationCounts: TDBOperationCounts; procedure DecodeUserNames(UserNames: TStrings); @@ -799,6 +800,20 @@ type property Items[index: integer]: IDBInfoItem read getItem; default; end; + {The Database Information Request Block is used to pass requests for + database information where at least one item requested has a parameter. + At present, this is only fb_info_page_contents which has a single + integer parameter.} + + IDIRBItem = interface(IParameterBlockItem) + ['{d34a7511-8435-4a24-81a7-5103d218d234}'] + end; + + IDIRB = interface(IParameterBlock) + ['{1010e5ac-0a8f-403b-a302-91625e9d9579}'] + end; + + {The Database Parameter Block (DPB). The DPB provides the parameters used when connecting to a database. It is allocated @@ -849,6 +864,7 @@ type ['{466e9b67-9def-4807-b3e7-e08a35e7185c}'] function getDPB: IDPB; function AllocateBPB: IBPB; + function AllocateDIRB: IDIRB; procedure Connect; procedure Disconnect(Force: boolean=false); function IsConnected: boolean; @@ -911,8 +927,10 @@ type function GetArrayMetaData(Transaction: ITransaction; tableName, columnName: AnsiString): IArrayMetaData; function GetDBInformation(Requests: array of byte): IDBInformation; overload; function GetDBInformation(Request: byte): IDBInformation; overload; + function GetDBInformation(Requests: IDIRB): IDBInformation; overload; function GetConnectString: AnsiString; function GetRemoteProtocol: AnsiString; + function GetAuthenticationMethod: AnsiString; function GetODSMajorVersion: integer; function GetODSMinorVersion: integer; function HasActivity: boolean; @@ -929,7 +947,8 @@ type AllowReverseLookup:boolean; out CharSetID: integer); end; - TProtocol = (TCP, SPX, NamedPipe, Local); + TProtocolAll = (TCP, SPX, NamedPipe, Local, inet, wnet, xnet, unknownProtocol); + TProtocol = TCP..xnet; {Service Parameter Block (SPB). @@ -1083,7 +1102,8 @@ type {Service Manager} function HasServiceAPI: boolean; function AllocateSPB: ISPB; - function GetServiceManager(ServerName: AnsiString; Protocol: TProtocol; SPB: ISPB): IServiceManager; + function GetServiceManager(ServerName: AnsiString; Protocol: TProtocol; SPB: ISPB): IServiceManager; overload; + function GetServiceManager(ServerName: AnsiString; Port: AnsiString; Protocol: TProtocol; SPB: ISPB): IServiceManager; overload; {Information} function GetStatus: IStatus;