en:docs:fapi:dossubset

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

DosSubSet

This call is used to initialize a segment or to reset a reallocated segment for suballocation.

Syntax

DosSubSet (SegSelector, Flags, Size)

Parameters

  • SegSelector (SEL) - input : Target data segment selector.
  • Flags (USHORT) - input :
0 = Increasing the size of a segment already initialized.
1 = Initializing a segment.
  • Size (USHORT) - input : Segment size in bytes.

Return Code

rc (USHORT) - return

Return code descriptions are:

  • 0 NO_ERROR
  • 310 ERROR_DOSSUB_SHRINK
  • 313 ERROR_DOSSUB_BADSIZE
  • 314 ERROR_DOSSUB_BADFLAG

Remarks

To initialize a segment for suballocation, issue DosSubSet before issuing DosSubAlloc and set Flags = 1. The segment must have been allocated with DosAllocSeg or DosAllocShrSeg.

If a segment allocated by a DosAllocSeg call has already been set for suballocation, and a call to [DosSubAlloc returns ERROR_DOSSUB_NOMEM, the segment's size can be increased by a call to DosReallocSeg. After reallocation, the segment must be reset by a DosSubSet. Failure to reset the segment after changing its size can yield unpredictable results.

The size parameter should be a multiple of four bytes, or it is rounded up to a multiple of four. Note in DosSubSet, a size parameter of 0 indicates the segment is 64KB, while in DosSubAlloc and DosSubFree, a size parameter of 0 is an error. Other than this special case of 0 meaning 64KB, the minimum size that can be set is 12 bytes.

Example Code

C Binding

#define INCL_DOSMEMMGR
 
USHORT  rc = DosSubSet(SegSelector, Flags, Size);
 
SEL              SegSelector;   /* Segment selector */
USHORT           Flags;         /* Parameter flags */
USHORT           Size;          /* Size of a block */
 
USHORT           rc;            /* return code */

MASM Binding

EXTRN  DosSubSet:FAR
INCL_DOSMEMMGR      EQU 1
 
PUSH   WORD    SegSelector   ;Segment selector
PUSH   WORD    Flags         ;Parameter flags
PUSH   WORD    Size          ;Size of a segment
CALL   DosSubSet

Returns WORD

Note