Difference between revisions of "Unit SCSI"
(4 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
---- | ---- | ||
− | '''Ultibo SCSI | + | '''Ultibo SCSI Interface unit''' |
The SCSI interface unit is device non specific in that it implements only the SCSI protocol. | The SCSI interface unit is device non specific in that it implements only the SCSI protocol. | ||
Line 669: | Line 669: | ||
| <code>SCSI_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;</code> | | <code>SCSI_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;</code> | ||
| SCSI error messages | | SCSI error messages | ||
+ | |- | ||
+ | | <code>SCSI_LOG_LEVEL_WARN = LOG_LEVEL_WARN;</code> | ||
+ | | SCSI warning messages | ||
|- | |- | ||
| <code>SCSI_LOG_LEVEL_NONE = LOG_LEVEL_NONE;</code> | | <code>SCSI_LOG_LEVEL_NONE = LOG_LEVEL_NONE;</code> | ||
Line 1,023: | Line 1,026: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,029: | Line 1,032: | ||
</div></div> | </div></div> | ||
<br /> | <br /> | ||
+ | |||
'''SCSI functions''' | '''SCSI functions''' | ||
Line 1,037: | Line 1,041: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,049: | Line 1,053: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,061: | Line 1,065: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,073: | Line 1,077: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,085: | Line 1,089: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,097: | Line 1,101: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,109: | Line 1,113: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,121: | Line 1,125: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,133: | Line 1,137: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,145: | Line 1,149: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Return |
| Pointer to new SCSI entry or nil if SCSI could not be created | | Pointer to new SCSI entry or nil if SCSI could not be created | ||
|- | |- | ||
Line 1,157: | Line 1,161: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Size |
| Size in bytes to allocate for new SCSI (Including the SCSI entry) | | 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 | | Pointer to new SCSI entry or nil if SCSI could not be created | ||
|- | |- | ||
Line 1,172: | Line 1,176: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,184: | Line 1,188: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,196: | Line 1,200: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,208: | Line 1,212: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,220: | Line 1,224: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,232: | Line 1,236: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,244: | Line 1,248: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,256: | Line 1,260: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,268: | Line 1,272: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Return |
| Pointer to new Host entry or nil if host could not be created | | Pointer to new Host entry or nil if host could not be created | ||
|- | |- | ||
Line 1,280: | Line 1,284: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Size |
| Size in bytes to allocate for new host (Including the host entry) | | 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 | | Pointer to new Host entry or nil if host could not be created | ||
|- | |- | ||
Line 1,295: | Line 1,299: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,307: | Line 1,311: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,319: | Line 1,323: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,331: | Line 1,335: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,343: | Line 1,347: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,349: | Line 1,353: | ||
</div></div> | </div></div> | ||
<br /> | <br /> | ||
+ | |||
'''SCSI helper functions''' | '''SCSI helper functions''' | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">function SCSIGetCount:LongWord | + | <pre style="border: 0; padding-bottom:0px;">function SCSIGetCount:LongWord;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current SCSI count</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current SCSI count</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,369: | Line 1,374: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,376: | Line 1,381: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">procedure SCSILog(Level:LongWord;SCSI:PSCSIDevice; const AText:String);</pre> | + | <pre style="border: 0; padding-bottom:0px;">procedure SCSILog(Level:LongWord; SCSI:PSCSIDevice; const AText:String);</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,388: | Line 1,393: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">procedure SCSILogInfo(SCSI:PSCSIDevice; const AText:String);</pre> | + | <pre style="border: 0; padding-bottom:0px;">procedure SCSILogInfo(SCSI:PSCSIDevice; const AText:String); inline;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,400: | Line 1,405: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">procedure | + | <pre style="border: 0; padding-bottom:0px;">procedure SCSILogWarn(SCSI:PSCSIDevice; const AText:String); inline;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,412: | Line 1,417: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">procedure | + | <pre style="border: 0; padding-bottom:0px;">procedure SCSILogError(SCSI:PSCSIDevice; const AText:String); inline;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! ''' | + | ! Note |
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">procedure SCSILogDebug(SCSI:PSCSIDevice; const AText:String); inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
| None documented | | None documented | ||
|- | |- | ||
Line 1,429: | Line 1,446: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,436: | Line 1,453: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">function SCSIHostGetCount:LongWord | + | <pre style="border: 0; padding-bottom:0px;">function SCSIHostGetCount:LongWord;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Host count</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Host count</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,453: | Line 1,470: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,459: | Line 1,476: | ||
</div></div> | </div></div> | ||
<br /> | <br /> | ||
+ | |||
'''SCSI storage functions''' | '''SCSI storage functions''' | ||
Line 1,467: | Line 1,485: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,479: | Line 1,497: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,486: | Line 1,504: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
− | <pre style="border: 0; padding-bottom:0px;">function SCSIStorageDeviceControl(Storage:PStorageDevice; Request:Integer; Argument1 | + | <pre style="border: 0; padding-bottom:0px;">function SCSIStorageDeviceControl(Storage:PStorageDevice; Request:Integer; Argument1:PtrUInt; var Argument2:PtrUInt):LongWord;</pre> |
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- |
Latest revision as of 03:36, 15 December 2022
Return to Unit Reference
Contents
[hide]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
SCSI_*
SCSI_TYPE_*
SCSI_STATE_*
SCSI_FLAG_*
SCSI_MESSAGE_*
SCSI_STATUS_*
SCSI_SENSE_*
SCSI_ASC_*
SCSI_ASCQ_*
SCSI_COMMAND_*
SCSI_COMMAND_MAX_*
SCSI_SAI_*
SCSI_INQUIRY_*
SCSI_STANDARD_INQUIRY_*
SCSI_DEVICE_TYPE_*
SCSI_REMOVABLE_MEDIA_*
SCSI_REQUEST_SENSE_*
SCSI_READ_CAPACITY_*
SCSI_READ_10_*
SCSI_WRITE_10_*
SCSI_LOG_*
Type definitions
SCSI host enumeration callback
TSCSIHostEnumerate = function(Host:PSCSIHost; Data:Pointer):LongWord;
|
SCSI host
SCSI enumeration callback
TSCSIEnumerate = function(SCSI:PSCSIDevice; Data:Pointer):LongWord;
|
SCSI notification callback
TSCSINotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
|
SCSI device
SCSI command block
SCSI standard inquiry data
PSCSIStandardInquiryData = ^TSCSIStandardInquiryData;
TSCSIStandardInquiryData = packed record
SCSI request sense data
SCSI read capacity data
SCSI read capacity 16 data
PSCSIReadCapacity16Data = ^TSCSIReadCapacity16Data;
TSCSIReadCapacity16Data = packed record
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
SCSI functions
function SCSIDeviceInquiry(SCSI:PSCSIDevice; var DeviceType,DeviceFlags:LongWord; var Vendor,Product,Revision:PChar):LongWord;
function SCSIDeviceRequestSense(SCSI:PSCSIDevice; var SenseKey,ASC,ASCQ:Byte):LongWord;
function SCSIDeviceReadCapacity(SCSI:PSCSIDevice; var BlockSize,BlockShift:LongWord; var BlockCount:Int64):LongWord;
function SCSIDeviceTestUnitReady(SCSI:PSCSIDevice; var DeviceFlags:LongWord):LongWord;
function SCSIDeviceRead10(SCSI:PSCSIDevice; Start:LongWord; Count:Word; Buffer:Pointer):LongWord;
function SCSIDeviceWrite10(SCSI:PSCSIDevice; Start:LongWord; Count:Word; Buffer:Pointer):LongWord;
function SCSIDeviceRead16(SCSI:PSCSIDevice; const Start,Count:Int64; Buffer:Pointer):LongWord;
function SCSIDeviceWrite16(SCSI:PSCSIDevice; const Start,Count:Int64; Buffer:Pointer):LongWord;
function SCSIDeviceTransport(SCSI:PSCSIDevice; Command:PSCSICommandBlock):LongWord;
function SCSIDeviceCreateEx(Size:LongWord):PSCSIDevice;
function SCSIDeviceDestroy(SCSI:PSCSIDevice):LongWord;
function SCSIDeviceRegister(SCSI:PSCSIDevice):LongWord;
function SCSIDeviceDeregister(SCSI:PSCSIDevice):LongWord;
function SCSIDeviceFindByName(const Name:String):PSCSIDevice; inline;
function SCSIDeviceFindByDescription(const Description:String):PSCSIDevice; inline;
function SCSIDeviceEnumerate(Callback:TSCSIEnumerate; Data:Pointer):LongWord;
function SCSIDeviceNotification(SCSI:PSCSIDevice; Callback:TSCSINotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
function SCSIHostDestroy(Host:PSCSIHost):LongWord;
function SCSIHostRegister(Host:PSCSIHost):LongWord;
function SCSIHostDeregister(Host:PSCSIHost):LongWord;
function SCSIHostEnumerate(Callback:TSCSIHostEnumerate; Data:Pointer):LongWord;
SCSI helper functions
function SCSIDeviceCheck(SCSI:PSCSIDevice):PSCSIDevice;
procedure SCSILog(Level:LongWord; SCSI:PSCSIDevice; const AText:String);
procedure SCSILogInfo(SCSI:PSCSIDevice; const AText:String); inline;
procedure SCSILogWarn(SCSI:PSCSIDevice; const AText:String); inline;
procedure SCSILogError(SCSI:PSCSIDevice; const AText:String); inline;
procedure SCSILogDebug(SCSI:PSCSIDevice; const AText:String); inline;
function SCSIDeviceTypeToStorageType(DeviceType:Byte; Removable,Floppy:Boolean):LongWord;
function SCSIHostCheck(Host:PSCSIHost):PSCSIHost;
SCSI storage functions
function SCSIStorageDeviceRead(Storage:PStorageDevice; const Start,Count:Int64; Buffer:Pointer):LongWord;
function SCSIStorageDeviceWrite(Storage:PStorageDevice; const Start,Count:Int64; Buffer:Pointer):LongWord;
function SCSIStorageDeviceControl(Storage:PStorageDevice; Request:Integer; Argument1:PtrUInt; var Argument2:PtrUInt):LongWord;
Return to Unit Reference