Partager via


Fonction KeInitializeSemaphore (wdm.h)

La routine KeInitializeSemaphore initialise un objet sémaphore avec un nombre spécifié et spécifie une limite supérieure que le nombre peut atteindre.

Syntaxe

void KeInitializeSemaphore(
  [out] PRKSEMAPHORE Semaphore,
  [in]  LONG         Count,
  [in]  LONG         Limit
);

Paramètres

[out] Semaphore

Pointeur vers un objet de répartiteur de type sémaphore, pour lequel l’appelant fournit le stockage.

[in] Count

Spécifie la valeur du nombre initial à affecter au sémaphore. Cette valeur doit être positive. Une valeur différente de zéro définit l’état initial du sémaphore sur signalé.

[in] Limit

Spécifie la valeur maximale du nombre que le sémaphore peut atteindre. Cette valeur doit être positive. Il détermine le nombre de threads en attente éligibles à l’exécution lorsque le sémaphore est défini sur l’état signalé et peut donc accéder à la ressource que le sémaphore protège.

Valeur de retour

None

Remarques

L’objet sémaphore est initialisé avec le nombre initial et la limite spécifiés.

Le stockage d’un objet sémaphore doit être résident : dans l’extension d’appareil d’un objet d’appareil créé par le pilote, dans l’extension contrôleur d’un objet contrôleur créé par le pilote ou dans un pool non paginé alloué par l’appelant.

Pour plus d’informations sur les objets sémaphores, consultez Objets sémaphores.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Universal
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs(storport),IrqlKeDispatchLte(wdm), PowerIrpDDis(wdm)

Voir aussi

KeReadStateSemaphore

KeReleaseSemaphore

KeWaitForMultipleObjects

KeWaitForSingleObject