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 |