DosCreateMuxWaitSem |
DOS : Crée une sémaphore MuxWait |
---|---|
DOSCALLS.DLL | os2.h |
Syntaxe
APIRET DosCreateMuxWaitSem( PSZ pszSemaphoreName, PHMUX phmuxSemaphore, ULONG ulNumberOfRecords , PSEMRECORD pSemaphoreRecord, ULONG ulfAttributes ); |
Paramètres
Nom | Description | ||
---|---|---|---|
pszSemaphoreName | Ce paramètre contient un pointeur vers une chaîne de caractères ASCIZ permet d'indiquer le nom de la sémaphore. N'importe quel sémaphore nommé peut être considéré comme partagé. Un sémaphore sans nom peut être crée en la fixant sur NULL. Le nom d'une sémaphore doit avoir un préfixe «\SEM32\», et elle ne peut excéder une longueurs de 255 selon les conventions du système de fichier. | ||
phmuxSemaphore | Ce paramètre contient un pointeur recevant le HMUX de la nouvelle sémaphore. | ||
ulNumberOfRecords | Ce paramètre permet d'indiquer le nombre d'enregistrement pointant sur un pSemaphoreRecord. Un maximum de 64 enregistrement est allouable dans une liste MuxWait. | ||
pSemaphoreRecord | Ce paramètre permet d'indiquer un pointeur vers un tableau de structure SEMRECORD a ajouté à la liste MuxWait. | ||
ulfAttributes | Ce paramètre permet d'indiquer les drapeaux de création de la sémaphore : | ||
Constante | Description | ||
DCMW_WAIT_ANY | Cette valeur permet d'indiquer que la sémaphore sera débloqué si n'importe quel sémaphore dans la liste de poste MuxWait (événement de sémaphore) ou relâché (sémaphore Mutex) en font appel. | ||
DCMW_WAIT_ALL | Cette valeur permet d'indiquer que la sémaphore sera débloqué seulement si tous les sémaphores dans la liste de poste MuxWait (événement de sémaphore) ou relâché (sémaphore Mutex) en font appel. |
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. |
100 | ERROR_TOO_MANY_SEMAPHORES | Cette valeur permet d'indiquer que la limite système de 64 sémaphore est dépassé par ce sémaphore MuxWait. |
105 | ERROR_SEM_OWNER_DIED | Cette valeur permet d'indiquer que le propriétaire du sémaphore MuxWait spécifié est terminé. |
123 | ERROR_INVALID_NAME | Cette valeur permet d'indiquer que le nom pszSemaphoreName est rejeté par un fichier système. |
284 | ERROR_DUPLICATE_HANDLE | Cette valeur permet d'indiquer que la sémaphore référé par un pSemRecord est déjà ajouter à la sémaphore MuxWait. |
285 | ERROR_DUPLICATE_NAME | Cette valeur permet d'indiquer que le nom pszSemaphoreName est en utilisation. |
290 | ERROR_TOO_MANY_HANDLES | Cette valeur permet d'indiquer que la limite du système de 65536 sémaphores est excédée. |
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. |
Description
Cette fonction permet de créer une sémaphore MuxWait privé ou partagé.
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) {
- PHMUX phmuxMySemaphore;
- ULONG ulAttribs = 0;
- SEMRECORD SemRec;
- switch(DosCreateMuxWaitSem( "\\SEM32\\MaSemaphore", phmuxMySemaphore, 1, &SemRec, ulAttribs)) {
- 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_TOO_MANY_SEMAPHORES: printf("Erreur : La limite système de 64 sémaphore est dépassé par ce sémaphore MuxWait.");break;
- case ERROR_SEM_OWNER_DIED: printf("Erreur : Le propriétaire du sémaphore MuxWait spécifié est terminé.");break;
- case ERROR_INVALID_NAME: printf("Erreur : Le nom pszSemaphoreName est rejeté par un fichier système.");break;
- case ERROR_DUPLICATE_HANDLE: printf("Erreur : La sémaphore référé par un pSemRecord est déjà ajouter à la sémaphore MuxWait.");break;
- case ERROR_DUPLICATE_NAME: printf("Erreur : Le nom pszSemaphoreName est en utilisation.");break;
- case ERROR_TOO_MANY_HANDLES: printf("Erreur : La limite du système de 65536 sémaphores est excédée.");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;
- default:printf("Erreur inconnu !");
- }
- }
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 - DosDeleteMuxWaitSem
Langage de programmation - C pour OS/2 - DosOpenMuxWaitSem
Langage de programmation - C pour OS/2 - DosQueryMuxWaitSem
Langage de programmation - C pour OS/2 - DosWaitMuxWaitSem
Système d'exploitation - OS/2 - Introduction
Dernière mise à jour : Lundi, le 19 juillet 2010