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


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

Подпрограмма KeSrcuAllocate выделяет и инициализирует спящий разделCopy-Update (SRCU) для синхронизации.

Синтаксис

PKE_SRCU KeSrcuAllocate(
  [in] ULONG Tag
);

Параметры

[in] Tag

Значение тега с четырьмя символами, используемое для идентификации этого экземпляра SRCU.

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

KeSrcuAllocate возвращает указатель на выделенный экземпляр SRCU при успешном выполнении или NULL, если выделение завершается ошибкой.

Замечания

KeSrcuAllocate создает новый домен синхронизации SRCU, который позволяет нескольким читателям одновременно получать доступ к общим данным, обеспечивая безопасные обновления. SRCU отличается от обычного RCU в том, что читатели могут спать при удержании блокировки чтения.

Раздел SRCU, возвращаемый этой функцией, должен быть освобожден с помощью KeSrcuFree , если он больше не нужен.

Каждая секция SRCU является независимой и поддерживает собственные льготные периоды. SRCU предназначен для сценариев, когда читателям может потребоваться спящий режим или выполнять блокирующие операции.

Параметр тега должен быть уникальным для идентификации экземпляра во время отладки.

Типичный шаблон использования

  • Вызовите KeSrcuAllocate , чтобы создать секцию SRCU.
  • Для синхронизации чтения используйте KeSrcuReadLock и KeSrcuReadUnlock .
  • Используйте KeSrcuSynchronize , чтобы ожидать завершения чтения до обновления.
  • Вызовите KeSrcuFree, чтобы очистить после завершения.

Требования

Требование Ценность
целевая платформа Всеобщий
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

См. также

KeSrcuFree

KeSrcuReadLock

KeSrcuReadUnlock

KeSrcuSynchronize