This example shows how a thread can notify the system to hold asynchronous exceptions during a section of code.

 #define INCL_DOSEXCEPTIONS   /* Exception values */
 #define INCL_DOSERRORS       /* Error values */
 #include <os2.h>
 #include <stdio.h>

 int main(VOID)
   {
   ULONG   ulNestLevel = 0;  /* Global variable tracking nesting
                                of DosEnterMustComplete calls     */
   APIRET  rc = NO_ERROR;    /* Return code                       */

    rc = DosEnterMustComplete(&ulNestLevel);

    if (rc != NO_ERROR) {
        printf("DosEnterMustComplete error: return code = %u\n",rc);
        return 1;
    } else {
        printf("ulNestLevel = %u\n",ulNestLevel);
    }

        /* ADD BLOCK OF CODE THAT MUST COMPLETE HERE... */

    rc = DosExitMustComplete(&ulNestLevel);

    if (rc != NO_ERROR) {
        printf("DosExitMustComplete error: return code = %u\n",rc);
        return 1;
    } else {
        printf("ulNestLevel = %u\n",ulNestLevel);
    }

    return NO_ERROR;
    }


[Back] [Next]