Return to Unit Reference
Description
Ultibo SCSI Interface unit
The SCSI interface unit is device non specific in that it implements only the SCSI protocol.
Actual command transfer is performed by a device specific driver that implements the exact semantics of the device. eg USB Mass Storage devices use the SCSI protocol, the SCSI interface implements the protocol behaviour but the actual command transfer is handled by the USB storage driver.
Constants
[Expand]
SCSI specific constants SCSI_*
SCSI_NAME_PREFIX = 'SCSI';
|
Name prefix for SCSI Devices
|
SCSI_HOST_PREFIX = 'SCSIHost';
|
Name prefix for Host Devices
|
[Expand]
SCSI device type SCSI_TYPE_*
SCSI_TYPE_NONE = 0;
|
|
SCSI_TYPE_HDD = 1;
|
|
[Expand]
SCSI device state SCSI_STATE_*
SCSI_STATE_EJECTED = 0;
|
|
SCSI_STATE_INSERTED = 1;
|
|
[Expand]
SCSI device flag SCSI_FLAG_*
SCSI_FLAG_NONE = $00000000;
|
|
[Expand]
SCSI protocol message SCSI_MESSAGE_*
SCSI_MESSAGE_COMPLETE = $00;
|
|
SCSI_MESSAGE_EXTENDED = $01;
|
|
SCSI_MESSAGE_SAVE_DP = $02;
|
|
SCSI_MESSAGE_RESTORE_DP = $03;
|
|
SCSI_MESSAGE_DISCONNECT = $04;
|
|
SCSI_MESSAGE_ID_ERROR = $05;
|
|
SCSI_MESSAGE_ABORT = $06;
|
|
SCSI_MESSAGE_REJECT = $07;
|
|
SCSI_MESSAGE_NOOP = $08;
|
|
SCSI_MESSAGE_PARITY = $09;
|
|
SCSI_MESSAGE_LCOMPLETE = $0a;
|
|
SCSI_MESSAGE_FCOMPLETE = $0b;
|
|
SCSI_MESSAGE_RESET = $0c;
|
|
SCSI_MESSAGE_ABORT_TAG = $0d;
|
|
SCSI_MESSAGE_CLEAR_QUEUE = $0e;
|
|
SCSI_MESSAGE_INIT_REC = $0f;
|
|
SCSI_MESSAGE_REL_REC = $10;
|
|
SCSI_MESSAGE_TERMINATE = $11;
|
|
SCSI_MESSAGE_SIMPLE_TAG = $20;
|
|
SCSI_MESSAGE_HEAD_TAG = $21;
|
|
SCSI_MESSAGE_ORDERED_TAG = $22;
|
|
SCSI_MESSAGE_IGN_RESIDUE = $23;
|
|
SCSI_MESSAGE_IDENTIFY = $80;
|
|
|
SCSI_MESSAGE_X_MODIFY_DP = $00;
|
|
SCSI_MESSAGE_X_SYNC_REQ = $01;
|
|
SCSI_MESSAGE_X_WIDE_REQ = $03;
|
|
SCSI_MESSAGE_X_PPR_REQ = $04;
|
|
[Expand]
SCSI protocol status SCSI_STATUS_*
SCSI_STATUS_GOOD = $00;
|
|
SCSI_STATUS_CHECK_COND = $02;
|
|
SCSI_STATUS_COND_MET = $04;
|
|
SCSI_STATUS_BUSY = $08;
|
|
SCSI_STATUS_INT = $10;
|
|
SCSI_STATUS_INT_COND_MET = $14;
|
|
SCSI_STATUS_CONFLICT = $18;
|
|
SCSI_STATUS_TERMINATED = $20;
|
|
SCSI_STATUS_QUEUE_FULL = $28;
|
|
SCSI_STATUS_ILLEGAL = $ff;
|
|
SCSI_STATUS_SENSE = $80;
|
|
[Expand]
SCSI protocol sense key SCSI_SENSE_*
SCSI_SENSE_NO_SENSE = $00;
|
|
SCSI_SENSE_RECOVERED_ERROR = $01;
|
|
SCSI_SENSE_NOT_READY = $02;
|
|
SCSI_SENSE_MEDIUM_ERROR = $03;
|
|
SCSI_SENSE_HARDWARE_ERROR = $04;
|
|
SCSI_SENSE_ILLEGAL_REQUEST = $05;
|
|
SCSI_SENSE_UNIT_ATTENTION = $06;
|
|
SCSI_SENSE_DATA_PROTECT = $07;
|
|
SCSI_SENSE_BLANK_CHECK = $08;
|
|
SCSI_SENSE_VENDOR_SPECIFIC = $09;
|
|
SCSI_SENSE_COPY_ABORTED = $0A;
|
|
SCSI_SENSE_ABORTED_COMMAND = $0B;
|
|
SCSI_SENSE_VOLUME_OVERFLOW = $0D;
|
|
SCSI_SENSE_MISCOMPARE = $0E;
|
|
[Expand]
SCSI protocol additional sense code SCSI_ASC_*
SCSI_ASC_NO_SENSE = $00;
|
NO SENSE
|
SCSI_ASC_RECOVERED_RETRIES = $17;
|
RECOVERED DATA WITH RETRIES
|
SCSI_ASC_RECOVERED_ECC = $18;
|
RECOVERED DATA WITH ECC
|
SCSI_ASC_NOT_READY_LUN = $04;
|
LOGICAL UNIT NOT READY
|
SCSI_ASC_NOT_READY_NO_REF_POS = $06;
|
NO REFERENCE POSITION FOUND
|
SCSI_ASC_NOT_READY_LUN_COMM = $08;
|
LOGICAL UNIT COMMUNICATION
|
SCSI_ASC_NOT_READY_MEDIUM_NOT_PRESENT = $3A;
|
MEDIUM NOT PRESENT
|
[Expand]
SCSI protocol additional sense code qualifier SCSI_ASCQ_*
SCSI_ASCQ_NO_SENSE = $00;
|
NO SENSE
|
SCSI_ASCQ_RECOVERED_RETRIES = $01;
|
RECOVERED DATA WITH RETRIES
|
SCSI_ASCQ_RECOVERED_ECC = $00;
|
RECOVERED DATA WITH ECC
|
SCSI_ASCQ_NOT_READY_LUN_BECOME_READY = $01;
|
LOGICAL DRIVE NOT READY - BECOMING READY
|
SCSI_ASCQ_NOT_READY_LUN_INIT_REQUIRED = $02;
|
LOGICAL DRIVE NOT READY - INITIALIZATION REQUIRED
|
SCSI_ASCQ_NOT_READY_LUN_FORMAT_PROGRESS = $04;
|
LOGICAL UNIT NOT READY - FORMAT IN PROGRESS
|
SCSI_ASCQ_NOT_READY_LUN_DEVICE_BUSY = $FF;
|
LOGICAL DRIVE NOT READY - DEVICE IS BUSY
|
SCSI_ASCQ_NOT_READY_LUN_COMM_FAILURE = $00;
|
LOGICAL UNIT COMMUNICATION FAILURE
|
SCSI_ASCQ_NOT_READY_LUN_COMM_TIMEOUT = $01;
|
LOGICAL UNIT COMMUNICATION TIME-OUT
|
SCSI_ASCQ_NOT_READY_LUN_COMM_OVERRUN = $80;
|
LOGICAL UNIT COMMUNICATION OVERRUN
|
[Expand]
SCSI protocol command SCSI_COMMAND_*
SCSI_COMMAND_CHANGE_DEF = $40;
|
Change Definition (Optional)
|
SCSI_COMMAND_COMPARE = $39;
|
Compare (Optional)
|
SCSI_COMMAND_COPY = $18;
|
Copy (Optional)
|
SCSI_COMMAND_COP_VERIFY = $3A;
|
Copy and Verify (Optional)
|
SCSI_COMMAND_INQUIRY = $12;
|
Inquiry (MANDATORY)
|
SCSI_COMMAND_LOG_SELECT = $4C;
|
Log Select (Optional)
|
SCSI_COMMAND_LOG_SENSE = $4D;
|
Log Sense (Optional)
|
SCSI_COMMAND_MODE_SEL6 = $15;
|
Mode Select 6-byte (Device Specific)
|
SCSI_COMMAND_MODE_SEL10 = $55;
|
Mode Select 10-byte (Device Specific)
|
SCSI_COMMAND_MODE_SEN6 = $1A;
|
Mode Sense 6-byte (Device Specific)
|
SCSI_COMMAND_MODE_SEN10 = $5A;
|
Mode Sense 10-byte (Device Specific)
|
SCSI_COMMAND_READ_BUFF = $3C;
|
Read Buffer (Optional)
|
SCSI_COMMAND_REQ_SENSE = $03;
|
Request Sense (MANDATORY)
|
SCSI_COMMAND_SEND_DIAG = $1D;
|
Send Diagnostic (Optional)
|
SCSI_COMMAND_TST_U_RDY = $00;
|
Test Unit Ready (MANDATORY)
|
SCSI_COMMAND_WRITE_BUFF = $3B;
|
Write Buffer (Optional)
|
|
Commands Unique to Direct Access Devices
|
SCSI_COMMAND_COMPARE = $39;
|
Compare (Optional)
|
SCSI_COMMAND_FORMAT = $04;
|
Format Unit (MANDATORY)
|
SCSI_COMMAND_LCK_UN_CAC = $36;
|
Lock Unlock Cache (Optional)
|
SCSI_COMMAND_PREFETCH = $34;
|
Prefetch (Optional)
|
SCSI_COMMAND_MED_REMOVL = $1E;
|
Prevent/Allow medium Removal (Optional)
|
SCSI_COMMAND_READ6 = $08;
|
Read 6-byte (MANDATORY)
|
SCSI_COMMAND_READ10 = $28;
|
Read 10-byte (MANDATORY)
|
SCSI_COMMAND_READ12 = $A8;
|
Read 12-byte (Optional)
|
SCSI_COMMAND_READ16 = $88;
|
Read 16-byte (Optional)
|
SCSI_COMMAND_RD_CAPAC = $25;
|
Read Capacity (MANDATORY)
|
SCSI_COMMAND_RD_CAPAC10 = SCSI_COMMAND_RD_CAPAC;
|
Read Capacity (10)
|
SCSI_COMMAND_RD_DEFECT = $37;
|
Read Defect Data (Optional)
|
SCSI_COMMAND_READ_LONG = $3E;
|
Read Long (Optional)
|
SCSI_COMMAND_REASS_BLK = $07;
|
Reassign Blocks (Optional)
|
SCSI_COMMAND_RCV_DIAG = $1C;
|
Receive Diagnostic Results (Optional)
|
SCSI_COMMAND_RELEASE = $17;
|
Release Unit (MANDATORY)
|
SCSI_COMMAND_REZERO = $01;
|
Rezero Unit (Optional)
|
SCSI_COMMAND_SRCH_DAT_E = $31;
|
Search Data Equal (Optional)
|
SCSI_COMMAND_SRCH_DAT_H = $30;
|
Search Data High (Optional)
|
SCSI_COMMAND_SRCH_DAT_L = $32;
|
Search Data Low (Optional)
|
SCSI_COMMAND_SEEK6 = $0B;
|
Seek 6-Byte (Optional)
|
SCSI_COMMAND_SEEK10 = $2B;
|
Seek 10-Byte (Optional)
|
SCSI_COMMAND_SEND_DIAG = $1D;
|
Send Diagnostics (MANDATORY)
|
SCSI_COMMAND_SET_LIMIT = $33;
|
Set Limits (Optional)
|
SCSI_COMMAND_START_STP = $1B;
|
Start/Stop Unit (Optional)
|
SCSI_COMMAND_SYNC_CACHE = $35;
|
Synchronize Cache (Optional)
|
SCSI_COMMAND_VERIFY = $2F;
|
Verify (Optional)
|
SCSI_COMMAND_WRITE6 = $0A;
|
Write 6-Byte (MANDATORY)
|
SCSI_COMMAND_WRITE10 = $2A;
|
Write 10-Byte (MANDATORY)
|
SCSI_COMMAND_WRITE12 = $AA;
|
Write 12-Byte (Optional)
|
SCSI_COMMAND_WRITE16 = $8A;
|
Write 16-Byte (Optional)
|
SCSI_COMMAND_WRT_VERIFY = $2E;
|
Write and Verify (Optional)
|
SCSI_COMMAND_WRITE_LONG = $3F;
|
Write Long (Optional)
|
SCSI_COMMAND_WRITE_SAME = $41;
|
Write Same (Optional)
|
SCSI_COMMAND_RD_FMT_CAP = $23;
|
Read Format Capacities
|
SCSI_COMMAND_SVC_ACT_IN = $9E;
|
Service Action In
|
[Expand]
SCSI command data SCSI_COMMAND_MAX_*
SCSI_COMMAND_MAX_SIZE = 16;
|
|
[Expand]
SCSI service action SCSI_SAI_*
SCSI_SAI_READ_CAPACITY_16 = $10;
|
Read Capacity (16)
|
SCSI_SAI_GET_LBA_STATUS = $12;
|
Get LBA Status
|
[Expand]
SCSI inquiry data SCSI_INQUIRY_*
SCSI_INQUIRY_STANDARD = $00;
|
|
[Expand]
SCSI standard inquiry data SCSI_STANDARD_INQUIRY_*
SCSI_STANDARD_INQUIRY_SIZE = 36;
|
|
[Expand]
SCSI inquiry peripheral device type SCSI_DEVICE_TYPE_*
SCSI_DEVICE_TYPE_DISK = $00;
|
SBC-3 - Direct access block device (e.g., magnetic disk)
|
SCSI_DEVICE_TYPE_TAPE = $01;
|
SSC-3 - Sequential-access device (e.g., magnetic tape)
|
SCSI_DEVICE_TYPE_PRINTER = $02;
|
SSC - Printer device
|
SCSI_DEVICE_TYPE_PROCESSOR = $03;
|
SPC-2 - Processor device
|
SCSI_DEVICE_TYPE_WRITE_ONCE = $04;
|
SBC - Write-once device (e.g., some optical disks)
|
SCSI_DEVICE_TYPE_CD_DVD = $05;
|
MMC-5 - CD/DVD device
|
SCSI_DEVICE_TYPE_SCANNER = $06;
|
Scanner device (obsolete)
|
SCSI_DEVICE_TYPE_OPTICAL = $07;
|
SBC - Optical memory device (e.g., some optical disks)
|
SCSI_DEVICE_TYPE_CHANGER = $08;
|
SMC-3 - Medium changer device (e.g., jukeboxes)
|
SCSI_DEVICE_TYPE_COMMS = $09;
|
Communications device (obsolete)
|
SCSI_DEVICE_TYPE_ARRAY = $0C;
|
SCC-2 - Storage array controller device (e.g., RAID)
|
SCSI_DEVICE_TYPE_ENCLOSURE = $0D;
|
SES - Enclosure services device
|
SCSI_DEVICE_TYPE_RBC = $0E;
|
RBC - Simplified direct-access device (e.g., magnetic disk)
|
SCSI_DEVICE_TYPE_CARD = $0F;
|
OCRW - Optical card reader/writer device
|
SCSI_DEVICE_TYPE_BRIDGE = $10;
|
BCC - Bridge Controller Commands
|
SCSI_DEVICE_TYPE_OBJECT = $11;
|
OSD - Object-based Storage Device
|
SCSI_DEVICE_TYPE_AUTOMATION = $12;
|
ADC-2 - Automation/Drive Interface
|
SCSI_DEVICE_TYPE_WELL_KNOWN = $1E;
|
Well known logical unit
|
SCSI_DEVICE_TYPE_UNKNOWN = $1F;
|
Unknown or no device type
|
[Expand]
SCSI inquiry removable media bit SCSI_REMOVABLE_MEDIA_*
SCSI_REMOVABLE_MEDIA_BIT = $80;
|
|
[Expand]
SCSI request sense data SCSI_REQUEST_SENSE_*
SCSI_REQUEST_SENSE_SIZE = 18;
|
|
[Expand]
SCSI read capacity data SCSI_READ_CAPACITY_*
SCSI_READ_CAPACITY_SIZE = 8;
|
|
SCSI_READ_CAPACITY_16_SIZE = 32;
|
|
[Expand]
SCSI read 10 data SCSI_READ_10_*
SCSI_READ_10_MAX_BLOCKS = $FFFF;
|
|
[Expand]
SCSI write 10 data SCSI_WRITE_10_*
SCSI_WRITE_10_MAX_BLOCKS = $FFFF;
|
|
[Expand]
SCSI logging SCSI_LOG_*
SCSI_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;
|
SCSI debugging messages
|
SCSI_LOG_LEVEL_INFO = LOG_LEVEL_INFO;
|
SCSI informational messages, such as a device being attached or detached
|
SCSI_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
|
SCSI error messages
|
SCSI_LOG_LEVEL_WARN = LOG_LEVEL_WARN;
|
SCSI warning messages
|
SCSI_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
|
No SCSI messages
|
Type definitions
SCSI host enumeration callback
TSCSIHostEnumerate = function(Host:PSCSIHost; Data:Pointer):LongWord;
|
|
SCSI host
[Expand]
PSCSIHost = ^TSCSIHost;
TSCSIHost = record
Device Properties
|
Device:TDevice;
|
The Device entry for this Host
|
Host Properties
|
HostId:LongWord;
|
Unique Id of this Host in the Host table
|
HostState:LongWord;
|
Host state (eg ?????)
|
Statistics Properties
|
|
Driver Properties
|
Lock:TMutexHandle;
|
Host lock
|
Internal Properties
|
Prev:PSCSIHost;
|
Previous entry in Host table
|
Next:PSCSIHost;
|
Next entry in Host table
|
SCSI enumeration callback
TSCSIEnumerate = function(SCSI:PSCSIDevice; Data:Pointer):LongWord;
|
|
SCSI notification callback
TSCSINotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
|
|
SCSI device
[Expand]
PSCSIDevice = ^TSCSIDevice;
TSCSIDevice = record
Device Properties
|
Device:TDevice;
|
The Device entry for this SCSI
|
SCSI Properties
|
SCSIId:LongWord;
|
Unique Id of this SCSI in the SCSI table
|
SCSIState:LongWord;
|
SCSI state (eg SCSI_STATE_INSERTED)
|
Statistics Properties
|
|
Driver Properties
|
Lock:TMutexHandle;
|
Device lock
|
Vendor:PChar;
|
SCSI Vendor
|
Product:PChar;
|
SCSI Product
|
Revision:PChar;
|
Firmware Revision
|
Internal Properties
|
Prev:PSCSIDevice;
|
Previous entry in SCSI table
|
Next:PSCSIDevice;
|
Next entry in SCSI table
|
SCSI command block
[Expand]
PSCSICommandBlock = ^TSCSICommandBlock;
TSCSICommandBlock = record
Command:array[0..SCSI_COMMAND_MAX_SIZE - 1] of Byte;
|
Command
|
SenseData:array[0..63] of Byte;
|
Request Sense
|
Status:Byte;
|
SCSI Status
|
TargetID:Byte;
|
Target ID
|
TargetLUN:Byte;
|
Target LUN
|
CommandLength:Byte;
|
Command Length
|
DataLength:LongWord;
|
Total Data Length
|
Data:Pointer;
|
Pointer to Data
|
MessageOut:array[0..11] of Byte;
|
Message out buffer
|
MessageIn:array[0..11] of Byte;
|
Message in buffer
|
SenseCommandLength:Byte;
|
Sense Command Length
|
SenseDataLength:LongWord;
|
Sense Data Length
|
SenseCommand:array[0..5] of Byte;
|
Sense Command
|
ControllerStatus:LongWord;
|
Controller Status
|
TransferredBytes:LongWord;
|
Transferred Bytes
|
SCSI standard inquiry data
[Expand]
PSCSIStandardInquiryData = ^TSCSIStandardInquiryData;
TSCSIStandardInquiryData = packed record
DeviceType:Byte;
|
Peripheral Device Type (Bits 4..0)
|
RemovableMediaBit:Byte;
|
Removable Media Bit (Bit 7) ($80)
|
Version:Byte;
|
ISO/ECMA/ANSI Version (ISO Bits 7..6)(ECMA Bits 5..3)(ANSI Bits 2..0)
|
ResponseFormat:Byte;
|
Response Data Format (Bits 3..0)
|
AdditionalLength:Byte;
|
Additional Length
|
Reserved1:Byte;
|
|
Reserved2:Word;
|
|
Vendor:array[0..7] of Char;
|
Vendor Information
|
Product:array[0..15] of Char;
|
Product Identification
|
Revision:array[0..3] of Char;
|
Product Revision Level
|
SCSI request sense data
[Expand]
PSCSIRequestSenseData = ^TSCSIRequestSenseData;
TSCSIRequestSenseData = packed record
ErrorCode:Byte;
|
Error Code (Bits 6..0) (Bit 7 is Valid bit)
|
Reserved1:Byte;
|
|
SenseKey:Byte;
|
Sense Key (Bits 3..0)
|
Information:LongWord;
|
Information
|
AdditionalLength:Byte;
|
Additional Sense Length
|
Reserved2:LongWord;
|
|
ASC:Byte;
|
Additional Sense Code
|
ASCQ:Byte;
|
Additional Sense Code Qualifier
|
Reserved3:LongWord;
|
|
SCSI read capacity data
[Expand]
PSCSIReadCapacityData = ^TSCSIReadCapacityData;
TSCSIReadCapacityData = packed record
LastBlock:LongWord;
|
Last Logical Block Address (Big Endian)
|
BlockSize:LongWord;
|
Block Length In Bytes (Big Endian)
|
SCSI read capacity 16 data
[Expand]
PSCSIReadCapacity16Data = ^TSCSIReadCapacity16Data;
TSCSIReadCapacity16Data = packed record
LastBlock:Int64;
|
Last Logical Block Address (Big Endian)
|
BlockSize:LongWord;
|
Block Length In Bytes (Big Endian)
|
Reserved1:Byte;
|
P_TYPE (Bits 3..1) PROT_EN (Bit 0)
|
Reserved2:Byte;
|
P_I_EXPONENT (Bitss 7..4) LOGICAL BLOCKS PER PHYSICAL BLOCK EXPONENT (Bits 3..0
|
Reserved3:Byte;
|
TPE (Bit 7) TPRZ (Bit 6) LOWEST ALIGNED LOGICAL BLOCK ADDRESS (Bits 5..0)(Big Endian)
|
Reserved4:Byte;
|
LOWEST ALIGNED LOGICAL BLOCK ADDRESS (Bits 7..0)(Big Endian)
|
Reserved5:array[0..15] of Byte;
|
|
Public variables
SCSI logging
SCSI_DEFAULT_LOG_LEVEL:LongWord = SCSI_LOG_LEVEL_DEBUG;
|
Minimum level for SCSI messages. Only messages with level greater than or equal to this will be printed.
|
SCSI_LOG_ENABLED:Boolean;
|
|
Function declarations
Initialization functions
[Expand]
procedure SCSIInit;
Description: To be documented
SCSI functions
[Expand]
function SCSIDeviceInquiry(SCSI:PSCSIDevice; var DeviceType,DeviceFlags:LongWord; var Vendor,Product,Revision:PChar):LongWord;
Description: To be documented
[Expand]
function SCSIDeviceRequestSense(SCSI:PSCSIDevice; var SenseKey,ASC,ASCQ:Byte):LongWord;
Description: To be documented
[Expand]
function SCSIDeviceReadCapacity(SCSI:PSCSIDevice; var BlockSize,BlockShift:LongWord; var BlockCount:Int64):LongWord;
Description: To be documented
[Expand]
function SCSIDeviceTestUnitReady(SCSI:PSCSIDevice; var DeviceFlags:LongWord):LongWord;
Description: To be documented
[Expand]
function SCSIDeviceRead10(SCSI:PSCSIDevice; Start:LongWord; Count:Word; Buffer:Pointer):LongWord;
Description: To be documented
[Expand]
function SCSIDeviceWrite10(SCSI:PSCSIDevice; Start:LongWord; Count:Word; Buffer:Pointer):LongWord;
Description: To be documented
[Expand]
function SCSIDeviceRead16(SCSI:PSCSIDevice; const Start,Count:Int64; Buffer:Pointer):LongWord;
Description: To be documented
[Expand]
function SCSIDeviceWrite16(SCSI:PSCSIDevice; const Start,Count:Int64; Buffer:Pointer):LongWord;
Description: To be documented
[Expand]
function SCSIDeviceTransport(SCSI:PSCSIDevice; Command:PSCSICommandBlock):LongWord;
Description: To be documented
[Expand]
function SCSIDeviceCreate:PSCSIDevice;
Description: Create a new SCSI entry
Return
|
Pointer to new SCSI entry or nil if SCSI could not be created
|
[Expand]
function SCSIDeviceCreateEx(Size:LongWord):PSCSIDevice;
Description: Create a new SCSI entry
Size
|
Size in bytes to allocate for new SCSI (Including the SCSI entry)
|
Return
|
Pointer to new SCSI entry or nil if SCSI could not be created
|
[Expand]
function SCSIDeviceDestroy(SCSI:PSCSIDevice):LongWord;
Description: Destroy an existing SCSI entry
[Expand]
function SCSIDeviceRegister(SCSI:PSCSIDevice):LongWord;
Description: Register a new SCSI in the SCSI table
[Expand]
function SCSIDeviceDeregister(SCSI:PSCSIDevice):LongWord;
Description: Deregister a SCSI from the SCSI table
[Expand]
function SCSIDeviceFind(SCSIId:LongWord):PSCSIDevice;
Description: To be documented
[Expand]
function SCSIDeviceFindByName(const Name:String):PSCSIDevice; inline;
Description: To be documented
[Expand]
function SCSIDeviceFindByDescription(const Description:String):PSCSIDevice; inline;
Description: To be documented
[Expand]
function SCSIDeviceEnumerate(Callback:TSCSIEnumerate; Data:Pointer):LongWord;
Description: To be documented
[Expand]
function SCSIDeviceNotification(SCSI:PSCSIDevice; Callback:TSCSINotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
[Expand]
function SCSIHostCreate:PSCSIHost;
Description: Create a new Host entry
Return
|
Pointer to new Host entry or nil if host could not be created
|
[Expand]
function SCSIHostCreateEx(Size:LongWord):PSCSIHost;
Description: Create a new Host entry
Size
|
Size in bytes to allocate for new host (Including the host entry)
|
Return
|
Pointer to new Host entry or nil if host could not be created
|
[Expand]
function SCSIHostDestroy(Host:PSCSIHost):LongWord;
Description: Destroy an existing Host entry
[Expand]
function SCSIHostRegister(Host:PSCSIHost):LongWord;
Description: Register a new Host in the Host table
[Expand]
function SCSIHostDeregister(Host:PSCSIHost):LongWord;
Description: Deregister a Host from the Host table
[Expand]
function SCSIHostFind(HostId:LongWord):PSCSIHost;
Description: To be documented
[Expand]
function SCSIHostEnumerate(Callback:TSCSIHostEnumerate; Data:Pointer):LongWord;
Description: To be documented
SCSI helper functions
[Expand]
function SCSIGetCount:LongWord;
Description: Get the current SCSI count
[Expand]
function SCSIDeviceCheck(SCSI:PSCSIDevice):PSCSIDevice;
Description: Check if the supplied SCSI is in the SCSI table
[Expand]
procedure SCSILog(Level:LongWord; SCSI:PSCSIDevice; const AText:String);
Description: To be documented
[Expand]
procedure SCSILogInfo(SCSI:PSCSIDevice; const AText:String); inline;
Description: To be documented
[Expand]
procedure SCSILogWarn(SCSI:PSCSIDevice; const AText:String); inline;
Description: To be documented
[Expand]
procedure SCSILogError(SCSI:PSCSIDevice; const AText:String); inline;
Description: To be documented
[Expand]
procedure SCSILogDebug(SCSI:PSCSIDevice; const AText:String); inline;
Description: To be documented
[Expand]
function SCSIDeviceTypeToStorageType(DeviceType:Byte; Removable,Floppy:Boolean):LongWord;
Description: To be documented
[Expand]
function SCSIHostGetCount:LongWord;
Description: Get the current Host count
[Expand]
function SCSIHostCheck(Host:PSCSIHost):PSCSIHost;
Description: Check if the supplied Host is in the host table
SCSI storage functions
[Expand]
function SCSIStorageDeviceRead(Storage:PStorageDevice; const Start,Count:Int64; Buffer:Pointer):LongWord;
Description: To be documented
[Expand]
function SCSIStorageDeviceWrite(Storage:PStorageDevice; const Start,Count:Int64; Buffer:Pointer):LongWord;
Description: To be documented
[Expand]
function SCSIStorageDeviceControl(Storage:PStorageDevice; Request:Integer; Argument1:PtrUInt; var Argument2:PtrUInt):LongWord;
Description: To be documented
Return to Unit Reference