Partilhar via


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

O NDIS chama a função MiniportOidRequest de um driver de miniport para lidar com uma solicitação OID para consultar ou definir informações no driver.

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

Sintaxe

MINIPORT_OID_REQUEST MiniportOidRequest;

NDIS_STATUS MiniportOidRequest(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNDIS_OID_REQUEST OidRequest
)
{...}

Parâmetros

[in] MiniportAdapterContext

Um identificador para uma área de contexto que o driver de miniporto alocou em sua função MiniportInitializeEx. O driver de miniporto usa essa área de contexto para manter informações de estado para um adaptador de miniporto.

[in] OidRequest

Um ponteiro para uma estrutura de NDIS_OID_REQUEST que contém o buffer e o pacote de solicitação para o driver de miniporto a ser manipulado. Dependendo da solicitação, o driver retorna informações solicitadas na estrutura fornecida.

Valor de retorno

MiniportOidRequest pode retornar um dos seguintes valores de status:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
O driver de miniporto definiu ou obteve os dados conforme solicitado.
NDIS_STATUS_PENDING
O driver de miniporto concluirá a solicitação de forma assíncrona. Depois que o driver de miniporto tiver concluído todo o processamento, ele deverá chamar o função NdisMOidRequestComplete para informar ao NDIS que a solicitação está concluída.
NDIS_STATUS_INVALID_OID
A solicitação, especificada em OidRequest, é inválida ou não reconhecida.
NDIS_STATUS_NOT_SUPPORTED
A solicitação, especificada em OidRequest, é reconhecida, mas não tem suporte do driver de miniporto.
NDIS_STATUS_BUFFER_TOO_SHORT
O buffer, fornecido em OidRequest, é muito pequeno para conter os dados solicitados.
NDIS_STATUS_INVALID_LENGTH
O valor especificado no InformationBufferLength membro da estrutura de NDIS_OID_REQUEST em OidRequest está incorreto para o código de XXX OID_ especificado.
NDIS_STATUS_INVALID_DATA
Um ou mais dos parâmetros especificados para a solicitação em OidRequest são inválidos.
NDIS_STATUS_NOT_ACCEPTED
Depois de chamar o função MiniportDevicePnPEventNotify para indicar uma remoção surpresa, o NDIS chama a função MiniportHaltEx do driver. Se o driver receber solicitações OID antes das chamadas do NDIS MiniportHaltEx, ele deverá concluir imediatamente essas solicitações com um valor de status de NDIS_STATUS_NOT_ACCEPTED.
NDIS_STATUS_REQUEST_ABORTED
O driver de miniporto parou de processar a solicitação. Por exemplo, o NDIS chamou a função MiniportResetEx.
NDIS_STATUS_INDICATION_REQUIRED
O driver de miniporto fornecerá um status de conclusão OID com uma indicação de status subsequente. Um driver de miniporto não pode retornar NDIS_STATUS_INDICATION_REQUIRED a menos que o OID específico o permita. Para determinar se esse status é permitido, consulte a página de referência OID.. Para obter mais informações sobre NDIS_STATUS_INDICATION_REQUIRED, consulte NDIS_OID_REQUEST e NDIS_STATUS_INDICATION.

Observações

Um driver especifica o ponto de entrada MiniportOidRequest quando ele chama o função NdisMRegisterMiniportDriver.

O NDIS chama a função MiniportOidRequest em seu próprio nome ou em nome de um driver de protocolo associado que chamou a função NdisOidRequest. Os drivers de miniporto devem examinar a solicitação fornecida em OidRequest e executar a ação solicitada. Para obter mais informações sobre os OIDs que os drivers de miniporto manipulam, consulte OIDs do NDIS.

Observe que o NDIS não valida o conteúdo específico do OID em OidRequest. Portanto, o driver em si deve validar esse conteúdo. Se o driver determinar que o valor a ser definido está fora dos limites, ele deverá falhar na solicitação e retornar NDIS_STATUS_INVALID_DATA.

Se MiniportOidRequest retornar NDIS_STATUS_PENDING, o NDIS não chamará MiniportOidRequest com outra solicitação, para o adaptador de miniporto especificado em MiniportAdapterContext, até que a solicitação pendente seja concluída.

Observação A lógica de verificação de travamento do NDIS não redefinirá um driver de miniporto que não está respondendo se o driver de miniporto estiver aguardando no contexto da chamada MiniportOidRequest. Portanto, os drivers de miniporto não devem esperar que as operações de hardware sejam concluídas dentro do contexto da chamada MiniportOidRequest. Em vez disso, o driver pode retornar NDIS_STATUS_PENDING e enfileirar um item de trabalho.
 
Chamadas NDIS MiniportOidRequest em IRQL == PASSIVE_LEVEL .

exemplos de

Para definir uma função MiniportOidRequest, 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 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 MiniportOidRequest chamada "MyOidRequest", use o tipo MINIPORT_OID_REQUEST, conforme mostrado neste exemplo de código:

MINIPORT_OID_REQUEST MyOidRequest;

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

_Use_decl_annotations_
NDIS_STATUS
 MyOidRequest(
    NDIS_HANDLE  MiniportAdapterContext,
    PNDIS_OID_REQUEST  OidRequest
    )
  {...}

O tipo de função MINIPORT_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 MINIPORT_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
de cliente com suporte mínimo Com suporte no NDIS 6.0 e posterior.
da Plataforma de Destino Windows
cabeçalho ndis.h (inclua Ndis.h)
IRQL PASSIVE_LEVEL
regras de conformidade de DDI NdisOidComplete, NdisOidDoubleComplete, NdisOidDoubleRequest, NdisTimedOidComplete, WlanAssociation, WlanDisassociation, WlanTimedAssociation, WlanTimedConnectionRoaming, WlanTimedConnectRequest, WlanTimedLinkQuality, WlanTimedScan

Consulte também

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportResetEx

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisMOidRequestComplete

NdisMRegisterMiniportDriver

NdisOidRequest