Interrups | Categories | Contents |
AH = 80h AL = critical section number (00h-0Fh) (see #02555)
Notes: Normally hooked to avoid interrupting a critical section, rather than called. The handler should ensure that none of the critical sections are reentered, usually by suspending a task which attempts to reenter an active critical section. The DOS kernel does not invoke critical sections 01h and 02h unless it is patched. DOS 3.1+ contains a zero-terminated list of words beginning at offset -11 from the Swappable Data Area (see #01687 at INT 21/AX=5D06h); each word contains the offset within the DOS data segment of a byte which must be changed from C3h (RET) to 50h (PUSH AX) under DOS 3.x or from 00h to a nonzero value under DOS 4.0+ to enable use of critical sections. For DOS 4.0+, all words in this list point at the byte at offset 0D0Ch.. MS Windows patches the DOS kernel's calls to INT 2A/AH=80h-81h into far calls to its own handler, and does not reflect the calls back to INT 2A unless SYSTEM.INI contains ReflectDOSInt2A=1 or ModifyDOSInt2A=0 in the [386Enh] section. Novell NETX does not issue INT 2A/AH=80h and INT 2A/AH=81h calls when it intercepts INT 21 calls and processes them itself
See Also: AH=81h - AH=82h - AX=8700h - INT 21/AX=5D06h
(Table 02555) Values for DOS critical section number: 01h DOS kernel, SHARE.EXE, DOSMGR. Apparently for maintaining the integrity of DOS/SHARE/NET data structures 02h DOS kernel, DOSMGR. Ensures that no multitasking occurs while DOS is calling an installable device driver 05h network redirector 06h DOS 4.x only IFSFUNC 08h ASSIGN.COM 0Ah MSCDEX, CORELCDX 0Fh IBM PC LAN server (while intercepting INT 10/AH=06h,07h,0Eh)
Category: DOS Kernel - Int 2Ah - N
Interrups | Categories | Contents |