Registrando funções de manipulador de suspensão seletiva do NDIS

Se um driver de miniporta der suporte à suspensão seletiva do NDIS, o NDIS notificará o driver de que o adaptador de rede subjacente ficou ocioso. O driver de miniporto deve fornecer as seguintes funções para lidar com essas notificações ociosas:

MiniportIdleNotification
O NDIS chama a função de manipulador MiniportIdleNotification para notificar o driver de miniporto de que o adaptador de rede ficou ocioso. O driver de miniporta lida com a notificação ociosa determinando 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 (pacote de solicitação de E/S) para uma solicitação ociosa USB (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) para o driver de ônibus USB subjacente. Por meio do processamento desse IRP, o driver de miniporto é notificado de que o adaptador está ocioso e pode ser transferido para um estado de baixa potência.

MiniportCancelIdleNotification
O NDIS chama a função de manipulador MiniportCancelIdleNotification para cancelar a notificação ociosa pendente. Quando essa função é chamada, o driver de miniporta cancela todos os IRPs específicos do barramento que ele pode ter emitido anteriormente para a notificação ociosa.

Por exemplo, quando MiniportCancelIdleNotification é chamado, o miniporto USB deve cancelar o IRP de solicitação ociosa USB emitida anteriormente. Quando o IRP é cancelado, o driver de miniporta é notificado de que o adaptador agora pode ser transferido para um estado de energia total.

Quando a função DriverEntry do driver de miniporto é chamada, o driver registra suas funções de manipulador de suspensão seletiva do NDIS seguindo estas etapas:

  1. O driver de miniporto deve definir o membro SetOptionsHandler da estrutura NDIS_MINIPORT_DRIVER_CHARACTERISTICS para o ponto de entrada para a função MiniportSetOptions do driver. O driver chama NdisMRegisterMiniportDriver para registrar sua estrutura de NDIS_MINIPORT_DRIVER_CHARACTERISTICS com o NDIS.

  2. O NDIS chama a função MiniportSetOptions no contexto da chamada para NdisMRegisterMiniportDriver.

    Quando MiniportSetOptions é chamado, o driver de miniporta inicializa uma estrutura NDIS_MINIPORT_SS_CHARACTERISTICS com ponteiros para as funções do manipulador. Em seguida, o driver de miniporto chama NdisSetOptionalHandlers e define o parâmetro OptionalHandlers como um ponteiro para a estrutura NDIS_MINIPORT_SS_CHARACTERISTICS .

Para obter mais informações sobre como lidar com notificações ociosas para suspensão seletiva do NDIS, consulte Notificações ociosas de suspensão seletiva do NDIS.