Compartilhar via


Acompanhamento do IRQL de despacho

Para melhorar o desempenho do sistema, algumas funções NDIS (por exemplo, a função MiniportSendNetBufferLists ) incluem um sinalizador de nível de expedição que indica o IRQL atual. O uso adequado do sinalizador de nível de despacho pode ajudar a evitar tentativas desnecessárias de definir o IRQL.

Há outros sinalizadores que controlam outros atributos, mas os nomes dos sinalizadores de nível de despacho são:

NDIS_SEND_FLAGS_DISPATCH_LEVEL

NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

NDIS_RETURN_FLAGS_DISPATCH_LEVEL

NDIS_RWL_AT_DISPATCH_LEVEL

O chamador deve determinar a configuração do sinalizador de nível de despacho a partir do IRQL atual conhecido, em vez de testar o IRQL. Por exemplo, você conhece o IRQL porque é uma característica fixa do design do driver ou o driver salvou o IRQL atual.

Se o IRQL atual conhecido for DISPATCH_LEVEL, o chamador deverá definir este sinalizador. Se o IRQL atual for desconhecido ou se o chamador não estiver em execução no DISPATCH_LEVEL, o chamador deverá limpar esse sinalizador. Se o chamador for NDIS, a função chamada deverá testar esse sinalizador para evitar alterar o IRQL.

Os drivers não devem testar o IRQL para determinar o valor do sinalizador de nível de expedição. O teste derrotaria a finalidade do sinalizador. Se necessário, a função chamada pode simplesmente fazer o teste em si. Como um driver determina se deve ou não definir a sinalização é uma questão deixada para o design do driver específico.