unit mr.dev.usb.pipe; interface uses Windows, mr.drv.usb, mr.dev.usb.pipebase; type TPipe = class( TPipeBase) public function Read( var Buffer; BufferLength : cardinal; var Transferred : cardinal; Overlapped : POverlapped = nil) : boolean; function Write( var Buffer; BufferLength : cardinal; var Transferred : cardinal; Overlapped : POverlapped = nil) : boolean; public function Abort : boolean; function Flush : boolean; function Reset : boolean; end; implementation { TPipe } // @@@: Construction / destruction ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // // Construction / destruction // // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // ================================================================================================ // Abort // ================================================================================================ function TPipe.Abort: boolean; begin if Assigned( fDriver) then result := fDriver.AbortPipe( fPipeInfo.PipeID) else result := false end; // ================================================================================================ // Flush // ================================================================================================ function TPipe.Flush: boolean; begin if Assigned( fDriver) then result := fDriver.FlushPipe( fPipeInfo.PipeID) else result := false end; // ================================================================================================ // Reset // ================================================================================================ function TPipe.Reset: boolean; begin if Assigned( fDriver) then result := fDriver.ResetPipe( fPipeInfo.PipeID) else result := false end; // ================================================================================================ // Read // ================================================================================================ function TPipe.Read(var Buffer; BufferLength : cardinal; var Transferred : cardinal; Overlapped : POverlapped): boolean; begin if Assigned( fDriver) then result := fDriver.ReadPipe( fPipeInfo.PipeId, @Buffer, BufferLength, Transferred, Overlapped) else result := false; end; // ================================================================================================ // Write // ================================================================================================ function TPipe.Write( var Buffer; BufferLength : cardinal; var Transferred : cardinal; Overlapped : POverlapped): boolean; begin if Assigned( fDriver) then result := fDriver.WritePipe( fPipeInfo.PipeId, @Buffer, BufferLength, Transferred, Overlapped) else result := false; end; end.