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:

  • OID_PNP_CAPABILITIES

    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:

    OID_PNP_ENABLE_WAKE_UP

    OID_PNP_ADD_WAKE_UP_PATTERN

    OID_PNP_REMOVE_WAKE_UP_PATTERN

    OID_PNP_WAKE_UP_PATTERN_LIST

    OID_PNP_WAKE_UP_ERROR

    OID_PNP_WAKE_UP_OK

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.