Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подпрограмма KeSrcuSynchronize ожидает завершения всех текущих активных критических разделов на стороне чтения для секции с спящегоCopy-Update (SRCU).
Синтаксис
VOID KeSrcuSynchronize(
[in] PKE_SRCU Rcu
);
Параметры
[in] Rcu
Указатель на экземпляр SRCU, который ранее был выделен KeSrcuAllocate.
Возвращаемое значение
None
Замечания
KeSrcuSynchronize реализует операцию "sync" для SRCU, которая запускает льготный период и ожидает выхода всех активных читателей, чтобы выйти из своих критически важных разделов. Эта функция необходима для безопасного восстановления памяти и обновлений структуры данных.
Семантика льготного периода выглядит следующим образом:
- Функция ожидает только читателей, которые были активными при вызове.
- Новые средства чтения, которые вводят после начала вызова, не включаются в ожидание.
- Функция может блокироваться до тех пор, пока все целевые читатели не вызовут KeSrcuReadUnlock.
- Одновременно может выполняться несколько операций синхронизации.
Вызовите эту функцию только в IRQL < DISPATCH_LEVEL, так как она может блокироваться. Эта функция может спянуть, что подходит для страничного кода. Не вызывайте эту функцию в критическом разделе SRCU на стороне чтения.
Типичный шаблон записи выглядит следующим образом:
- Удалите структуру данных из глобальной видимости.
- Вызовите KeSrcuSynchronize, чтобы ждать существующих читателей.
- Безопасное освобождение или изменение структуры данных.
Функция гарантирует, что читатели не получают доступ к данным при возврате, что делает его безопасным для выполнения обновлений или восстановления памяти.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Всеобщий |
| Header | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
| Library | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | <DISPATCH_LEVEL |