Compartilhar via


Função NdisInitializeReadWriteLock (ndis.h)

A função NdisInitializeReadWriteLock inicializa uma variável de bloqueio de leitura ou gravação do tipo NDIS_RW_LOCK.

Nota A interface de bloqueio de leitura/gravação foi preterida para drivers NDIS 6.20 e posteriores, que devem usar NdisAllocateRWLock em vez de NdisInitializeReadWriteLock.
 

Sintaxe

void NdisInitializeReadWriteLock(
  [out] PNDIS_RW_LOCK Lock
);

Parâmetros

[out] Lock

Um ponteiro para uma variável de NDIS_RW_LOCK opaca que representa um bloqueio. O chamador pode usar esse bloqueio para obter acesso de gravação ou leitura a recursos que são compartilhados entre threads de driver não ISR.

Retornar valor

Nenhum

Comentários

Uma variável NDIS_RW_LOCK é usada para limitar o acesso de gravação a recursos compartilhados a um thread de driver não ISR por vez. Essa NDIS_RW_LOCK pode permitir que vários threads de driver não ISR tenham acesso de leitura simultâneo a esses recursos. Esse acesso de leitura não é permitido durante um acesso de gravação.

O ponteiro lock passado para NdisInitializeReadWriteLock é um parâmetro necessário para todos os outros Ndis. Funções ReadWriteLock .

Antes que um driver chame a função NdisAcquireReadWriteLock para obter acesso de gravação ou leitura a um recurso, o driver deve chamar NdisInitializeReadWriteLock para inicializar o bloqueio associado a esse recurso. O chamador deve fornecer armazenamento nãopagado para a variável em Bloquear .

Depois de chamar NdisInitializeReadWriteLock, o driver pode chamar NdisAcquireReadWriteLock para obter acesso de gravação ou leitura ao recurso. Somente um thread de driver não ISR por vez pode obter acesso de gravação ao recurso. Quando um thread não ISR tem acesso de gravação, todos os acessos de leitura e gravação por outros threads não ISR devem aguardar até que o titular do acesso de gravação libere o bloqueio. No entanto, se um thread não ISR tiver acesso de leitura, outros threads não ISR poderão adquirir simultaneamente acesso de leitura.

Inicialize e use esse tipo de bloqueio para recursos acessados com frequência para leitura e acessados com pouca frequência para gravação.

Depois que o acesso ao recurso for concluído, o driver chamará o Função NdisReleaseReadWriteLock .

Cada bloqueio que um driver inicializa faz um dos seguintes procedimentos:

  • Protege um conjunto discreto de recursos compartilhados contra acesso simultâneo de gravação e leitura por threads de driver que são executados no IRQL <= DISPATCH_LEVEL.
  • Expõe um conjunto discreto de recursos compartilhados para acesso de leitura simultâneo por threads de driver executados no IRQL <= DISPATCH_LEVEL.
Os chamadores de NdisInitializeReadWriteLock podem ser executados em qualquer IRQL. Normalmente, um chamador está em execução em IRQL = PASSIVE_LEVEL durante a inicialização.

Requisitos

Requisito Valor
Cliente mínimo com suporte Preterido para drivers NDIS 6.20 e posteriores, que devem usar NdisAllocateRWLock em vez de NdisInitializeReadWriteLock. Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte NdisInitializeReadWriteLock (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte NdisInitializeReadWriteLock (NDIS 5.1)) no Windows XP.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
DLL Ndis.sys
IRQL Qualquer nível (consulte a seção Comentários)

Confira também

NdisAcquireReadWriteLock

NdisReleaseReadWriteLock