Format of DR "execute DOS-compatible function" parameter block:
Offset Size Description )
00h WORD function number (see #04037)
---function 00h---
02h WORD drive
04h DWORD -> DPB (see #04039)
---function 01h,02h,03h---
02h DWORD -> ASCIZ directory name
---function 04h---
02h DWORD -> ASCIZ filename
06h WORD file attributes
---function 05h---
02h DWORD -> ASCIZ filename
06h WORD open mode (see INT 21/AH=3Dh)
---function 06h---
02h WORD file handle
---function 07h,08h---
02h WORD file handle
04h DWORD -> buffer
08h WORD number of bytes to read or write
---function 09h---
02h DWORD -> ASCIZ filename
---function 0Ah---
02h WORD file handle
04h DWORD (call) desired offset
(ret) new file position if function is successful
08h WORD seek origin (offset is calculated from specified position)
00h start of file
01h current position
02h end of file
---function 0Bh---
02h DWORD -> ASCIZ filename
06h WORD (call) new file attributes or new file owner
(ret) current/new file attributes, depending on function
08h WORD subfunction
00h get attribute
01h set attribute
02h get extended attributes
03h set extended attributes (and password)
04h get encrypted password
05h set extended attributes (and encrypted password)
06h get file owner
07h set file owner
Note: the password is taken from the first 8 bytes of the DTA
---function 0Ch---
02h WORD drive
04h DWORD -> 64-byte buffer for ASCIZ current directory path
---function 0Dh---
02h DWORD -> ASCIZ filespec
06h WORD file attributes
08h WORD (call) size of buffer pointed at by current DTA
(ret) number of matching files returned???
Note: if the volume label attribute is specified, the root
directory will be searched
if the buffer is at least 47 bytes, multiple matching
entries will be stored in the DTA (at 21 bytes per
entry)
---function 0Eh---
02h WORD number of additional matches to store in DTA
(normally set to 0, but if DTA is at least 47 bytes, can be
set to (DTAsize-21)/26 to return multiple matches)
---function 0Fh---
02h DWORD -> ASCIZ filename
06h DWORD -> ASCIZ new name
---function 10h---
02h WORD file handle
04h WORD subfunction
00h get date and time
01h set date and time
06h WORD file date
08h WORD file time
---function 11h---
02h DWORD -> ASCIZ pathname + 13 extra bytes for generated filename
(if pathname does not end in backslash, one will be appended)
06h WORD file attributes
---function 12h---
02h DWORD -> ASCIZ filename
06h WORD file attributes
---function 13h---
02h WORD file handle
04h DWORD offset of start of region
08h DWORD length of region to lock/unlock
0Ch WORD subfunction (00h = lock, 01h = unlock)
---function 14h---
02h WORD file handle to be duplicated
(new file handle is returned as function return value)
---function 15h---
02h WORD file handle to be duplicated
04h WORD file handle which is to become the duplicate
---function 1Ah, form 1---
02h WORD file handle
04h WORD IOCTL function number (00h,01h,06h,07h,0Ah)
06h WORD (ret) status
---function 1Ah, form 2---
02h WORD drive number
04h WORD IOCTL function number (08h,09h,0Eh,0Fh)
06h WORD (ret) status
---function 1Ah, form 3---
02h WORD file handle
04h WORD IOCTL function number (02h,03h,54h)
06h DWORD -> buffer
0Ah WORD (call) size of buffer in bytes
(ret) size of returned data
---function 1Ah, form 4---
02h WORD drive number
04h WORD IOCTL function number (04h,05h)
06h DWORD -> buffer
0Ah WORD (call) size of buffer in bytes
(ret) size of returned data
---function 1Bh---
02h WORD file handle of file to be committed to disk
---function 1Ch---
02h DWORD -> ASCIZ relative filename
06h DWORD -> buffer for absolute filename
---function 1Fh---
02h WORD desired number of file handles for process