Table of Contents
This is part of Family API which allow to create dual-os version of program runs under OS/2 and DOS
Note: This is legacy API call. It is recommended to use 32-bit equivalent
DosSubAlloc
This call suballocates portions of a segment allocated by DosAllocSeg or DosAllocShrSeg, and initialized by DosSubSet.
Syntax
DosSubAlloc (SegSelector, BlockOffset, Size)
Parameters
Return Code
rc (USHORT) - return
Return code descriptions are:
- 0 NO_ERROR
- 311 ERROR_DOSSUB_NOMEM
- 313 ERROR_DOSSUB_BADSIZE
Remarks
Before a segment allocated by DosAllocSeg or DosAllocShrSeg can be suballocated, it must first be initialized for suballocation by a call to DosSubSet.
Allocation size must be a multiple of four bytes. Otherwise, it is rounded up to a multiple of four bytes. The maximum value for the size parameter is the size that was set with DosSubSet minus 8. Note that no paragraph (16-byte) alignment is required; all requests are serviced on a byte alignment basis.
A suballocated block of memory in a suballocated segment is freed by a call to DosSubFree.
Example Code
C Binding
#define INCL_DOSMEMMGR USHORT rc = DosSubAlloc(SegSelector, BlockOffset, Size); SEL SegSelector; /* Segment selector */ PUSHORT BlockOffset; /* Block Offset (returned) */ USHORT Size; /* Size of requested block */ USHORT rc; /* return code */
MASM Binding
EXTRN DosSubAlloc:FAR INCL_DOSMEMMGR EQU 1 PUSH WORD SegSelector ;Segment selector PUSH@ WORD BlockOffset ;Block Offset (returned) PUSH WORD Size ;Size of requested block CALL DosSubAlloc
Returns WORD
Note
Text based on http://www.edm2.com/index.php/DosSubAlloc