[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 4fh  word    offset In Current Directory Path Of Backslash Corresponding To  (Cont.)

 21h   WORD    paragraph from which to start scanning during memory allocation

Format of IFS driver list:
Offset Size    Description
 00h   DWORD   pointer to next driver header
 04h  8 BYTEs  IFS driver name (blank padded), as used by FILESYS command
 0Ch  4 BYTEs  ???
 10h   DWORD   pointer to IFS utility function entry point (see below)
       call with ES:BX -> IFS request (see below)
 14h   WORD    offset in header's segment of driver entry point
   ???

Call IFS utility function entry point with:
   AH = 20h miscellaneous functions
       AL = 00h get date

       Return: CX = year
           DH = month
           DL = day
       AL = 01h get process ID and computer ID

       Return: BX = current PSP segment
           DX = active network machine number
       AL = 05h get file system info
       ES:DI -> 16-byte info buffer

       Return: buffer filled
           Offset  Size    Description
            00h  2 BYTEs   unused
            02h    WORD    number of SFTs (actually counts only
                   the first two file table arrays)
            04h    WORD    number of FCB table entries
            06h    WORD    number of proctected FCBs
            08h  6 BYTEs   unused
            0Eh    WORD    largest sector size supported
       AL = 06h get machine name
       ES:DI -> 18-byte buffer for name

       Return: buffer filled with name starting at offset 02h
       AL = 08h get sharing retry count

       Return: BX = sharing retry count
       AL = other

       Return: CF set
   AH = 21h get redirection state
       BH = type (03h disk, 04h printer)

       Return: BH = state (00h off, 01h on)
   AH = 22h ??? some sort of time calculation
       AL = 00h ???
           nonzero ???
   AH = 23h ??? some sort of time calculation
   AH = 24h compare filenames
       DS:SI -> first ASCIZ filename
       ES:DI -> second ASCIZ filename

       Return: ZF set if files are same ignoring case and / vs \
   AH = 25h normalize filename
       DS:SI -> ASCIZ filename
       ES:DI -> buffer for result

       Return: filename uppercased, forward slashes changed to backslashes
   AH = 26h get DOS stack

       Return: DS:SI -> top of stack
           CX = size of stack in bytes
   AH = 27h increment InDOS flag
   AH = 28h decrement InDOS flag

Note:  IFS drivers which do not wish to implement functions 20h or 24h-28h may
     pass them on to the default handler pointed at by [LoL+37h]

Format of IFS request block:
Offset Size    Description
 00h   WORD    total size in bytes of request
 02h   BYTE    class of request
       02h ???
       03h redirection
       04h ???
       05h file access
       06h convert error code to string
       07h ???
 03h   WORD    returned DOS error code
 05h   BYTE    IFS driver exit status
       00h success
       01h ???
       02h ???
       03h ???
       04h ???
       FFh internal failure
 06h 16 BYTEs  ???
---request class 02h---
 16h   BYTE    function code
       04h ???
 17h   BYTE    unused???
 18h   DWORD   pointer to ???
 1Ch   DWORD   pointer to ???
 20h  2 BYTEs  ???
---request class 03h---
 16h   BYTE    function code
 17h   BYTE    ???
 18h   DWORD   pointer to ???
 1Ch   DWORD   pointer to ???
 22h   WORD    returned ???
 24h   WORD    returned ???
 26h   WORD    returned ???
 28h   BYTE    returned ???
 29h   BYTE    unused???
---request class 04h---
 16h   DWORD   pointer to ???
 1Ah   DWORD   pointer to ???
---request class 05h---
 16h   BYTE    function code
       01h flush disk buffers
       02h get disk space
       03h MKDIR
       04h RMDIR
       05h CHDIR
       06h delete file
       07h rename file
       08h search directory
       09h file open/create
       0Ah LSEEK
       0Bh read from file
       0Ch write to file
       0Dh lock region of file
       0Eh commit/close file
       0Fh get/set file attributes
       10h printer control
       11h ???
       12h process termination
       13h ???
   ---class 05h function 01h---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h  4 BYTEs   ???
    26h    BYTE    ???
    27h    BYTE    ???
   ---class 05h function 02h---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h  4 BYTEs   ???
    26h    WORD    returned total clusters
    28h    WORD    returned sectors per cluster
    2Ah    WORD    returned bytes per sector
    2Ch    WORD    returned available clusters
    2Eh    BYTE    returned ???
    2Fh    BYTE    ???
   ---class 05h functions 03h,04h,05h---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h  4 BYTEs   ???
    26h    DWORD   pointer to directory name
   ---class 05h function 06h---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h  4 BYTEs   ???
    26h    WORD    attribute mask
    28h    DWORD   pointer to filename
   ---class 05h function 07h---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h  4 BYTEs   ???
    26h    WORD    attribute mask
    28h    DWORD   pointer to source filespec
    2Ch    DWORD   pointer to destination filespec
   ---class 05h function 08h---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h  4 BYTEs   ???
    26h    BYTE    00h FINDFIRST
           01h FINDNEXT
    28h    DWORD   pointer to FindFirst search data + 01h if FINDNEXT
    2Ch    WORD    search attribute if FINDFIRST
    2Eh    DWORD   pointer to filespec if FINDFIRST
   ---class 05h function 09h---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h    DWORD   pointer to IFS open file structure (see below)
    26h    WORD    ???  \ together, specify open vs. create, whether or
    28h    WORD    ???  / not to truncate
    2Ah  4 BYTEs   ???
    2Eh    DWORD   pointer to filename
    32h  4 BYTEs   ???
    36h    WORD    file attributes on call
           returned ???
    38h    WORD    returned ???
   ---class 05h function 0Ah---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h    DWORD   pointer to IFS open file structure (see below)
    26h    BYTE    seek type (02h = from end)
    28h    DWORD   offset on call
           returned new absolute position
   ---class 05h functions 0Bh,0Ch---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h    DWORD   pointer to IFS open file structure (see below)
    28h    WORD    number of bytes to transfer
           returned bytes actually transferred
    2Ah    DWORD   transfer address
   ---class 05h function 0Dh---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h    DWORD   pointer to IFS open file structure (see below)
    26h    BYTE    file handle???
    27h    BYTE    unused???
    28h    WORD    ???
    2Ah    WORD    ???
    2Ch    WORD    ???
    2Eh    WORD    ???
   ---class 05h function 0Eh---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h    DWORD   pointer to IFS open file structure (see below)
    26h    BYTE    00h commit file
           01h close file
    27h    BYTE    unused???
   ---class 05h function 0Fh---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h  4 BYTEs   ???
    26h    BYTE    02h GET attributes
           03h PUT attributes
    27h    BYTE    unused???
    28h 12 BYTEs   ???
    34h    WORD    search attributes???
    36h    DWORD   pointer to filename
    3Ah    WORD    (GET) returned ???
    3Ch    WORD    (GET) returned ???
    3Eh    WORD    (GET) returned ???
    40h    WORD    (GET) returned ???
    42h    WORD    (PUT) new attributes
           (GET) returned attributes
   ---class 05h function 10h---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h    DWORD   pointer to IFS open file structure (see below)
    26h    WORD    ???
    28h    DWORD   pointer to ???
    2Ch    WORD    ???
    2Eh    BYTE    ???
    2Fh    BYTE    subfunction
           01h get printer setup
           03h ???
           04h ???
           05h ???
           06h ???
           07h ???
           21h set printer setup
   ---class 05h function 11h---
    17h  7 BYTEs   ???
    1Eh    DWORD   pointer to ???
    22h    DWORD   pointer to IFS open file structure (see below)
    26h    BYTE    subfunction
    27h    BYTE    unused???
    28h    WORD    ???
    2Ah    WORD    ???
    2Ch    WORD    ???
    2Eh    BYTE    ???
    2Fh    BYTE    ???
   ---class 05h function 12h---
    17h 15 BYTEs   unused???
    26h    WORD    PSP segment
    28h    BYTE    type of process termination
    29h    BYTE    unused???
   ---class 05h function 13h---
    17h 15 BYTEs   unused???
    26h    WORD    PSP segment
---request class 06h---
 16h   DWORD   returned pointer to string corresponding to error code at 03h
 1Ah   BYTE    returned ???
 1Bh   BYTE    unused
---request class 07h---
 16h   DWORD   pointer to IFS open file structure (see below)
 1Ah   BYTE    ???
 1Bh   BYTE    unused???

Format of IFS open file structure:
Offset Size    Description
 00h   WORD    ???
 02h   WORD    device info word
 04h   WORD    file open mode
 06h   WORD    ???
 08h   WORD    file attributes
 0Ah   WORD    owner's network machine number
 0Ch   WORD    owner's PSP segment
 0Eh   DWORD   file size
 12h   DWORD   current offset in file
 16h   WORD    file time
 18h   WORD    file date
 1Ah 11 BYTEs  filename in FCB format
 25h   WORD    ???
 27h   WORD    hash value of SFT address
       (low word of linear address + segment&F000h)
 29h  3 WORDs  network info from SFT
 2Fh   WORD    ???

Format of one item in DOS 4+ list of special program names:
Offset Size    Description
 00h   BYTE    length of name (00h = end of list)
 01h  N BYTEs  name in format name.ext
 N    2 BYTEs  DOS version to return for program (major,minor)
       (see AH=30h,INT 2F/AX=122Fh)
---DOS 4 only---
 N+2   BYTE    number of times to return fake version number (FFh = always)

Note:  if the name of the executable for the program making the DOS "get
     version" call matches one of the names in this list, DOS returns the
     specified version rather than the true version number

This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson