Função NdisOidRequest (ndis.h)

A função NdisOidRequest encaminha uma solicitação para os drivers subjacentes para consultar os recursos ou status de um adaptador ou definir o estado de um adaptador.

Sintaxe

NDIS_STATUS NdisOidRequest(
  [in] NDIS_HANDLE       NdisBindingHandle,
  [in] PNDIS_OID_REQUEST OidRequest
);

Parâmetros

[in] NdisBindingHandle

O identificador retornado pela função NdisOpenAdapterEx que identifica o adaptador de destino na associação.

[in] OidRequest

Um ponteiro para uma estrutura NDIS_OID_REQUEST que especifica a operação solicitada com um determinado código OID_XXX para consultar o status de um adaptador ou definir o estado de um adaptador.

Retornar valor

O driver subjacente determina quais NDIS_STATUS_ códigoXXXque NdisOidRequest retorna, mas geralmente é um dos seguintes valores:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
A operação de solicitação foi concluída com êxito.
NDIS_STATUS_PENDING
A solicitação está sendo tratada de forma assíncrona e o NDIS chamará o chamador Função ProtocolOidRequestComplete quando a solicitação é concluída.
NDIS_STATUS_INVALID_OID
O código OID_XXX especificado no membro Oid do buffer estruturado por NDIS_OID_REQUEST em OidRequest é inválido ou sem suporte pelo driver subjacente.
NDIS_STATUS_INVALID_LENGTH ou NDIS_STATUS_BUFFER_TOO_SHORT
O valor especificado no membro InformationBufferLength do buffer estruturado por NDIS_OID_REQUEST em OidRequest não corresponde aos requisitos do código OID_XXX fornecido. Se o buffer de informações for muito pequeno, o membro BytesNeeded conterá o valor correto para InformationBufferLength no retorno de NdisOidRequest.
NDIS_STATUS_INVALID_DATA
Os dados fornecidos no InformationBuffer na estrutura de NDIS_OID_REQUEST fornecida são inválidos para o código OID_XXX fornecido.
NDIS_STATUS_NOT_SUPPORTED ou NDIS_STATUS_NOT_RECOGNIZED
O driver subjacente não dá suporte à operação solicitada.
NDIS_STATUS_RESOURCES
A solicitação não pôde ser atendida devido a uma escassez de recursos. Normalmente, esse valor retornado indica que uma tentativa de alocar memória não foi bem-sucedida, mas não indica necessariamente que a mesma solicitação, enviada posteriormente, falhará pelo mesmo motivo.
NDIS_STATUS_NOT_ACCEPTED
O driver subjacente tentou a operação solicitada, geralmente um conjunto em uma NIC, mas falhou. Por exemplo, uma tentativa de definir muitos endereços multicast pode causar o retorno desse valor.
NDIS_STATUS_CLOSING ou NDIS_STATUS_CLOSING_INDICATING
O driver subjacente falhou na operação solicitada porque uma operação de fechamento está em andamento.
NDIS_STATUS_RESET_IN_PROGRESS
O driver de miniporto subjacente não pode atender à solicitação no momento porque está redefinindo a NIC afetada no momento. A função ProtocolStatusEx do chamador foi ou será chamada com NDIS_STATUS_RESET_START para indicar que uma redefinição está em andamento. Esse valor retornado não indica necessariamente que a mesma solicitação, enviada posteriormente, falhará pelo mesmo motivo.
NDIS_STATUS_FAILURE
Esse valor geralmente é um padrão não específico, retornado quando nenhum dos NDIS_STATUS_XXX mais específicos fez com que o driver subjacente falhasse na solicitação.

Comentários

Um driver de protocolo deve alocar memória suficiente para manter o buffer de informações associado ao OID especificado. O driver também deve alocar e configurar o buffer em OidRequest antes de chamar NdisOidRequest. Ambos os buffers devem ser alocados do pool nãopagado porque o driver subjacente é executado no IRQL gerado durante o processamento da solicitação.

NdisOidRequest encaminha uma solicitação para drivers subjacentes ou manipula a solicitação em si.. Se o driver mais baixo for um driver intermediário do NDIS, ele poderá chamar NdisOidRequest com uma solicitação específica do OID antes de concluir a solicitação originalmente enviada pelo driver de nível superior.

Alguns erros retornados são recuperáveis, incluindo o seguinte:

Ou seja, um driver pode modificar o pacote em OidRequest adequadamente para corrigir o código OID_XXX ou o tamanho ou conteúdo do buffer no InformationBuffer e reenviar o pacote de solicitação para NdisOidRequest. O mesmo pacote poderá ser atendido na ressubmissão para NdisOidRequest se a chamada original indicasse uma redefinição em andamento ou que uma escassez de recursos, que poderia ser temporária, impedisse que essa solicitação fosse realizada.

A biblioteca NDIS mantém associações para drivers de miniportos subjacentes. O NDIS poderá retornar informações para consultas específicas de associação se um determinado OID estiver associado a um tipo médio definido pelo sistema para o qual o sistema fornece uma biblioteca de filtros.

Para obter mais informações sobre os OIDs gerais e específicos da mídia e seus respectivos buffers de informações associados, consulte OIDs do NDIS.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Área de Trabalho
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL <= DISPATCH_LEVEL
Regras de conformidade de DDI Irql_OID_Function(ndis)

Confira também

NDIS_OID_REQUEST

NdisOpenAdapterEx

ProtocolOidRequestComplete

ProtocolStatusEx