DosQueryMem is used to determine the allocation state and access protection for a specified memory object. The application can query an entire memory object or a range of pages within an object.
The following code fragment uses DosQueryMem to ensure that memory is committed before the application attempts to use the memory:
#define INCL_DOSMEMMGR /* Memory Manager values */
#include <os2.h>
#define HF_STDOUT 1 /* Standard output handle */
PBYTE pb; /* Base address of an allocated object */
ULONG ulSize,
ulFlags,
ulWritten;
APIRET ulrc; /* Return Code */
ulSize = 4096;
ulrc = DosAllocMem((PVOID *)&pb,
16384,
PAG_COMMIT |
PAG_WRITE);
ulrc = DosQueryMem(pb,
&ulSize,
&ulFlags); /* Queries first 4096 bytes */
if (ulFlags & PAG_COMMIT) { /* If memory is committed, use it */
ulrc = DosWrite(HF_STDOUT,
"\r\n 4KB is committed.\r\n",
21,
&ulWritten);
}