亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? awwin32.pas

?? Async Professional 4.04
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{*********************************************************}
{*                   AWWIN32.PAS 4.04                    *}
{*      Copyright (C) TurboPower Software 1996-2002      *}
{*                 All rights reserved.                  *}
{*********************************************************}

{Global defines potentially affecting this unit}
{$I AWDEFINE.INC}

{Options required for this unit}
{$X+,F+,K+,B-}

unit AwWin32;
  {-Device layer for standard Win32 communications API}

interface

uses
  Windows,
  Classes,
  SysUtils,
  AdWUtil,
  AdSocket,
  OoMisc,
  awUser;

type

  TApdWin32Dispatcher = class(TApdBaseDispatcher)
  protected
    ReadOL    : TOverLapped;
    WriteOL   : TOverLapped;
    function EscapeComFunction(Func : Integer) : LongInt; override;
    function FlushCom(Queue : Integer) : Integer; override;
    function GetComError(var Stat : TComStat) : Integer; override;
    function GetComEventMask(EvtMask : Integer) : Cardinal; override;
    function GetComState(var DCB: TDCB): Integer; override;
    function SetComState(var DCB : TDCB) : Integer; override;
    function ReadCom(Buf : PChar; Size: Integer) : Integer; override;
    function WriteCom(Buf : PChar; Size: Integer) : Integer; override;
    function SetupCom(InSize, OutSize : Integer) : Boolean; override;
    procedure StartDispatcher; override;
    procedure StopDispatcher; override;
    function WaitComEvent(var EvtMask : DWORD;
      lpOverlapped : POverlapped) : Boolean; override;
  public
    function CloseCom : Integer; override;
    function OpenCom(ComName: PChar; InQueue,
      OutQueue : Cardinal) : Integer; override;
    function ProcessCommunications : Integer; override;
  end;

  TApdTAPI32Dispatcher = class(TApdWin32Dispatcher)
  public
    constructor Create(Owner : TObject; InCid : Integer);
    function OpenCom(ComName: PChar; InQueue,
      OutQueue : Cardinal) : Integer; override;                      
  end;

implementation

{$IFDEF TRIALRUN}
  {$I TRIAL07.INC}
  {$I TRIAL03.INC}
  {$I TRIAL01.INC}
{$ENDIF}

  function TApdWin32Dispatcher.CloseCom : Integer;
    {-Close the comport and cleanup}
  begin
    {Release the events}
    if ReadOL.hEvent <> 0 then begin
      CloseHandle(ReadOL.hEvent);
      ReadOL.hEvent := 0;
    end;
    if WriteOL.hEvent <> 0 then begin
      CloseHandle(WriteOL.hEvent);
      WriteOL.hEvent := 0;
    end;

    if DispActive then begin
      KillThreads := True;

      {Force the comm thread to wake...}
      SetCommMask(CidEx, 0);
      SetEvent(ReadyEvent);
      ResetEvent(GeneralEvent);

      {$IFDEF DebugThreadConsole}
      Writeln(ThreadStatus(ComKill));
      {$ENDIF}
    end;

    {Close the comport}
    if CloseHandle(CidEx) then begin
      Result := 0;
      CidEx := -1;
    end else
      Result := -1;
  end;

  function TApdWin32Dispatcher.EscapeComFunction(Func: Integer): LongInt;
    {-Perform the extended comm function Func}
  begin
    EscapeCommFunction(CidEx, Func);
    Result := 0;
  end;

  function TApdWin32Dispatcher.FlushCom(Queue: Integer): Integer;
    {-Flush the input or output buffer}
  begin
    if (Queue = 0) and (OutThread <> nil) then begin
      {Flush our own output buffer...}
      SetEvent(OutFlushEvent);
      { this can cause a hang when using an IR port that does not have a }
      { connection (the IR receiver is not in range), the port drivers   }
      { will not flush the buffers, so we'd wait forever                 }
      WaitForSingleObject(GeneralEvent, 5000);{INFINITE);}               {!!.02}
      {...XMit thread has acknowledged our request, so flush it}
      EnterCriticalSection(OutputSection);
      try
        OBufFull := False;
        OBufHead := 0;
        OBufTail := 0;
        Result := Integer(PurgeComm(CidEx,
          PURGE_TXABORT or PURGE_TXCLEAR));
      finally
        LeaveCriticalSection(OutputSection);
      end;
    end else
      Result := Integer(PurgeComm(CidEx, PURGE_RXABORT or PURGE_RXCLEAR));

    if Result = 1 then
      Result := 0
    else
      Result := -Integer(GetLastError);                             
  end;

  function TApdWin32Dispatcher.GetComError(var Stat: TComStat): Integer;
    {-Get the current error and update Stat}
  var
    Errors : DWORD;
  begin
    if ClearCommError(CidEx, Errors, @Stat) then
      Result := Errors
    else
      Result := 0;

    {Replace information about Windows output buffer with our own}
    with Stat do begin
      EnterCriticalSection(OutputSection);
      try
        cbOutQue := 0;
        if OBufFull then
          cbOutQue := OutQue
        else if OBufHead > OBufTail then
          {Buffer is not wrapped}
          cbOutQue := OBufHead - OBufTail
        else if OBufHead < OBufTail then
          {Buffer is wrapped}
          cbOutQue := OBufHead + (OutQue - OBufTail);
      finally
        LeaveCriticalSection(OutputSection);
      end;
    end;                                                             
  end;

  function TApdWin32Dispatcher.GetComEventMask(EvtMask: Integer): Cardinal;
    {-Set the communications event mask}
  begin
    Result := 0;
  end;

  function TApdWin32Dispatcher.GetComState(var DCB: TDCB): Integer;
    {-Fill in DCB with the current communications state}
  begin
    if Integer(GetCommState(CidEx, DCB)) = 1 then
      Result := 0
    else
      Result := -1;
  end;

  function TApdWin32Dispatcher.OpenCom(ComName: PChar; InQueue, OutQueue: Cardinal): Integer;
    {-Open the comport specified by ComName}
{$IFDEF TRIALRUN}
  {$I TRIAL04.INC}
{$ENDIF}
  begin
    {Open the device}
{$IFDEF TRIALRUN}
  TC;
{$ENDIF}
    Result := CreateFile(ComName,                       {name}
                         GENERIC_READ or GENERIC_WRITE, {access attributes}
                         0,                             {no sharing}
                         nil,                           {no security}
                         OPEN_EXISTING,                 {creation action}
                         FILE_ATTRIBUTE_NORMAL or
                         FILE_FLAG_OVERLAPPED,          {attributes}
                         0);                            {no template}

    if Result <> Integer(INVALID_HANDLE_VALUE) then begin             
      CidEx := Result;
      {Create port data structure}
      ReadOL.hEvent := CreateEvent(nil, True, False, nil);
      WriteOL.hEvent := CreateEvent(nil, True, False, nil);
      if (ReadOL.hEvent = 0) or (WriteOL.hEvent = 0) then begin
        {Failed to create events, get rid of everything}
        CloseHandle(ReadOL.hEvent);
        CloseHandle(WriteOL.hEvent);
        CloseHandle(Result);
        Result := ecOutOfMemory;
        Exit;
      end;
    end else
      {Failed to open port, just return error signal, caller will
       call GetLastError to get actual error code}
      Result := -1;
  end;

  function TApdWin32Dispatcher.ReadCom(Buf: PChar; Size: Integer): Integer;
    {-Read Size bytes from the comport specified by Cid}
  var
    OK  : Bool;
    Temp : DWORD;
  begin
    {Post a read request...}
    OK := ReadFile(CidEx,                       {handle}
                   Buf^,                        {buffer}
                   Size,                        {bytes to read}
                   Temp,                        {bytes read}         
                   @ReadOL);                    {overlap record}

    {...and see what happened}
    if not OK then begin
      if GetLastError = ERROR_IO_PENDING then begin
        {Waiting for data}
        if GetOverLappedResult(CidEx,           {handle}
                               ReadOL,          {overlapped structure}
                               Temp,            {bytes written}        
                               True) then begin {wait for completion}
          {Read complete, reset event}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二| 欧美性videosxxxxx| 久久色在线观看| 国产一区二区女| 中文字幕精品综合| 91国产免费观看| 日韩影院精彩在线| 欧美电视剧在线看免费| 韩国av一区二区三区| 国产亚洲精品aa| 99视频在线精品| 亚洲一区免费视频| 精品久久五月天| 不卡的电影网站| 午夜欧美电影在线观看| 精品美女在线观看| 成人精品免费网站| 亚洲永久精品国产| 日韩欧美激情一区| 9久草视频在线视频精品| 伊人色综合久久天天人手人婷| 欧美性猛片xxxx免费看久爱| 琪琪一区二区三区| 日本一二三不卡| 欧美天堂一区二区三区| 久久99九九99精品| 亚洲久草在线视频| 日韩欧美精品在线视频| 91亚洲精品久久久蜜桃| 蜜桃精品在线观看| 亚洲三级在线观看| 日韩一区二区免费电影| av中文一区二区三区| 亚洲电影第三页| 久久精品视频免费| 欧美日韩亚洲另类| 高清在线成人网| 视频精品一区二区| 国产精品久久久久久久浪潮网站| 欧美午夜影院一区| 成人国产精品视频| 日韩电影免费在线观看网站| 亚洲国产成人在线| 精品美女一区二区| 欧美性受xxxx| 91网页版在线| 国产大陆a不卡| 免费观看日韩av| 亚洲综合在线视频| 国产精品免费视频网站| 精品处破学生在线二十三| 欧日韩精品视频| 成人小视频在线| 国产精品资源网| 日本不卡一二三| 亚洲影院久久精品| 国产精品色婷婷| 久久精子c满五个校花| 日韩欧美亚洲国产另类| 欧美日韩高清一区二区| 一本到高清视频免费精品| 色婷婷香蕉在线一区二区| 亚洲在线视频网站| 亚洲女与黑人做爰| 国产精品毛片久久久久久| 精品福利二区三区| 在线成人小视频| 欧美日韩国产美女| 91福利在线观看| 一本大道久久a久久综合| 成人av电影在线| 粉嫩高潮美女一区二区三区| 韩国v欧美v日本v亚洲v| 久久99热国产| 国内精品不卡在线| 国产一区在线视频| 国产91丝袜在线播放| 国产精品 欧美精品| 国产精品白丝jk黑袜喷水| 精品一区二区三区在线播放| 久久国产精品99精品国产| 毛片基地黄久久久久久天堂| 免费高清视频精品| 久久 天天综合| 国产精品一区二区无线| 国产一区二区三区久久久 | √…a在线天堂一区| 亚洲欧洲在线观看av| 亚洲男人的天堂一区二区| 亚洲精选视频免费看| 亚洲国产精品欧美一二99| 亚洲高清不卡在线观看| 三级在线观看一区二区| 久久激五月天综合精品| 国产精一区二区三区| 99久久精品国产精品久久| 一本到不卡免费一区二区| 欧美日韩一区高清| 欧美成人aa大片| 国产欧美日本一区视频| 亚洲视频一区在线| 日韩精品欧美精品| 国产一区二区三区四| 97久久精品人人做人人爽| 欧美三级韩国三级日本一级| 91精品国产综合久久久久久久久久| 日韩精品中午字幕| 亚洲欧洲日产国码二区| 亚洲福利国产精品| 国内精品久久久久影院一蜜桃| 99久久国产综合精品麻豆| 欧美疯狂做受xxxx富婆| 久久精品人人爽人人爽| 亚洲一区二区在线观看视频| 美国十次了思思久久精品导航| 不卡在线视频中文字幕| 欧美一区二区视频在线观看2020| 久久免费看少妇高潮| 夜夜揉揉日日人人青青一国产精品| 日韩高清在线一区| 成人免费看黄yyy456| 5566中文字幕一区二区电影| 日本一区二区三级电影在线观看| 亚洲午夜久久久久| 国产高清无密码一区二区三区| 在线免费不卡电影| 国产午夜精品福利| 日本成人在线视频网站| 91美女在线看| 国产日韩欧美精品综合| 首页欧美精品中文字幕| 成人avav在线| 欧美精品一区二区在线观看| 亚洲一二三四区| www.亚洲精品| 久久久精品综合| 蜜桃视频在线观看一区| 在线观看欧美日本| 国产精品大尺度| 国产精品1区2区3区| 在线不卡中文字幕| 亚洲黄色在线视频| 成人毛片在线观看| 国产欧美精品一区二区三区四区| 蜜臀av国产精品久久久久| 欧美在线观看禁18| 中文字幕一区二区三中文字幕| 国产在线麻豆精品观看| 欧美精品少妇一区二区三区| 亚洲男女一区二区三区| 成人天堂资源www在线| 久久奇米777| 久久99深爱久久99精品| 日韩欧美高清dvd碟片| 日韩精品亚洲一区二区三区免费| 91福利在线看| 亚洲一二三四区不卡| 91福利精品第一导航| 亚洲啪啪综合av一区二区三区| 成人精品一区二区三区四区| 国产亚洲女人久久久久毛片| 国产精品香蕉一区二区三区| wwww国产精品欧美| 国产精品一区一区三区| 久久蜜桃香蕉精品一区二区三区| 狠狠色丁香久久婷婷综合_中| 欧美一级片在线| 久久精品国产精品亚洲综合| 日韩免费观看高清完整版在线观看 | 成人亚洲精品久久久久软件| 久久久久国产一区二区三区四区| 久久国产尿小便嘘嘘| 精品免费99久久| 国产成人精品www牛牛影视| 国产亚洲综合在线| zzijzzij亚洲日本少妇熟睡| 国产精品美女久久福利网站| 波多野结衣在线aⅴ中文字幕不卡| 日本一区二区三区国色天香 | 久久伊99综合婷婷久久伊| 国产一区二区三区观看| 久久精品一区二区三区四区| 风间由美一区二区三区在线观看| 中文字幕av资源一区| 成人精品一区二区三区中文字幕 | 亚洲欧美日韩国产一区二区三区| 97久久精品人人做人人爽| 依依成人精品视频| 欧美一三区三区四区免费在线看 | 老鸭窝一区二区久久精品| 精品毛片乱码1区2区3区| 国产很黄免费观看久久| 亚洲私人黄色宅男| 欧美精品自拍偷拍动漫精品| 国产综合色精品一区二区三区| 亚洲国产精品成人久久综合一区| 91视视频在线观看入口直接观看www | 精品久久久久久久人人人人传媒| 国产一区二区剧情av在线| ...xxx性欧美|