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 returns the video display configuration.


 VioGetConfig (ConfigID, ConfigData, VioHandle)


  • ConfigID (USHORT) - input: Identifies for which display configuration information is being requested:
    • 0 - Current configuration
    • 1 - Primary configuration
    • 2 - Secondary configuration

For OS/2 1.2, when ConfigID = 0, the current configuration is returned rather than the primary configuration (as was returned in OS/2 1.0 and 1.1). This change makes the OS/2 mode version of VioGetConfig match the family API version that has returned the current configuration starting with OS/2 1.0. OS/2 1.0 and 1.1 applications that issued VioGetConfig to determine the display configuration benefit from this change. The application can run on the configuration selected by the operator (by issuing the MODE command before invoking the application) rather than switching away from the operator selected display.

  • ConfigData (PVIOCONFIGINFO) - output: Address of structure where the display configuration is returned.
  • VioHandle (HVIO) - input : This must be zero unless the caller is a Presentation Manager application, in which case it must be the value returned by VioGetPs.

Return Code

rc (USHORT) - return

Return code descriptions are:

  • 0 NO_ERROR


The values returned may not be correct if the adapter cannot be properly identified by the Base Video Handler (BVH) selected at system installation time. It can also be incorrect if the physical setup does not match that indicated by the presence of the adapter or by adapter switches. For example, it is impossible to detect the absence of a display on a CGA or the display attached to an EGA, despite the setup switches.



typedef struct _VIOCONFIGINFO {  /* vioin  */
  USHORT  cb     ;               /* Length of this data structure */
  USHORT  adapter;               /* Display adapter type */
  USHORT  display;               /* Display/monitor type */
  ULONG   cbMemory;              /* Amount of memory on the adapter
                                     in bytes */
  USHORT  Configuration;
  USHORT  VDHVersion;
  USHORT  Flags;
  ULONG   HWBufferSize;
  ULONG   FullSaveSize;
  ULONG   PartSaveSize;
  USHORT  EMAdaptersOFF;         /* Offset to emulated adapter types */
  USHORT  EMDisplaysOFF;         /* Offset to emulated display types */
#define INCL_VIO
USHORT  rc = VioGetConfig(ConfigID, ConfigData, VioHandle);
USHORT           ConfigID;      /* Configuration ID */
PVIOCONFIGINFO   ConfigData;    /* Configuration data */
HVIO             VioHandle;     /* Vio handle */
USHORT           rc;            /* return code */


  vioin_cb            dw  ? ;Length of this data structure
  vioin_adapter       dw  ? ;Display adapter type
  vioin_display       dw  ? ;Display/monitor type
  vioin_cbMemory      dd  ? ;Amount of memory on the adapter in bytes
  vioin_Configuration dw  ? ;
  vioin_VDHVersion    dw  ? ;
  vioin_Flags         dw  ? ;
  vioin_HWBufferSize  dd  ? ;
  vioin_FullSaveSize  dd  ? ;
  vioin_PartSaveSize  dd  ? ;
  vioin_EMAdaptersOFF dw  ? ;Offset to emulated adapter types
  vioin_EMDisplaysOFF dw  ? ;Offset to emulated display types
EXTRN  VioGetConfig:FAR
INCL_VIO            EQU 1
PUSH   WORD    ConfigID      ;Configuration ID
PUSH@  OTHER   ConfigData    ;Configuration data
PUSH   WORD    VioHandle     ;Vio handle
CALL   VioGetConfig
Returns WORD