ILB_int_io_criteria_rtn


cCall [ilb.ILB_int_io_criteria_rtn],<<OFFSET32 IOP>>
or  eax, eax
jz  error

Converts the contents of the IOP so that the associated drivers can carry out the I/O request. If necessary, the service converts scatter/gather descriptor addresses and scatter/gather buffer addresses from linear to physical. It also converts the block counts in the scatter/gather descriptors to byte counts. The service verifies the scatter/gather buffer alignment and scatter/gather descriptor count maximums.

IOP

Address of an IOP structure that contains information about the I/O request. The client must set the following members prior to calling the service:

IOR_sgd_lin_phys

Linear address of the array of scatter/gather descriptors for the request. The buffer address in each scatter/gather descriptor must also be a linear address and the buffer size of each descriptor must specify the number of blocks to be transferred to the buffer described by the descriptor.

IOR_num_sgds

Number of scatter/gather descriptors to be processed.


If this service modifies the IOP, it converts the scatter/gather descriptor block counts to byte counts, converts linear addresses in scatter/gather descriptors to physical addresses, sets the IOR_num_sgds member to the new number of descriptors, and converts the IOR_sgd_lin_phys member to a physical address if the scatter/gather descriptors are in the IOP. If the descriptors are not in the IOP and the drivers require the physical address of the descriptors, the service returns an error.

If an I/O request constraint cannot be met, the service leaves the IOP unchanged except for scatter/gather descriptor block counts which it converts to byte counts.

See also ILB, IOP