==== FSH_SEMREQUEST ==== **Purpose** This function allows an FSD to obtain exclusive access to a semaphore. **Calling Sequence** int far pascal FSH_SEMREQUEST(pSem, cmsTimeout) void far * pSem; unsigned long cmsTimeout; **Where** //pSem// is the handle to the system semaphore or the long address of the ram semaphore. //cmsTimeout// is the number of milliseconds to wait. **Returns** If no error is detected, a zero error code is returned. If an error is detected, one of the following error codes is returned: * ERROR_INTERRUPT -- the current thread received a signal. * ERROR_SEM_TIMEOUT -- the time-out expired without gaining access to the semaphore. * ERROR_SEM_OWNER_DIED -- the owner of the semaphore died. * ERROR_TOO_MANY_SEM_REQUESTS -- there are too many semaphore requests in progress. * ERROR_PROTECTION_VIOLATION -- the semaphore is inaccessible. **Remarks** The time-out value of 0xFFFFFFFF indicates an indefinite time-out. The caller may receive access to the semaphore after the time-out period has expired without receiving an ERROR_SEM_TIMEOUT. Semaphore time-out values, therefore, should not be used for exact timing and sequencing. //FSH_SEMREQUEST// may block. **Note**: OS/2 does not validate input parameters. An FSD, therefore, should call //FSH_PROBEBUF// where appropriate.