FS_DirectDiskIO

FS_DirectDiskIO(
 PIOREQ pir
 )
 

Absolute disk read and write operations are performed through FS_DirectDiskIO. This supports the DOS functions: int 25h and int 26h.

ir_rh
Supplies handle to resource.
ir_flags
Supplies flags for the type of operation.
Operation Type Flags:  
Value Meaning
DIO_ABS_READ_SECTORS Absolute disk read operation.
DIO_ABS_WRITE_SECTORS Absolute disk write operation.
DIO_SET_LOCK_CACHE_STATE Set the cache state while a volume lock is in progress.

ir_user
Supplies user ID for this request.
ir_pid
Supplies process ID for this request.
Operation Type DIO_ABS_READ_SECTORS and DIO_ABS_WRITE_SECTORS:  
ir_pos Supplies the absolute sector number the read or write operation starts at.
ir_length Supplies the number of sectors to be read or written.
ir_data Supplies a pointer to the buffer the data is to be read from or written into.

Operation Type DIO_SET_LOCK_CACHE_STATE:  
ir_options Supplies options for setting the cache state while a volume lock is in progress.

Cache State Values:  
Value Meaning
DLC_LEVEL0LOCK_TAKEN Set the cache state for a level 0 lock type. The cache should be invalidated when a level 0 lock is taken and the cache must remain in the writethrough mode for the duration of this lock until the FSD is called with the DLC_LEVEL0LOCK_RELEASED option.
DLC_LEVEL0LOCK_RELEASED Revert the cache state to what it was before the lock was taken. The FSD should store the previous cache state so that it can restore it when the lock is released.
DLC_LEVEL3LOCK_TAKEN Set the cache state for a level 3 lock type. The cache should be invalidated when a level 0 lock is taken and the cache must remain in the writethrough mode for the duration of this lock until the FSD is called with the DLC_LEVEL3LOCK_RELEASED option.
DLC_LEVEL3LOCK_RELEASED Revert the cache state to what it was before the lock was taken. The FSD should store the previous cache state so that it can restore it when the lock is released.

ir_error Returns status of the operation ( 0 if no error, errorcode otherwise ).

The operation to set the cache state while the volume lock is in progress is part of the support necessary for exclusive access support. Volume locking is described in detail in the volume locking specification. Any FSD that does not support direct disk operations should fail this function, for example, network FSDs. The IFS does not explicitly fail these calls on any particular kind of FSD.