en:docs:fapi:dossubfree

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

2021/09/17 04:47 · prokushev · 0 Comments
2021/08/20 03:18 · prokushev · 0 Comments

DosSubFree

This call frees memory previously allocated by DosSubAlloc.

Syntax

DosSubFree (SegSelector, BlockOffset, Size)

Parameters

  • SegSelector (SEL) - input : Data segment selector.
  • BlockOffset (USHORT) - input : Memory block offset. The value specified must equal the BlockOffset returned on a previous DosSubAlloc call.
  • Size (USHORT) - input : Size, in bytes, of the block to be freed.

Return Code

rc (USHORT) - return

Return code descriptions are:

  • 0 NO_ERROR
  • 312 ERROR_DOSSUB_OVERLAP
  • 313 ERROR_DOSSUB_BADSIZE

Remarks

DosSubFree specifies the offset of a block of memory previously suballocated by a DosSubAlloc request. If the block specified overlaps memory in the segment that is not suballocated, an error is returned. Like DosSubAlloc, the size parameter must be a multiple of four bytes; otherwise, it is rounded up to a multiple of four bytes.

The allocated segment is freed by calling DosFreeSeg.

Example Code

C Binding

#define INCL_DOSMEMMGR
 
USHORT  rc = DosSubFree(SegSelector, BlockOffset, Size);
 
SEL              SegSelector;   /* Segment selector */
USHORT           BlockOffset;   /* Offset of memory block to free */
USHORT           Size;          /* Size of block in bytes */
 
USHORT           rc;            /* return code */

MASM Binding

EXTRN  DosSubFree:FAR
INCL_DOSMEMMGR      EQU 1
 
PUSH   WORD    SegSelector   ;Segment selector
PUSH   WORD    BlockOffset   ;Offset of memory block to free
PUSH   WORD    Size          ;Size of block in bytes
CALL   DosSubFree

Returns WORD

Note