Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Készletkövetés az illesztőprogram által létrehozott memória-hozzárendeléseket figyeli. Az illesztőprogram eltávolításának időpontjában a Driver Verifier biztosítja, hogy az illesztőprogram által végzett összes foglalás felszabadításra kerüljön.
A nem feloldott memóriafoglalások (más néven memóriaszivárgások) gyakori oka az operációs rendszer teljesítményének csökkenésének. Ezek széttöredezhetik a rendszerkészleteket, és végül rendszerösszeomlásokat okozhatnak.
Ha ez a beállítás aktív, az Illesztőprogram-ellenőrző kiad egy 0xC4 hibaellenőrzést (az 1. paraméter értéke 0x62), ha egy illesztőprogram anélkül áll le, hogy felszabadítaná az összes foglalását.
Ha az Illesztőprogram-ellenőrző ezt a hibaellenőrzést az 1. paraméter értéke 0x51, 0x52, 0x53, 0x54 vagy 0x59 esetén, az illesztőprogram a foglalásain kívüli memóriába írt. Ebben az esetben engedélyeznie kell a Speciális készlet funkciót a hiba forrásának megkereséséhez.
Lásd a Hibaellenőrzés 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION) című témakört a hibaellenőrzési paraméterek listájáért.
A Windows Vista-tól kezdve a készletkövetési beállítás engedélyezése lehetővé teszi a zárolt oldalak nyomon követését is. Ha ez a beállítás aktív, az Illesztőprogram-ellenőrző hibaellenőrzési 0xCB (DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS) ad ki, ha egy illesztő nem tudja feloldani a zárolt oldalakat egy I/O-művelet után.
A Windows 7-ben és az operációs rendszer újabb verzióiban a Pool Tracking opció támogatja az alábbi kernel API-k használatával lefoglalt memóriát:
Az IoAllocateIrp és az I/O-kéréscsomagok (IRP) adatstruktúráit lefoglaló egyéb rutinok
RtlAnsiStringToUnicodeString és más futásidejű könyvtári (RTL) rutinsorok
A Windows operációs rendszer Windows 7-ben és újabb verzióiban a Készletkövetés aktiválásakor az illesztőprogram-ellenőrző észleli a rendszermagkészlet memóriájának kvótával való lefoglalására tett kísérleteket az üresjárati folyamat kontextusában. Az ilyen kísérletek általában azt jelentik, hogy az illesztőprogram memóriát foglal le egy DPC-rutinból. A DPC-rutinok szál- vagy folyamatkörnyezete megbízhatatlan, ezért helytelen a kvóta felszámítása az adott folyamatra.
Készletkövetés figyelése
A memóriakészletek foglalási statisztikái külön-külön monitorozásra kerülnek az egyes ellenőrzött illesztőprogramok esetében. Ezeket a statisztikákat a Driver Verifier Manager, a Verifier.exe parancssor vagy egy naplófájl jelenítheti meg. Részletekért tekintse meg az egyes számlálók monitorozását ismertető cikket.
A kernel hibakereső bővítménye (!verifier 0x3 ) az illesztőprogram eltávolítása után megkeresheti a kiugró memóriafoglalásokat, vagy nyomon követheti az aktuális foglalásokat az illesztőprogram futtatása közben. Ez a bővítmény a készletcímkét, a készlet méretét és az egyes foglalások kiosztójának címét is megjeleníti. További információ a hibakereső bővítményekről: Windows hibakeresési.
Készletkvóta díjai a DPC rutinból
A kernelillesztők meghívhatják az ExAllocatePoolWithQuotaTag-et a kernelkészlet memóriájának lefoglalásához és az aktuális folyamat készletkvótájára lefoglalt bájtok számának felszámításához. Az illesztőprogramok általában kvótát használnak olyan memóriafoglalásokhoz, amelyek közvetlenül kapcsolódnak egy alkalmazásból érkező kéréshez.
A késleltetett eljáráshívási (DPC-) rutinok bármilyen folyamat kontextusában futtathatók. Ezért egy DPC-rutin kvótáinak feltöltése véletlenszerű folyamatot számít fel. Még rosszabb, ha a DPC-rutin az üresjárati folyamat kontextusában fut, ez a feltétel memóriasérülést vagy rendszer összeomlását eredményezheti.
A Windows 7-től kezdődően az Driver Verifier észleli az ExAllocatePoolWithQuotaTag hívásokat a DPC-rutinokból.
A beállítás aktiválása
Egy vagy több illesztőprogram készletkövetési funkcióját az Illesztőprogram-ellenőrzőkezelő vagy a Verifier.exe parancssor használatával aktiválhatja. További információ: Illesztőprogram-ellenőrző beállításainak kiválasztása.
A parancssorban
A parancssorban a Készletkövetés lehetőséget a 3. bit (0x8) jelöli. A Készletkövetés aktiválásához használjon egy 0x8 jelzőértéket, vagy adjon hozzá 0x8-at a jelzőértékhez. Például:
verifier /flags 0x8 /driver MyDriver.sysA funkció a következő rendszerindítás után aktív lesz.
A Windows Vista és az annál újabb verziók esetében is aktiválhatja és deaktiválhatja a Pool Tracking funkciót a számítógép újraindítása nélkül, ha hozzáadja a /volatile paramétert a parancshoz. Például:
verifier /volatile /flags 0x8 /adddriver MyDriver.sysEz a beállítás azonnal érvénybe lép, de a számítógép leállítása vagy újraindításakor elveszik. További részletekért lásd Illékony beállítások használata.
A Pool Tracking funkció a standard beállításokban is megtalálható. Például:
verifier /standard /driver MyDriver.sysDriver Verifier Manager használata
- Indítsa el a Meghajtó Ellenőrző Kezelőt. Írja be Verifier parancssori ablakba.
- Válassza Egyéni beállítások létrehozása (kódfejlesztőknek) lehetőséget, majd kattintson a Továbbgombra.
- Válassza Az egyes beállítások kiválasztása teljes listából.
- Válassza ki (jelölje be) a készlet nyomon követését.
A készletkövetési funkció a standard beállításokban is megtalálható. A funkció használatához a Driver Verifier Managerben kattintson a Standard beállítások létrehozásaelemre.