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
|