Int 21 Fn 67 - Dos 3.3+ - Set Handle Count [D]
AH = 67h
BX = size of new file handle table for process
Return: CF clear if successful
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
Desc: adjust the size of the per-process open file table, thus raising or
lowering the limit on the number of files the caller can open
simultaneously
Notes: if BX <= 20, no action is taken if the handle limit has not yet been
increased, and the table is copied back into the PSP if the limit
is currently > 20 handles
for file handle tables of > 20 handles, DOS 3.30 never reuses the
same memory block, even if the limit is being reduced; this can lead
to memory fragmentation as a new block is allocated and the existing
one freed
only the first 20 handles are copied to child processes in DOS 3.3-6.0
increasing the file handles here will not, in general, increase the
number of files that can be opened using the runtime library of a
high-level language such as C
Novell DOS 7 reportedly terminates the calling program if the JFT is
being reduced in size and there are any open file handles beyond
the portion of the JFT being retained
BUGS: the original release of DOS 3.30 allocates a full 64K for the handle
table on requests for an even number of handles
DR DOS 3.41 and 5.0 will lose track of any open file handles beyond
the portion of the JFT retained after the call; MS-DOS will indicate
error 04h if any of the JFT entries to be removed are open
See Also: AH=26h,AH=86h