Specifications
Data Structures
1.12 I/O Request Packet (IRP)
Table 1–14 (Cont.) Contents of an I/O Request Packet
Field Name Contents
IRP$L_AST* Address of AST routine, if specified by the process in the I/O request. (This
field is otherwise clear.) If the process specifies an AST routine address in the
$QIO call, EXE$QIO writes the address in this field.
During I/O postprocessing, the special kernel-mode AST routine queues a user
mode AST to the requesting process if this field contains the address of an
AST routine.
IRP$L_ASTPRM* Parameter sent as an argument to the AST routine specified by the user in the
I/O request. If the process specifies an AST routine and a parameter to that
AST routine in the $QIO call, EXE$QIO writes the parameter in this field.
During I/O postprocessing, the special kernel-mode AST routine queues a user
mode AST if the IRP$L_AST field contains an address, and passes the value
in IRP$L_ASTPRM to the AST routine as an argument.
IRP$L_WIND* Address of window control block (WCB) that describes the file being accessed
in the I/O request. EXE$QIO writes this field if the I/O request refers to a
file-structured device. An ACP or XQP reads this field.
When a process gains access to a file on a file-structured device or creates a
logical link between a file and a process I/O channel, the device ACP or XQP
creates a WCB that describes the virtual-to-logical mapping of the file data on
the disk. EXE$QIO stores the address of this WCB in the IRP$L_WIND field.
IRP$L_UCB* Address of UCB for the device assigned to the process’s I/O channel. EXE$QIO
copies this value from the CCB.
IRP$W_FUNC I/O function code that identifies the function to be performed for the I/O
request. The I/O request call specifies an I/O function code; EXE$QIO and
driver FDT routines map the code value to its most basic level (virtual
logical physical) and copy the reduced value into this field.
Based on this function code, EXE$QIO calls FDT action routines to preprocess
an I/O request. Six bits of the function code describe the basic function. The
remaining 10 bits modify the function.
IRP$B_EFN* Event flag number and group specified in I/O request. If the I/O request
call does not specify an event flag number, EXE$QIO uses event flag 0 by
default. EXE$QIO writes this field. The I/O postprocessing routine calls
SCH$POSTEF to set this event flag when the I/O operation is complete.
IRP$B_PRI* Base priority of the process that issued the I/O request. EXE$QIO obtains a
value for this field from the process’s PCB. EXE$INSERTIRP reads this field
to insert an IRP into a priority-ordered pending-I/O queue.
IRP$L_IOSB* Virtual address of the process’s I/O status block (IOSB) that receives final
status of the I/O request at I/O completion. EXE$QIO writes a value into this
field if the I/O request call specifies an IOSB address. (This field is otherwise
clear.) The I/O postprocessing special kernel-mode AST routine writes two
longwords of I/O status into the IOSB after the I/O operation is complete.
When an FDT routine aborts an I/O request by calling EXE$ABORTIO,
EXE$ABORTIO fills the IRP$L_IOSB field with zeros so that I/O
postprocessing does not write status into the IOSB.
IRP$W_CHAN* Index number of process I/O channel for request. EXE$QIO writes this field.
(continued on next page)
1–46