Модуль "P2KApi" (часть 71) - TP2KAPI.ReadDataZ

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 154
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
function TP2KAPI.ReadDataZ(DevH: Thandle; Send_Data: Pointer; Recv_Data: Pointer; var Recv_Data_Size: dword): boolean;
var
  Hevent: Thandle;
  Ovr: OVERLAPPED;
  RSize: dword;

begin
  result:= false;
  Hevent:= CreateEvent(nil,true,false,nil);
  ResetEvent(HEvent);
  ovr.Internal:=0;
  ovr.InternalHigh:= 0;
  ovr.Offset:= 0;
  ovr.OffsetHigh:=0;
  ovr.hEvent:= Hevent;
  RSize:=$0;
  DeviceIOControl(DevH,$80002014, Send_Data, 9, Recv_Data, $1005, RSize, @Ovr);
  if WaitForSingleObject(HEvent, 10000) <> 0 then
    begin
      CancelIo(DevH);
      CloseHandle(HEvent);
      Log('ReadData DevIOCtl fail');
      exit;
    end
    else
    if not GetOverlappedResult(DevH, Ovr, RSize, false) then
      begin
        CancelIo(DevH);
        CloseHandle(HEvent);
        Log('ReadData GetOverlappedResult fail');
        exit;
      end
    else
    begin
      CloseHandle(HEvent);
      result:= true
    end;
end;
Rambler's Top100