Freigeben über


KeInitializeSemaphore-Funktion (wdm.h)

Die KeInitializeSemaphore-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 Verteilerobjekt 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 Wert ungleich 0 (null) legt den Anfangszustand des Semaphors auf signalisiert fest.

[in] Limit

Gibt den maximalen Anzahlwert an, den das Semaphor erreichen kann. Dieser Wert muss positiv sein. Es bestimmt, wie viele wartende Threads zur Ausführung berechtigt sind, wenn der Semaphor auf den signalierten Zustand festgelegt ist, und kann daher auf die Ressource zugreifen, die vom Semaphor geschützt wird.

Rückgabewert

Keine

Bemerkungen

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

Der Speicher für ein Semaphorobjekt muss resident sein: in der Geräteerweiterung eines vom Treiber erstellten Geräteobjekts, in der Controllererweiterung eines vom Treiber erstellten Controllerobjekts oder in einem nicht ausgelagerten Pool, der vom Aufrufer zugeordnet wird.

Weitere Informationen zu Semaphorobjekten finden Sie unter Semaphorobjekte.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm), PowerIrpDDis(wdm)

Weitere Informationen

KeReadStateSemaphor

KeReleaseSemaphor

KeWaitForMultipleObjects

KeWaitForSingleObject