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 i.e. 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 i.e. 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 e.g. network FSDs. The IFS does not explicitly fail these calls on any particular kind of FSD.