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.