unit Device; interface const SECTOR_SIZE = 512; type PDevice = ^TDevice; readFunc = function(dev:PDevice; ptr:pointer; offset:int64; length:dword):integer; writeFunc = function(dev:PDevice; ptr:pointer; offset:int64; length:dword):integer; resetFunc = function:integer; initFunc = function(dev:PDevice):integer; ioctlFunc = procedure; stopFunc = procedure; startFunc = procedure; standbyFunc = procedure; TDevice = object public major : integer; info : pointer; sectors : dword; constructor init; function read(ptr:pointer; offset:int64; length:dword):integer; virtual; function write(ptr:pointer; offset:int64; length:dword):integer; virtual; destructor done; virtual; end; // TDevice; { TDevice = packed record major : integer; info : pointer; sectors : dword; read : readFunc; write : writeFunc; reset : resetFunc; init : initFunc; ioctl : ioctlFunc; stop : stopFunc; standby : standbyFunc; end; } implementation constructor TDevice.init; begin major := 0; info := NIL; sectors := 0; end; // TDevice.init function TDevice.read; begin result := -1; end; // TDevice.read function TDevice.write; begin result := -1; end; // TDevice.write destructor TDevice.done; begin major := 0; info := NIL; sectors := 0; end; // TDevice.done end.