DosQuerySysInfo

From EDM2
Jump to: navigation, search

Returns values of static system variables.

Syntax

rc = DosQuerySysInfo( ulStartIndex, ulLastIndex, pDataBuffer, ulDataBufferLength );

Parameters

ulStartIndex (ULONG) - input
Index of the first info to query.
ulLastIndex (ULONG) - input
Index of the last info to query. Equal to ulStartIndex if it is the only wanted info.
pDataBuffer (PVOID) - output
Address to a data buffer to put the information in.
ulDataBufferLengt (LONG) - input
Size of pDataBuffer. Valid values for ulStartIndex and ulLastIndex
No. Name Description OS/2 Version
1 QSV_MAX_PATH_LENGTH Maximum length of a path name (bytes). Use this when allocating filename buffers. All
2 QSV_MAX_TEXT_SESSIONS Maximum number of text sessions. All
3 QSV_MAX_PM_SESSIONS Maximum number of PM sessions. All
4 QSV_MAX_VDM_SESSIONS Maximum number of DOS sessions. All
5 QSV_BOOT_DRIVE Boot drive (1 = A:, 2 = B:, 3 = C, and so on). All
6 QSV_DYN_PRI_VARIATION Absolute(= 0)/Dynamic(= 1) priority. All
7 QSV_MAX_WAIT Maximum wait time (seconds). All
8 QSV_MIN_SLICE Minimum time slice allowed (milliseconds). All
9 QSV_MAX_SLICE Maximum time slice allowed (milliseconds). All
10 QSV_PAGE_SIZE Memory page size (bytes). Default 4096 bytes. All
11 QSV_VERSION_MAJOR Major version number. All
12 QSV_VERSION_MINOR Minor version number. All
13 QSV_VERSION_REVISION Revision letter. All
14 QSV_MS_COUNT Value of a 32-bit, free-running counter (milliseconds). Zero at boot time. All
15 QSV_TIME_LOW Low-order 32 bits of the time since January 1, 1980 (seconds). All
16 QSV_TIME_HIGH High-order 32 bits of the time since January 1, 1980 (seconds). All
17 QSV_TOTPHYSMEM Total number of bytes of physical memory. All
18 QSV_TOTRESMEM Total number of bytes of system-resident memory. All
19 QSV_TOTAVAILMEM Maximum number of bytes available for all processes in the system RIGHT NOW. All
20 QSV_MAXPRMEM Maximum number of bytes available for this process RIGHT NOW. All
21 QSV_MAXSHMEM Maximum number of shareable bytes available RIGHT NOW. All
22 QSV_TIMER_INTERVAL Timer interval (1/10 milliseconds). All
23 QSV_MAX_COMP_LENGTH Maximum length of one component in a path name (bytes). All
24 QSV_FOREGROUND_FS_SESSION Session ID of the current foreground full screen session. (any PM, VIO or Win-DOS session would be ID = 1). Warp
25 QSV_FOREGROUND_PROCESS Process ID of the current foreground process. Warp
26 QSV_NUMPROCESSORS Number of processors in the computer. Warp

Returns

APIRET rc
Indicates if any error occurred.
0 NO_ERROR
87 ERROR_INVALID_PARAMETER
111 ERROR_BUFFER_OVERFLOW

Include Info

#define INCL_DOSMISC
#include <os2.h>

Usage Explanation

DosQuerySysInfo queries different information about the system. and returns it in a buffer sent to it with the call.

Sample Code

ULONG aulBuffer[4];
APIRET rc;

rc = DosQuerySysInfo(QSV_VERSION_MAJOR, QSV_MS_COUNT,
		     (void *)aulBuffer, 4*sizeof(ULONG));
if(rc) {
  printf("Error! DosQuerySysInfo returned %d.\n",rc);
  return(-1);
}
else {
  printf("You are running version %d.%d revision %c.\n",
          aulBuffer[0], aulBuffer[1], (char) aulBuffer[2]);
  printf("Your system has been running %d hour(s) and %d minute(s).\n",
          aulBuffer[3]/3600000, (aulBuffer[3]%3600000)/60000);
}

This example queries and displays the maximum length for a path name and the total amount of physical memory in bytes.

#define INCL_DOSMISC       /* DOS Miscellaneous values */
#define INCL_DOSERRORS     /* DOS Error values         */
#include <os2.h>
#include <stdio.h>

int main(VOID)  {

  ULONG   aulSysInfo[QSV_MAX] = {0};       /* System Information Data Buffer */
  APIRET  rc                  = NO_ERROR;  /* Return code                    */

  rc = DosQuerySysInfo(1L,                 /* Request all available system   */
                       QSV_MAX,            /* information                    */
                       (PVOID)aulSysInfo,
                       sizeof(ULONG)*QSV_MAX);

  if (rc != NO_ERROR) {
     printf("DosQuerySysInfo error: return code = %u\n", rc);
     return 1;
  } else {
     printf("Maximum length for a path name is %u characters.\n",
             aulSysInfo[QSV_MAX_PATH_LENGTH-1]);  /* Max length of path name */

     printf("Total physical memory is %u bytes.\n",
             aulSysInfo[QSV_TOTPHYSMEM-1]);       /* Total physical memory   */
  } /* endif */

   return NO_ERROR;
}

Related Functions