Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

147 lines
4.6 KiB

; Copyright (c) Microsoft Corporation 1989-1991. All Rights Reserved.
;******************************************************************************
;
; Title: smartdrv.inc - smartdrv equates & structures
;
; Version: 1.00
;
; Date: 15-Sep-1989
;
; Author: ARR
;
;------------------------------------------------------------------------------
;
; Change log:
;
; DATE REV DESCRIPTION
; ----------- --- -----------------------------------------------------------
; 15-Sep-1989 ARR Original
;
;==============================================================================
;
; Device name of SMARTDRV
;
SD_DEV_NAME equ "SMARTAAR",0
;
; SMARTDRV cache type (XMS or EMS) -- SD_IR_Driver_Type field
;
SD_CACHE_XMS equ 1 ; Cache is in XMS
SD_CACHE_EMS equ 2 ; Cache is in EMS
;
; Structure of the data returned on the SMARTDRV IOCTL read call
;
SD_IOCTL_Read struc
SD_IR_Write_Through db ? ; Write-through flag, currently always 1
SD_IR_Write_Buff db ? ; Buffer write flag, currently always 0
SD_IR_Enable_Int13 db ? ; Cache enable flag, 1 = enabled
SD_IR_Driver_Type db ? ; Type 1 (XMS cache) or 2 (EMS cache)
SD_IR_Tick_Setting dw ? ; Ticks between flushes, currently unused
SD_IR_Lock_Cache db ? ; Non-zero if cache is locked
SD_IR_Reboot_Flush db ? ; Non-zero if cache should be flushed on reboot
SD_IR_Cache_All db ? ; Zero if full track writes are not cached
db ? ; Unused
SD_IR_Original_INT13 dd ? ; INT 13 address SMARTDRV hooked
SD_IR_Version dw ? ; SMARTDrive version, packed BCD
dw ? ; Unused
; Next three values are used for computing
; cache statistics. They may be scaled rather
; than absolute values
SD_IR_Total_Sec_Read dw ? ; Count of sectors read
SD_IR_Cache_Sec_Read dw ? ; Count of sectors read from cache
SD_IR_Track_Sec_Read dw ? ; Count of sectors read from track buffer
; Cache statistics
SD_IR_Cache_Hit_Ratio db ? ; = Cache_Sec_Read * 100 / Total_Sec_Read
SD_IR_Track_Hit_Ratio db ? ; = Track_Sec_Read * 100 / Total_Sec_Read
SD_IR_Total_Tracks dw ? ; Number of tracks in the cache
SD_IR_Total_Used dw ? ; Tracks currently in use
SD_IR_Total_Locked dw ? ; Tracks currently locked
SD_IR_Total_Dirty dw ? ; Tracks currently dirty
; Information for resizing cache
; All values are in terms of 16Kb pages.
SD_IR_Current_Size dw ? ; Current size of the cache, in 16Kb pages
SD_IR_Dev_Size dw ? ; Original size requested by user
SD_IR_Min_Cache_Size dw ? ; Minimum allowable size
SD_IOCTL_Read ends
;
; IOCTL Write functions
; The function is encoded in the first byte of the IOCTL write data
;
SD_IOCTL_WR_Flush equ 0 ; Flush the cache
SD_IOCTL_WR_Flush_Invalidate equ 1 ; Flush the cache and discard it
SD_IOCTL_WR_Disable_Cache equ 2 ; Turn caching off
SD_IOCTL_WR_Enable_Cache equ 3 ; Turn caching on
SD_IOCTL_WR_Set_Tick equ 5 ; Set tick count for flush
SD_IOCTL_WR_Lock equ 6 ; Lock current cache contents
SD_IOCTL_WR_Unlock equ 7 ; Unlock current cache contents
SD_IOCTL_WR_Reboot_Flush equ 8 ; Set Reboot_Flush flag
SD_IOCTL_WR_Shrink_Cache equ 11 ; Reduce cache size
SD_IOCTL_WR_Grow_Cache equ 12 ; Increase cache size
SD_IOCTL_WR_Set_INT_13 equ 13 ; Set the address SMARTDRV
; chains to on INT 13s
;
; Structures for the IOCTL write calls
;
; These calls do not take any parameters so the correct write count is 1
; (the function code byte)
;
; WR_Flush
; WR_Flush_Invalidate
; WR_Disable_Cache
; WR_Enable_Cache
; WR_Set_Tick
; WR_Lock
; WR_Unlock
;
SD_IOCTL_WR_NoParm struc
SD_I_W_Func db ?
SD_IOCTL_WR_NoParm ends
;
; WR_Reboot_Flush
;
SD_IOCTL_WR_Reboot struc
SD_I_W_FuncR db SD_IOCTL_WR_Reboot_Flush
SD_I_W_RebootFlg db ? ; 0 to turn reboot flush off
; 1 to turn reboot flush on
SD_IOCTL_WR_Reboot ends
;
; WR_Shrink_Cache
; WR_Grow_Cache
;
SD_IOCTL_WR_GrwShrk struc
SD_I_W_FuncGS db ? ; Function, one of:
; SD_IOCTL_WR_Shrink_Cache
; SD_IOCTL_WR_Grow_Cache
SD_I_W_GS_Size dw ? ; Count of 16k "pages" to
; grow or shrink cache by
; THIS IS A SIZE DELTA
; not a total size.
SD_IOCTL_WR_GrwShrk ends
;
; WR_Set_INT_13
;
SD_IOCTL_WR_SetI13 struc
SD_I_W_FuncS13 db SD_IOCTL_WR_Set_INT_13
SD_I_W_S13_Addr dd ? ; Segment:Offset address
; to set Original_INT13 to.
; NO RECORD IS KEPT OF PREV
; VALUE, caller's responsible
; for save and restore.
SD_IOCTL_WR_SetI13 ends