Функция NdisInitializeReadWriteLock (ndis.h)
Функция NdisInitializeReadWriteLock инициализирует переменную блокировки чтения или записи типа NDIS_RW_LOCK.
Синтаксис
void NdisInitializeReadWriteLock(
[out] PNDIS_RW_LOCK Lock
);
Параметры
[out] Lock
Указатель на непрозрачную переменную NDIS_RW_LOCK , представляющую блокировку. Вызывающий объект может использовать эту блокировку для получения доступа на запись или чтение к ресурсам, которые являются общими для потоков драйверов, не относящихся к ISR.
Возвращаемое значение
None
Remarks
Переменная NDIS_RW_LOCK используется для ограничения доступа на запись к общим ресурсам одним потоком драйвера, не относящийся к ISR. Этот NDIS_RW_LOCK может разрешить нескольким потокам драйверов, не относящихся к ISR, одновременный доступ на чтение этих ресурсов. Такой доступ на чтение не разрешен во время доступа на запись.
Указатель блокировки , передаваемый в NdisInitializeReadWriteLock , является обязательным параметром для всех остальных Ndis.. Функции ReadWriteLock .
Прежде чем драйвер вызывает функцию NdisAcquireReadWriteLock для получения доступа на запись или чтение к ресурсу, драйвер должен вызвать NdisInitializeReadWriteLock , чтобы инициализировать блокировку, связанную с этим ресурсом. Вызывающий объект должен предоставить непагрегированное хранилище для переменной в разделе Блокировка .
После вызова NdisInitializeReadWriteLock драйвер может вызвать NdisAcquireReadWriteLock , чтобы получить доступ на запись или чтение к ресурсу. Доступ на запись к ресурсу может получить только один поток драйвера, отличный от ISR. Если один поток, отличный от ISR, имеет доступ на запись, все доступы на чтение и запись других потоков, отличных от ISR, должны ждать, пока владелец доступа для записи спустит блокировку. Однако если поток, отличный от ISR, имеет доступ на чтение, другие потоки, не относящиеся к ISR, могут одновременно получать доступ на чтение.
Инициализируйте и используйте этот тип блокировки для ресурсов, к которым часто обращаются для чтения и редко используются для записи.
После завершения доступа к ресурсу драйвер вызываетФункция NdisReleaseReadWriteLock.
Каждая блокировка, инициализируемая драйвером, выполняет одно из следующих действий.
- Защищает дискретный набор общих ресурсов от одновременного доступа на запись и чтение потоками драйвера, которые выполняются в IRQL <= DISPATCH_LEVEL.
- Предоставляет дискретный набор общих ресурсов для одновременного доступа к чтению потоками драйвера, которые выполняются в IRQL <= DISPATCH_LEVEL.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Не рекомендуется использовать драйверы NDIS 6.20 и более поздних версий, которые должны использовать NdisAllocateRWLock вместо NdisInitializeReadWriteLock. Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. раздел NdisInitializeReadWriteLock (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. раздел NdisInitializeReadWriteLock (NDIS 5.1)) в Windows XP. |
Целевая платформа | Универсальное |
Верхняя часть | ndis.h (включая Ndis.h) |
Библиотека | Ndis.lib |
DLL | Ndis.sys |
IRQL | Любой уровень (см. раздел "Примечания") |