Compartilhar via


Função NdisRequest (ndis.h)

Nota NDIS 5. x foi preterido e substituído pelo NDIS 6. x. Para obter o novo desenvolvimento de driver NDIS, consulte Drivers de rede começando com o Windows Vista. Para obter informações sobre como portar o NDIS 5. x drivers para NDIS 6. x, consulte Portabilidade de drivers NDIS 5.x para NDIS 6.0.

O NdisRequest encaminha uma solicitação para o driver subjacente que consulta os recursos ou status de sua NIC ou que ele defina o estado de sua NIC.

Sintaxe

void NdisRequest(
  [out] PNDIS_STATUS  Status,
  [in]  NDIS_HANDLE   NdisBindingHandle,
  [in]  PNDIS_REQUEST NdisRequest
);

Parâmetros

[out] Status

Ponteiro para uma variável fornecida pelo chamador que é definida no retorno dessa função. O driver subjacente determina qual NDIS_STATUS_XXX é retornado, mas geralmente é um dos seguintes valores:

  • NDIS_STATUS_SUCCESS
    A operação solicitada foi concluída com êxito.

  • NDIS_STATUS_PENDING
    A solicitação está sendo tratada de forma assíncrona e a função ProtocolRequestComplete do chamador será chamada quando for concluída.

  • NDIS_STATUS_INVALID_OID
    O código OID_XXX especificado no membro Oid do buffer estruturado por NDIS_REQUEST em NdisRequest é 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_REQUEST em NdisRequest não corresponde aos requisitos para o 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 NdisRequest.

  • NDIS_STATUS_INVALID_DATA
    Os dados fornecidos no InformationBuffer na estrutura de NDIS_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 retorno 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 sua NIC, mas falhou com o netcard. 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 um fechamento está em andamento.

  • NDIS_STATUS_RESET_IN_PROGRESS
    O driver NIC subjacente não pode atender à solicitação no momento porque está redefinindo o netcard no momento. A função ProtocolStatus 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.

[in] NdisBindingHandle

Especifica o identificador retornado por NdisOpenAdapter que identifica a NIC de destino ou o adaptador virtual do driver mais baixo ao qual o chamador está associado.

[in] NdisRequest

Ponteiro para uma estrutura em buffer que especifica a operação solicitada com um determinado código XXX OID_ para uma consulta ou um conjunto.

Retornar valor

Nenhum

Comentários

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

Para chamadores em camadas acima de um driver NDIS intermediário, o NdisRequest encaminha uma solicitação para o driver mais baixo que retorna informações sobre seus próprios recursos ou direciona esse driver para lidar com funcionalidades específicas de maneira determinada pelo chamador. Se o driver mais baixo for um driver intermediário do NDIS, ele poderá chamar NdisRequest com uma solicitação específica do OID antes de concluir a solicitação originalmente enviada pelo protocolo de nível superior.

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

NDIS_STATUS_INVALID_OID

NDIS_STATUS_INVALID_LENGTH

NDIS_STATUS_BUFFER_TOO_SHORT

NDIS_STATUS_INVALID_DATA

NDIS_STATUS_RESOURCES

NDIS_STATUS_RESET_IN_PROGRESS

Ou seja, um driver pode modificar o pacote em NdisRequest adequadamente para corrigir o código OID_XXX e/ou o tamanho ou o conteúdo do buffer no InformationBuffer e reenviar o pacote de solicitação para NdisRequest. O mesmo pacote poderá ser atendido na ressubmissão para NdisRequest 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 Identificadores de objeto NDIS.

  • Plataforma de destino: Universal
  • Versão: não há suporte para drivers NDIS 6.0 no Windows Vista. Em vez disso, use NdisOidRequest. Com suporte para drivers NDIS 5.1 no Windows Vista e windows XP.

Requisitos

Requisito Valor
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

Confira também