Megosztás:


Szűrőmodul szüneteltetése

A futó szűrőmodul szüneteltetéséhez az NDIS meghívja a szűrőillesztő FilterPause függvényét. A szűrőmodul a FilterPause függvényben a végrehajtás kezdetén adja meg a Szüneteltetés állapotát.

Az NDIS egy driver stack szüneteltetésére irányuló Plug and Play művelet részeként szünetelteti a szűrőmodult. Az illesztőprogram-verem szüneteltetésének áttekintését az Illesztőprogram-verem szüneteltetésecímű cikkben tekintheti meg.

A szüneteltetési állapotban lévő szűrőmodul nevében a szűrőillesztő:

  • Nem keletkezhet új fogadási jelzés.

    További információ a küldési és fogadási műveletekről: Szűrőmodul – Küldési és fogadási műveletek.

  • Ha vannak olyan fogadási műveletek, amelyeket a szűrőillesztő kezdeményezett, és amelyeket az NDIS nem fejezett be, akkor a szűrőillesztőnek várnia kell, amíg az NDIS befejezi az ilyen műveleteket. A szüneteltetési művelet nem fejeződik be, amíg az NDIS nem hívja meg a FilterReturnNetBufferLists függvényt az összes ilyen függőben lévő fogadási jelzéshez.

  • Azonnal vissza kell adni minden olyan függőben lévő fogadási jelet, amelyet az alapul szolgáló illesztőprogramok az NDIS-hez irányítottak. A szüneteltetési művelet addig nem fejeződik be, amíg az illesztőprogram nem hívja meg a NdisFReturnNetBufferLists függvényt az ilyen megmaradt fogadási jelzésekhez. Az ilyen késlekedő fogadási jelek akkor fordulhatnak elő, ha az illesztőprogram sorba állítja a mögöttes illesztőprogramoktól kapott puffereket.

  • Új fogadási visszajelzéseket kell visszaadni az alapjául szolgáló meghajtók esetén, és ezt azonnal meg kell tenni az NDIS-hez a NdisFReturnNetBufferLists függvény meghívásával. Szükség esetén az illesztőprogram átmásolhatja a jelzéseket, és várólistára helyezheti azokat, mielőtt visszaadja azokat.

    Megjegyzés: azNdisFReturnNetBufferLists nem hívható meg olyan NBL-ek esetén, amelyek a megfelelő FilterReceiveNetBufferLists hívás során a NDIS_RECEIVE_FLAGS_RESOURCES jelzővel lettek megjelölve. Az ilyen NBL-eket a rendszer szinkron módon adja vissza az NDIS-nek a FilterReceiveNetBufferLists rutinból való visszatéréssel.

  • Ne küldjön új küldési kéréseket.

  • Ha vannak olyan küldési műveletek, amelyeket a szűrőillesztő kezdeményezett, és az NDIS nem fejezett be, a szűrőillesztőnek meg kell várnia, amíg az NDIS végrehajtja az ilyen műveleteket. A szüneteltetési művelet addig nem fejeződik be, amíg az NDIS nem hívja meg a FilterSendNetBufferListsComplete függvényt az összes ilyen függőben lévő küldési kéréshez.

  • A FilterSendNetBufferLists függvénynek küldött összes új küldési kérést azonnal vissza kell küldenie a NdisFSendNetBufferListsComplete függvény meghívásával. A szűrőillesztőnek minden NET_BUFFER_LIST struktúrában az Állapot tagot NDIS_STATUS_PAUSED értékre kell beállítania.

  • Állapotjelzéseket adhat meg a NdisFIndicateStatus függvénnyel.

    Az állapotjelzőkről további információt a Szűrőmodul állapotjelzőicímű témakörben talál.

  • A FilterStatusfüggvényállapotjelzéseit kell kezelnie.

  • Az OID-kéréseket a FilterOidRequest függvényben kell kezelnie.

    További információ az OID-kérelmekről: Szűrőmodul OID-kérelmei.

  • Kezdeményezhet OID-kéréseket.

  • Nem szabadíthatja fel az illesztőprogram által a csatolási művelet során lefoglalt erőforrásokat.

  • Szükség esetén le kell mondania az időzítőket a küldési és fogadási műveletek leállításához.

    Az időzítőkkel kapcsolatos további információkért lásd az NDIS 6.0 Időzítőszolgáltatások.

Miután a szűrőillesztő sikeresen szüneteltette a küldési és fogadási műveleteket, végre kell hajtania a szüneteltetési műveletet. A szűrőillesztő visszatérve az NDIS_STATUS_SUCCESS-szal vagy az NDIS_STATUS_PENDING-del szinkron módon vagy aszinkron módon hajthatja végre a szüneteltetési műveletet a FilterPausehelyen.

Ha az illesztőprogram NDIS_STATUS_PENDING ad vissza, a szüneteltetési művelet befejezése után meg kell hívnia a NdisFPauseComplete függvényt.

A szüneteltetett állapotú szűrőmodul nevében a szűrőillesztő a következőket hajtja végre:

  • Ne keletkezzenek új fogadási jelek.

  • Azonnal vissza kell adni az új fogadási jelzéseket az NDIS-nek a NdisFReturnNetBufferLists függvény meghívásával, jelezve, hogy a háttérben meghúzódó tényezők származnak. Szükség esetén az illesztőprogram átmásolhatja a jelzéseket, és várólistára helyezheti azokat, mielőtt visszaadja azokat.

  • Ne küldjön új küldési kéréseket.

  • A FilterSendNetBufferLists függvénynek küldött összes új küldési kérést azonnal vissza kell küldenie a NdisFSendNetBufferListsComplete függvény meghívásával. A szűrőillesztőnek minden NET_BUFFER_LIST struktúrában az Állapot tagot NDIS_STATUS_PAUSED értékre kell beállítania.

  • Állapotjelzéseket adhat meg a NdisFIndicateStatus függvénnyel.

  • A FilterStatusfüggvényállapotjelzéseit kell kezelnie.

  • Az OID-kéréseket a FilterOidRequest függvényben kell kezelnie.

  • Kezdeményezhet OID-kéréseket.

Az NDIS nem kezdeményez más Plug and Play-műveleteket, például csatolási, leválasztási vagy újraindítási kéréseket, míg a szűrőillesztő szüneteltetési állapotban van. Az NDIS akkor kezdeményezhet leválasztási vagy újraindítási kéréseket, ha a szűrőillesztő szüneteltetett állapotban van. A szűrőmodulok leválasztásáról további információt Szűrőmodul leválasztásacímű témakörben talál. További információ a szűrőmodulok újraindításáról: Szűrőmodul indítása.