en:docs:fapi:dossuballoc
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


Previous revision
Next revision
en:docs:fapi:dossuballoc [2020/12/04 13:01] prokushev
Line 1: Line 1:
 +{{logos:os2.gif?35x35}} {{logos:dos.gif?35x35}}
 +
 +====== DosSubAlloc ======
 +
 +This call suballocates portions of a segment allocated by DosAllocSeg or DosAllocShrSeg, and initialized by DosSubSet.
 +
 +==Syntax==
 + DosSubAlloc (SegSelector, BlockOffset, Size)
 +
 +==Parameters==
 +;SegSelector (SEL) - input : Data segment selector that allocates the memory.
 +;BlockOffset (PUSHORT) - output : Address of the allocated block offset.
 +;Size (USHORT) - input : Memory block size requested in bytes.
 +
 +==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===
 +<PRE>
 +#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 */
 +</PRE>
 +
 +===MASM Binding===
 +<PRE>
 +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
 +</PRE>
 +
 +
 +
 +====== Note ======
 +
 +Text based on [[http://www.edm2.com/index.php/DosSubAlloc]]
 +
 +{{page>en:templates:fapi}}