Como lidar com consultas e conjuntos OID_PNP_Xxx
A miniporta virtual de um driver intermediário deve exportar a função MiniportOidRequest. O NDIS chama a função MiniportOidRequest do driver intermediário quando um driver sobreposto que está vinculado à miniporta virtual do driver intermediário chama NdisOidRequest para consultar ou definir objetos de informação (OID_Xxx). O NDIS também pode chamar MiniportOidRequest em seu próprio nome. Para obter mais informações sobre a manipulação de drivers de miniporta de conjuntos e consultas para objetos de informação, consulte Obter e definir informações de driver de miniporta e Suporte NDIS para WMI.
O driver intermediário deve reter informações sobre os recursos dos adaptadores de miniporta subjacentes que ele recebe na função ProtocolBindAdapterEx. Se o adaptador de miniporta não reconhecer o gerenciamento de energia, o NDIS definirá o membro PowerManagementCapabilities de NDIS_BIND_PARAMETERS como NULL.
O driver intermediário pode consultar ou definir um OID_Xxx que é mantido pelo driver de miniporta subjacente. Ele faz isso com NdisOidRequest (se o driver intermediário tiver uma borda inferior sem conexão) ou com NdisCoOidRequest (se o driver intermediário tiver uma borda inferior orientada à conexão).
Um driver intermediário deve lidar com consultas e conjuntos da seguinte maneira:
-
Em resposta a essa consulta OID, os drivers intermediários devem relatar os recursos PnP dos adaptadores de miniporta física subjacentes. Os adaptadores de miniporta para dispositivos físicos não recebem essa consulta OID.
O driver intermediário recebe os recursos PnP dos adaptadores de miniporta subjacente nos parâmetros de ligação. Ele deve passá-los aos drivers sobrepostos, conforme adequado à utilização pretendida do driver intermédio. Drivers intermediários e drivers de miniporta relatam recursos PnP em atributos de adaptador de miniporta. O driver intermediário não emite solicitações de OID_PNP_CAPABILITIES para o driver de miniporta subjacente. Se o adaptador de miniporta subjacente reconhecer o gerenciamento de energia, na estrutura NDIS_PM_WAKE_UP_CAPABILITIES nos atributos de miniporta virtual, o driver intermediário deverá especificar um estado de energia do dispositivo de NdisDeviceStateUnspecified para cada recurso de ativação:
- MinMagicPacketWakeUp
- MinPatternWakeUp
- MinLinkChangeWakeUp
Essa configuração indica que o driver intermediário reconhece o gerenciamento de energia, mas não pode ativar o sistema.
OID_PNP_QUERY_POWER e OID_PNP_SET_POWER
O driver intermediário deve sempre retornar NDIS_STATUS_SUCCESS para uma consulta de OID_PNP_QUERY_POWER ou para um conjunto de OID_PNP_SET_POWER. O driver intermediário nunca deve propagar nenhuma dessas solicitações OID para o driver de miniporta subjacente.
"OIDs de ativação"
Se uma NIC subjacente reconhecer o gerenciamento de energia, o driver intermediário deverá passar para o driver de miniporta subjacente (chamando NdisOidRequest ou NdisCoOidRequest) os seguintes OID_PNP_Xxx relacionados a eventos de ativação:
O driver intermediário também deve propagar a resposta do driver de miniporta subjacente para esses OIDs para os drivers de protocolo sobrepostos.
Se o adaptador de miniporta subjacente não reconhecer o gerenciamento de energia, o driver de miniporta definirá o membro PowerManagementCapabilities de NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES como NULL, e o NDIS definirá o membro PowerManagementCapabilities de NDIS_BIND_PARAMETERS como NULL.
Se um adaptador de miniporta subjacente não reconhecer o gerenciamento de energia, o driver intermediário deverá retornar NDIS_STATUS_NOT_SUPPORTED em resposta a uma consulta ou conjunto desses OIDs.