⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 GirderPluginWDM.zip SAA7134芯片(常用于电视卡,或软压卡) windows驱动程序源代码,Delphi版本
💻 PAS
字号:
unit Main;

interface

uses
  Windows;

const
 GIR_TRUE = 1;
 GIR_FALSE = 0;
 DEVICE_NUMBER = 802;

type
  PByteArray = ^TByteArray;
  TByteArray = array[0..32767] of Byte;
  p_command = ^ t_command;
  t_command = record
    critical_section:_RTL_CRITICAL_SECTION;
    Name            : PChar;
    ActionType      : integer;
    ActionSubType   : integer;
    sValue1         : PChar;
    sValue2         : PChar;
    sValue3         : PChar;
    bValue1         : integer;
    bValue2         : integer;
    bValue3         : integer;
    iValue1         : Integer;
    iValue2         : Integer;
    iValue3         : Integer;
    lValue1         : Integer;
    lValue2         : Integer;
    lValue3         : Integer;
    Binary          : PByteArray;
    Size            : integer;
  end;

  PointerToPChar = ^PChar;
  t_event_cb         = function  (eventstring : PCHAR; device : integer; payload :pointer; len : integer): integer; stdcall;

  t_get_int_variable              = function (name: PCHAR):integer;stdcall;
  t_get_double_variable           = function (name: PCHAR):integer;stdcall;
  t_get_string_variable           = function (name: PCHAR; buffer: PCHAR; len: integer):integer;stdcall;
  t_set_int_variable              = function (name: PCHAR; value : Integer):integer; stdcall;
  t_set_double_variable           = function (name: PCHAR; value : double):integer; stdcall;
  t_set_string_variable           = function (name: PCHAR; value : PCHAR):integer; stdcall;
  t_delete_variable               = procedure(name: PCHAR);stdcall;
  t_open_list_variables           = function ():integer;stdcall;
  t_get_first_variable            = function ():integer;stdcall;
  t_close_list_variables          = function ():integer;stdcall;
  t_get_next_int_variable         = function (name: PCHAR; len : integer; value : pInteger):integer;stdcall;
  t_get_next_double_variable      = function (name: PCHAR; len : integer; value : pDouble):integer;stdcall;
  t_get_next_string_variable      = function (name: PCHAR; len : integer; value : pCHAR; size: integer):integer;stdcall;
  t_run_parser                    = function (str : PCHAR; error_value : pInteger ): integer;stdcall;

  t_target_callback    = procedure (HWN: HWND; command: p_command); stdcall;
  t_set_command        = procedure (command: p_command);stdcall;
  t_target_enum        = procedure (id : integer; callback :t_target_callback); stdcall;
  t_realloc_pchar      = procedure (old : PointerToPchar; newPCHAR: PChar); stdcall;
  t_show_osd           = procedure (timer : integer ); stdcall;
  t_hide_osd           = procedure ( ) ; stdcall;
  t_start_osd_draw     = function  (var hwn: HWND; var dc: HDC; user : integer): integer; stdcall;
  t_stop_osd_draw      = procedure (dc : HDC);stdcall;
  t_treepicker_show    = function  (parent : HWND; command_id : integer):integer;stdcall;

  t_register_cb        = function  (id : integer; event_cb : t_event_cb; prefix : PCHAR; source_id : integer):integer; stdcall;
  t_get_link_name      = function  (lvalue: integer; store : PCHAR; size : integer):integer; stdcall;
  t_parse_girder_reg   = function  (orig: PCHAR; store: PCHAR; size : integer): integer; stdcall;
  t_i18n_translate     = function  (orig: PCHAR; store: PCHAR; size : integer): integer; stdcall;
  t_get_osd_settings   = function  (setting : integer) : DWORD ; stdcall;
  t_get_osd_fontname   = function  (store : PCHAR; size : integer ):integer; stdcall;
  t_send_event         = function  (eventstring : PCHAR; payload: pbytearray; len : integer; device : integer):integer; stdcall;
  t_trigger_command    = function  (command_id : integer):integer; stdcall;
  t_gir_malloc         = function  (size : integer ):pointer; stdcall;
  t_gir_free           = procedure  (p : pointer); stdcall;

  s_functions_1 = record
    size                    : DWORD;
    parse_girder_reg        : t_parse_girder_reg;
    get_link_name           : t_get_link_name;
    set_command             : t_set_command;
    target_enum             : t_target_enum;
    realloc_pchar           : t_realloc_pchar;
    show_osd                : t_show_osd;
    hide_osd                : t_hide_osd;
    start_osd_draw          : t_start_osd_draw;
    stop_osd_draw           : t_stop_osd_draw;
    treepicker_show         : t_treepicker_show;
    register_cb    	    : t_register_cb;
    i18n_translate 	    : t_i18n_translate;
    get_osd_settings 	    : t_get_osd_settings;
    get_osd_fontname 	    : t_get_osd_fontname;
    gir_malloc     	    : t_gir_malloc;
    gir_free       	    : t_gir_free;
    get_int_var    	    : t_get_int_variable;
    get_double_var  	    : t_get_double_variable;
    get_string_var  	    : t_get_string_variable;
    set_int_var     	    : t_set_int_variable;
    set_double_var  	    : t_set_double_variable;
    set_string_var  	    : t_set_string_variable;
    delete_var     	    : t_delete_variable;
    run_parser  	    : t_run_parser;
    send_event		    : t_send_event;
    trigger_command	    : t_trigger_command;
    parent_hwnd             : HWND;
  end;

function  gir_open(gir_major_ver, gir_minor_ver, gir_micro_ver : integer; api_struct : Pointer ):integer; stdcall;
function  gir_close():integer; stdcall;
function  gir_start():integer; stdcall;
function  gir_stop():integer; stdcall;
procedure gir_config(); stdcall;

procedure gir_name(data : PCHAR; len : integer); stdcall;
procedure gir_version(data : PCHAR; len : integer); stdcall;
procedure gir_description(data : PCHAR; len : integer); stdcall;
function  gir_devicenum():integer; stdcall;
function  gir_requested_api(max_api : integer ) : integer ;stdcall;

var
  support: s_functions_1;

implementation

uses
  ComThrd,saa713x;

procedure gir_description(data : PCHAR; len : integer); stdcall;
const
  description = 'Written by Figyo (c) 2003';
begin
  FillChar(data^,len,0);
  Move(description,data^,length(description));
end;

procedure gir_name(data : PCHAR; len : integer); stdcall;
const name = 'ManliTV Remote control (WDM)';
begin
  FillChar(data^,len,0);
  Move(name,data^,length(name));
end;

procedure gir_version(data : PCHAR; len : integer); stdcall;
const ver = '1.00';
begin
  FillChar(data^,len,0);
  Move(ver,data,length(ver));
end;

function gir_devicenum():integer; stdcall;
begin
  Result := DEVICE_NUMBER;
end;

function gir_requested_api(max_api : integer ) : integer ;stdcall;
begin
  result:=1;
end;

function gir_open(gir_major_ver, gir_minor_ver, gir_micro_ver : integer; api_struct : Pointer ):integer; stdcall;
var
  i: integer;
begin
  result := gir_true;
  for i:=0 to sizeof ( s_functions_1 ) -1 do
    pbytearray(@support)[i] := pbytearray(api_struct)[i];
  if (support.size <> sizeof(s_functions_1)) then begin
    result := gir_false;
    exit;
  end;
end;

function gir_close():integer; stdcall;
begin
  result:=gir_TRUE;
  if hPollThread <> 0 then begin
    PollThreadTerminate();
    PollThreadWaitFor();
  end;
end;

function gir_start():integer; stdcall;
begin
  PollThreadCreate();
  Result:=GIR_true;
end;

function gir_stop():integer; stdcall;
begin
  if hPollThread <> 0 then begin
    PollThreadTerminate();
    PollThreadWaitFor();
  end;
  Result := GIR_TRUE;
end;

procedure gir_config(); stdcall;
begin
  MessageBox(0,'Nothing to configure :)','Information',MB_OK + MB_IconInformation);
//  RC_LowGpioPin := $08;
//  RC_HighGpioPin := $0c;
//  RC_ResetGpioPin := $0f;
//  RC_StatusGpioPin := $0e;
end;

end.


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -