Partilhar via


Função NdisDirectOidRequest (ndis.h)

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

Sintaxe

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

Parâmetros

[in] NdisBindingHandle

O identificador que a função NdisOpenAdapterEx retorna que identifica o adaptador de miniporto de destino na associação.

[in] OidRequest

Um ponteiro para uma estrutura de 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.

Valor de retorno

O driver subjacente determina qual NDIS_STATUS_código xxxNdisDirectOidRequest 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 ProtocolDirectOidRequestComplete quando a solicitação for concluída.
NDIS_STATUS_INVALID_OID
O código OID_xxx especificado no Oid membro do buffer estruturado NDIS_OID_REQUESTem OidRequest era inválido ou sem suporte pelo driver subjacente.
NDIS_STATUS_INVALID_LENGTH ou NDIS_STATUS_BUFFER_TOO_SHORT
O valor especificado no InformationBufferLength membro do buffer estruturado em NDIS_OID_REQUEST OidRequest não correspondeu aos requisitos para o código deXxx OID_ fornecido. Se o buffer de informações for muito pequeno, o membro BytesNeeded contém o valor correto para InformationBufferLength no retorno de NdisDirectOidRequest.
NDIS_STATUS_INVALID_DATA
Os dados fornecidos no InformationBuffer na estrutura de NDIS_OID_REQUEST fornecida eram inválidos para o código deXxx OID_ fornecido.
NDIS_STATUS_NOT_SUPPORTED ou NDIS_STATUS_NOT_RECOGNIZED
O driver subjacente não dá suporte à operação solicitada. Para NdisDirectOidRequest, o NDIS também poderá retornar esse status se o driver de chamada não tiver registrado um função ProtocolDirectOidRequestComplete.
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 teve êxito, 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, normalmente 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 normalmente é um padrão não específico, retornado quando nenhum dos valores NDIS_STATUS_xxx mais específicos fez com que o driver subjacente falhasse na solicitação.

Observações

A função NdisDirectOidRequest não pode ser usada para solicitações OID gerais. Para solicitações OID gerais, use a função NdisOidRequest. NdisDirectOidRequest só pode ser usado para OIDs compatíveis com o NDIS para uso com a interface OID direta. Por exemplo, os seguintes OIDs podem ser usados:

OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA

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

NdisDirectOidRequest encaminha uma solicitação para drivers subjacentes ou manipula a solicitação em si. Se o driver inferior seguinte for um driver intermediário do NDIS, o driver intermediário poderá chamar NdisDirectOidRequest com uma solicitação específica de OID antes de concluir a solicitação que o driver de nível superior enviou originalmente.

Um driver que chama NdisDirectOidRequest deve registrar o função ProtocolDirectOidRequestComplete.

A interface de solicitação OID direta é semelhante à interface de solicitação OID geral. Para obter mais informações sobre a emissão de solicitações gerais, consulte NdisOidRequest.

Observação Embora as solicitações OID Diretas geralmente não sejam serializadas, o próprio NDIS ainda pode aguardar uma solicitação com NDIS_STATUS_PENDING e enfileirar a solicitação para conclusão posterior. Por exemplo, o NDIS pode aguardar e enfileirar uma solicitação OID Direta enviada a um miniporto de suspensão seletiva que está atualmente em um estado de baixa potência. Protocolos e filtros devem estar preparados para lidar com um código NDIS_STATUS_PENDING, mesmo que o miniporto subjacente conclua a solicitação de forma síncrona.
 

Requisitos

Requisito Valor
de cliente com suporte mínimo Com suporte no NDIS 6.1 e posterior.
da Plataforma de Destino Área de trabalho
cabeçalho ndis.h (inclua Ndis.h)
biblioteca Ndis.lib
IRQL <= DISPATCH_LEVEL

Consulte também

NDIS_OID_REQUEST

NdisOidRequest

NdisOpenAdapterEx

OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA ProtocolDirectOidRequestComplete

ProtocolStatusEx