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


This call reallocates a segment after discard or changes the size of a segment already allocated.


DosReallocSeg (Size, Selector)


  • Size (USHORT) - input : New requested segment size (in bytes). A value of 0 indicates 65536 bytes.
  • Selector (SEL) - input : Segment to be resized.

Return Code

rc (USHORT) - return

Return code descriptions are:

  • 0 NO_ERROR


DosReallocSeg is called to change the size of an unshared or shared segment allocated with a DosAllocSeg request.

Normally, segments allocated as shared (AllocFlags bits 0 and 1 were set) cannot be decreased in size. However, if AllocFlags bit 3 was also set, the shared segment's size can be decreased.

DosReallocSeg is also called to reallocate a segment allocated as discardable (AllocFlags bit 2 set) after the segment is discarded by the system. The call to DosReallocSeg automatically locks the segment for access by the caller, the same as if a DosLockSeg had been issued.

Note: This request may be issued from privilege level 2 or 3, and the segment being resized can be either a privilege level 2 or privilege level 3 segment.

To change the size of huge memory allocated by DosAllocHuge, see DosReallocHuge.

Family API Considerations

Some options operate differently in the DOS mode than in the OS/2 mode. Therefore, the following restriction applies to DosReallocSeg when coding for the DOS mode. The requested Size value is rounded up to the next paragraph (16-byte).


C Binding

USHORT  rc = DosReallocSeg(Size, Selector);
USHORT           Size;          /* New size requested in bytes */
SEL              Selector;      /* Selector */
USHORT           rc;            /* return code */

MASM Binding

EXTRN  DosReallocSeg:FAR
PUSH   WORD    Size          ;New size requested in bytes
PUSH   WORD    Selector      ;Selector
CALL   DosReallocSeg
Returns WORD