FILTER_DIRECT_OID_REQUEST função de retorno de chamada (ndis.h)

O NDIS chama a função FilterDirectOidRequest de um driver de filtro para processar uma solicitação OID direta associada ao módulo de filtro especificado.

Nota Você deve declarar a função usando o tipo FILTER_DIRECT_OID_REQUEST . Para obter mais informações, consulte a seção Exemplos a seguir.
 

Sintaxe

FILTER_DIRECT_OID_REQUEST FilterDirectOidRequest;

NDIS_STATUS FilterDirectOidRequest(
  [in] NDIS_HANDLE FilterModuleContext,
  [in] PNDIS_OID_REQUEST OidRequest
)
{...}

Parâmetros

[in] FilterModuleContext

Um identificador para a área de contexto do módulo de filtro que é o destino dessa solicitação. O driver de filtro criou e inicializou essa área de contexto na função FilterAttach .

[in] OidRequest

Um ponteiro para uma estrutura NDIS_OID_REQUEST que especifica a operação solicitada, incluindo o código OID_ Xx . A estrutura pode especificar uma solicitação de consulta ou uma solicitação definida

Retornar valor

FilterDirectOidRequest retorna um dos seguintes valores de status:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
FilterDirectOidRequest concluiu com êxito a consulta do driver de filtro ou a operação de definição para este módulo de filtro.
NDIS_STATUS_PENDING
O driver de filtro concluirá a solicitação de forma assíncrona. Depois que o driver concluir a solicitação, ele deverá chamar o Função NdisFDirectOidRequestComplete para informar ao NDIS que a solicitação foi concluída.
NDIS_STATUS_INVALID_OID
A solicitação especificada por OidRequest era inválida ou não reconhecida.
NDIS_STATUS_NOT_SUPPORTED
FilterDirectOidRequest não dá suporte ao OID; o OID é opcional.
NDIS_STATUS_BUFFER_TOO_SHORT
O buffer que o OidRequest forneceu era muito pequeno para armazenar os dados solicitados.
NDIS_STATUS_INVALID_LENGTH
Para uma operação de consulta, o membro InformationBufferLength da estrutura NDIS_OID_REQUEST não corresponde ao comprimento exigido pelo OID fornecido. FilterDirectOidRequest retornou o tamanho do buffer necessário, em bytes, no membro BytesNeeded da estrutura NDIS_OID_REQUEST.
NDIS_STATUS_INVALID_DATA
Para uma operação de conjunto, os dados fornecidos no membro InformationBuffer da estrutura NDIS_OID_REQUEST eram inválidos para o OID fornecido.
NDIS_STATUS_NOT_ACCEPTED
FilterDirectOidRequest tentou coletar as informações solicitadas, mas não teve êxito.
NDIS_STATUS_RESOURCES
Falha em FilterDirectOidRequest devido a recursos insuficientes.
NDIS_STATUS_FAILURE
N um dos valores retornados anteriores se aplica. O driver de filtro deve chamar a função NdisWriteErrorLogEntry com parâmetros que especificam o motivo da falha.

Comentários

FilterDirectOidRequest é uma função opcional. Se um driver de filtro não usar solicitações OID diretas, ele poderá definir o ponto de entrada dessa função como NULL quando chamar a função NdisFRegisterFilterDriver . Se um driver de filtro definir umFunção FilterDirectOidRequestComplete, ela deve fornecer a função FilterDirectOidRequest.

O NDIS chama a função FilterDirectOidRequest do driver de filtro para processar solicitações OID diretas originadas por drivers sobrepostos. Os drivers de filtro podem encaminhar essas solicitações para drivers subjacentes chamando a função NdisFDirectOidRequest . Como opção, um driver de filtro também pode concluir uma solicitação imediatamente sem encaminhar a solicitação.

Antes que o driver chame NdisFDirectOidRequest, o driver deve alocar uma estrutura NDIS_OID_REQUEST e transferir as informações de solicitação para a nova estrutura chamando o Função NdisAllocateCloneOidRequest .

Para concluir uma solicitação de forma síncrona, o driver de filtro retorna NDIS_STATUS_SUCCESS ou uma falha status. Se o driver retornar NDIS_STATUS_PENDING, ele deverá chamar o Função NdisFDirectOidRequestComplete para informar ao NDIS que a solicitação foi concluída.

Para uma operação de consulta, FilterDirectOidRequest retorna as informações solicitadas no membro InformationBuffer e define a variável no membro BytesWritten da estrutura NDIS_OID_REQUEST para a quantidade de informações retornadas. Os drivers subjacentes fazem isso se o driver de filtro passou a solicitação com NdisFDirectOidRequest.

Para uma operação de conjunto , FilterDirectOidRequest pode usar os dados no membro InformationBuffer da estrutura NDIS_OID_REQUEST para definir as informações necessárias para o OID fornecido. Nesse caso, FilterDirectOidRequest define a variável em BytesRead como a quantidade dos dados fornecidos que ele usou. Os drivers subjacentes definem BytesRead dessa forma se o driver de filtro passou a solicitação com NdisFDirectOidRequest.

O NDIS não serializa as solicitações que envia para FilterDirectOidRequest com outras solicitações OID. O driver de filtro deve ser capaz de lidar com várias chamadas para FilterDirectOidRequest quando outras solicitações que são enviadas para FilterOidRequest ou FilterDirectOidRequest estão pendentes.

O NDIS chama FilterDirectOidRequest em IRQL <= DISPATCH_LEVEL.

Exemplos

Para definir uma função FilterDirectOidRequest , primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda a Análise de Código para Drivers, SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação a encontrar erros e é um requisito para gravar drivers para o sistema operacional Windows.

Por exemplo, para definir uma função FilterDirectOidRequest chamada "MyDirectOidRequest", use o tipo FILTER_DIRECT_OID_REQUEST conforme mostrado neste exemplo de código:

FILTER_DIRECT_OID_REQUEST MyDirectOidRequest;

Em seguida, implemente sua função da seguinte maneira:

_Use_decl_annotations_
NDIS_STATUS
 MyDirectOidRequest(
    NDIS_HANDLE  FilterModuleContext,
    PNDIS_OID_REQUEST  OidRequest
    )
  {...}

O tipo de função FILTER_DIRECT_OID_REQUEST é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função FILTER_DIRECT_OID_REQUEST no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.

Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.1 e posterior.
Plataforma de Destino Windows
Cabeçalho ndis.h (inclua Ndis.h)
IRQL <= DISPATCH_LEVEL

Confira também

FilterAttach

FilterDirectOidRequestComplete

FilterOidRequest

NDIS_OID_REQUEST

NdisAllocateCloneOidRequest

NdisFDirectOidRequest

NdisFDirectOidRequestComplete

NdisWriteErrorLogEntry