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

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 184
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
function TP2KAPI.WriteDataZ(DevH: Thandle; Send_Data: Pointer; Send_Data_Size: dword): boolean;
var
  HEvent: Thandle;
  rdata: array[1..256] of byte;
  rsize: dword;
  Ovr: OVERLAPPED;
  POvr,PRData:Pointer;

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, Send_Data_Size, @rdata, 5, rsize, @Ovr);
  POvr:=@Ovr;
  PRData:=@RData;
  asm
  push    POvr
  push    0
  push    5h
  push    PRData
  push    Send_Data_Size
  push    Send_Data
  push    80002014h
  push    DevH
  call    DeviceIOControl
  end;
  if WaitForSingleObject(HEvent, 10000) <> 0 then
    begin
      CancelIo(DevH);
      CloseHandle(HEvent);
      Log('WriteData DevIOCtl fail');
      exit;
    end
    else
    if not GetOverlappedResult(DevH, Ovr, rsize, false) then
      begin
        CancelIo(DevH);
        CloseHandle(HEvent);
        Log('WriteData GetOverlappedResult fail');
        exit;
      end
    else
    begin
      CloseHandle(HEvent);
      result:= true
    end;
end;
Rambler's Top100