home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 January / Chip_2001-01_cd1.bin / tema / interb / InterBase_WI-V6.0-server.exe / server / SDK / include / iblicense.pas < prev   
Pascal/Delphi Source File  |  2000-06-23  |  6KB  |  206 lines

  1. unit IBLicense;
  2.  
  3. interface
  4. uses
  5.   Windows, Forms, Dialogs, Messages, SysUtils, Classes;
  6. const
  7.   _IB_LICENSE_API_               = 'iblicense.dll';
  8.   _IB_LICENSE_FILE_              = 'ib_license.dat';
  9.   
  10.   LICENSE_ADD                    = 'isc_license_add';
  11.   LICENSE_CHECK                  = 'isc_license_check';
  12.   LICENSE_DISPLAY                = 'isc_license_display';
  13.   LICENSE_MSG                    = 'isc_license_get_msg';
  14.   LICENSE_REMOVE                 = 'isc_license_remove';
  15.  
  16.   isc_license_msg_prompt         = 17;
  17.   isc_license_msg_version        = 18;
  18.   isc_license_msg_opspec         = 19;
  19.   isc_license_msg_noopspec       = 20;
  20.   isc_license_msg_invsw          = 21;
  21.   isc_license_msg_invswsw        = 22;
  22.   isc_license_msg_invswop        = 23;
  23.   isc_license_msg_ambsw          = 24;
  24.   isc_license_msg_invpar         = 25;
  25.   isc_license_msg_swnopar        = 26;
  26.   isc_license_msg_reqpar         = 27;
  27.   isc_license_msg_syntax         = 28;
  28.   isc_license_msg_restart        = 29;
  29.   isc_license_msg_dupid             = 30;
  30.   isc_license_msg_invkey         = 31;
  31.   isc_license_msg_notremoved     = 32;
  32.   isc_license_msg_writefailed    = 33;
  33.   isc_license_msg_convertfailed  = 34;
  34.   isc_license_msg_unk             = 35;
  35.   isc_license_success            = isc_license_msg_restart;
  36.  
  37.   ISC_LICENSE_MAX_MESSAGE_LEN    = 256;
  38.   ISC_LICENSE_MAX_LICENSE_LEN    = 1024;
  39.  
  40.   LicenseAPINotFound =
  41.      'Unable to load the license verification library.'+#10#13+#10#13+
  42.      'Please ensure that you are installing with the correct'+#10#13+
  43.      'media'+#10#13+#10#13+
  44.      'Click Ok to exit setup.';
  45.  
  46. type
  47.   Tisc_license_add = function (cert_id : PChar; cert_key : PChar) : Integer; stdcall;
  48.  
  49.   Tisc_license_check = function(cert_id : PChar; cert_key : PChar) : Integer; stdcall;
  50.  
  51.   Tisc_license_remove = function (cert_key :PChar) : Integer; stdcall;
  52.  
  53.   Tisc_license_display = function (buf : PChar; buf_len : Word) : Word; stdcall;
  54.   Tisc_license_get_msg = function (msg_no : Smallint; msg : PChar; msg_len : Word):
  55.                                     Word; stdcall;
  56.  
  57.   function IscLicenseAdd(LibPath, cert_id, cert_key : string) : Integer;
  58.   function IscLicenseCheck(LibPath : string; cert_id, cert_key : string) : Integer;
  59.   function IscLicenseRemove(LibPath, cert_key : string) : Integer;
  60.   function IscLicenseDisplay(LibPath: string) : string;
  61.   function IscLicenseGetMessage (LibPath : string; msg_no : Smallint): string;
  62.  
  63. implementation
  64.  
  65. function IscLicenseAdd(LibPath, cert_id, cert_key : string) : Integer;
  66. var
  67.   LibHandle: THandle;
  68.   Pisc_license_add : Tisc_license_add;
  69. begin
  70.   LibHandle := LoadLibrary(PChar(LibPath));
  71.   if LibHandle = 0 then
  72.   begin
  73.     MessageDlg(LicenseAPINotFound,mtError,[mbOK],0);
  74.     Application.Terminate;
  75.   end;
  76.  
  77.   @Pisc_license_add := GetProcAddress(LibHandle,LICENSE_ADD);
  78.  
  79.   if @Pisc_license_add = nil then
  80.   begin
  81.     MessageDlg(LicenseAPINotFound,mtError,[mbOK],0);
  82.     Application.Terminate;
  83.   end;
  84.  
  85.   Result := Pisc_license_add(PChar(cert_id), PChar(cert_key));
  86.   FreeLibrary(LibHandle);
  87. end;
  88.  
  89. function IscLicenseCheck(LibPath : string; cert_id, cert_key : string) : Integer;
  90. var
  91.   LibHandle: THandle;
  92.   Pisc_license_check : Tisc_license_check;
  93. begin
  94.   LibHandle := LoadLibrary(PChar(LibPath));
  95.   if LibHandle = 0 then
  96.   begin
  97.     MessageDlg(LicenseAPINotFound,mtError,[mbOK],0);
  98.     Application.Terminate;
  99.   end;
  100.  
  101.   @Pisc_license_check := GetProcAddress(LibHandle,LICENSE_CHECK);
  102.  
  103.   if @Pisc_license_check = nil then
  104.   begin
  105.     MessageDlg(LicenseAPINotFound,mtError,[mbOK],0);
  106.     Application.Terminate;
  107.   end;
  108.  
  109.   Result := Pisc_license_check(PChar(cert_id), PChar(cert_key));
  110.   FreeLibrary(LibHandle);
  111. end;
  112.  
  113. function IscLicenseRemove(LibPath, cert_key : string) : Integer;
  114. var
  115.   LibHandle             : THandle;
  116.   Pisc_license_remove  : Tisc_license_remove;
  117. begin
  118.   LibHandle := LoadLibrary(PChar(LibPath));
  119.   if LibHandle = 0 then
  120.   begin
  121.     MessageDlg(LicenseAPINotFound,mtError,[mbOK],0);
  122.     Application.Terminate;
  123.   end;
  124.  
  125.   @Pisc_license_remove := GetProcAddress(LibHandle,LICENSE_REMOVE);
  126.  
  127.   if @Pisc_license_remove = nil then
  128.   begin
  129.     MessageDlg(LicenseAPINotFound,mtError,[mbOK],0);
  130.     Application.Terminate;
  131.   end;
  132.  
  133.   Result := Pisc_license_remove(PChar(cert_key));
  134.   FreeLibrary(LibHandle);
  135. end;
  136.  
  137. function IscLicenseDisplay(LibPath : string) : string;
  138. var
  139.   LibHandle            : THandle;
  140.   License              : string;
  141.   Pisc_license_display : Tisc_license_display;
  142.   RetVal               : Word;
  143. begin
  144.   LibHandle := LoadLibrary(PChar(LibPath));
  145.   if LibHandle = 0 then
  146.   begin
  147.     MessageDlg(LicenseAPINotFound,mtError,[mbOK],0);
  148.     Application.Terminate;
  149.   end;
  150.  
  151.   @Pisc_license_display := GetProcAddress(LibHandle,LICENSE_DISPLAY);
  152.  
  153.   if @Pisc_license_display = nil then
  154.   begin
  155.     MessageDlg(LicenseAPINotFound,mtError,[mbOK],0);
  156.     Application.Terminate;
  157.   end;
  158.  
  159.   SetLength(License, ISC_LICENSE_MAX_LICENSE_LEN);
  160.   RetVal := Pisc_license_display(PChar(License), ISC_LICENSE_MAX_LICENSE_LEN);
  161.   if RetVal <> 0 then
  162.     Result := ''
  163.   else begin
  164.     SetLength(License, StrLen(PChar(License)));
  165.     Result := License;
  166.   end;
  167.   FreeLibrary(LibHandle);
  168. end;
  169.  
  170. function IscLicenseGetMessage(LibPath : string; msg_no : Smallint): string;
  171. var
  172.   LibHandle            : THandle;
  173.   IscMessage           : string;
  174.   RetVal               : Word;
  175.   Pisc_license_get_msg : Tisc_license_get_msg;
  176. begin
  177.   LibHandle := LoadLibrary(PChar(LibPath));
  178.   if LibHandle = 0 then
  179.   begin
  180.     MessageDlg(LicenseAPINotFound,mtError,[mbOK],0);
  181.     Application.Terminate;
  182.   end;
  183.  
  184.   @Pisc_license_get_msg := GetProcAddress(LibHandle,LICENSE_MSG);
  185.  
  186.   if @Pisc_license_get_msg = nil then
  187.   begin
  188.     MessageDlg(LicenseAPINotFound,mtError,[mbOK],0);
  189.     Application.Terminate;
  190.   end;
  191.  
  192.  SetLength(IscMessage, ISC_LICENSE_MAX_MESSAGE_LEN);
  193.  RetVal := Pisc_license_get_msg(msg_no, PChar(IscMessage), ISC_LICENSE_MAX_MESSAGE_LEN);
  194.  
  195.  if RetVal <> 0 then
  196.    Result := ''
  197.  else begin
  198.    SetLength(IscMessage, StrLen(PChar(IscMessage)));
  199.    Result := IscMessage;
  200.  end;
  201.  
  202.  FreeLibrary(LibHandle);
  203. end;
  204.  
  205. end.
  206.