Het voltooien van de inactieve melding voor selectieve onderbreking van NDIS

NDIS roept de MiniportIdleNotification handler-functie aan om het stuurprogramma op de hoogte te stellen dat de onderliggende netwerkadapter inactief lijkt te zijn. Raadpleeg voor meer informatie over deze operatie Afhandeling van de NDIS Selectieve Suspend Inactiviteitsmelding.

Nadat de niet-actieve melding is uitgegeven, voltooit het minipoortstuurprogramma de NDIS selectieve inactiviteitmelding onder de volgende voorwaarden:

  • NDIS annuleert de inactiviteitsmelding door de MiniportCancelIdleNotification handlerfunctie van het onderliggende miniportstuurprogramma aan te roepen.

  • Het minipoortstuurprogramma voltooit de inactieve melding zelf. De redenen hiervoor zijn specifiek voor het ontwerp en de vereisten van het stuurprogramma en de adapter. Het stuurprogramma kan bijvoorbeeld de idle melding voltooien als er activiteit gedetecteerd wordt op de netwerkadapter.

Notitie Het minipoortstuurprogramma kan de niet-actieve melding niet expliciet annuleren. Wanneer NDIS de inactieve melding annuleert, moet het minipoortstuurprogramma de melding voltooien zoals beschreven in deze sectie. Zie voor meer informatie annuleren van de NDIS Selective Suspend Idle-melding.

In beide gevallen moet het minipoortstuurprogramma de inactiviteitsmelding voltooien om de adapter terug te brengen naar een toestand van volledige stroomvoorziening. Als u de melding voor inactiviteit wilt voltooien, moet het minipoortstuurprogramma alle busspecifieke I/O-aanvraagpakketten (IRP's) annuleren die het mogelijk eerder heeft uitgegeven voor de niet-actieve melding. Ten slotte roept het stuurprogramma NdisMIdleNotificationComplete aan om NDIS op de hoogte te stellen dat de netwerkadapter kan worden overgezet naar een volledige energiestatus.

Het minipoortstuurprogramma voor een USB-netwerkadapter voert bijvoorbeeld een melding inactief uit door de volgende stappen uit te voeren:

  1. Het minipoortstuurprogramma annuleert de in behandeling zijnde USB-inactiviteitsaanvraag (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) IRP. Het miniport-stuurprogramma gaf eerder dit IRP uit aan het onderliggende USB-busstuurprogramma toen NDIS de MiniportIdleNotification functie aanriep. Het minipoortstuurprogramma annuleert deze IRP door IoCancelIrpaan te roepen.

  2. Wanneer het busstuurprogramma de IRP van de inactieve USB-aanvraag annuleert, wordt de voltooiingsroutine van het minipoortstuurprogramma voor de IRP aangeroepen. Deze aanroep informeert de bestuurder dat de IRP is voltooid en dat de netwerkadapter kan overschakelen naar een volledige energietoestand. Vanuit de context van de voltooiingsroutine roept het stuurprogramma NdisMIdleNotificationComplete aan om NDIS op de hoogte te stellen dat de netwerkadapter kan worden overgezet naar een volledige energiestatus.

    Zie Implementeren van een voltooiingsroutine voor USB-inactiviteitsverzoekenvoor meer informatie over het implementeren van een IRP-voltooiingsroutine voor USB-inactiviteit.

Opmerking Afhankelijk van de afhankelijkheden voor het annuleren van busspecifieke niet-actieve aanvragen, roept het minipoortstuurprogramma NdisMIdleNotificationComplete synchroon aan in de context van de aanroep naar MiniportCancelIdleNotification of asynchroon nadat MiniportCancelIdleNotification retourneert.

Nadat het minipoortstuurprogramma alle busspecifieke IRP's voor de idle-melding heeft geannuleerd, roept het NdisMIdleNotificationCompleteop. Deze aanroep meldt NDIS dat de niet-actieve melding is voltooid. NDIS voltooit vervolgens de selectieve onderbrekingsbewerking door de netwerkadapter over te schakelen naar een volledige energiestatus.

Wanneer NdisMIdleNotificationComplete wordt aangeroepen, voert NDIS de volgende stappen uit:

  1. NDIS stuurt IRP_MN_SET_POWER naar het onderliggende busstuurprogramma. Deze IRP vraagt het busstuurprogramma om de energiestatus van de netwerkadapter in te stellen op PowerDeviceD0.

  2. NDIS geeft een OID-setaanvraag (object-id) van OID_PNP_SET_POWER aan het minipoortstuurprogramma. In deze OID-aanvraag geeft NDIS aan dat de netwerkadapter nu overgaat naar een volledige energiestatus van NdisDeviceStateD0.

    Wanneer deze aanvraag voor de OID-set wordt verwerkt, bereidt het stuurprogramma de adapter voor op volledig vermogen. Dit omvat het herstellen van de ontvangst- en verzendengines naar dezelfde status die ze hadden vóór de overgang naar de status laag vermogen. Het stuurprogramma voltooit vervolgens de OID-aanvraag met NDIS_STATUS_SUCCESS.

In de volgende afbeelding ziet u de stappen die betrokken zijn wanneer de miniport-stuurprogramma een inactieve melding voltooit voor een USB-netwerkadapter.

Diagram met de stappen voor het voltooien van een niet-actieve melding voor een USB-netwerkadapter.

Notitie Wanneer het minipoortstuurprogramma een niet-actieve melding voltooit, mag het NdisMIdleNotificationConfirm niet aanroepen voor een niet-actieve melding die eerder is voltooid via een aanroep naar NdisMIdleNotificationComplete.