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