DosWaitMuxWaitSem |
DOS : Attente la sémaphore MuxWait |
---|---|
DOSCALLS.DLL | os2.h |
Syntaxe
APIRET DosWaitMuxWaitSem( HEV hevSemaphore, ULONG ulTimeout, PULONG pulUserField ); |
Paramètres
Nom | Description | ||
---|---|---|---|
hevSemaphore | Ce paramètre permet d'indiquer le Handle du sémaphore à bloqué. | ||
ulTimeout | Ce paramètre permet d'indiquer le nombre de millisecondes que la fonction doit attendre avant de retourner. Toutefois, on peut utiliser les valeurs suivantes pour appeler des fonctions spéciales : | ||
Constante | Valeur | Description | |
SEM_IMMEDIATE_RETURN | 0 | Cette valeur permet d'indiquer que la fonction retourne immédiatement indépendamment de savoir si la sémaphore est posté. | |
SEM_INDEFINITE_WAIT | -1 | Cette valeur permet d'indiquer que la fonction est bloqué indéfiniment jusqu'à ce que la sémaphore soit posté. | |
pulUserField | Ce paramètre permet d'indiquer une valeur d'un champ utilisateur d'une structure SEMRECORD. |
Retour
Valeur | Constante | Description |
---|---|---|
0 | NO_ERROR | Cette valeur permet d'indiquer que l'opération s'est correctement effectué |
6 | ERROR_INVALID_HANDLE | Cette valeur permet d'indiquer que la valeur du hmuxSemaphore ne point pas sur un sémaphore valide. |
8 | ERROR_NOT_ENOUGH_MEMORY | Cette valeur permet d'indiquer que la limite de mémoire système est atteinte. |
87 | ERROR_INVALID_PARAMETER | Cette valeur permet d'indiquer qu'un ou plusieurs des paramètres contient une valeur illégale. |
95 | ERROR_INTERRUPT | Cette valeur permet d'indiquer qu'une erreur d'interruption s'est produite. |
103 | ERROR_TOO_MANY_SEM_REQUESTS | Cette valeur permet d'indiquer qu'une erreur de limite système d'utilisation de sémaphore, soit de 65535, est atteinte. |
105 | ERROR_SEM_OWNER_DIED | Cette valeur permet d'indiquer que le propriétaire du sémaphore MuxWait spécifié est terminé. |
286 | ERROR_EMPTY_MUXWAIT | Cette valeur permet d'indiquer qu'une erreur de sémaphore MuxWait avec un hmuxSemaphore s'est produite. |
287 | ERROR_MUTEX_OWNED | Cette valeur permet d'indiquer qu'une erreur de propriétaire actuellement Mutex dans une liste de sémaphore MuxWait s'est produite. |
292 | ERROR_WRONG_TYPE | Cette valeur permet d'indiquer que la sémaphore référé par un pSemRecord est type différent et est déjà dans la liste d'un hmuxSemaphore. |
640 | ERROR_TIMEOUT | Cette valeur permet d'indiquer que l'appelant est bloqué par ulTimeout millisecondes mais le propriétaire de sémaphore ne peut pas obtenir de limite de temps, donc le temps est expiré. |
Description
Cette fonction permet de bloquer jusqu'à ce que le sémaphore MuxWait spécifié soit effacé.
Exemple
Voici un simple exemple montrant comme appeler cette API avec WatCom C++ for OS/2 :
- #define INCL_DOSERRORS
- #define INCL_DOSSEMAPHORES
- #include "os2.h"
- #include "stdio.h"
-
- void main(void) {
- HMUX hmuxMySemaphore;
- ULONG ulUserField;
- switch(DosWaitMuxWaitSem(hmuxMySemaphore, -1,&ulUserField)) {
- case NO_ERROR: printf("Tout va bien !");break;
- case ERROR_INVALID_HANDLE: printf("Erreur : La valeur du hmuxSemaphore ne point pas sur un sémaphore valide.");break;
- case ERROR_NOT_ENOUGH_MEMORY: printf("Erreur : La limite de mémoire système est atteinte.");break;
- case ERROR_INVALID_PARAMETER: printf("Erreur : Un ou plusieurs des paramètres contient une valeur illégale.");break;
- case ERROR_INTERRUPT: printf("Erreur : Une erreur d'interruption s'est produite.");break;
- case ERROR_TOO_MANY_SEM_REQUESTS: printf("Erreur : Une erreur de limite système d'utilisation de sémaphore, soit de 65535, est atteinte.");break;
- case ERROR_SEM_OWNER_DIED: printf("Erreur : Le propriétaire du sémaphore MuxWait spécifié est terminé.");break;
- case ERROR_EMPTY_MUXWAIT: printf("Erreur : Une erreur de sémaphore MuxWait avec un hmuxSemaphore s'est produite.");break;
- case ERROR_MUTEX_OWNED: printf("Erreur : Une erreur de propriétaire actuellement Mutex dans une liste de sémaphore MuxWait s'est produite.");break;
- case ERROR_WRONG_TYPE: printf("Erreur : La sémaphore référé par un pSemRecord est type différent et est déjà dans la liste d'un hmuxSemaphore.");break;
- case ERROR_TIMEOUT: printf("Erreur : L'appelant est bloqué par ulTimeout millisecondes mais le propriétaire de sémaphore ne peut pas obtenir de limite de temps, donc le temps est expiré.");break;
- }
- }
Voir également
Langage de programmation - C pour OS/2 - DosAddMuxWaitSem
Langage de programmation - C pour OS/2 - DosCloseMuxWaitSem
Langage de programmation - C pour OS/2 - DosCreateMuxWaitSem
Langage de programmation - C pour OS/2 - DosDeleteMuxWaitSem
Langage de programmation - C pour OS/2 - DosOpenMuxWaitSem
Langage de programmation - C pour OS/2 - DosQueryMuxWaitSem
Langage de programmation - C pour OS/2 - WinWaitMuxWaitSem
Système d'exploitation - OS/2 - Introduction
Dernière mise à jour : Lundi, le 19 juillet 2010