DosSubAlloc: Difference between revisions
Appearance
m Ak120 moved page OS2 API:CPI:LEGACY:DosSubAlloc to DosSubAlloc |
mNo edit summary |
||
Line 1: | Line 1: | ||
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. | ||
==Syntax== | ==Syntax== | ||
DosSubAlloc (SegSelector, BlockOffset, Size) | |||
DosSubAlloc | |||
==Parameters== | ==Parameters== | ||
; SegSelector (SEL) - input : Data segment selector that allocates the memory. | ;SegSelector (SEL) - input : Data segment selector that allocates the memory. | ||
;BlockOffset (PUSHORT) - output : Address of the allocated block offset. | |||
; BlockOffset (PUSHORT) - output : Address of the allocated block offset. | ;Size (USHORT) - input : Memory block size requested in bytes. | ||
; Size (USHORT) - input : Memory block size requested in bytes. | |||
==Return Code== | ==Return Code== | ||
rc (USHORT) - return | rc (USHORT) - return | ||
Return code descriptions are: | Return code descriptions are: | ||
* 0 NO_ERROR | * 0 NO_ERROR | ||
* 311 ERROR_DOSSUB_NOMEM | * 311 ERROR_DOSSUB_NOMEM | ||
Line 25: | Line 17: | ||
==Remarks== | ==Remarks== | ||
Before a segment allocated by DosAllocSeg or DosAllocShrSeg can be suballocated, it must first be initialized for suballocation by a call to DosSubSet. | 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. | 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. | ||
Line 57: | Line 49: | ||
Returns WORD | Returns WORD | ||
</PRE> | </PRE> | ||
==Related Functions== | ==Related Functions== | ||
* | * [[DosSubSet]] | ||
[[Category: | [[Category:Dos]] |
Revision as of 11:13, 24 February 2017
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