Поделиться через


Функция KeInitializeSemaphore (wdm.h)

Подпрограмма KeInitializeSemaphore инициализирует объект семафора с указанным числом и задает верхний предел, который может достичь счетчика.

Синтаксис

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

Параметры

[out] Semaphore

Указатель на объект диспетчера типа семафор, для которого вызывающий объект предоставляет хранилище.

[in] Count

Указывает начальное значение счетчика, назначаемое семафору. Это значение должно быть положительным. Ненулевое значение задает для семафора начальное состояние signaled.

[in] Limit

Указывает максимальное значение счетчика, которое может достичь семафор. Это значение должно быть положительным. Он определяет, сколько ожидающих потоков становятся подходящими для выполнения, когда семафор получает состояние сигналов и, следовательно, может получить доступ к ресурсу, защищаемый семафором.

Возвращаемое значение

None

Remarks

Объект семафора инициализируется с указанным начальным числом и ограничением.

Хранилище для объекта семафора должно быть резидентным: в расширении устройства объекта устройства, созданного драйвером, в расширении контроллера созданного драйвером объекта контроллера или в пуле без пахоты, выделенном вызывающим объектом.

Дополнительные сведения об объектах семафоров см. в разделе Объекты семафора.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm), PowerIrpDDis(wdm)

См. также раздел

KeReadStateSemaphore

KeReleaseSemaphore

KeWaitForMultipleObjects

KeWaitForSingleObject