Visão geral da suspensão seletiva do NDIS

A partir do NDIS 6.30, a interface de suspensão seletiva do NDIS permite que o NDIS suspenda um adaptador de rede ocioso fazendo a transição do adaptador para um estado de baixa potência. Isso permite que o sistema reduza a CPU e a sobrecarga de energia do adaptador.

A suspensão seletiva do NDIS é especialmente útil para adaptadores de rede baseados na interface USB v1.1 e v2.0. Esses adaptadores são sondados continuamente para pacotes recebidos, independentemente de estarem ativos ou ociosos. Ao suspender adaptadores USB ociosos, a sobrecarga da CPU pode ser reduzida em até 10%.

A suspensão seletiva do NDIS baseia-se na tecnologia de suspensão seletiva usb . No entanto, a suspensão seletiva do NDIS foi projetada para ser independente de ônibus. Dessa forma, os IRPs (pacotes de solicitação de E/S) independentes de barramento para suspensão seletiva são emitidos pelo NDIS. Isso torna o motorista de miniporto responsável por emitir todos os IRPs necessários para suspensão seletiva em um ônibus específico. Por exemplo, os drivers de miniporta para adaptadores de rede USB emitem o IRP (solicitação ociosa) USB específica do barramento (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) para o driver de barramento USB durante uma operação de suspensão seletiva.

O NDIS e o driver de miniporta participam da suspensão seletiva do NDIS da seguinte maneira:

  1. Se um driver de miniporta tiver registrado seu suporte para suspensão seletiva do NDIS, o NDIS monitorará a atividade de E/S do adaptador de rede. A atividade de E/S inclui indicações de pacote de recebimento, conclusões de envio de pacotes e solicitações OID que são tratadas pelo driver de miniporto.

  2. O NDIS considera o adaptador de rede ocioso se estiver inativo por mais tempo do que um período de tempo limite ocioso especificado. Quando isso acontece, o NDIS inicia uma operação de suspensão seletiva emitindo uma notificação ociosa para o driver de miniporto para fazer a transição do adaptador de rede para um estado de baixa potência.

    Observação

    O comprimento do período de tempo limite ocioso é especificado pelo valor do palavra-chave INF padronizado *SSIdleTimeout. Para obter mais informações sobre esse palavra-chave, consulte Palavras-chave INF padronizadas para suspensão seletiva do NDIS.  

    Para obter mais informações sobre como o NDIS determina que um adaptador de rede está ocioso, consulte Como o NDIS detecta adaptadores de rede ociosos.

  3. O NDIS emite a notificação ociosa para o driver de miniport ao chamar a função de manipulador MiniportIdleNotification do driver. Quando essa função é chamada, o driver de miniporto determina se o adaptador de rede pode fazer a transição para um estado de baixa potência. O motorista do miniporta executa essa determinação de maneira específica do ônibus.

    Por exemplo, um driver de miniporto USB determina se o adaptador de rede pode fazer a transição para um estado de baixa potência emitindo um IRP de solicitação ociosa USB (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) para o driver de barramento USB subjacente. Isso informa ao driver de barramento que o adaptador de rede está ocioso e confirma se o adaptador pode ser transferido para um estado de baixa potência.

    Observação

    O driver de miniporta deve especificar um retorno de chamada e uma rotina de conclusão para o IRP de solicitação ociosa usb.

    Para obter mais informações sobre como um driver de miniporto lida com uma notificação ociosa, consulte Manipulando a notificação ociosa de suspensão seletiva do NDIS.

  4. Depois que o driver de miniporto confirmar que o adaptador de rede pode fazer a transição para um estado de baixa potência, ele chamará NdisMIdleNotificationConfirm. Nessa chamada, o driver de miniporto especifica o estado de energia mais baixo para o qual o adaptador de rede pode fazer a transição.

  5. Quando NdisMIdleNotificationConfirm é chamado, o NDIS emite solicitações OID para o driver de miniport para preparar o adaptador para a transição para um estado de baixa potência. O NDIS também emite IRPs para o driver de ônibus subjacente para definir o adaptador como um estado de baixa potência.

  6. Depois que o adaptador de rede for suspenso, ele permanecerá em um estado de baixa energia até que a notificação ociosa pendente seja cancelada.

    O NDIS cancela a notificação ociosa pendente chamando a função de manipulador MiniportCancelIdleNotification do driver de miniport. O NDIS chamará essa função de manipulador se uma ou mais das seguintes condições forem verdadeiras:

    • O NDIS detecta solicitações de envio de pacotes ou solicitações OID que são emitidas para o driver de miniporta de drivers de protocolo ou filtros sobrepostos.

    • O adaptador de rede sinaliza um evento de ativação. Isso pode ocorrer quando o adaptador recebe um pacote ou detecta uma alteração em sua conexão de mídia status.

    Depois que o adaptador de rede for suspenso, o driver de miniporta também poderá concluir a notificação ociosa para retomar o adaptador para um estado de energia total. Os motivos para fazer isso são específicos para o design e os requisitos do driver e do adaptador.

    Para obter mais informações sobre como o NDIS cancela a notificação ociosa, consulte Cancelando a notificação ociosa de suspensão seletiva do NDIS.

    Para obter mais informações sobre como o driver de miniporto conclui a notificação ociosa, consulte Concluindo a notificação ociosa de suspensão seletiva do NDIS.

  7. Quando a função de manipulador MiniportCancelIdleNotification é chamada, o driver de miniporto determina se o adaptador de rede pode retomar para um estado de energia total. O driver também cancela todos os IRPs específicos do barramento que ele possa ter emitido anteriormente para a notificação ociosa.

    A determinação de que o adaptador de rede pode fazer a transição para um estado de energia total é específica do barramento. Por exemplo, quando MiniportCancelIdleNotification é chamado, o miniporto USB deve cancelar o IRP de solicitação ociosa USB emitida anteriormente. Assim que o driver USB cancelou o IRP, ele chama a rotina de conclusão do IRP para confirmar se o IRP foi cancelado e o adaptador de rede pode retomar para um estado de energia total. No contexto da rotina de conclusão, o driver de miniporto chama NdisMIdleNotificationComplete.

    Quando o miniporto determina que o adaptador de rede pode retomar para um estado de energia total, ele chama NdisMIdleNotificationComplete. Essa chamada notifica o NDIS de que a notificação ociosa foi concluída. O NDIS continua concluindo a operação de suspensão seletiva fazendo a transição do adaptador de rede para um estado de energia total.

  8. Quando NdisMIdleNotificationComplete é chamado, o NDIS emite solicitações OID para o driver de miniport para preparar o adaptador para a transição para um estado de energia total. O NDIS também emite IRPs para o driver de ônibus subjacente para definir o adaptador como um estado de energia total.

  9. Quando o adaptador de rede é retomado para um estado de energia total, a operação de suspensão seletiva é concluída. O NDIS retoma o monitoramento da atividade de E/S do adaptador de rede. Se o adaptador ficar inativo após outro período de tempo limite ocioso, o NDIS emitirá uma notificação ociosa para o driver de miniporta para suspender o adaptador de rede.