ZF

                       Interrupt List о новых DOS-функциях

--------D-2171---------------------------------------------------
INT 21 - Windows95 - LONG FILENAME FUNCTIONS
        AH = 71h
        AL = function
            0Dh reset drive
            39h create directory
            3Ah remove directory
            3Bh set current directory
            41h delete file
            43h get/set file attributes
            47h get current directory
            4Eh find first file
            4Fh find next file
            56h move (rename) file
            60h truename
            6Ch create/open file
            A0h get volume information
            A1h terminate FindFirst/FindNext
            A6h get file information
            A7h time conversion
            A8h generate short filename
            A9h server create/open file
            AAh create/terminate SUBST
Return: CF set on error
            AX = error code (see #1332)
                7100h if function not supported
        CF clear if successful
        other registers as for corresponding "old" DOS function
    Notes: if error 7100h is returned, the old-style function should be
called  AX=714h  returns  a  "search  handle"  which  must be passed to
AX=714Fh;  when the search is complete,  AX=71A1h  must  be  called  to
terminate  the  search  for  compatibility  with  DOS versions prior to
v7.00, the carry flag should be set on call to ensure that it is set on
exit
SeeAlso: AH=39h,AH=3Ah,AH=3Bh,AH=41h,AX=4300h,AX=4301h,AX=4304h,AX=4306h
SeeAlso: AX=4307h,AH=47h,AH=4Eh,AH=4Fh,AH=56h,AH=6Ch,AX=714Eh,AX=714Fh
SeeAlso: AX=71A0h,AX=71A1h
--------D-21710D---------------------------------------------------
INT 21 - Windows95 - RESET DRIVE
        AX = 710Dh
        CX = action (see #1431)
        DX = drive number
Return: CF clear
    Note: for compatibility with DOS versions prior to v7.00, the carry
flag should be set on call to ensure that it is set on exit
SeeAlso: AH=0Dh

(Table 1431)
Values for drive reset action:
 0000h     flush filesystem buffers for drive, and reset drive
 0001h     flush filesystem buffers and cache for drive, and reset drive
 0002h     remount DriveSpace volume
--------D-217139--------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - MAKE DIRECTORY
        AX = 7139h
        DS:DX -> ASCIZ long directory name (including path)
Return: CF clear if successful
        CF set on error
            AX = error code (see #1332)
                7100h if function not supported
    Note: for compatibility with DOS versions prior to v7.00, the carry
flag should be set on call to ensure that it is set on exit
SeeAlso: AH=39h,AX=713Ah,AX=713Bh
--------D-21713A---------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - REMOVE DIRECTORY
        AX = 713Ah
        DS:DX -> ASCIZ long name of directory to remove
Return: CF clear if successful
        CF set on error
            AX = error code (see #1332)
                7100h if function not supported
    Note: for compatibility with DOS versions prior to v7.00, the carry
flag should be set on call to ensure that it is set on exit
SeeAlso: AH=3Ah,AX=7139h
--------D-21713B------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - CHANGE DIRECTORY
        AX = 713Bh
        DS:DX -> ASCIZ long name of directory to make current
Return: CF clear if successful
        CF set on error
            AX = error code (see #1332)
                7100h if function not supported
    Note: for compatibility with DOS versions prior to v7.00, the carry
flag should be set on call to ensure that it is set on exit
SeeAlso: AH=0Eh,AH=3Bh,AX=7139h
--------D-217141------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - DELETE FILE
        AX = 7141h
        DS:DX -> ASCIZ long name of file to delete
        SI = wildcard and attributes flag
                0000h wildcards are not allowed, and search attributes are
                        ignored
                0001h wildcards are allowed, and only files with matching
                        names and attributes are deleted
        CL = search attributes
        CH = must-match attributes
Return: CF clear if successful
        CF set on error
            AX = error code (see #1332)
                7100h if function not supported
    Note: for compatibility with DOS versions prior to v7.00, the carry
flag should be set on call to ensure that it is set on exit
SeeAlso: AH=41h
--------D-217143------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - EXTENDED GET/SET FILE ATTRIBUTES
        AX = 7143h
        DS:DX -> ASCIZ filename
        BL = action
            00h retrieve attributes
                Return:        CX = file attributes (see #1073)
            01h set attributes
                CX = attributes
            02h get physical size of compressed file
                Return: DX:AX = actual disk usage of file, in bytes
            03h set last write date/time
                DI = new last-write date (see #1318)
                CX = new last-write time (see #1317)
            04h get last write date/time
                Return:        CX = last write time (see #1317)
                        DI = last write date (see #1318)
            05h set last access date
                DI = new last-access date (see #1318)
            06h get last access date
                Return:        DI = last access date (see #1318)
            07h set creation date/time
                DI = new creation date (see #1318)
                CX = new creation time (see #1317)
                SI = hundredths (10-ms units past time in CX, 0-199)
            08h get creation date/time
                Return:        CX = creation time (see #1317)
                 DI = creation date (see #1318)
                 SI = hundredths (10-millisecond units past time in CX)
Return: CF clear if successful
        CF set on error
            AX = error code (see #1332)
                7100h if function not supported
    Note: for compatibility with DOS versions prior to v7.00, the carry
flag should be set on call to ensure that it is set on exit
SeeAlso: AX=4300h,AX=4301h
--------D-217147------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - GET CURRENT DIRECTORY
        AX = 7147h
        DL = drive number (00h = current, 01h = A:, etc.)
        DS:SI -> buffer for ASCIZ directory name
Return: CF clear if successful
        CF set on error
            AX = error code (see #1332)
                7100h if function not supported
    Notes: the returned pathname does not  include  the  drive  letter,
colon,  or leading backslash, and is not necessarily a long filename --
this function returns whatever path  was  used  when  changing  to  the
current  directory,  and  may  include  a  mixture  of  long  and short
components the provided buffer must be at least as large as  the  value
indicated  by  AX=71A0h  for  compatibility  with DOS versions prior to
v7.00, the carry flag should be set on call to ensure that it is set on
exit
SeeAlso: AH=47h,AX=713Bh,AX=7160h,AX=71A0h
--------D-21714E------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
        AX = 714Eh
        CL = allowable-attributes mask (see #1073 at AX=4301h)
              (bits 0 and 5 ignored)
        CH = required-attributes mask (see #1073)
        SI = date/time format (see #1432)
        DS:DX -> ASCIZ filespec (both "*" and "*.*" match any filename)
        ES:DI -> FindData record (see #1433)
Return: CF clear if successful
            AX = filefind handle (needed to continue search)
            CX = Unicode conversion flags (see #1434)
        CF set on error
            AX = error code
                7100h if function not supported
    Notes: this function is only available when IFSMgr is  running, not
under  bare  MS-DOS  7 the application should close the filefind handle
with AX=71A1h as soon as it has completed its search  for compatibility
with DOS versions prior to v7.00,  the carry flag should be set on call
to ensure that it is set on exit
SeeAlso: AH=4Eh,AX=714Fh,AX=71A1h

(Table 1432)
Values for Windows95 date/time format:
 0000h  use 64-bit file time format
 0001h use  MS-DOS  date/time  values  (see  #1317,#1318)   in   low
double-word of file time QWORD (date is high word,  time is low word of
double-word)

Format of Windows95 long filename FindData record:
Offset        Size        Description        (Table 1433)
 00h DWORD        file attributes
   bits 0-6 standard DOS attributes (see #1073 at INT 21/AX=4301h)
   bit 8: temporary file
 04h QWORD file creation time (number of 100ns intervals since 1/1/1601)
 0Ch QWORD last access time
 14h QWORD last modification time
 1Ch DWORD file size (high 32 bits)
 20h DWORD file size (low 32 bits)
 24h  8 BYTEs        reserved
 2Ch 260 BYTEs        ASCIZ full filename
130h 14 BYTEs        ASCIZ short filename (for backward compatibility)

Bitfields for Windows95 Unicode conversion flags:
Bit(s)        Description        (Table 1434)
 0  the returned full filename contains underscores for un-convertable
    Unicode characters
 1  the returned short filename contains underscores for un-convertable
    Unicode characters
--------D-21714F------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
        AX = 714Fh
        BX = filefind handle (from AX=714Eh)
        SI = date/time format (see #1432)
        ES:DI -> buffer for FindData record (see #1433)
Return: CF clear if successful
            CX = Unicode conversion flags (see #1434)
        CF set on error
            AX = error code
                7100h if function not supported
    Notes: this  function is only available when IFSMgr is running, not
under bare MS-DOS 7 for compatibility with DOS versions prior to v7.00,
the carry flag should be set on call to ensure that it is set on exit
SeeAlso: AH=4Eh,AX=714Eh,AX=71A1h
--------D-217156------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - RENAME FILE
        AX = 7156h
        DS:DX -> ASCIZ old file or directory name (long names allowed)
        ES:DI -> ASCIZ new name (long names allowed)
Return: CF clear if successful
        CF set on error
            AX = error code
                7100h if function not supported
    Note: the file may be renamed into a different directory,  but  not
across disks
SeeAlso: AH=56h,AX=7141h
--------D-217160CL00-------------------------
INT 21 - Windows95 - LONG FILENAME - "TRUENAME" - CANONICALIZE PATH
   AX = 7160h
   CL = 00h
   CH = SUBST expansion flag
    00h return a path containing true path for a SUBSTed drive letter
    80h return a path containing the SUBSTed drive letter
   DS:SI -> ASCIZ filename or path (either long name or short name)
   ES:DI -> 261-byte buffer for canonicalized name
Return: CF set on error
      AX = error code
          02h invalid component in directory path or drive letter only
          03h malformed path or invalid drive letter
      ES:DI buffer unchanged
  CF clear if successful
      ES:DI buffer filled with fully qualified name
      AX destroyed
    Desc: determine the canonical name of  the  specified  filename  or
path, corresponding to the undocumented TRUENAME command in COMMAND.COM
    Notes: if a complete path is given, the result will be a short-form
complete  path;  otherwise,  the given relative path is appended to the
short-form current directory name,  '.'/'..'/'...'/etc.  are  resolved,
and  the  final  result  uppercased  without  converting  any remaining
long-form names to short-form for compatibility with DOS versions prior
to v7.00, the carry flag should be set on call to ensure that it is set
on exit
SeeAlso: AH=60h,AX=7160h/CL=01h
--------D-217160CL01--------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
  AX = 7160h
  CL = 01h
  CH = SUBST expansion flag
      00h return a path containing true path for a SUBSTed drive letter
      80h return a path containing the SUBSTed drive letter
  DS:SI -> ASCIZ long filename or path
  ES:DI -> 67-byte buffer for short filename
Return: CF set on error
      AX = error code
          02h invalid component in directory path or drive letter only
          03h malformed path or invalid drive letter
      ES:DI buffer unchanged
  CF clear if successful
      ES:DI buffer filled with equivalent short filename (full path,
            even if relative path given, and all uppercase)
    Note: this  call  returns  the  short  name  for  any long-filename
portions of the provided pathname or filename
SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=02h
--------D-217160CL02---------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
  AX = 7160h
  CL = 02h
  CH = SUBST expansion flag
      00h return a path containing true path for a SUBSTed drive letter
      80h return a path containing the SUBSTed drive letter
  DS:SI -> ASCIZ short filename or path
  ES:DI -> 261-byte buffer for canonicalized long name
Return: CF set on error
      AX = error code
          02h invalid component in directory path or drive letter only
          03h malformed path or invalid drive letter
      ES:DI buffer unchanged
  CF clear if successful
      ES:DI buffer filled with qualified long name (can contain
            lowercase letters)
    Desc: determine  the  canonical  name  of the specified filename or
path, corresponding to the undocumented TRUENAME command in COMMAND.COM
    Note: this  call  returns  the  short  name  for  any long-filename
portions of the provided pathname or filename
    BUG: even  though the maximum length of a complete long pathname is
260 characters,  Windows95 returns CF set/AX=0003h  even  if  the  file
exists whenever the full pathname is more than 255 characters
SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=01h
--------D-21716C------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - CREATE OR OPEN FILE
 AX = 716Ch
 BX = access mode and sharing flags (see #1436,also AX=6C00h)
 CX = attributes
 DX = action (see #1435)
 DS:SI -> ASCIZ filename
 DI = alias hint (number to append to short filename for disambiguation)
Return: CF clear if successful
            AX = file handle
            CX = action taken
                0001h file opened
                0002h file created
                0003h file replaced
        CF set on error
            AX = error code (see #1332)
                7100h if function not supported
SeeAlso: AX=6C00h,AX=7141h,AX=7156h,AX=71A9h

Bitfields for Windows95 long-name open action:
Bit(s)        Description        (Table 1435)
 0  open file (fail if file does not exist)
 1  truncate file if it already exists (fail if file does not exist)
 4  create new file if file does not already exist (fail if exists)
    Note: the  only  valid  combinations of multiple flags are bits 4&0
and 4&1

Bitfields for Windows95 file access/sharing modes:
Bit(s)        Description        (Table 1436)
 2-0        file access mode
    000 read-only
    001 write-only
    010 read-write
    100 read-only, do not modify file's last-access time
 6-4        file sharing modes
 7  no-inherit flag
 8  do not buffer data (requires that all reads/writes be exact physical
    sectors)
 9  do not compress file even if volume normally compresses files
 10  use alias hint in DI as numeric tail for short-name alias
 12-11        unused??? (0)
 13  return error code instead of generating INT 24h if critical error
    while opening file
 14  commit file after every write operation
SeeAlso: #1056
--------D-2171A0------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - GET VOLUME INFORMATION
 AX = 71A0h
 DS:DX -> ASCIZ root name (e.g. "C:\")
 ES:DI -> buffer for file system name
 CX = size of ES:DI buffer
Return: CF clear if successful
 BX = file system flags (see #1437)
 CX = maximum length of file name [usually 255]
 DX = maximum length of path [usually 260]
 ES:DI buffer filled (ASCIZ, e.g. "FAT","NTFS","CDFS")
        CF set on error
            AX = error code
                7100h if function not supported
    Notes: for  the  file  system  name  buffer,  32  bytes  should  be
sufficient; that's what is used in some sample code by Walter Oney from
Microsoft.  this function accesses the disk the first time it is called
SeeAlso: AX=714Eh,AX=7160h/CL=00h

Bitfields for long filename volume information flags:
Bit(s)        Description        (Table 1437)
 0        searches are case sensitive
 1        preserves case in directory entries
 2        uses Unicode characters in file and directory names
 3-13        reserved (0)
 14        supports DOS long filename functions
 15        volume is compressed
--------D-2171A1------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - "FindClose" -
TERMINATE DIRECTORY SEARCH
        AX = 71A1h
        BX = filefind handle (from AX=714Eh)
Return: CF clear if successful
        CF set on error
           AX = error code
                7100h if function not supported
    Notes: this function must be called after starting a search with AX
=714h,  to  indicate  that  the search handle returned by that function
will no longer be used this function is only available when  IFSMgr  is
running, not under bare MS-DOS 7
SeeAlso: AH=4Eh,AX=714Eh,AX=714Fh
--------D-2171A2------------------------------------------------------
INT 21 U - Windows95 - internal
        AX = 71A2h
        ???
Return: ???
Note:        documented as "for internal use by Windows 95 only"
--------D-2171A3------------------------------------------------------
INT 21 U - Windows95 - internal
        AX = 71A3h
        ???
Return: ???
Note:        documented as "for internal use by Windows 95 only"
--------D-2171A4------------------------------------------------------
INT 21 U - Windows95 - internal
        AX = 71A4h
        ???
Return: ???
Note:        documented as "for internal use by Windows 95 only"
--------D-2171A5------------------------------------------------------
INT 21 U - Windows95 - internal
        AX = 71A5h
        ???
Return: ???
Note:        documented as "for internal use by Windows 95 only"
--------D-2171A6------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
        AX = 71A6h
        BX = file handle
        DS:DX -> buffer for file information (see #1438)
        CF set
Return: CF clear if successful
            file information record filled
        CF set on error
            AX = error code
                7100h if function not supported
SeeAlso: AX=71A7h/BL=00h

Format of Windows95 file information:
Offset        Size        Description        (Table 1438)
 00h        DWORD        file attributes
 04h        QWORD        creation time (0 = unsupported)
 0Ch        QWORD        last access time (0 = unsupported)
 14h        QWORD        last write time
 1Ch        DWORD        volume serial number
 20h        DWORD        high 32 bits of file size
 24h        DWORD        low 32 bits of file size
 28h        DWORD        number of links to file
 2Ch        DWORD        unique file identifier (high 32 bits)
 30h        DWORD        unique file identifier (low 32 bits)
    Note: the file identifer and volume serial number together uniquely
identify  a  file while it is open;  the identifier may change when the
system is restarted or the file is first opened
--------D-2171A7BL00-------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
        AX = 71A7h
        BL = 00h
        DS:SI -> QWORD file time
Return: CF clear if successful
            CX = DOS time (see #1317)
            DX = DOS date (see #1318)
            BH = hundredths (10-millisecond units past time in CX)
        CF set on error
            AX = error code
                7100h if function not supported
    Desc: convert  Win95 64-bit file time (UTC) into DOS-style date and
time (local timezone)
    Note: the  conversion fails if the file time's value is outside the
range 1/1/1980 and 12/31/2107
SeeAlso: AX=71A6h,AX=71A7h/BL=01h
--------D-2171A7BL01---------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME
        AX = 71A7h
        BL = 01h
        CX = DOS time (see #1317)
        DX = DOS date (see #1318)
        BH = hundredths (10-millisecond units past time in CX)
        ES:DI -> buffer for QWORD file time
Return: CF clear if successful
            ES:DI buffer filled
        CF set on error
            AX = error code
                7100h if function not supported
    Desc: convert  DOS-style  date and time (local timezone) into Win95
64-bit file time (UTC)
SeeAlso: AX=71A6h,AX=71A7h/BL=00h
--------D-2171A8------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
        AX = 71A8h
        DS:SI -> ASCIZ long filename (no path allowed!)
        ES:DI -> buffer for ASCIZ short filename
        DH = short name's format
            00h 11-char directory entry/FCB filename format
            01h DOS 8.3
        DL = character sets
            bits 7-4: short name's character set (see #1439)
            bits 3-0: long name's character set (see #1439)
Return: CF clear if successful
            ES:DI buffer filled
        CF set on error
            AX = error code
                7100h if function not supported
    Note: this function uses  the  same  algorithm  as  the  filesystem
except   that   the   returned  name  never  has  a  numeric  tail  for
disambiguation
SeeAlso: AX=7160h/CL=00h,AX=7160h/CL=02h,AX=71A7h/BL=00h

(Table 1439)
Values for Windows95 filename character set:
 00h        Windows ANSI
 01h        current OEM character set
 02h        Unicode
--------D-2171A9------------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - SERVER CREATE OR OPEN FILE
        AX = 71A9h
        BX = access mode and sharing flags (see #1436,also AX=6C00h)
        CX = attributes
        DX = action (see #1435)
        DS:SI -> ASCIZ filename
        DI = alias hint (number to append to short filename
             for disambiguation)
Return: CF clear if successful
            AX = global file handle
            CX = action taken
                0001h file opened
                0002h file created
                0003h file replaced
        CF set on error
            AX = error code (see #1332)
                7100h if function not supported
Note:        for use by real-mode servers only
SeeAlso: AX=6C00h,AX=716Ch
--------D-2171AABH00------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - CREATE SUBST
        AX = 71AAh
        BH = 00h
        BL = drive number (00h = default, 01h = A:, etc.)
        DS:DX -> ASCIZ pathname to associate with drive letter
Return: CF clear if successful
        CF set on error
            AX = error code (see #1332)
                7100h if function not supported
SeeAlso: AX=71AAh/BH=01h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#1295
--------D-2171AABH01-----------------------------------------------
INT 21 - Windows95 - LONG FILENAME - TERMINATE SUBST
        AX = 71AAh
        BH = 01h
        BL = drive number (01h = A:, etc.)
Return: CF clear if successful
        CF set on error
            AX = error code (see #1332)
                7100h if function not supported
    Note: the specified drive number may  not  be  00h  (default),  and
presumably not the current drive either
SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#1295
--------D-2171AABH02-------------------------------------------------
INT 21 - Windows95 - LONG FILENAME - QUERY SUBST
        AX = 71AAh
        BH = 02h
        BL = drive number (01h = A:, etc.)
        DS:DX -> buffer for ASCIZ pathname associated with drive letter
Return: CF clear if successful
            DS:DX buffer filled
        CF set on error
            AX = error code (see #1332)
                7100h if function not supported
Note:        the specified drive number may not be 00h (default drive)
SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=01h,INT 2F/AX=1000h,#1295


(C) NF, 1998-2004