BOOL OMuxWaitSem::queryMuxWaitSem(PULONG num,
                                  PSEMRECORD semArray,
                                  PULONG attributes)
{
    muxwaitState = DosQueryMuxWaitSem(hmux, num, semArray, attributes);
    return(muxwaitState == 0);
}
예제 #2
0
int main(VOID) {

 HMUX       hmuxHandAny  = NULLHANDLE;   /* Muxwaithandle */

 HEV        hev[2]       = {0};          /* Event semaphores */

 SEMRECORD  apsr[2]      = {{0}};        /* Semaphore records */

 SEMRECORD  semrecQuery[2] = {{0}};        /* Pointer from query */

 ULONG      cQueryRec    = 2;            /* Number of records found by query */

 ULONG      fQueryFlags  = 0;            /* Attribute flags returned by query */

 APIRET     rc           = NO_ERROR;     /* Return code */

 ULONG      ulLoop       = 0;            /* Loop count */

 ULONG      ulSem        = 0;



for (ulLoop = 0; ulLoop < 2; ulLoop++) {

    rc = DosCreateEventSem((PSZ) NULL, &hev[ulLoop], 0, FALSE);

    if (rc != NO_ERROR) {

      printf("DosCreateEventSem error:  return code = %u\n", rc);

      return 1;

    }

    apsr[ulLoop].hsemCur = (HSEM) hev[ulLoop],

    apsr[ulLoop].ulUser = 0;

} /* endfor */



rc = DosCreateMuxWaitSem((PSZ) NULL, &hmuxHandAny, 2L, apsr, DCMW_WAIT_ANY);

if (rc != NO_ERROR) {

   printf("DosCreateMuxWaitSem error:  return code = %u\n", rc);

   return 1;

}

           /* Query information about the MuxWait semaphore */



rc = DosQueryMuxWaitSem(hmuxHandAny,    /* Semaphore handle */

                        &cQueryRec,     /* Number of records */

                        (PSEMRECORD) semrecQuery,  /* Pointer to Semrecords */

                        &fQueryFlags);  /* Flags returned */

if (rc != NO_ERROR) {

  printf("DosQueryMuxWaitSem error:  return code = %u\n", rc);

  return 1;

} else {

  printf("DosQueryMuxWaitSem found %u semaphore records\n", cQueryRec);

} /* endif */



return NO_ERROR;

}