Solicitações OID do Driver de Protocolo CoNDIS

Os drivers de protocolo CoNDIS, sejam clientes ou gerenciadores de chamadas, podem consultar ou definir os parâmetros operacionais dos drivers de miniport e outros drivers de protocolo. Os drivers de protocolo CoNDIS também podem consultar ou definir informações em MCMs (gerenciadores de chamadas de miniport). Para obter mais informações sobre solicitações OID e MCMs, consulte Solicitações de OID do MCM do CoNDIS.

Para originar uma solicitação OID para um driver subjacente, um driver de protocolo chama a função NdisCoOidRequest e define o identificador af (família de endereços), no parâmetro NdisAfHandle , como NULL. Para originar uma solicitação OID para outro driver de protocolo CoNDIS, um driver de protocolo chama NdisCoOidRequest e fornece um identificador AF válido.

Depois que um driver de protocolo chama a função NdisCoOidRequest, o NDIS chama a função de solicitação OID do outro driver (um driver subjacente ou outro driver de protocolo CoNDIS). Para drivers de miniport, o NDIS chama a função MiniportCoOidRequest . Para os drivers de protocolo, o NDIS chama a função ProtocolCoOidRequest.

A figura a seguir ilustra uma solicitação OID direcionada a um driver de miniporto.

Diagrama ilustrando uma solicitação OID direcionada a um driver de miniporto.

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

Diagrama ilustrando uma solicitação OID direcionada a um driver de protocolo.

Para concluir de forma síncrona, NdisCoOidRequest retorna NDIS_STATUS_SUCCESS ou um status de erro. Para concluir o processamento de forma assíncrona, NdisCoOidRequest retorna NDIS_STATUS_PENDING.

Se NdisCoOidRequest retornar NDIS_STATUS_PENDING, o NDIS chamará a função ProtocolCoOidRequestComplete após o outro driver concluir a solicitação OID chamando a função NdisMCoOidRequestComplete ou NdisCoOidRequestComplete. Nesse caso, o NDIS passa os resultados da solicitação no parâmetro OidRequest de ProtocolCoOidRequestComplete. O NDIS passa o status final da solicitação no parâmetro Status de ProtocolCoOidRequestComplete.

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

Se um driver subjacente deve associar a solicitação OID a uma indicação de status subsequente, o driver de protocolo deverá definir os membros RequestId e RequestHandle na estrutura NDIS_OID_REQUEST. Se o driver subjacente fizer uma indicação de status, o driver definirá o membro RequestId na estrutura NDIS_STATUS_INDICATION como o valor do membro RequestId da estrutura NDIS_OID_REQUEST e o membro DestinationHandle na estrutura NDIS_STATUS_INDICATION para o valor do membro RequestHandle da estrutura NDIS_OID_REQUEST.

Um driver pode chamar NdisCoOidRequest quando uma associação estiver no estado Reiniciando, Executando, Pausando ou Pausado .