)
Call DELWATCH private entry point with:
AH = function
00h (OS hook) installation check
AL = 00h required for DELWATCH 1.x
Return: CF clear
AX = 0000h
CX = 0004h (unsupported function)
01h (DELWATCH 1.x) New Disk
???
01h (DELWATCH 2.0+) disable DELWATCH on drive
AL = drive number (00h = A:)
Return: AX = status (0000h if failed, FFFFh if successful)
02h (OS hook) Delete File
AL = drive number (00h = A:)
DX = directory cluster number (0000h for root directory)
CX = directory entry number
DS:BX -> directory entry
ES,DS must be valid selectors if called in protected mode
Return: DS:BX -> updated directory entry
CF set if file is to be deleted by the OS
CF clear if DELWATCH has placed the file in its queue
Note: deletes the directory entry
03h (OS hook) Free Clusters
AL = drive number (00h = A:)
CX = number of clusters currently free (do not free if > 1)
DX = preferred 'search from cluster' (ignored by DELWATCH 2.0)
Return: CF clear if clusters freed
CF set if no clusters freed
DX = new 'search from' cluster (one before first free)
04h (OS hook) free root directory entry
AL = drive number (00h = A:)
Return: CF set if no directory entry freed
05h (OS hook) return free space
AL = drive number (00h = A:)
CX = number of free clusters
Return: CX = updated number of free clusters
Notes: adds space used by "deleted" files to free space
call is chained
06h enable DELWATCH on drive
AL = drive number with bit 7 set (80h = A:, etc.)
(DELWATCH 2.0+: set bit 6 for removable drives)
BX = maximum files of same name in one directory to save
CX = maximum files to save on this disk
DS:DX -> MEMDESC??? for drive data (see #04104)
DS:SI -> MEMDESC??? for DWLIST (see #04104)
ES,DS must contain valid selectors if called in protected mode
Return: AX = status
0000h failed
FFFFh successful
CX = error code on failure (see #04102)
(0004h "wrong version" if AL < 80h on entry)
07h (DELWATCH 1.x) disable DELWATCH on drive
???
07h (DELWATCH 2.0+) (OS hook) new disk
AL = drive (00h = A:, etc.)
ES:BX -> DOS DDSC structure
CF set if not enabled
Return: ???
08h set file extensions list
AL = sense (00h exclude named extensions, 01h only named ext.)
DS:BX -> 31-byte ASCIZ extension list (three blank-padded bytes
per extension)
Return: AX = FFFFh (successful)
09h adjust pending delete space
AL = drive number (00h = A:)
CX = number of clusters being freed
Return: AX = 0000h if drive not enabled
0Ah remove DELWATCH entry
AL = drive number (00h = A:)
DX = directory cluster number (0000h if root directory)
CX = directory entry number
BX:SI -> filename
ES,DS must contain valid selectors if called in protected mode
Return: AX > 0000h if entry found in DWLIST
0Bh enable NEWDISK
Return: AX > 0000h if successful (FFFFh for DELWATCH 2.0)
see also function 0Dh
0Ch (DELWATCH 1.x) drive status
AL = drive number (00h = A:, etc.)
Return: AX = drive data segment, 0000h if not enabled
CX = pending delete space, if drive enabled
0Ch (DELWATCH 2.0+) check if drive enabled
AL = drive number with bit 7 set (80h = A:, etc.)
DS:DX -> MEMDESC for drive data (see #04104)
(DX = 0000h if not required)
DS:SI -> MEMDESC for DWLIST (see #04104)
(SI = 0000h if not required)
ES,DS must contain valid selectors if called in protected mode
Return: AX = drive status (see also #04103)
0000h disabled or error
CX = error code (see #04102)
0001h drive enabled
CX = pending delete space, FFFFh if NEWDISK
not yet called
0Dh disable NEWDISK
BX = segment address of bitmap buffer
Return: AX > 0000h if successful (FFFFh for DELWATCH 2.0)
see also function 0Bh
0Eh (DELWATCH 2.0+) (OS hook) purge file
AL = drive number (00h = A:)
DX = directory cluster number (0000h if root directory)
CX = directory entry number
Return: CF set if drive not enabled
CF clear
AX = status
0000h successfully purged
else error code (see #04102)
0Fh (DELWATCH 2.0+) (OS hook) undelete file
AL = drive number (00h = A:)
DX = directory cluster number (0000h if root directory)
CX = directory entry number
Return: CF set if drive not enabled
CF clear
AX = status
0000h successfully undeleted
else error code (see #04102)
Return: AX = 0000h, CX = 0001h (see #04102) if DELWATCH busy
registers unchanged if AH > 0Fh on entry
Notes: functions marked "OS hook" must under no circumstances by called by
external applications, as this would bypass the serialization
performed by the kernel and cause problems at least in multitasking
environments.
two functions have been swapped between DELWATCH 1.x and DELWATCH 2.0
to ensure that DELWATCH 1.x calls will not do anything under newer
versions of the OS; for the same reason, the drive number in AL
sometimes requires that bit 7 be set for DELWATCH 2.0+.
SeeAlso: AX=1001h,AX=1010h