The IORB is the main control block for all direct call commands. To accommodate varying command-specific data, there are eight types of IORBs, one per CommandCode, as shown in the following table.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³IORB Type ³CommandCode ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_CONFIGURATION ³IOCC_CONFIGURATION ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_UNIT_CONTROL ³IOCC_UNIT_CONTROL ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_GEOMETRY ³IOCC_GEOMETRY ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_EXECUTE_IO ³IOCC_EXECUTE_IO ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_FORMAT ³IOCC_FORMAT ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_UNIT_STATUS ³IOCC_UNIT_STATUS ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_DEVICE_CONTROL ³IOCC_DEVICE_CONTROL ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_ADAPTER_PASSTHRU ³IOCC_ADAPTER_PASSTHRU ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Each IORB consists of a common I/O Request Block Header (IORBH data structure), followed by unique command-specific data, as shown in the following table.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³Field Name ³C Type ³Length ³Description ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Length ³USHORT ³DW ³Length of IORB ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³UnitHandle ³USHORT ³DW ³Unit handle ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³CommandCode ³USHORT ³DW ³Command code ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³CommandModifier ³USHORT ³DW ³Command modifier ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³RequestControl ³USHORT ³DW ³Flags ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Status ³USHORT ³DW ³Status ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ErrorCode ³USHORT ³DW ³Error code ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Timeout ³ULONG ³DD ³Completion timeout ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³StatusBlockLen ³USHORT ³DW ³Length of status ³ ³ ³ ³ ³info ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³pStatusBlock ³NPBYTE ³DW ³Pointer to status ³ ³ ³ ³ ³info ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Reserved_1 ³USHORT ³DW ³Reserved ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³pNxtIORB ³PIORB ³DD ³Pointer to next ³ ³ ³ ³ ³IORB ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³NotifyAddress ³(*PFN)( ) ³DD ³Notification ³ ³ ³ ³ ³address ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³DMWorkSpace[20] ³UCHAR ³DB(20) ³Reserved ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ADDWorkSpace[16] ³UCHAR ³DB(16) ³adapter device ³ ³ ³ ³ ³driver work area ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
On entry to the driver:
Length
is set to the total length of the IORB (IORBH plus Command-Specific Data)
in bytes.
UnitHandle
identifies the adapter device driver's unit for which the request is intended.
The adapter device driver must assign a unique UnitHandle in the
DEVICETABLE UNITINFO structure for each of the units it manages. Refer
to the IOCC_CONFIGURATION CommandCode section for additional information.
CommandCode/CommandModifier
contains the direct call commands. These commands are grouped by CommandCode
as shown in the following table. The CommandCode field defines
the IORB; the CommandModifier field selects the actual operation
within a specified CommandCode. For details on each of the commands,
refer to their corresponding CommandCode sections.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³CommandCode ³CommandModifier ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IOCC_CONFIGURATION ³ ³ ³ ³IOCM_GET_DEVICE_TABLE ³ ³ ³IOCM_COMPLETE_INIT ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IOCC_UNIT_CONTROL ³ ³ ³ ³IOCM_ALLOCATE_UNIT ³ ³ ³IOCM_DEALLOCATE_UNIT ³ ³ ³IOCM_CHANGE_UNITINFO ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IOCC_GEOMETRY ³ ³ ³ ³IOCM_GET_MEDIA_GEOMETRY ³ ³ ³IOCM_SET_MEDIA_GEOMETRY ³ ³ ³IOCM_GET_DEVICE_GEOMETRY ³ ³ ³IOCM_SET_LOGICAL_GEOMETRY ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IOCC_EXECUTE_IO ³ ³ ³ ³IOCM_READ ³ ³ ³IOCM_READ_VERIFY ³ ³ ³IOCM_READ_PREFETCH ³ ³ ³IOCM_WRITE ³ ³ ³IOCM_WRITE_VERIFY ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IOCC_FORMAT ³ ³ ³ ³IOCM_FORMAT_MEDIA ³ ³ ³IOCM_FORMAT_TRACK ³ ³ ³IOCM_FORMAT_PROGRESS ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IOCC_UNIT_STATUS ³ ³ ³ ³IOCM_GET_UNIT_STATUS ³ ³ ³IOCM_GET_CHANGELINE_STATE ³ ³ ³IOCM_GET_MEDIA_SENSE ³ ³ ³IOCM_GET_LOCK_SENSE ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IOCC_DEVICE_CONTROL ³ ³ ³ ³IOCM_ABORT ³ ³ ³IOCM_RESET ³ ³ ³IOCM_SUSPEND ³ ³ ³IOCM_RESUME ³ ³ ³IOCM_LOCK_MEDIA ³ ³ ³IOCM_UNLOCK_MEDIA ³ ³ ³IOCM_EJECT_MEDIA ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IOCC_ADAPTER_PASSTHRU ³ ³ ³ ³IOCM_EXECUTE_SCB ³ ³ ³IOCM_EXECUTE_CDB ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
RequestControl
contains flags which control the processing of the IORB, as shown in the
following table.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³Flag ³Description ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_ASYNC_POST ³Command-completion protocol. This ³ ³ ³ADD will always return immediately, ³ ³ ³as this is an asynchronous protocol ³ ³ ³requiring ASYNC_NOTIFY to be set. If³ ³ ³set, this flag indicates that the ³ ³ ³NotifyAddress field is valid and ³ ³ ³that the adapter device driver ³ ³ ³should call this routine when the ³ ³ ³IORB request is completed. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_CHAIN ³IORB chaining. If set, this flag ³ ³ ³indicates that the pNxtIORB field is³ ³ ³valid and that there is a chained ³ ³ ³IORB command to service. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_CHS_ADDRESSING ³I/O addressing format. If set, this³ ³ ³flag indicates that the command's ³ ³ ³RBA field is in the format defined ³ ³ ³by the CHS_ADDR structure. This bit³ ³ ³should be set only for diskette ³ ³ ³controllers. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_REQ_STATUSBLOCK ³Request for status information. If ³ ³ ³set, this flag indicates that the ³ ³ ³StatusBlockLen and pStatusBlock ³ ³ ³fields are valid and that the ³ ³ ³adapter device driver should return ³ ³ ³the command's associated status ³ ³ ³information. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_DISABLE_RETRY ³No error retry. If set, this flag ³ ³ ³indicates that the adapter device ³ ³ ³driver should not retry the request ³ ³ ³if a processing error occurs. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
For more information about chained IORBs (IORB_CHAIN), see Adapter Device Driver Interface Questions and Answers.
Status
equals 0 on entry. Upon exit from the adapter device driver, Status
contains flags to indicate the command's completion status. (See the
following table.)
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³Flag ³Description ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_DONE ³Processing complete. If set, this ³ ³ ³flag indicates that the adapter ³ ³ ³device driver has completed ³ ³ ³processing the request. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_ERROR ³Error encountered. If set, this ³ ³ ³flag indicates that an error ³ ³ ³occurred while processing the ³ ³ ³request. This flag should not be ³ ³ ³set if the error was successfully ³ ³ ³recovered by the adapter device ³ ³ ³driver. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_RECOV_ERROR ³Recoverable error. If set, this ³ ³ ³flag indicates that, although an ³ ³ ³error occurred, the adapter device ³ ³ ³driver successfully recovered ³ ³ ³through retries. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³IORB_STATUSBLOCK_AVAIL ³Status information returned. If ³ ³ ³set, this flag indicates that the ³ ³ ³adapter device driver has returned ³ ³ ³status information in the buffer ³ ³ ³defined by pStatusBlock. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ErrorCode
equals 0, on entry. On exit from the driver, it contains the command's
completion error code. This field is valid only if the IORB_ERROR flag
in the Status field is set. The error codes are summarized in Error
Handling.
Timeout
contains the maximum number of seconds the driver will permit for command
completion before timing out. If this field is set to 0, the timeout value
assigned is the default set by the driver If this field is set to -1, the
timeout value assigned is infinite. The timeout period is measured from
the last valid contact (interrupt) with the target device. Therefore, if
the device interrupts periodically within the timeout interval, the interval
is reset after each interrupt.
StatusBlockLen
contains the size of the block of storage, in bytes, for the driver to return
status information (pStatusBlock). This field is valid only if the
IORB_REQ_STATUSBLOCK flag is set in the RequestControl field.
pStatusBlock
contains a near pointer to a block of storage (length = StatusBlockLength),
allocated by the caller, for the driver to return status information. On
exit from the driver, the storage area contains status information. This
field is valid only if the IORB_REQ_STATUSBLOCK flag is set in the RequestControl
field. The format of information in the status block depends on the
class of adapters the driver supports. For SCSI devices, see IORB
Status Block for more information.
Note: The pointer to the status block is a 16-bit near pointer. The status block must reside in the same segment as the IORB.
Reserved_1
is reserved for use by the device manager and must not be modified by the
adapter device driver.
pNxtIORB
contains a far pointer to the next IORB for chained commands. This field
is valid only if the IORB_CHAIN flag is set in the RequestControl field.
NotifyAddress
contains a far pointer to the notification routine to be called when the
request has completed successfully or aborted due to error conditions. This
field is valid only if the IORB_ASYNC_POST flag is set in the RequestControl
field. The notification routine should be called with a far pointer
to the command's IORB.
C Language Syntax
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
(FAR *piorb->NotifyAddress) (piorb);
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Assembly Language Syntax
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; ** ES:BX = IORB Pointer PUSH es ; IORB segment PUSH bx ; IORB offset CALL dword ptr es:[bx+IOH_NotifyAddress] ; Call notify routine add sp, 4 ; Cleanup stack
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Note: The Notify routine will preserve only the DS, ES, SI, and DI registers.
DMWorkSpace[20]
defines a workspace, for use by the device manager, that must not be modified
by the device driver.
ADDWorkSpace[16]
defines a workspace for the adapter device driver that is ignored by the
device manager.
Command-Specific Data
contains the command-unique parameters. The commands and actual formats
of the corresponding IORBs are described in the following sections.