Английская Википедия:DOS API

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:More footnotes Шаблон:Use dmy dates The DOS API is an API which originated with 86-DOS and is used in MS-DOS/PC DOS and other DOS-compatible operating systems. Most calls to the DOS API are invoked using software interrupt 21h (INT 21h). By calling INT 21h with a subfunction number in the AH processor register and other parameters in other registers, various DOS services can be invoked. These include handling keyboard input, video output, disk file access, program execution, memory allocation, and various other activities. In the late 1980s, DOS extenders along with the DOS Protected Mode Interface (DPMI) allow the programs to run in either 16-bit or 32-bit protected mode and still have access to the DOS API.

History of the DOS API

The original DOS API in 86-DOS and MS-DOS 1.0 was designed to be functionally compatible with CP/M. Files were accessed using file control blocks (FCBs). The DOS API was greatly extended in MS-DOS 2.0 with several Unix concepts, including file access using file handles, hierarchical directories and device I/O control.[1] In DOS 3.1, network redirector support was added. In MS-DOS 3.31, the INT 25h/26h functions were enhanced to support hard disks greater than 32 MB. MS-DOS 5 added support for using upper memory blocks (UMBs). After MS-DOS 5, the DOS API was unchanged for the successive standalone releases of DOS.

The DOS API and Windows

In Windows 9x, DOS loaded the protected-mode system and graphical shell. DOS was usually accessed from a virtual DOS machine (VDM) but it was also possible to boot directly to real mode MS-DOS 7.0 without loading Windows. The DOS API was extended with enhanced internationalization support and long filename support, though the long filename support was only available in a VDM. With Windows 95 OSR2, DOS was updated to 7.1, which added FAT32 support, and functions were added to the DOS API to support this. Windows 98 and Windows ME also implement the MS-DOS 7.1 API, though Windows ME reports itself as MS-DOS 8.0.

Windows NT and the systems based on it (e.g. Windows XP and Windows Vista) are not based on MS-DOS, but use a virtual machine, NTVDM, to handle the DOS API. NTVDM works by running a DOS program in virtual 8086 mode (an emulation of real mode within protected mode available on 80386 and higher processors). NTVDM supports the DOS 5.0 API. DOSEMU for Linux uses a similar approach.

Interrupt vectors used by DOS

The following is the list of interrupt vectors used by programs to invoke the DOS API functions.

Interrupt vector Description Version Notes
Шаблон:Code Terminate program 1.0+ Implemented in DOS kernel
Шаблон:Code Main DOS API 1.0+ Implemented in DOS kernel
Шаблон:Code Program terminate address 1.0+ Return address in calling program
Шаблон:Code Control-C handler address 1.0+ Default handler is in the command shell (usually COMMAND.COM)
Шаблон:Code Critical error handler address 1.0+ Default handler is in the command shell (usually COMMAND.COM)
Шаблон:Code Absolute disk read 1.0+ Implemented in DOS kernel, enhanced in DOS 3.31 to support up to 2 GB partitions
Шаблон:Code Absolute disk write 1.0+ Implemented in DOS kernel, enhanced in DOS 3.31 to support up to 2 GB partitions
Шаблон:Code Terminate and stay resident 1.0+ Implemented in COMMAND.COM in DOS 1.0, DOS kernel in DOS 2.0+
Шаблон:Code Idle callout 2.0+ Called by DOS kernel when waiting for input
Шаблон:Code Fast console output 2.0+ Implemented by the built-in console device driver or a replacement driver like ANSI.SYS
Шаблон:Code Networking and critical section 3.0+ Called by DOS kernel to interface with networking software
Шаблон:Code Unused
Шаблон:Code Unused
Шаблон:Code Unused
Шаблон:Code Reload transient 2.0+ Implemented in COMMAND.COM
Шаблон:Code Multiplex 3.0+ Implemented in DOS kernel and various programs (PRINT, MSCDEX, DOSKEY, APPEND, etc.) depending on subfunction number

DOS INT 21h services

The following is the list of functions provided via the DOS API primary software interrupt vector.

Шаблон:Code Description Version
Шаблон:Code Program terminate 1.0+
Шаблон:Code Character input 1.0+
Шаблон:Code Character output 1.0+
Шаблон:Code Auxiliary input 1.0+
Шаблон:Code Auxiliary output 1.0+
Шаблон:Code Printer output 1.0+
Шаблон:Code Direct console I/O 1.0+
Шаблон:Code Direct console input without echo 1.0+
Шаблон:Code Console input without echo 1.0+
Шаблон:Code Display string 1.0+
Шаблон:Code Buffered keyboard input 1.0+
Шаблон:Code Get input status 1.0+
Шаблон:Code Flush input buffer and input 1.0+
Шаблон:Code Disk reset 1.0+
Шаблон:Code Set default drive 1.0+
Шаблон:Code Open file 1.0+
Шаблон:Code Close file 1.0+
Шаблон:Code Find first file 1.0+
Шаблон:Code Find next file 1.0+
Шаблон:Code Delete file 1.0+
Шаблон:Code Sequential read 1.0+
Шаблон:Code Sequential write 1.0+
Шаблон:Code Create or truncate file 1.0+
Шаблон:Code Rename file 1.0+
Шаблон:Code Reserved 1.0+
Шаблон:Code Get default drive 1.0+
Шаблон:Code Set disk transfer address 1.0+
Шаблон:Code Get allocation info for default drive 1.0+
Шаблон:Code Get allocation info for specified drive 1.0+
Шаблон:Code Reserved 1.0+
Шаблон:Code Reserved 1.0+
Шаблон:Code Get disk parameter block for default drive 1.0+
Шаблон:Code Reserved 1.0+
Шаблон:Code Random read 1.0+
Шаблон:Code Random write 1.0+
Шаблон:Code Get file size in records 1.0+
Шаблон:Code Set random record number 1.0+
Шаблон:Code Set interrupt vector 1.0+
Шаблон:Code Create PSP 1.0+
Шаблон:Code Random block read 1.0+
Шаблон:Code Random block write 1.0+
Шаблон:Code Parse filename 1.0+
Шаблон:Code Get date 1.0+
Шаблон:Code Set date 1.0+
Шаблон:Code Get time 1.0+
Шаблон:Code Set time 1.0+
Шаблон:Code Set verify flag 1.0+
Шаблон:Code Get disk transfer address 2.0+
Шаблон:Code Get DOS version 2.0+
Шаблон:Code Terminate and stay resident 2.0+
Шаблон:Code Get disk parameter block for specified drive 2.0+
Шаблон:Code Get or set Ctrl-Break 2.0+
Шаблон:Code Get InDOS flag pointer 2.0+
Шаблон:Code Get interrupt vector 2.0+
Шаблон:Code Get free disk space 2.0+
Шаблон:Code Get or set switch character 2.0+
Шаблон:Code Get or set country info 2.0+
Шаблон:Code Create subdirectory 2.0+
Шаблон:Code Remove subdirectory 2.0+
Шаблон:Code Change current directory 2.0+
Шаблон:Code Create or truncate file 2.0+
Шаблон:Code Open file 2.0+
Шаблон:Code Close file 2.0+
Шаблон:Code Read file or device 2.0+
Шаблон:Code Write file or device 2.0+
Шаблон:Code Delete file 2.0+
Шаблон:Code Move file pointer 2.0+
Шаблон:Code Get or set file attributes 2.0+
Шаблон:Code I/O control for devices 2.0+
Шаблон:Code Duplicate handle 2.0+
Шаблон:Code Redirect handle 2.0+
Шаблон:Code Get current directory 2.0+
Шаблон:Code Allocate memory 2.0+
Шаблон:Code Release memory 2.0+
Шаблон:Code Reallocate memory 2.0+
Шаблон:Code Execute program 2.0+
Шаблон:Code Terminate with return code 2.0+
Шаблон:Code Get program return code 2.0+
Шаблон:Code Find first file 2.0+
Шаблон:Code Find next file 2.0+
Шаблон:Code Set current PSP 2.0+
Шаблон:Code Get current PSP 2.0+
Шаблон:Code Get DOS internal pointers (SYSVARS) 2.0+
Шаблон:Code Create disk parameter block 2.0+
Шаблон:Code Get verify flag 2.0+
Шаблон:Code Create program PSP 2.0+
Шаблон:Code Rename file 2.0+
Шаблон:Code Get or set file date and time 2.0+
Шаблон:Code Get or set allocation strategy 2.11+
Шаблон:Code Get extended error info 3.0+
Шаблон:Code Create unique file 3.0+
Шаблон:Code Create new file 3.0+
Шаблон:Code Lock or unlock file 3.0+
Шаблон:Code File sharing functions 3.0+
Шаблон:Code Network functions 3.0+
Шаблон:Code Network redirection functions 3.0+
Шаблон:Code Qualify filename 3.0+
Шаблон:Code Reserved 3.0+
Шаблон:Code Get current PSP 3.0+
Шаблон:Code Get DBCS lead byte table pointer 3.0+
Шаблон:Code Set wait for external event flag 3.2+
Шаблон:Code Get extended country info 3.3+
Шаблон:Code Get or set code page 3.3+
Шаблон:Code Set handle count 3.3+
Шаблон:Code Commit file 3.3+
Шаблон:Code Get or set media id 4.0+
Шаблон:Code Commit file 4.0+
Шаблон:Code Reserved 4.0+
Шаблон:Code Extended open/create file 4.0+

Operating systems with native support

Operating systems with DOS emulation layer

Other emulators

See also

References

Шаблон:Reflist

Further reading

External links

Шаблон:Disk operating systems