Files
bds.mr.devmgr/src.devmgr/dev/usb/mr.dev.usb.pipe.pas
T
2026-01-03 18:53:14 +01:00

109 lines
3.9 KiB
ObjectPascal

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.