unit PlatInterfaceLib_TLB;

// ************************************************************************ //
// WARNING                                                                    
// -------                                                                    
// The types declared in this file were generated from data read from a       
// Type Library. If this type library is explicitly or indirectly (via        
// another type library referring to this type library) re-imported, or the   
// 'Refresh' command of the Type Library Editor activated while editing the   
// Type Library, the contents of this file will be regenerated and all        
// manual modifications will be lost.                                         
// ************************************************************************ //

// PASTLWTR : 1.2
// File generated on 2011-9-21 11:15:23 from Type Library described below.

// ************************************************************************  //
// Type Lib: C:\Documents and Settings\Administrator\桌面\PlatInterface.dll (1)
// LIBID: {DF5DA9F5-ACCB-4898-A3AE-A860AFAF2816}
// LCID: 0
// Helpfile: 
// HelpString: PlatInterface 1.0 类型库
// DepndLst: 
//   (1) v2.0 stdole, (C:\WINDOWS\system32\stdole2.tlb)
// Errors:
//   Error creating palette bitmap of (TCompReg) : Server C:\Documents and Settings\Administrator\桌面\PlatInterface.dll contains no icons
// ************************************************************************ //
// *************************************************************************//
// NOTE:                                                                      
// Items guarded by $IFDEF_LIVE_SERVER_AT_DESIGN_TIME are used by properties  
// which return objects that may need to be explicitly created via a function 
// call prior to any access via the property. These items have been disabled  
// in order to prevent accidental use from within the object inspector. You   
// may enable them by defining LIVE_SERVER_AT_DESIGN_TIME or by selectively   
// removing them from the $IFDEF blocks. However, such items must still be    
// programmatically created via a method of the appropriate CoClass before    
// they can be used.                                                          
{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
interface

uses Windows, ActiveX, Classes, Graphics, OleCtrls, OleServer, StdVCL, Variants;
  


// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:        
//   Type Libraries     : LIBID_xxxx                                      
//   CoClasses          : CLASS_xxxx                                      
//   DISPInterfaces     : DIID_xxxx                                       
//   Non-DISP interfaces: IID_xxxx                                        
// *********************************************************************//
const
  // TypeLibrary Major and minor versions
  PlatInterfaceLibMajorVersion = 1;
  PlatInterfaceLibMinorVersion = 0;

  LIBID_PlatInterfaceLib: TGUID = '{DF5DA9F5-ACCB-4898-A3AE-A860AFAF2816}';

  IID_IComponentRegistrar: TGUID = '{A817E7A2-43FA-11D0-9E44-00AA00B6770A}';
  CLASS_CompReg: TGUID = '{73D8E7B7-1634-44DC-BF82-9D014B0C7716}';
  DIID__IPlatInterActiveEvents: TGUID = '{3CBB2702-C936-4ED4-9E9B-D955F02F7E4F}';
  IID_IPlatInterActive: TGUID = '{3F80B2C1-C502-4381-831C-A6DD2EE8FACC}';
  CLASS_PlatInterActive: TGUID = '{12F1D13E-5AF7-477E-9383-EFBEDD398F18}';
type

// *********************************************************************//
// Forward declaration of types defined in TypeLibrary                    
// *********************************************************************//
  IComponentRegistrar = interface;
  IComponentRegistrarDisp = dispinterface;
  _IPlatInterActiveEvents = dispinterface;
  IPlatInterActive = interface;
  IPlatInterActiveDisp = dispinterface;

// *********************************************************************//
// Declaration of CoClasses defined in Type Library                       
// (NOTE: Here we map each CoClass to its Default Interface)              
// *********************************************************************//
  CompReg = IComponentRegistrar;
  PlatInterActive = IPlatInterActive;


// *********************************************************************//
// Declaration of structures, unions and aliases.                         
// *********************************************************************//
  PByte1 = ^Byte; {*}


// *********************************************************************//
// Interface: IComponentRegistrar
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {A817E7A2-43FA-11D0-9E44-00AA00B6770A}
// *********************************************************************//
  IComponentRegistrar = interface(IDispatch)
    ['{A817E7A2-43FA-11D0-9E44-00AA00B6770A}']
    procedure Attach(const bstrPath: WideString); safecall;
    procedure RegisterAll; safecall;
    procedure UnregisterAll; safecall;
    procedure GetComponents(out pbstrCLSIDs: PSafeArray; out pbstrDescriptions: PSafeArray); safecall;
    procedure RegisterComponent(const bstrCLSID: WideString); safecall;
    procedure UnregisterComponent(const bstrCLSID: WideString); safecall;
  end;

// *********************************************************************//
// DispIntf:  IComponentRegistrarDisp
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {A817E7A2-43FA-11D0-9E44-00AA00B6770A}
// *********************************************************************//
  IComponentRegistrarDisp = dispinterface
    ['{A817E7A2-43FA-11D0-9E44-00AA00B6770A}']
    procedure Attach(const bstrPath: WideString); dispid 1;
    procedure RegisterAll; dispid 2;
    procedure UnregisterAll; dispid 3;
    procedure GetComponents(out pbstrCLSIDs: {??PSafeArray}OleVariant; 
                            out pbstrDescriptions: {??PSafeArray}OleVariant); dispid 4;
    procedure RegisterComponent(const bstrCLSID: WideString); dispid 5;
    procedure UnregisterComponent(const bstrCLSID: WideString); dispid 6;
  end;

// *********************************************************************//
// DispIntf:  _IPlatInterActiveEvents
// Flags:     (4096) Dispatchable
// GUID:      {3CBB2702-C936-4ED4-9E9B-D955F02F7E4F}
// *********************************************************************//
  _IPlatInterActiveEvents = dispinterface
    ['{3CBB2702-C936-4ED4-9E9B-D955F02F7E4F}']
    procedure OnInterfaceXMLResp(nCode: Integer; nDataLen: Integer; const XmlData: WideString); dispid 1;
    procedure OnInterfaceDataResp(nCode: Integer; var byteData: Byte); dispid 2;
  end;

// *********************************************************************//
// Interface: IPlatInterActive
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {3F80B2C1-C502-4381-831C-A6DD2EE8FACC}
// *********************************************************************//
  IPlatInterActive = interface(IDispatch)
    ['{3F80B2C1-C502-4381-831C-A6DD2EE8FACC}']
    function LoginPlat(const strUserName: WideString; const strPassword: WideString; 
                       const strPlatIPAddr: WideString; nPlatPort: Word; nLoginType: Integer): WideString; safecall;
    function LogoutPlat: Integer; safecall;
    function ReAuthen(const strPassword: WideString): Integer; safecall;
    function ChangePassword(const strOldPassword: WideString; const strNewPassword: WideString): Integer; safecall;
    function ReleaseCtrl: Integer; safecall;
    function LoginPlatEx(var lpLoginInfo: Byte; out lpLoginResult: Byte): Integer; safecall;
    function SetLanguage(nLanguage: Integer): Integer; safecall;
    function GetLanguage: Integer; safecall;
    function QueryUserGroupList: Integer; safecall;
    function QueryUserList: Integer; safecall;
    function SetUserGroup(nOperat: Integer; var stGroupInfo: Byte): Integer; safecall;
    function SetUser(nOperat: Integer; var lpUserInfo: Byte): Integer; safecall;
    function QueryUserGroup(const strGroupId: WideString): Integer; safecall;
    function QueryUser(const strUserId: WideString): Integer; safecall;
    function SetUserPassword(const strUserId: WideString; const strPassword: WideString): Integer; safecall;
    function GetPollScheme(const strUserId: WideString; nScheme: Integer; nRectNo: Integer): WideString; safecall;
    function SetPollScheme(OperatType: Integer; const strUserId: WideString; nScheme: Integer; 
                           nRectNo: Integer; const strPollScheme: WideString): Integer; safecall;
    function GetPlaySchemeInfo(const strUserId: WideString; nPlayer: Integer): WideString; safecall;
    function SetPlaySchemeInfo(OperatType: Integer; const strUserId: WideString; nPlayer: Integer; 
                               const strInfo: WideString): Integer; safecall;
    function GetLastScheme(const strUserId: WideString): Integer; safecall;
    function SetLastScheme(OperatType: Integer; const strUserId: WideString; nScheme: Integer): Integer; safecall;
    function GetPlaySchemeInfos(const strUserId: WideString): WideString; safecall;
    function GetCameraDeviceInfo(const strCameraId: WideString): WideString; safecall;
    function GetCameraVSSInfo(const strCameraId: WideString): WideString; safecall;
    function GetDeviceListXML: WideString; safecall;
    function GetDeviceList(out pstDeviceList: Byte; nDataLen: Integer): Integer; safecall;
    function GetCameraByMaster(const strMasterId: WideString): WideString; safecall;
    function GetMasterDevice(const strDeviceId: WideString; var bpBaseInfo: Byte; 
                             var bpMasterInfo: Byte): Integer; safecall;
    function SetMasterDevice(nOperat: Integer; const strDeviceId: WideString; var bpBaseInfo: Byte; 
                             var bpMasterInfo: Byte): Integer; safecall;
    function GetSlaveDevice(const strDeviceId: WideString; var bpBaseInfo: Byte; 
                            var bpCameraInfo: Byte; var bpDevRelation: Byte): Integer; safecall;
    function SetSlaveDevice(nOperat: Integer; const strDeviceId: WideString; var bpBaseInfo: Byte; 
                            var bpCameraInfo: Byte; var bpDevRelation: Byte): Integer; safecall;
    function SetDevRelatedUser(nOperat: Integer; var pInfo: Byte): Integer; safecall;
    function GetDevRelatedUser(const strFilter: WideString; out pDataInfos: Byte; nDataLen: Integer): Integer; safecall;
    function GetDeviceGroupList(var pDataInfos: Byte; nDataLen: Integer): Integer; safecall;
    function SetDeviceGroup(nOperat: Integer; var bpInfo: Byte): Integer; safecall;
    function DelDevRelatedUser(const strDomainId: WideString; nType: Integer; 
                               const strInfo: WideString): Integer; safecall;
    function QueryDomainList: Integer; safecall;
    function QueryDomainRelationList: Integer; safecall;
    function SetDomainInfo(nOperat: Integer; var pInfo: Byte): Integer; safecall;
    function QueryDomainInfo(const strDomainId: WideString; out pInfo: Byte): Integer; safecall;
    function SetDevLocation(nOperat: Integer; const strDomainId: WideString; var pInfo: Byte): Integer; safecall;
    function GetDevLocation(const strDomainId: WideString; const strDevId: WideString; 
                            out pInfo: Byte): Integer; safecall;
    function QueryDeviceFile(const strFilter: WideString): Integer; safecall;
    function DownloadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                const strFileURL: WideString; const strLocalPath: WideString): Integer; safecall;
    function CancelDownloadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                      const strFileURL: WideString): Integer; safecall;
    function UploadDeviceFile(nType: Integer; const strCameraId: WideString; 
                              const strFilePath: WideString): Integer; safecall;
    function CancelUploadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                    const strFilePath: WideString): Integer; safecall;
    function UploadFileToDevice(nType: Integer; const strDeviceId: WideString; 
                                const strFileURL: WideString): Integer; safecall;
    function CancelUploadFileToDevice(nType: Integer; const strDeviceId: WideString; 
                                      const strFileURL: WideString): Integer; safecall;
    function InviteDeviceMonitor(const strCameraId: WideString; nResolution: Integer; 
                                 nRecvPort: Integer; nPollNum: Integer): WideString; safecall;
    function StopDeviceMonitor(const strCameraId: WideString; nResolution: Integer): Integer; safecall;
    function GetDeviceState(const strDomainId: WideString): WideString; safecall;
    function InvitePTZControl(const strCameraId: WideString): Integer; safecall;
    function SendPTZCmd(const strCameraId: WideString; nType: Integer; const strCmdInfo: WideString): Integer; safecall;
    function SendConfigReq(const strDeviceId: WideString; const strXMLInfo: WideString): Integer; safecall;
    function RequestTalk(const strCameraId: WideString; nCodecType: Integer; nSampleRate: Integer; 
                         nSampleBitsWitdh: Integer; nChannels: Integer; BitRate: Integer): Integer; safecall;
    function RequestBroadcast(const strDomainId: WideString; nCodecType: Integer; 
                              nSampleRate: Integer; nSampleBitsWitdh: Integer; nChannels: Integer; 
                              BitRate: Integer): Integer; safecall;
    function StopTalk(const strCameraId: WideString): Integer; safecall;
    function StopBroadcast(const strDomainId: WideString): Integer; safecall;
    function SetClientAlarmLinkage(nOperat: Integer; const strDomainId: WideString; 
                                   nCount: Integer; var pInfo: Byte): Integer; safecall;
    function GetClientAlarmLinkage(const strDomainId: WideString; const strDevId: WideString; 
                                   out pInfo: Byte): Integer; safecall;
    function QueryLogXML(nCategory: Integer; const strDomainId: WideString; nPage: Integer; 
                         const strFilter: WideString): WideString; safecall;
    function QueryLogData(nCategory: Integer; const strDomainId: WideString; nPage: Integer; 
                          const strFilter: WideString; out pDataInfos: Byte; nDataLen: Integer): Integer; safecall;
    function DeleteLog(nCategory: Integer; const strDomainId: WideString; 
                       const strFilter: WideString): Integer; safecall;
    function AddOpLog(const strDomainId: WideString; nOperatType: Integer; 
                      const strObjectId: WideString; const strObjectName: WideString; 
                      const strDesc: WideString): Integer; safecall;
    function QueryRecord(const strCameraId: WideString; const strFilter: WideString): Integer; safecall;
    function DownloadRecord(const strCameraId: WideString; nCategory: Integer; 
                            const strRecordUrl: WideString; const strLocalPath: WideString): Integer; safecall;
    function DeleteRecord(const strCameraId: WideString; nCategory: Integer; 
                          const strRecordUrl: WideString): Integer; safecall;
    function CancelDownloadRecord(const strCameraId: WideString; nCategory: Integer; 
                                  const strRecordUrl: WideString): Integer; safecall;
    function SetProtectRecord(const strCameraId: WideString; nCategory: Integer; 
                              const strRecordUrl: WideString; nProtect: Integer): Integer; safecall;
    function PlayRecord(const strRecordUrl: WideString): Integer; safecall;
    function GetDownloadList(nCategory: Integer; const strCameraId: WideString; 
                             out pDataInfos: Byte; nDataLen: Integer): Integer; safecall;
    function SetStoragePolicy(nOperat: Integer; nCategory: Integer; const strDomainId: WideString; 
                              var pstInfo: Byte): Integer; safecall;
    function GetStoragePolicy(nCategory: Integer; const strDomainId: WideString; 
                              const strFilter: WideString; out pDataInfos: Byte; nDataLen: Integer): Integer; safecall;
    function SetRecordScheme(nOperat: Integer; const strDomainId: WideString; var pstInfo: Byte): Integer; safecall;
    function GetRecordScheme(const strDomainId: WideString; const strFilter: WideString; 
                             out pDataInfos: Byte; nDataLen: Integer): Integer; safecall;
    function GetStoragePath(const strDomainId: WideString; var pDataInfos: Byte; nDataLen: Integer): Integer; safecall;
    function InviteRecordPlay(const strCameraId: WideString): Integer; safecall;
    function StartRecordPlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer; safecall;
    function PauseRecordPlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer; safecall;
    function GetRecordPlayParam(const strCameraId: WideString): WideString; safecall;
    function SetRecordPlayParam(const strCameraId: WideString; const strRecordPlayParam: WideString): Integer; safecall;
    function StopRecordPlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer; safecall;
    function GetRecordPlayInfo(const strCameraId: WideString; const strRecordUrl: WideString): WideString; safecall;
    function RecordLivePlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer; safecall;
    function RecordReplay(const strCameraId: WideString; const strRecordUrl: WideString): Integer; safecall;
    function PlayRecordNext(const strCameraId: WideString): Integer; safecall;
    function GetAlmActionRelation(const strDomainId: WideString; const strFilter: WideString; 
                                  out pDataInfos: Byte; nDataLen: Integer): Integer; safecall;
    function SetAlmActionRelation(nOperat: Integer; const strDomainId: WideString; var pstInfo: Byte): Integer; safecall;
    function GetSysAlmFwList(const strDomainId: WideString; const strFilter: WideString; 
                             out pDataInfos: Byte; nDataLen: Integer): Integer; safecall;
    function SetSysAlmFwList(nOperat: Integer; const strDomainId: WideString; var pstInfo: Byte): Integer; safecall;
    function GetVSSInfo(nVSSId: Integer; out pnDataLen: Integer; out pVssInfo: Byte): Integer; safecall;
    function SetVSSInfo(OperatType: Integer; nVSSId: Integer; var pVssInfo: Byte): Integer; safecall;
    function GetVSSInfoAll(out pDataInfos: Byte; nDataLen: Integer): Integer; safecall;
    function SetRespType(nType: Integer): Integer; safecall;
    function SetLocalInfoEx(var pDataInfo: Byte): Integer; safecall;
    function GetLocalInfoEx(nIndex: Integer; out pDataInfo: Byte): Integer; safecall;
    function DatFileToAvi(const strDestFile: WideString; const strSrcFile: WideString): Integer; safecall;
    function GetRecordCount(const strDomainId: WideString; const strTableName: WideString; 
                            const strFilter: WideString): Integer; safecall;
    function RefreshServerData(nType: Integer; const strDomainId: WideString; nNetId: Integer; 
                               const strTblName: WideString): Integer; safecall;
  end;

// *********************************************************************//
// DispIntf:  IPlatInterActiveDisp
// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID:      {3F80B2C1-C502-4381-831C-A6DD2EE8FACC}
// *********************************************************************//
  IPlatInterActiveDisp = dispinterface
    ['{3F80B2C1-C502-4381-831C-A6DD2EE8FACC}']
    function LoginPlat(const strUserName: WideString; const strPassword: WideString; 
                       const strPlatIPAddr: WideString; nPlatPort: {??Word}OleVariant; 
                       nLoginType: Integer): WideString; dispid 1;
    function LogoutPlat: Integer; dispid 2;
    function ReAuthen(const strPassword: WideString): Integer; dispid 3;
    function ChangePassword(const strOldPassword: WideString; const strNewPassword: WideString): Integer; dispid 4;
    function ReleaseCtrl: Integer; dispid 5;
    function LoginPlatEx(var lpLoginInfo: Byte; out lpLoginResult: Byte): Integer; dispid 6;
    function SetLanguage(nLanguage: Integer): Integer; dispid 7;
    function GetLanguage: Integer; dispid 8;
    function QueryUserGroupList: Integer; dispid 11;
    function QueryUserList: Integer; dispid 12;
    function SetUserGroup(nOperat: Integer; var stGroupInfo: Byte): Integer; dispid 13;
    function SetUser(nOperat: Integer; var lpUserInfo: Byte): Integer; dispid 14;
    function QueryUserGroup(const strGroupId: WideString): Integer; dispid 15;
    function QueryUser(const strUserId: WideString): Integer; dispid 16;
    function SetUserPassword(const strUserId: WideString; const strPassword: WideString): Integer; dispid 17;
    function GetPollScheme(const strUserId: WideString; nScheme: Integer; nRectNo: Integer): WideString; dispid 21;
    function SetPollScheme(OperatType: Integer; const strUserId: WideString; nScheme: Integer; 
                           nRectNo: Integer; const strPollScheme: WideString): Integer; dispid 22;
    function GetPlaySchemeInfo(const strUserId: WideString; nPlayer: Integer): WideString; dispid 23;
    function SetPlaySchemeInfo(OperatType: Integer; const strUserId: WideString; nPlayer: Integer; 
                               const strInfo: WideString): Integer; dispid 24;
    function GetLastScheme(const strUserId: WideString): Integer; dispid 25;
    function SetLastScheme(OperatType: Integer; const strUserId: WideString; nScheme: Integer): Integer; dispid 26;
    function GetPlaySchemeInfos(const strUserId: WideString): WideString; dispid 27;
    function GetCameraDeviceInfo(const strCameraId: WideString): WideString; dispid 31;
    function GetCameraVSSInfo(const strCameraId: WideString): WideString; dispid 32;
    function GetDeviceListXML: WideString; dispid 33;
    function GetDeviceList(out pstDeviceList: Byte; nDataLen: Integer): Integer; dispid 34;
    function GetCameraByMaster(const strMasterId: WideString): WideString; dispid 35;
    function GetMasterDevice(const strDeviceId: WideString; var bpBaseInfo: Byte; 
                             var bpMasterInfo: Byte): Integer; dispid 41;
    function SetMasterDevice(nOperat: Integer; const strDeviceId: WideString; var bpBaseInfo: Byte; 
                             var bpMasterInfo: Byte): Integer; dispid 42;
    function GetSlaveDevice(const strDeviceId: WideString; var bpBaseInfo: Byte; 
                            var bpCameraInfo: Byte; var bpDevRelation: Byte): Integer; dispid 43;
    function SetSlaveDevice(nOperat: Integer; const strDeviceId: WideString; var bpBaseInfo: Byte; 
                            var bpCameraInfo: Byte; var bpDevRelation: Byte): Integer; dispid 44;
    function SetDevRelatedUser(nOperat: Integer; var pInfo: Byte): Integer; dispid 45;
    function GetDevRelatedUser(const strFilter: WideString; out pDataInfos: Byte; nDataLen: Integer): Integer; dispid 46;
    function GetDeviceGroupList(var pDataInfos: Byte; nDataLen: Integer): Integer; dispid 47;
    function SetDeviceGroup(nOperat: Integer; var bpInfo: Byte): Integer; dispid 48;
    function DelDevRelatedUser(const strDomainId: WideString; nType: Integer; 
                               const strInfo: WideString): Integer; dispid 49;
    function QueryDomainList: Integer; dispid 51;
    function QueryDomainRelationList: Integer; dispid 52;
    function SetDomainInfo(nOperat: Integer; var pInfo: Byte): Integer; dispid 53;
    function QueryDomainInfo(const strDomainId: WideString; out pInfo: Byte): Integer; dispid 54;
    function SetDevLocation(nOperat: Integer; const strDomainId: WideString; var pInfo: Byte): Integer; dispid 55;
    function GetDevLocation(const strDomainId: WideString; const strDevId: WideString; 
                            out pInfo: Byte): Integer; dispid 56;
    function QueryDeviceFile(const strFilter: WideString): Integer; dispid 61;
    function DownloadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                const strFileURL: WideString; const strLocalPath: WideString): Integer; dispid 62;
    function CancelDownloadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                      const strFileURL: WideString): Integer; dispid 64;
    function UploadDeviceFile(nType: Integer; const strCameraId: WideString; 
                              const strFilePath: WideString): Integer; dispid 63;
    function CancelUploadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                    const strFilePath: WideString): Integer; dispid 65;
    function UploadFileToDevice(nType: Integer; const strDeviceId: WideString; 
                                const strFileURL: WideString): Integer; dispid 66;
    function CancelUploadFileToDevice(nType: Integer; const strDeviceId: WideString; 
                                      const strFileURL: WideString): Integer; dispid 67;
    function InviteDeviceMonitor(const strCameraId: WideString; nResolution: Integer; 
                                 nRecvPort: Integer; nPollNum: Integer): WideString; dispid 81;
    function StopDeviceMonitor(const strCameraId: WideString; nResolution: Integer): Integer; dispid 82;
    function GetDeviceState(const strDomainId: WideString): WideString; dispid 83;
    function InvitePTZControl(const strCameraId: WideString): Integer; dispid 91;
    function SendPTZCmd(const strCameraId: WideString; nType: Integer; const strCmdInfo: WideString): Integer; dispid 92;
    function SendConfigReq(const strDeviceId: WideString; const strXMLInfo: WideString): Integer; dispid 93;
    function RequestTalk(const strCameraId: WideString; nCodecType: Integer; nSampleRate: Integer; 
                         nSampleBitsWitdh: Integer; nChannels: Integer; BitRate: Integer): Integer; dispid 101;
    function RequestBroadcast(const strDomainId: WideString; nCodecType: Integer; 
                              nSampleRate: Integer; nSampleBitsWitdh: Integer; nChannels: Integer; 
                              BitRate: Integer): Integer; dispid 102;
    function StopTalk(const strCameraId: WideString): Integer; dispid 103;
    function StopBroadcast(const strDomainId: WideString): Integer; dispid 104;
    function SetClientAlarmLinkage(nOperat: Integer; const strDomainId: WideString; 
                                   nCount: Integer; var pInfo: Byte): Integer; dispid 111;
    function GetClientAlarmLinkage(const strDomainId: WideString; const strDevId: WideString; 
                                   out pInfo: Byte): Integer; dispid 112;
    function QueryLogXML(nCategory: Integer; const strDomainId: WideString; nPage: Integer; 
                         const strFilter: WideString): WideString; dispid 121;
    function QueryLogData(nCategory: Integer; const strDomainId: WideString; nPage: Integer; 
                          const strFilter: WideString; out pDataInfos: Byte; nDataLen: Integer): Integer; dispid 122;
    function DeleteLog(nCategory: Integer; const strDomainId: WideString; 
                       const strFilter: WideString): Integer; dispid 123;
    function AddOpLog(const strDomainId: WideString; nOperatType: Integer; 
                      const strObjectId: WideString; const strObjectName: WideString; 
                      const strDesc: WideString): Integer; dispid 124;
    function QueryRecord(const strCameraId: WideString; const strFilter: WideString): Integer; dispid 141;
    function DownloadRecord(const strCameraId: WideString; nCategory: Integer; 
                            const strRecordUrl: WideString; const strLocalPath: WideString): Integer; dispid 142;
    function DeleteRecord(const strCameraId: WideString; nCategory: Integer; 
                          const strRecordUrl: WideString): Integer; dispid 143;
    function CancelDownloadRecord(const strCameraId: WideString; nCategory: Integer; 
                                  const strRecordUrl: WideString): Integer; dispid 144;
    function SetProtectRecord(const strCameraId: WideString; nCategory: Integer; 
                              const strRecordUrl: WideString; nProtect: Integer): Integer; dispid 145;
    function PlayRecord(const strRecordUrl: WideString): Integer; dispid 146;
    function GetDownloadList(nCategory: Integer; const strCameraId: WideString; 
                             out pDataInfos: Byte; nDataLen: Integer): Integer; dispid 147;
    function SetStoragePolicy(nOperat: Integer; nCategory: Integer; const strDomainId: WideString; 
                              var pstInfo: Byte): Integer; dispid 154;
    function GetStoragePolicy(nCategory: Integer; const strDomainId: WideString; 
                              const strFilter: WideString; out pDataInfos: Byte; nDataLen: Integer): Integer; dispid 156;
    function SetRecordScheme(nOperat: Integer; const strDomainId: WideString; var pstInfo: Byte): Integer; dispid 157;
    function GetRecordScheme(const strDomainId: WideString; const strFilter: WideString; 
                             out pDataInfos: Byte; nDataLen: Integer): Integer; dispid 158;
    function GetStoragePath(const strDomainId: WideString; var pDataInfos: Byte; nDataLen: Integer): Integer; dispid 159;
    function InviteRecordPlay(const strCameraId: WideString): Integer; dispid 171;
    function StartRecordPlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer; dispid 173;
    function PauseRecordPlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer; dispid 174;
    function GetRecordPlayParam(const strCameraId: WideString): WideString; dispid 175;
    function SetRecordPlayParam(const strCameraId: WideString; const strRecordPlayParam: WideString): Integer; dispid 176;
    function StopRecordPlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer; dispid 177;
    function GetRecordPlayInfo(const strCameraId: WideString; const strRecordUrl: WideString): WideString; dispid 178;
    function RecordLivePlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer; dispid 179;
    function RecordReplay(const strCameraId: WideString; const strRecordUrl: WideString): Integer; dispid 180;
    function PlayRecordNext(const strCameraId: WideString): Integer; dispid 181;
    function GetAlmActionRelation(const strDomainId: WideString; const strFilter: WideString; 
                                  out pDataInfos: Byte; nDataLen: Integer): Integer; dispid 191;
    function SetAlmActionRelation(nOperat: Integer; const strDomainId: WideString; var pstInfo: Byte): Integer; dispid 192;
    function GetSysAlmFwList(const strDomainId: WideString; const strFilter: WideString; 
                             out pDataInfos: Byte; nDataLen: Integer): Integer; dispid 193;
    function SetSysAlmFwList(nOperat: Integer; const strDomainId: WideString; var pstInfo: Byte): Integer; dispid 194;
    function GetVSSInfo(nVSSId: Integer; out pnDataLen: Integer; out pVssInfo: Byte): Integer; dispid 201;
    function SetVSSInfo(OperatType: Integer; nVSSId: Integer; var pVssInfo: Byte): Integer; dispid 202;
    function GetVSSInfoAll(out pDataInfos: Byte; nDataLen: Integer): Integer; dispid 203;
    function SetRespType(nType: Integer): Integer; dispid 210;
    function SetLocalInfoEx(var pDataInfo: Byte): Integer; dispid 213;
    function GetLocalInfoEx(nIndex: Integer; out pDataInfo: Byte): Integer; dispid 214;
    function DatFileToAvi(const strDestFile: WideString; const strSrcFile: WideString): Integer; dispid 216;
    function GetRecordCount(const strDomainId: WideString; const strTableName: WideString; 
                            const strFilter: WideString): Integer; dispid 220;
    function RefreshServerData(nType: Integer; const strDomainId: WideString; nNetId: Integer; 
                               const strTblName: WideString): Integer; dispid 300;
  end;

// *********************************************************************//
// The Class CoCompReg provides a Create and CreateRemote method to          
// create instances of the default interface IComponentRegistrar exposed by              
// the CoClass CompReg. The functions are intended to be used by             
// clients wishing to automate the CoClass objects exposed by the         
// server of this typelibrary.                                            
// *********************************************************************//
  CoCompReg = class
    class function Create: IComponentRegistrar;
    class function CreateRemote(const MachineName: string): IComponentRegistrar;
  end;


// *********************************************************************//
// OLE Server Proxy class declaration
// Server Object    : TCompReg
// Help String      : ComponentRegistrar 类
// Default Interface: IComponentRegistrar
// Def. Intf. DISP? : No
// Event   Interface: 
// TypeFlags        : (2) CanCreate
// *********************************************************************//
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
  TCompRegProperties= class;
{$ENDIF}
  TCompReg = class(TOleServer)
  private
    FIntf:        IComponentRegistrar;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
    FProps:       TCompRegProperties;
    function      GetServerProperties: TCompRegProperties;
{$ENDIF}
    function      GetDefaultInterface: IComponentRegistrar;
  protected
    procedure InitServerData; override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;
    procedure Connect; override;
    procedure ConnectTo(svrIntf: IComponentRegistrar);
    procedure Disconnect; override;
    procedure Attach(const bstrPath: WideString);
    procedure RegisterAll;
    procedure UnregisterAll;
    procedure GetComponents(out pbstrCLSIDs: PSafeArray; out pbstrDescriptions: PSafeArray);
    procedure RegisterComponent(const bstrCLSID: WideString);
    procedure UnregisterComponent(const bstrCLSID: WideString);
    property DefaultInterface: IComponentRegistrar read GetDefaultInterface;
  published
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
    property Server: TCompRegProperties read GetServerProperties;
{$ENDIF}
  end;

{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
// *********************************************************************//
// OLE Server Properties Proxy Class
// Server Object    : TCompReg
// (This object is used by the IDE's Property Inspector to allow editing
//  of the properties of this server)
// *********************************************************************//
 TCompRegProperties = class(TPersistent)
  private
    FServer:    TCompReg;
    function    GetDefaultInterface: IComponentRegistrar;
    constructor Create(AServer: TCompReg);
  protected
  public
    property DefaultInterface: IComponentRegistrar read GetDefaultInterface;
  published
  end;
{$ENDIF}



// *********************************************************************//
// OLE Control Proxy class declaration
// Control Name     : TPlatInterActive
// Help String      : PlatInterActive Class
// Default Interface: IPlatInterActive
// Def. Intf. DISP? : No
// Event   Interface: _IPlatInterActiveEvents
// TypeFlags        : (38) CanCreate Licensed Control
// *********************************************************************//
  TPlatInterActiveOnInterfaceXMLResp = procedure(ASender: TObject; nCode: Integer; 
                                                                   nDataLen: Integer; 
                                                                   const XmlData: WideString) of object;
  TPlatInterActiveOnInterfaceDataResp = procedure(ASender: TObject; nCode: Integer; 
                                                                    var byteData: Byte) of object;

  TPlatInterActive = class(TOleControl)
  private
    FOnInterfaceXMLResp: TPlatInterActiveOnInterfaceXMLResp;
    FOnInterfaceDataResp: TPlatInterActiveOnInterfaceDataResp;
    FIntf: IPlatInterActive;
    function  GetControlInterface: IPlatInterActive;
  protected
    procedure CreateControl;
    procedure InitControlData; override;
  public
    function LoginPlat(const strUserName: WideString; const strPassword: WideString; 
                       const strPlatIPAddr: WideString; nPlatPort: Word; nLoginType: Integer): WideString;
    function LogoutPlat: Integer;
    function ReAuthen(const strPassword: WideString): Integer;
    function ChangePassword(const strOldPassword: WideString; const strNewPassword: WideString): Integer;
    function ReleaseCtrl: Integer;
    function LoginPlatEx(var lpLoginInfo: Byte; out lpLoginResult: Byte): Integer;
    function SetLanguage(nLanguage: Integer): Integer;
    function GetLanguage: Integer;
    function QueryUserGroupList: Integer;
    function QueryUserList: Integer;
    function SetUserGroup(nOperat: Integer; var stGroupInfo: Byte): Integer;
    function SetUser(nOperat: Integer; var lpUserInfo: Byte): Integer;
    function QueryUserGroup(const strGroupId: WideString): Integer;
    function QueryUser(const strUserId: WideString): Integer;
    function SetUserPassword(const strUserId: WideString; const strPassword: WideString): Integer;
    function GetPollScheme(const strUserId: WideString; nScheme: Integer; nRectNo: Integer): WideString;
    function SetPollScheme(OperatType: Integer; const strUserId: WideString; nScheme: Integer; 
                           nRectNo: Integer; const strPollScheme: WideString): Integer;
    function GetPlaySchemeInfo(const strUserId: WideString; nPlayer: Integer): WideString;
    function SetPlaySchemeInfo(OperatType: Integer; const strUserId: WideString; nPlayer: Integer; 
                               const strInfo: WideString): Integer;
    function GetLastScheme(const strUserId: WideString): Integer;
    function SetLastScheme(OperatType: Integer; const strUserId: WideString; nScheme: Integer): Integer;
    function GetPlaySchemeInfos(const strUserId: WideString): WideString;
    function GetCameraDeviceInfo(const strCameraId: WideString): WideString;
    function GetCameraVSSInfo(const strCameraId: WideString): WideString;
    function GetDeviceListXML: WideString;
    function GetDeviceList(out pstDeviceList: Byte; nDataLen: Integer): Integer;
    function GetCameraByMaster(const strMasterId: WideString): WideString;
    function GetMasterDevice(const strDeviceId: WideString; var bpBaseInfo: Byte; 
                             var bpMasterInfo: Byte): Integer;
    function SetMasterDevice(nOperat: Integer; const strDeviceId: WideString; var bpBaseInfo: Byte; 
                             var bpMasterInfo: Byte): Integer;
    function GetSlaveDevice(const strDeviceId: WideString; var bpBaseInfo: Byte; 
                            var bpCameraInfo: Byte; var bpDevRelation: Byte): Integer;
    function SetSlaveDevice(nOperat: Integer; const strDeviceId: WideString; var bpBaseInfo: Byte; 
                            var bpCameraInfo: Byte; var bpDevRelation: Byte): Integer;
    function SetDevRelatedUser(nOperat: Integer; var pInfo: Byte): Integer;
    function GetDevRelatedUser(const strFilter: WideString; out pDataInfos: Byte; nDataLen: Integer): Integer;
    function GetDeviceGroupList(var pDataInfos: Byte; nDataLen: Integer): Integer;
    function SetDeviceGroup(nOperat: Integer; var bpInfo: Byte): Integer;
    function DelDevRelatedUser(const strDomainId: WideString; nType: Integer; 
                               const strInfo: WideString): Integer;
    function QueryDomainList: Integer;
    function QueryDomainRelationList: Integer;
    function SetDomainInfo(nOperat: Integer; var pInfo: Byte): Integer;
    function QueryDomainInfo(const strDomainId: WideString; out pInfo: Byte): Integer;
    function SetDevLocation(nOperat: Integer; const strDomainId: WideString; var pInfo: Byte): Integer;
    function GetDevLocation(const strDomainId: WideString; const strDevId: WideString; 
                            out pInfo: Byte): Integer;
    function QueryDeviceFile(const strFilter: WideString): Integer;
    function DownloadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                const strFileURL: WideString; const strLocalPath: WideString): Integer;
    function CancelDownloadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                      const strFileURL: WideString): Integer;
    function UploadDeviceFile(nType: Integer; const strCameraId: WideString; 
                              const strFilePath: WideString): Integer;
    function CancelUploadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                    const strFilePath: WideString): Integer;
    function UploadFileToDevice(nType: Integer; const strDeviceId: WideString; 
                                const strFileURL: WideString): Integer;
    function CancelUploadFileToDevice(nType: Integer; const strDeviceId: WideString; 
                                      const strFileURL: WideString): Integer;
    function InviteDeviceMonitor(const strCameraId: WideString; nResolution: Integer; 
                                 nRecvPort: Integer; nPollNum: Integer): WideString;
    function StopDeviceMonitor(const strCameraId: WideString; nResolution: Integer): Integer;
    function GetDeviceState(const strDomainId: WideString): WideString;
    function InvitePTZControl(const strCameraId: WideString): Integer;
    function SendPTZCmd(const strCameraId: WideString; nType: Integer; const strCmdInfo: WideString): Integer;
    function SendConfigReq(const strDeviceId: WideString; const strXMLInfo: WideString): Integer;
    function RequestTalk(const strCameraId: WideString; nCodecType: Integer; nSampleRate: Integer; 
                         nSampleBitsWitdh: Integer; nChannels: Integer; BitRate: Integer): Integer;
    function RequestBroadcast(const strDomainId: WideString; nCodecType: Integer; 
                              nSampleRate: Integer; nSampleBitsWitdh: Integer; nChannels: Integer; 
                              BitRate: Integer): Integer;
    function StopTalk(const strCameraId: WideString): Integer;
    function StopBroadcast(const strDomainId: WideString): Integer;
    function SetClientAlarmLinkage(nOperat: Integer; const strDomainId: WideString; 
                                   nCount: Integer; var pInfo: Byte): Integer;
    function GetClientAlarmLinkage(const strDomainId: WideString; const strDevId: WideString; 
                                   out pInfo: Byte): Integer;
    function QueryLogXML(nCategory: Integer; const strDomainId: WideString; nPage: Integer; 
                         const strFilter: WideString): WideString;
    function QueryLogData(nCategory: Integer; const strDomainId: WideString; nPage: Integer; 
                          const strFilter: WideString; out pDataInfos: Byte; nDataLen: Integer): Integer;
    function DeleteLog(nCategory: Integer; const strDomainId: WideString; 
                       const strFilter: WideString): Integer;
    function AddOpLog(const strDomainId: WideString; nOperatType: Integer; 
                      const strObjectId: WideString; const strObjectName: WideString; 
                      const strDesc: WideString): Integer;
    function QueryRecord(const strCameraId: WideString; const strFilter: WideString): Integer;
    function DownloadRecord(const strCameraId: WideString; nCategory: Integer; 
                            const strRecordUrl: WideString; const strLocalPath: WideString): Integer;
    function DeleteRecord(const strCameraId: WideString; nCategory: Integer; 
                          const strRecordUrl: WideString): Integer;
    function CancelDownloadRecord(const strCameraId: WideString; nCategory: Integer; 
                                  const strRecordUrl: WideString): Integer;
    function SetProtectRecord(const strCameraId: WideString; nCategory: Integer; 
                              const strRecordUrl: WideString; nProtect: Integer): Integer;
    function PlayRecord(const strRecordUrl: WideString): Integer;
    function GetDownloadList(nCategory: Integer; const strCameraId: WideString; 
                             out pDataInfos: Byte; nDataLen: Integer): Integer;
    function SetStoragePolicy(nOperat: Integer; nCategory: Integer; const strDomainId: WideString; 
                              var pstInfo: Byte): Integer;
    function GetStoragePolicy(nCategory: Integer; const strDomainId: WideString; 
                              const strFilter: WideString; out pDataInfos: Byte; nDataLen: Integer): Integer;
    function SetRecordScheme(nOperat: Integer; const strDomainId: WideString; var pstInfo: Byte): Integer;
    function GetRecordScheme(const strDomainId: WideString; const strFilter: WideString; 
                             out pDataInfos: Byte; nDataLen: Integer): Integer;
    function GetStoragePath(const strDomainId: WideString; var pDataInfos: Byte; nDataLen: Integer): Integer;
    function InviteRecordPlay(const strCameraId: WideString): Integer;
    function StartRecordPlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer;
    function PauseRecordPlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer;
    function GetRecordPlayParam(const strCameraId: WideString): WideString;
    function SetRecordPlayParam(const strCameraId: WideString; const strRecordPlayParam: WideString): Integer;
    function StopRecordPlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer;
    function GetRecordPlayInfo(const strCameraId: WideString; const strRecordUrl: WideString): WideString;
    function RecordLivePlay(const strCameraId: WideString; const strRecordUrl: WideString): Integer;
    function RecordReplay(const strCameraId: WideString; const strRecordUrl: WideString): Integer;
    function PlayRecordNext(const strCameraId: WideString): Integer;
    function GetAlmActionRelation(const strDomainId: WideString; const strFilter: WideString; 
                                  out pDataInfos: Byte; nDataLen: Integer): Integer;
    function SetAlmActionRelation(nOperat: Integer; const strDomainId: WideString; var pstInfo: Byte): Integer;
    function GetSysAlmFwList(const strDomainId: WideString; const strFilter: WideString; 
                             out pDataInfos: Byte; nDataLen: Integer): Integer;
    function SetSysAlmFwList(nOperat: Integer; const strDomainId: WideString; var pstInfo: Byte): Integer;
    function GetVSSInfo(nVSSId: Integer; out pnDataLen: Integer; out pVssInfo: Byte): Integer;
    function SetVSSInfo(OperatType: Integer; nVSSId: Integer; var pVssInfo: Byte): Integer;
    function GetVSSInfoAll(out pDataInfos: Byte; nDataLen: Integer): Integer;
    function SetRespType(nType: Integer): Integer;
    function SetLocalInfoEx(var pDataInfo: Byte): Integer;
    function GetLocalInfoEx(nIndex: Integer; out pDataInfo: Byte): Integer;
    function DatFileToAvi(const strDestFile: WideString; const strSrcFile: WideString): Integer;
    function GetRecordCount(const strDomainId: WideString; const strTableName: WideString; 
                            const strFilter: WideString): Integer;
    function RefreshServerData(nType: Integer; const strDomainId: WideString; nNetId: Integer; 
                               const strTblName: WideString): Integer;
    property  ControlInterface: IPlatInterActive read GetControlInterface;
    property  DefaultInterface: IPlatInterActive read GetControlInterface;
  published
    property Anchors;
    property  TabStop;
    property  Align;
    property  DragCursor;
    property  DragMode;
    property  ParentShowHint;
    property  PopupMenu;
    property  ShowHint;
    property  TabOrder;
    property  Visible;
    property  OnDragDrop;
    property  OnDragOver;
    property  OnEndDrag;
    property  OnEnter;
    property  OnExit;
    property  OnStartDrag;
    property OnInterfaceXMLResp: TPlatInterActiveOnInterfaceXMLResp read FOnInterfaceXMLResp write FOnInterfaceXMLResp;
    property OnInterfaceDataResp: TPlatInterActiveOnInterfaceDataResp read FOnInterfaceDataResp write FOnInterfaceDataResp;
  end;

procedure Register;

resourcestring
  dtlServerPage = 'Indy Clients';

  dtlOcxPage = 'Indy Clients';

implementation

uses ComObj;

class function CoCompReg.Create: IComponentRegistrar;
begin
  Result := CreateComObject(CLASS_CompReg) as IComponentRegistrar;
end;

class function CoCompReg.CreateRemote(const MachineName: string): IComponentRegistrar;
begin
  Result := CreateRemoteComObject(MachineName, CLASS_CompReg) as IComponentRegistrar;
end;

procedure TCompReg.InitServerData;
const
  CServerData: TServerData = (
    ClassID:   '{73D8E7B7-1634-44DC-BF82-9D014B0C7716}';
    IntfIID:   '{A817E7A2-43FA-11D0-9E44-00AA00B6770A}';
    EventIID:  '';
    LicenseKey: nil;
    Version: 500);
begin
  ServerData := @CServerData;
end;

procedure TCompReg.Connect;
var
  punk: IUnknown;
begin
  if FIntf = nil then
  begin
    punk := GetServer;
    Fintf:= punk as IComponentRegistrar;
  end;
end;

procedure TCompReg.ConnectTo(svrIntf: IComponentRegistrar);
begin
  Disconnect;
  FIntf := svrIntf;
end;

procedure TCompReg.DisConnect;
begin
  if Fintf <> nil then
  begin
    FIntf := nil;
  end;
end;

function TCompReg.GetDefaultInterface: IComponentRegistrar;
begin
  if FIntf = nil then
    Connect;
  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
  Result := FIntf;
end;

constructor TCompReg.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
  FProps := TCompRegProperties.Create(Self);
{$ENDIF}
end;

destructor TCompReg.Destroy;
begin
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
  FProps.Free;
{$ENDIF}
  inherited Destroy;
end;

{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
function TCompReg.GetServerProperties: TCompRegProperties;
begin
  Result := FProps;
end;
{$ENDIF}

procedure TCompReg.Attach(const bstrPath: WideString);
begin
  DefaultInterface.Attach(bstrPath);
end;

procedure TCompReg.RegisterAll;
begin
  DefaultInterface.RegisterAll;
end;

procedure TCompReg.UnregisterAll;
begin
  DefaultInterface.UnregisterAll;
end;

procedure TCompReg.GetComponents(out pbstrCLSIDs: PSafeArray; out pbstrDescriptions: PSafeArray);
begin
  DefaultInterface.GetComponents(pbstrCLSIDs, pbstrDescriptions);
end;

procedure TCompReg.RegisterComponent(const bstrCLSID: WideString);
begin
  DefaultInterface.RegisterComponent(bstrCLSID);
end;

procedure TCompReg.UnregisterComponent(const bstrCLSID: WideString);
begin
  DefaultInterface.UnregisterComponent(bstrCLSID);
end;

{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
constructor TCompRegProperties.Create(AServer: TCompReg);
begin
  inherited Create;
  FServer := AServer;
end;

function TCompRegProperties.GetDefaultInterface: IComponentRegistrar;
begin
  Result := FServer.DefaultInterface;
end;

{$ENDIF}

procedure TPlatInterActive.InitControlData;
const
  CEventDispIDs: array [0..1] of DWORD = (
    $00000001, $00000002);
  CLicenseKey: array[0..19] of Word = ( $0043, $0050, $006C, $0061, $0074, $0049, $006E, $0074, $0065, $0072, $0041
    , $0063, $0074, $0069, $0076, $0065, $0020, $8BB8, $53EF, $0000);
  CControlData: TControlData2 = (
    ClassID: '{12F1D13E-5AF7-477E-9383-EFBEDD398F18}';
    EventIID: '{3CBB2702-C936-4ED4-9E9B-D955F02F7E4F}';
    EventCount: 2;
    EventDispIDs: @CEventDispIDs;
    LicenseKey: @CLicenseKey;
    Flags: $00000000;
    Version: 401);
begin
  ControlData := @CControlData;
  TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnInterfaceXMLResp) - Cardinal(Self);
end;

procedure TPlatInterActive.CreateControl;

  procedure DoCreate;
  begin
    FIntf := IUnknown(OleObject) as IPlatInterActive;
  end;

begin
  if FIntf = nil then DoCreate;
end;

function TPlatInterActive.GetControlInterface: IPlatInterActive;
begin
  CreateControl;
  Result := FIntf;
end;

function TPlatInterActive.LoginPlat(const strUserName: WideString; const strPassword: WideString; 
                                    const strPlatIPAddr: WideString; nPlatPort: Word; 
                                    nLoginType: Integer): WideString;
begin
  Result := DefaultInterface.LoginPlat(strUserName, strPassword, strPlatIPAddr, nPlatPort, 
                                       nLoginType);
end;

function TPlatInterActive.LogoutPlat: Integer;
begin
  Result := DefaultInterface.LogoutPlat;
end;

function TPlatInterActive.ReAuthen(const strPassword: WideString): Integer;
begin
  Result := DefaultInterface.ReAuthen(strPassword);
end;

function TPlatInterActive.ChangePassword(const strOldPassword: WideString; 
                                         const strNewPassword: WideString): Integer;
begin
  Result := DefaultInterface.ChangePassword(strOldPassword, strNewPassword);
end;

function TPlatInterActive.ReleaseCtrl: Integer;
begin
  Result := DefaultInterface.ReleaseCtrl;
end;

function TPlatInterActive.LoginPlatEx(var lpLoginInfo: Byte; out lpLoginResult: Byte): Integer;
begin
  Result := DefaultInterface.LoginPlatEx(lpLoginInfo, lpLoginResult);
end;

function TPlatInterActive.SetLanguage(nLanguage: Integer): Integer;
begin
  Result := DefaultInterface.SetLanguage(nLanguage);
end;

function TPlatInterActive.GetLanguage: Integer;
begin
  Result := DefaultInterface.GetLanguage;
end;

function TPlatInterActive.QueryUserGroupList: Integer;
begin
  Result := DefaultInterface.QueryUserGroupList;
end;

function TPlatInterActive.QueryUserList: Integer;
begin
  Result := DefaultInterface.QueryUserList;
end;

function TPlatInterActive.SetUserGroup(nOperat: Integer; var stGroupInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetUserGroup(nOperat, stGroupInfo);
end;

function TPlatInterActive.SetUser(nOperat: Integer; var lpUserInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetUser(nOperat, lpUserInfo);
end;

function TPlatInterActive.QueryUserGroup(const strGroupId: WideString): Integer;
begin
  Result := DefaultInterface.QueryUserGroup(strGroupId);
end;

function TPlatInterActive.QueryUser(const strUserId: WideString): Integer;
begin
  Result := DefaultInterface.QueryUser(strUserId);
end;

function TPlatInterActive.SetUserPassword(const strUserId: WideString; const strPassword: WideString): Integer;
begin
  Result := DefaultInterface.SetUserPassword(strUserId, strPassword);
end;

function TPlatInterActive.GetPollScheme(const strUserId: WideString; nScheme: Integer; 
                                        nRectNo: Integer): WideString;
begin
  Result := DefaultInterface.GetPollScheme(strUserId, nScheme, nRectNo);
end;

function TPlatInterActive.SetPollScheme(OperatType: Integer; const strUserId: WideString; 
                                        nScheme: Integer; nRectNo: Integer; 
                                        const strPollScheme: WideString): Integer;
begin
  Result := DefaultInterface.SetPollScheme(OperatType, strUserId, nScheme, nRectNo, strPollScheme);
end;

function TPlatInterActive.GetPlaySchemeInfo(const strUserId: WideString; nPlayer: Integer): WideString;
begin
  Result := DefaultInterface.GetPlaySchemeInfo(strUserId, nPlayer);
end;

function TPlatInterActive.SetPlaySchemeInfo(OperatType: Integer; const strUserId: WideString; 
                                            nPlayer: Integer; const strInfo: WideString): Integer;
begin
  Result := DefaultInterface.SetPlaySchemeInfo(OperatType, strUserId, nPlayer, strInfo);
end;

function TPlatInterActive.GetLastScheme(const strUserId: WideString): Integer;
begin
  Result := DefaultInterface.GetLastScheme(strUserId);
end;

function TPlatInterActive.SetLastScheme(OperatType: Integer; const strUserId: WideString; 
                                        nScheme: Integer): Integer;
begin
  Result := DefaultInterface.SetLastScheme(OperatType, strUserId, nScheme);
end;

function TPlatInterActive.GetPlaySchemeInfos(const strUserId: WideString): WideString;
begin
  Result := DefaultInterface.GetPlaySchemeInfos(strUserId);
end;

function TPlatInterActive.GetCameraDeviceInfo(const strCameraId: WideString): WideString;
begin
  Result := DefaultInterface.GetCameraDeviceInfo(strCameraId);
end;

function TPlatInterActive.GetCameraVSSInfo(const strCameraId: WideString): WideString;
begin
  Result := DefaultInterface.GetCameraVSSInfo(strCameraId);
end;

function TPlatInterActive.GetDeviceListXML: WideString;
begin
  Result := DefaultInterface.GetDeviceListXML;
end;

function TPlatInterActive.GetDeviceList(out pstDeviceList: Byte; nDataLen: Integer): Integer;
begin
  Result := DefaultInterface.GetDeviceList(pstDeviceList, nDataLen);
end;

function TPlatInterActive.GetCameraByMaster(const strMasterId: WideString): WideString;
begin
  Result := DefaultInterface.GetCameraByMaster(strMasterId);
end;

function TPlatInterActive.GetMasterDevice(const strDeviceId: WideString; var bpBaseInfo: Byte; 
                                          var bpMasterInfo: Byte): Integer;
begin
  Result := DefaultInterface.GetMasterDevice(strDeviceId, bpBaseInfo, bpMasterInfo);
end;

function TPlatInterActive.SetMasterDevice(nOperat: Integer; const strDeviceId: WideString; 
                                          var bpBaseInfo: Byte; var bpMasterInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetMasterDevice(nOperat, strDeviceId, bpBaseInfo, bpMasterInfo);
end;

function TPlatInterActive.GetSlaveDevice(const strDeviceId: WideString; var bpBaseInfo: Byte; 
                                         var bpCameraInfo: Byte; var bpDevRelation: Byte): Integer;
begin
  Result := DefaultInterface.GetSlaveDevice(strDeviceId, bpBaseInfo, bpCameraInfo, bpDevRelation);
end;

function TPlatInterActive.SetSlaveDevice(nOperat: Integer; const strDeviceId: WideString; 
                                         var bpBaseInfo: Byte; var bpCameraInfo: Byte; 
                                         var bpDevRelation: Byte): Integer;
begin
  Result := DefaultInterface.SetSlaveDevice(nOperat, strDeviceId, bpBaseInfo, bpCameraInfo, 
                                            bpDevRelation);
end;

function TPlatInterActive.SetDevRelatedUser(nOperat: Integer; var pInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetDevRelatedUser(nOperat, pInfo);
end;

function TPlatInterActive.GetDevRelatedUser(const strFilter: WideString; out pDataInfos: Byte; 
                                            nDataLen: Integer): Integer;
begin
  Result := DefaultInterface.GetDevRelatedUser(strFilter, pDataInfos, nDataLen);
end;

function TPlatInterActive.GetDeviceGroupList(var pDataInfos: Byte; nDataLen: Integer): Integer;
begin
  Result := DefaultInterface.GetDeviceGroupList(pDataInfos, nDataLen);
end;

function TPlatInterActive.SetDeviceGroup(nOperat: Integer; var bpInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetDeviceGroup(nOperat, bpInfo);
end;

function TPlatInterActive.DelDevRelatedUser(const strDomainId: WideString; nType: Integer; 
                                            const strInfo: WideString): Integer;
begin
  Result := DefaultInterface.DelDevRelatedUser(strDomainId, nType, strInfo);
end;

function TPlatInterActive.QueryDomainList: Integer;
begin
  Result := DefaultInterface.QueryDomainList;
end;

function TPlatInterActive.QueryDomainRelationList: Integer;
begin
  Result := DefaultInterface.QueryDomainRelationList;
end;

function TPlatInterActive.SetDomainInfo(nOperat: Integer; var pInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetDomainInfo(nOperat, pInfo);
end;

function TPlatInterActive.QueryDomainInfo(const strDomainId: WideString; out pInfo: Byte): Integer;
begin
  Result := DefaultInterface.QueryDomainInfo(strDomainId, pInfo);
end;

function TPlatInterActive.SetDevLocation(nOperat: Integer; const strDomainId: WideString; 
                                         var pInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetDevLocation(nOperat, strDomainId, pInfo);
end;

function TPlatInterActive.GetDevLocation(const strDomainId: WideString; const strDevId: WideString; 
                                         out pInfo: Byte): Integer;
begin
  Result := DefaultInterface.GetDevLocation(strDomainId, strDevId, pInfo);
end;

function TPlatInterActive.QueryDeviceFile(const strFilter: WideString): Integer;
begin
  Result := DefaultInterface.QueryDeviceFile(strFilter);
end;

function TPlatInterActive.DownloadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                             const strFileURL: WideString; 
                                             const strLocalPath: WideString): Integer;
begin
  Result := DefaultInterface.DownloadDeviceFile(nType, strCameraId, strFileURL, strLocalPath);
end;

function TPlatInterActive.CancelDownloadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                                   const strFileURL: WideString): Integer;
begin
  Result := DefaultInterface.CancelDownloadDeviceFile(nType, strCameraId, strFileURL);
end;

function TPlatInterActive.UploadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                           const strFilePath: WideString): Integer;
begin
  Result := DefaultInterface.UploadDeviceFile(nType, strCameraId, strFilePath);
end;

function TPlatInterActive.CancelUploadDeviceFile(nType: Integer; const strCameraId: WideString; 
                                                 const strFilePath: WideString): Integer;
begin
  Result := DefaultInterface.CancelUploadDeviceFile(nType, strCameraId, strFilePath);
end;

function TPlatInterActive.UploadFileToDevice(nType: Integer; const strDeviceId: WideString; 
                                             const strFileURL: WideString): Integer;
begin
  Result := DefaultInterface.UploadFileToDevice(nType, strDeviceId, strFileURL);
end;

function TPlatInterActive.CancelUploadFileToDevice(nType: Integer; const strDeviceId: WideString; 
                                                   const strFileURL: WideString): Integer;
begin
  Result := DefaultInterface.CancelUploadFileToDevice(nType, strDeviceId, strFileURL);
end;

function TPlatInterActive.InviteDeviceMonitor(const strCameraId: WideString; nResolution: Integer; 
                                              nRecvPort: Integer; nPollNum: Integer): WideString;
begin
  Result := DefaultInterface.InviteDeviceMonitor(strCameraId, nResolution, nRecvPort, nPollNum);
end;

function TPlatInterActive.StopDeviceMonitor(const strCameraId: WideString; nResolution: Integer): Integer;
begin
  Result := DefaultInterface.StopDeviceMonitor(strCameraId, nResolution);
end;

function TPlatInterActive.GetDeviceState(const strDomainId: WideString): WideString;
begin
  Result := DefaultInterface.GetDeviceState(strDomainId);
end;

function TPlatInterActive.InvitePTZControl(const strCameraId: WideString): Integer;
begin
  Result := DefaultInterface.InvitePTZControl(strCameraId);
end;

function TPlatInterActive.SendPTZCmd(const strCameraId: WideString; nType: Integer; 
                                     const strCmdInfo: WideString): Integer;
begin
  Result := DefaultInterface.SendPTZCmd(strCameraId, nType, strCmdInfo);
end;

function TPlatInterActive.SendConfigReq(const strDeviceId: WideString; const strXMLInfo: WideString): Integer;
begin
  Result := DefaultInterface.SendConfigReq(strDeviceId, strXMLInfo);
end;

function TPlatInterActive.RequestTalk(const strCameraId: WideString; nCodecType: Integer; 
                                      nSampleRate: Integer; nSampleBitsWitdh: Integer; 
                                      nChannels: Integer; BitRate: Integer): Integer;
begin
  Result := DefaultInterface.RequestTalk(strCameraId, nCodecType, nSampleRate, nSampleBitsWitdh, 
                                         nChannels, BitRate);
end;

function TPlatInterActive.RequestBroadcast(const strDomainId: WideString; nCodecType: Integer; 
                                           nSampleRate: Integer; nSampleBitsWitdh: Integer; 
                                           nChannels: Integer; BitRate: Integer): Integer;
begin
  Result := DefaultInterface.RequestBroadcast(strDomainId, nCodecType, nSampleRate, 
                                              nSampleBitsWitdh, nChannels, BitRate);
end;

function TPlatInterActive.StopTalk(const strCameraId: WideString): Integer;
begin
  Result := DefaultInterface.StopTalk(strCameraId);
end;

function TPlatInterActive.StopBroadcast(const strDomainId: WideString): Integer;
begin
  Result := DefaultInterface.StopBroadcast(strDomainId);
end;

function TPlatInterActive.SetClientAlarmLinkage(nOperat: Integer; const strDomainId: WideString; 
                                                nCount: Integer; var pInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetClientAlarmLinkage(nOperat, strDomainId, nCount, pInfo);
end;

function TPlatInterActive.GetClientAlarmLinkage(const strDomainId: WideString; 
                                                const strDevId: WideString; out pInfo: Byte): Integer;
begin
  Result := DefaultInterface.GetClientAlarmLinkage(strDomainId, strDevId, pInfo);
end;

function TPlatInterActive.QueryLogXML(nCategory: Integer; const strDomainId: WideString; 
                                      nPage: Integer; const strFilter: WideString): WideString;
begin
  Result := DefaultInterface.QueryLogXML(nCategory, strDomainId, nPage, strFilter);
end;

function TPlatInterActive.QueryLogData(nCategory: Integer; const strDomainId: WideString; 
                                       nPage: Integer; const strFilter: WideString; 
                                       out pDataInfos: Byte; nDataLen: Integer): Integer;
begin
  Result := DefaultInterface.QueryLogData(nCategory, strDomainId, nPage, strFilter, pDataInfos, 
                                          nDataLen);
end;

function TPlatInterActive.DeleteLog(nCategory: Integer; const strDomainId: WideString; 
                                    const strFilter: WideString): Integer;
begin
  Result := DefaultInterface.DeleteLog(nCategory, strDomainId, strFilter);
end;

function TPlatInterActive.AddOpLog(const strDomainId: WideString; nOperatType: Integer; 
                                   const strObjectId: WideString; const strObjectName: WideString; 
                                   const strDesc: WideString): Integer;
begin
  Result := DefaultInterface.AddOpLog(strDomainId, nOperatType, strObjectId, strObjectName, strDesc);
end;

function TPlatInterActive.QueryRecord(const strCameraId: WideString; const strFilter: WideString): Integer;
begin
  Result := DefaultInterface.QueryRecord(strCameraId, strFilter);
end;

function TPlatInterActive.DownloadRecord(const strCameraId: WideString; nCategory: Integer; 
                                         const strRecordUrl: WideString; 
                                         const strLocalPath: WideString): Integer;
begin
  Result := DefaultInterface.DownloadRecord(strCameraId, nCategory, strRecordUrl, strLocalPath);
end;

function TPlatInterActive.DeleteRecord(const strCameraId: WideString; nCategory: Integer; 
                                       const strRecordUrl: WideString): Integer;
begin
  Result := DefaultInterface.DeleteRecord(strCameraId, nCategory, strRecordUrl);
end;

function TPlatInterActive.CancelDownloadRecord(const strCameraId: WideString; nCategory: Integer; 
                                               const strRecordUrl: WideString): Integer;
begin
  Result := DefaultInterface.CancelDownloadRecord(strCameraId, nCategory, strRecordUrl);
end;

function TPlatInterActive.SetProtectRecord(const strCameraId: WideString; nCategory: Integer; 
                                           const strRecordUrl: WideString; nProtect: Integer): Integer;
begin
  Result := DefaultInterface.SetProtectRecord(strCameraId, nCategory, strRecordUrl, nProtect);
end;

function TPlatInterActive.PlayRecord(const strRecordUrl: WideString): Integer;
begin
  Result := DefaultInterface.PlayRecord(strRecordUrl);
end;

function TPlatInterActive.GetDownloadList(nCategory: Integer; const strCameraId: WideString; 
                                          out pDataInfos: Byte; nDataLen: Integer): Integer;
begin
  Result := DefaultInterface.GetDownloadList(nCategory, strCameraId, pDataInfos, nDataLen);
end;

function TPlatInterActive.SetStoragePolicy(nOperat: Integer; nCategory: Integer; 
                                           const strDomainId: WideString; var pstInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetStoragePolicy(nOperat, nCategory, strDomainId, pstInfo);
end;

function TPlatInterActive.GetStoragePolicy(nCategory: Integer; const strDomainId: WideString; 
                                           const strFilter: WideString; out pDataInfos: Byte; 
                                           nDataLen: Integer): Integer;
begin
  Result := DefaultInterface.GetStoragePolicy(nCategory, strDomainId, strFilter, pDataInfos, 
                                              nDataLen);
end;

function TPlatInterActive.SetRecordScheme(nOperat: Integer; const strDomainId: WideString; 
                                          var pstInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetRecordScheme(nOperat, strDomainId, pstInfo);
end;

function TPlatInterActive.GetRecordScheme(const strDomainId: WideString; 
                                          const strFilter: WideString; out pDataInfos: Byte; 
                                          nDataLen: Integer): Integer;
begin
  Result := DefaultInterface.GetRecordScheme(strDomainId, strFilter, pDataInfos, nDataLen);
end;

function TPlatInterActive.GetStoragePath(const strDomainId: WideString; var pDataInfos: Byte; 
                                         nDataLen: Integer): Integer;
begin
  Result := DefaultInterface.GetStoragePath(strDomainId, pDataInfos, nDataLen);
end;

function TPlatInterActive.InviteRecordPlay(const strCameraId: WideString): Integer;
begin
  Result := DefaultInterface.InviteRecordPlay(strCameraId);
end;

function TPlatInterActive.StartRecordPlay(const strCameraId: WideString; 
                                          const strRecordUrl: WideString): Integer;
begin
  Result := DefaultInterface.StartRecordPlay(strCameraId, strRecordUrl);
end;

function TPlatInterActive.PauseRecordPlay(const strCameraId: WideString; 
                                          const strRecordUrl: WideString): Integer;
begin
  Result := DefaultInterface.PauseRecordPlay(strCameraId, strRecordUrl);
end;

function TPlatInterActive.GetRecordPlayParam(const strCameraId: WideString): WideString;
begin
  Result := DefaultInterface.GetRecordPlayParam(strCameraId);
end;

function TPlatInterActive.SetRecordPlayParam(const strCameraId: WideString; 
                                             const strRecordPlayParam: WideString): Integer;
begin
  Result := DefaultInterface.SetRecordPlayParam(strCameraId, strRecordPlayParam);
end;

function TPlatInterActive.StopRecordPlay(const strCameraId: WideString; 
                                         const strRecordUrl: WideString): Integer;
begin
  Result := DefaultInterface.StopRecordPlay(strCameraId, strRecordUrl);
end;

function TPlatInterActive.GetRecordPlayInfo(const strCameraId: WideString; 
                                            const strRecordUrl: WideString): WideString;
begin
  Result := DefaultInterface.GetRecordPlayInfo(strCameraId, strRecordUrl);
end;

function TPlatInterActive.RecordLivePlay(const strCameraId: WideString; 
                                         const strRecordUrl: WideString): Integer;
begin
  Result := DefaultInterface.RecordLivePlay(strCameraId, strRecordUrl);
end;

function TPlatInterActive.RecordReplay(const strCameraId: WideString; const strRecordUrl: WideString): Integer;
begin
  Result := DefaultInterface.RecordReplay(strCameraId, strRecordUrl);
end;

function TPlatInterActive.PlayRecordNext(const strCameraId: WideString): Integer;
begin
  Result := DefaultInterface.PlayRecordNext(strCameraId);
end;

function TPlatInterActive.GetAlmActionRelation(const strDomainId: WideString; 
                                               const strFilter: WideString; out pDataInfos: Byte; 
                                               nDataLen: Integer): Integer;
begin
  Result := DefaultInterface.GetAlmActionRelation(strDomainId, strFilter, pDataInfos, nDataLen);
end;

function TPlatInterActive.SetAlmActionRelation(nOperat: Integer; const strDomainId: WideString; 
                                               var pstInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetAlmActionRelation(nOperat, strDomainId, pstInfo);
end;

function TPlatInterActive.GetSysAlmFwList(const strDomainId: WideString; 
                                          const strFilter: WideString; out pDataInfos: Byte; 
                                          nDataLen: Integer): Integer;
begin
  Result := DefaultInterface.GetSysAlmFwList(strDomainId, strFilter, pDataInfos, nDataLen);
end;

function TPlatInterActive.SetSysAlmFwList(nOperat: Integer; const strDomainId: WideString; 
                                          var pstInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetSysAlmFwList(nOperat, strDomainId, pstInfo);
end;

function TPlatInterActive.GetVSSInfo(nVSSId: Integer; out pnDataLen: Integer; out pVssInfo: Byte): Integer;
begin
  Result := DefaultInterface.GetVSSInfo(nVSSId, pnDataLen, pVssInfo);
end;

function TPlatInterActive.SetVSSInfo(OperatType: Integer; nVSSId: Integer; var pVssInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetVSSInfo(OperatType, nVSSId, pVssInfo);
end;

function TPlatInterActive.GetVSSInfoAll(out pDataInfos: Byte; nDataLen: Integer): Integer;
begin
  Result := DefaultInterface.GetVSSInfoAll(pDataInfos, nDataLen);
end;

function TPlatInterActive.SetRespType(nType: Integer): Integer;
begin
  Result := DefaultInterface.SetRespType(nType);
end;

function TPlatInterActive.SetLocalInfoEx(var pDataInfo: Byte): Integer;
begin
  Result := DefaultInterface.SetLocalInfoEx(pDataInfo);
end;

function TPlatInterActive.GetLocalInfoEx(nIndex: Integer; out pDataInfo: Byte): Integer;
begin
  Result := DefaultInterface.GetLocalInfoEx(nIndex, pDataInfo);
end;

function TPlatInterActive.DatFileToAvi(const strDestFile: WideString; const strSrcFile: WideString): Integer;
begin
  Result := DefaultInterface.DatFileToAvi(strDestFile, strSrcFile);
end;

function TPlatInterActive.GetRecordCount(const strDomainId: WideString; 
                                         const strTableName: WideString; const strFilter: WideString): Integer;
begin
  Result := DefaultInterface.GetRecordCount(strDomainId, strTableName, strFilter);
end;

function TPlatInterActive.RefreshServerData(nType: Integer; const strDomainId: WideString; 
                                            nNetId: Integer; const strTblName: WideString): Integer;
begin
  Result := DefaultInterface.RefreshServerData(nType, strDomainId, nNetId, strTblName);
end;

procedure Register;
begin
  RegisterComponents(dtlOcxPage, [TPlatInterActive]);
  RegisterComponents(dtlServerPage, [TCompReg]);
end;

end.
