Megosztás:


Fájlrendszerszűrő ellenőrzése

Használat ellenőrzése

A Filter Verifier a következő használatot ellenőrzi egy miniszűrő-illesztőprogramban:

  • Paraméterek és hívási környezet helyes használata
  • Az előműködtetési és a postoperációs visszahívási rutinok visszatérési értékeinek javítása
  • A visszahívási adatok paramétereinek konzisztens és koherens módosítása

Szűrőkezelő objektumkövetése

A Filter Verifier a következő szűrőkezelő objektumokat követi nyomon:

  • Környezetek szűrése (streamkörnyezetek, fájlkörnyezetek stb.)
  • Visszahívási adatstruktúrák
  • Várólistán lévő munkaelemek
  • NameInformation struktúrák
  • Fájlobjektumok
  • Objektumok szűrése
  • Példányobjektumok
  • Kötetobjektumok

A referenciaszámlált struktúrák, például a szűrőkörnyezetek és a névinformációs struktúrák esetében a Filter Verifier megnyitja a hibakeresőt a szűrőmeghajtó eltávolításakor, ha úgy tűnik, hogy a hivatkozási számok kiszivárogtak. A program útmutatást jelenít meg arról, hogyan keresheti meg a kiszivárgott struktúrákat a !fltkd hibakereső bővítmény használatával.

Szűrő ellenőrző megsértései

Amikor a Filter Verifier észleli a szabálysértést, egy üzenetet nyomtat ki a szabálysértést leíró hibakeresőben. A legtöbb szabálysértés esetén az is leállítja a végrehajtást, és felszólítja a felhasználót, hogy tegyen valamilyen műveletet. Például:

FILTER VERIFIER ERROR: A filter returned an unknown pre-operation callback status.
(Filter = FFFFAC04A21CD8A0 (MyFilter), Status = 0xbaadf00d)
Break, ignore, zap or remove ?

A folytatáshoz írja be a négy egybetűs parancs egyikét:

  • B vagy bmegszakítás esetén: Ez megszakítja a programot a hibakeresőben, ahol további vizsgálatokat végezhet.
  • I vagy ia Figyelmen kívül hagyás esetén: Folytatja a végrehajtást. Ha ez a szabálysértés ismét előfordul, a Szűrő-ellenőrző kinyomtatja a szabálysértési üzenetet a hibakeresőnek, leállítja a végrehajtást, és megjeleníti a kérést.
  • Z vagy zZap esetében: Folytatja a végrehajtást. Ha ez a szabálysértés ismét előfordul, a Szűrő-ellenőrző kinyomtatja a szabálysértési üzenetet a hibakeresőnek, de NEM fogja leállítani a végrehajtást.
  • R vagy reltávolítás esetén: Folytatja a végrehajtást. Ha ez a szabálysértés ismét előfordul, a Szűrő ellenőrzése nem fogja kinyomtatni a szabálysértési üzenetet, és NEM fogja leállítani a végrehajtást.

Megjegyzés

Ha olyan illesztőprogramon használja a Filter Verifiert, amelyet a fordítóoptimalizálással hoztak létre, időnként olyan Filter Verifier hibával találkozhat, amely következetesen azt állítja, hogy az ön szűrője szivárogtatott hivatkozásokat egy vagy több erőforrásra, még akkor is, ha nem találja a szivárgás okát a kódjában. Az üzenet a következőhöz hasonló szöveggel kezdődik:

FILTER VERIFIER ERROR: A filter (Filter = FFFFAC04A21CD8A0 (MyFilter)) leaked references to the following resources:

Előfordulhat, hogy egy üzenet azt jelzi, hogy az objektumkövetés nincs szinkronizálva, például:

FILTER VERIFIER WARNING: Filter manager verifier object tracking may be out of sync for the system

Ennek a feltételnek a leggyakoribb oka az, hogy a Filter Verifier nem tudta azonosítani a Filter Manager API valódi hívóját a farokhívás optimalizálása miatt. Ez akkor fordulhat elő, ha az illesztőprogram egy rutinja egy Filter Manager API-t hív meg az utolsó sorként. Például:

void MyWorkItemCallback(PFLT_GENERIC_WORKITEM WorkItem,
                        PVOID Filter,
                        PVOID Context)
{
   // Do some stuff
   ...
   FltFreeGenericWorkItem(WorkItem);
}

A következő módokon ellenőrizheti, hogy ez történt-e:

  1. Zárja be #pragma optimize("", off) ... #pragma optimize("", on) köré a gyanús rutin optimalizálásának tiltását.
  2. Rendezze újra a kódot úgy, hogy a Filter Manager API-hívás nem az utolsó dolog, ami a rutinban történik.

Ha a hiba az egyik lehetőség kipróbálása után már nem reprodukálódik, valószínűleg hamis pozitív.

A beállítás aktiválása

A parancssor használatával aktiválhatja egy vagy több illesztőprogram fájlrendszerszűrő-ellenőrzési funkcióját verifier.exe . További részletekért lásd: Illesztőprogram-ellenőrző beállításainak kiválasztása.

Megjegyzés

A Windows 25126-os build előtt nem támogatott a fájlrendszer szűrőellenőrzésének engedélyezése, ha az ntoskrnl is ki van választva ellenőrzésre ugyanazon alkalommal, akár egy, akár több miniszűrő esetében. Ez hamis hitelesítő hibákat eredményezhet.

A probléma elkerülése érdekében a 25126-os build után ne vegye fel az ntoskrnl-t az összetevők listájába a Windows egy verziójának ellenőrzéséhez vagy frissítéséhez.

A Filter Verifier indításának ajánlott módja a /standard lehetőség verifier.exe, mivel további hasznos funkciókat biztosít, például a speciális készletet és a készletkövetést:

verifier.exe /standard /driver MyFilter.sys

Az ellenőrzés akkor kezdődik, amikor a miniszűrő-illesztőprogram regisztrál a szűrőkezelővel.

  • Csak a Filter Verifier engedélyezése Windows 11-ben és újabb Windows-verziókban A szűrőellenőrzések minimális készletének engedélyezéséhez engedélyezze az I/O-ellenőrzési és fájlrendszerszűrő-ellenőrzési beállításokat az Illesztőprogram-ellenőrzőben (verifier.exe). Például:

    verifier.exe /ruleclasses 5 37 /driver MyFilter.sys
    
  • Csak a Filter Verifier engedélyezése a Windows 10-ben és a Windows korábbi verzióiban A Szűrőhitelesítő-ellenőrzések minimális készletének engedélyezéséhez adja meg a miniszűrő-illesztőprogram nevét, és engedélyezze az I/O-ellenőrzést a Driver Verifierben (verifier.exe). Például:

    verifier.exe /flags 0x10 /driver MyFilter.sys