Gerando solicitações OID de um driver de protocolo NDIS

Para originar uma solicitação OID para drivers subjacentes, um protocolo chama a função NdisOidRequest .

A figura a seguir ilustra uma solicitação OID originada por um driver de protocolo.

Diagrama ilustrando uma solicitação OID originada por um driver de protocolo.

Depois que um driver de protocolo chama a função NdisOidRequest , o NDIS chama a função de solicitação do próximo driver subjacente. Para obter mais informações sobre como um driver de miniporto lida com solicitações OID, consulte Solicitações de OID para um adaptador. Para obter mais informações sobre como um driver de filtro lida com solicitações OID, consulte Filtrar solicitações OID do módulo.

Para concluir de forma síncrona, NdisOidRequest retorna NDIS_STATUS_SUCCESS ou um erro status. Para ser concluído de forma assíncrona, NdisOidRequest retorna NDIS_STATUS_PENDING.

Se NdisOidRequest retornar NDIS_STATUS_PENDING, o NDIS chamará a função ProtocolOidRequestComplete depois que os drivers subjacentes concluirem a solicitação OID. Nesse caso, o NDIS passa os resultados da solicitação no parâmetro OidRequest de ProtocolOidRequestComplete. O NDIS passa a status final da solicitação no parâmetro Status de ProtocolOidRequestComplete.

Se NdisOidRequest retornar NDIS_STATUS_SUCCESS, ele retornará os resultados de uma solicitação de consulta na estrutura NDIS_OID_REQUEST no parâmetro OidRequest . Nesse caso, o NDIS não chama a função ProtocolOidRequestComplete .

Para determinar quais informações foram tratadas com êxito por um driver subjacente, os drivers de protocolo que emitem solicitações OID devem marcar o valor no membro SupportedRevision na estrutura NDIS_OID_REQUEST após o retorno da solicitação OID. Para obter mais informações sobre informações de versão do NDIS, consulte Especificando informações de versão do NDIS.

Se o driver subjacente deve associar a solicitação OID a uma indicação de status subsequente, o driver de protocolo deverá definir o membro RequestId na estrutura NDIS_OID_REQUEST. Quando o driver subjacente faz uma indicação status, ele define o membro RequestId na estrutura NDIS_STATUS_INDICATION como o valor fornecido na solicitação OID.

Um driver pode chamar NdisOidRequest quando uma associação está no estado Reiniciando, Executando, Pausando ou Pausado .