Section courante

A propos

Section administrative du site

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 :

  1. #define INCL_DOSERRORS
  2. #define INCL_DOSSEMAPHORES
  3. #include "os2.h"
  4. #include "stdio.h"
  5.  
  6. void main(void) {
  7.     HMUX hmuxMySemaphore;
  8.     ULONG ulUserField;
  9.     switch(DosWaitMuxWaitSem(hmuxMySemaphore, -1,&ulUserField)) {
  10.         case NO_ERROR: printf("Tout va bien !");break;
  11.         case ERROR_INVALID_HANDLE: printf("Erreur : La valeur du hmuxSemaphore ne point pas sur un sémaphore valide.");break;
  12.         case ERROR_NOT_ENOUGH_MEMORY: printf("Erreur : La limite de mémoire système est atteinte.");break;
  13.         case ERROR_INVALID_PARAMETER: printf("Erreur : Un ou plusieurs des paramètres contient une valeur illégale.");break;
  14.         case ERROR_INTERRUPT: printf("Erreur : Une erreur d'interruption s'est produite.");break;
  15.         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;
  16.         case ERROR_SEM_OWNER_DIED: printf("Erreur : Le propriétaire du sémaphore MuxWait spécifié est terminé.");break;
  17.         case ERROR_EMPTY_MUXWAIT: printf("Erreur : Une erreur de sémaphore MuxWait avec un hmuxSemaphore s'est produite.");break;
  18.         case ERROR_MUTEX_OWNED: printf("Erreur : Une erreur de propriétaire actuellement Mutex dans une liste de sémaphore MuxWait s'est produite.");break;
  19.         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;
  20.         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;
  21.     }
  22. }

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