Jump to content

DosSubAlloc: Difference between revisions

From EDM2
Ak120 (talk | contribs)
mNo edit summary
No edit summary
Line 1: Line 1:
{{Legacy
|RepFunc=
|Remarks=This page list the older version of the function for reference.
}}
This call suballocates portions of a segment allocated by DosAllocSeg or DosAllocShrSeg, and initialized by DosSubSet.
This call suballocates portions of a segment allocated by DosAllocSeg or DosAllocShrSeg, and initialized by DosSubSet.



Revision as of 23:56, 15 September 2017

Legacy Function Warning
It is recommended to use a newer replacement for this function.
Replacement:
Remarks: This page list the older version of the function for reference.

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

#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

Related Functions