Freigeben über


KeInitializeSemaphore-Funktion (wdm.h)

Die KeInitializeSemaphor Routine initialisiert ein Semaphorobjekt mit einer angegebenen Anzahl und gibt eine Obergrenze an, die die Anzahl erreichen kann.

Syntax

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

Parameter

[out] Semaphore

Zeiger auf ein Dispatcherobjekt vom Typ Semaphor, für das der Aufrufer den Speicher bereitstellt.

[in] Count

Gibt den anfänglichen Anzahlwert an, der dem Semaphor zugewiesen werden soll. Dieser Wert muss positiv sein. Ein Nonzero-Wert legt den Anfangszustand des Semaphors auf signalisiert fest.

[in] Limit

Gibt den Maximalwert an, den das Semaphor erreichen kann. Dieser Wert muss positiv sein. Es bestimmt, wie viele Wartethreads zur Ausführung berechtigt werden, wenn der Semaphor auf den signalierten Zustand festgelegt ist und somit auf die Ressource zugreifen kann, die der Semaphor schützt.

Rückgabewert

Nichts

Bemerkungen

Das Semaphorobjekt wird mit der angegebenen Anfangsanzahl und dem angegebenen Grenzwert initialisiert.

Der Speicher für ein Semaphorobjekt muss sich befinden: in der Geräteerweiterung eines vom Treiber erstellten Geräteobjekts, in der Controllererweiterung eines vom Treiber erstellten Controllerobjekts oder in nicht seitengebundenem Pool, der vom Aufrufer zugewiesen wird.

Weitere Informationen zu Semaphorobjekten finden Sie unter Semaphor-Objekte.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Ab Windows 2000 verfügbar.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm), PowerIrpDDis(wdm)

Siehe auch

KeReadStateSemaphor

KeReleaseSemaphor

KeWaitForMultipleObjects

KeWaitForSingleObject