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 Speciális készlet funkció úgy konfigurálja a Windowst, hogy memóriafoglalást kérjen egy fenntartott memóriakészletből, ha a memória egy megadott készletcímkével van lefoglalva, vagy egy megadott mérettartományon belül van.
Abbreviation |
Spp |
Hexadecimális érték |
(Nincs) |
Szimbolikus név |
(Nincs) |
Célállomás |
Rendszerszintű beállításjegyzék-bejegyzés (Windows Vista és újabb verziók) Rendszerszintű beállításjegyzék-bejegyzés, kerneljelző |
Készletcímke kiválasztása
Amikor különleges készletet kér egy adott készletcímkéhez, győződjön meg arról, hogy az illesztőprogram vagy más kernel módú program egyedi készletcímkét használ.
Készletcímke létrehozásakor (például az ExAllocatePoolWithTag használatával) érdemes lehet fordított sorrendben megadni a címke karaktereit. Ha például a címke Fred, fontolja meg, hogy derF (0x64657246) formában adja meg. A pool címkék tárolása a beállításjegyzékben történik, és a hibakeresőben, valamint más eszközökben fordított (kicsi végű) sorrendben jelenik meg. Ha őket fordított sorrendben adja meg, normál sorrendben jelennek meg (0x46726564)
Ha azt gyanítja, hogy az illesztőprogram az összes speciális készletet használja, fontolja meg több készletcímke használatát a kódban. Ezután többször is tesztelheti az illesztőprogramot, és mindegyik tesztben egy készletcímkéhez rendelhet hozzá speciális készletet.
Emellett válasszon egy olyan készletcímkét is, amelynek hexadecimális értéke nagyobb, mint a rendszer oldalmérete. Kernel módú kód esetén, ha olyan készletcímkét ad meg, amely PAGE_SIZE-nál kisebb értékkel rendelkezik, a Gflags különleges készletet kér minden olyan foglaláshoz, amelynek mérete a megfelelő tartományon belül van, és különleges készletet kér az egyenértékű készletcímkével rendelkező foglalásokhoz. Ha például 30-as méretet választ ki, a rendszer minden 17 és 32 bájt közötti foglaláshoz, valamint a készletcímkével 0x0030 rendelkező foglalásokhoz használja a speciális készletet.
Foglalási méret kiválasztása
A speciális készlet funkció foglalási méretének kiválasztásához kövesse az alábbi irányelveket.
Az x86 processzorral rendelkező számítógépeken PAGE_SIZE 0x1000, a foglalási mérettartományok pedig 8 bájt hosszúságúak. Ahhoz, hogy az adott tartomány méretével rendelkező összes foglaláshoz konfigurálja a Speciális Pool funkciót, adjon meg egy számot, amely a tartomány maximális értéke plusz 8. (Ez a szám mindig a 8 többszöröse.) Az alábbi táblázat az alábbi értékeket szemlélteti:
| Mérettartomány | Adja meg ezt a számot |
|---|---|
1–8 bájt |
10 (16 tizes számrendszerben) |
9–16 bájt |
18 (tízes számrendszerbeli 24) |
17–24 bájt |
20 (decimális 32) |
... |
... |
0xFE9-től 0xFF0 bájtig |
FF8 (decimális 4088) |
AmD x86-64 processzorral rendelkező számítógépeken PAGE_SIZE 0x1000, a foglalási mérettartományok pedig 16 bájt hosszúságúak. Ha az ebben a tartományban lévő méretekkel rendelkező összes foglaláshoz konfigurálni szeretné a Speciális készlet funkciót, adjon meg egy számot, amely a tartomány maximumával és 16-tal egyenlő. (Ez a szám mindig a 16 többszöröse.) Az alábbi táblázat az alábbi értékeket szemlélteti:
| Mérettartomány | Adja meg ezt a számot |
|---|---|
1–16 bájt |
20 (decimális 32) |
17–32 bájt |
30 (48 tízes számrendszerben) |
33–48 bájt |
40 (decimális 64) |
... |
... |
0xFD1-től 0xFE0-ig bájtok |
FF0 (decimális 4080) |
Bármely processzorral rendelkező számítógépen csillag ( * ) vagy 0x2A (decimális 42) használatával konfigurálhatja a speciális készlet funkciót a rendszer összes memóriafoglalásához.
megjegyzések
A Speciális készlet funkció globális jelölők párbeszédpanelen való konfigurálásáról további információt a Speciális készlet konfigurálása című témakörben talál. A speciális készlet szolgáltatás parancssori konfigurálásáról további információt a GFlags-parancsok című témakörben talál. Példa: 14. példa: Speciális készlet konfigurálása.
A Gflags speciális készlet funkciója arra utasítja a Windowst, hogy memóriafoglalást kérjen egy fenntartott memóriakészletből, ha a memória egy megadott készletcímkével van lefoglalva, vagy egy megadott mérettartományon belül van. Ha egy adott illesztőprogram minden foglalásához speciális memóriahalmazt szeretne kérni, használja az Illesztőprogram-ellenőrzőt. További információkért tekintse meg a Windows Illesztőprogram-készlet (WDK) "Illesztőprogram-ellenőrző" szakaszának "Speciális készlet" című témakörét.
A Gflags és az Driver Verifier speciális készletfunkciói segítenek észlelni és azonosítani a kernelkészlet-használat hibáinak forrását, például a lefoglalt memóriaterületen túli írást vagy a már felszabadított memóriára való hivatkozásokat.
Nem teljesül minden speciális készletkérés. A speciális készlet minden foglalása egy oldal nem lapozható fizikai memóriát és két oldal virtuális címterületet használ fel. Ha a speciális készlet kimerült, a rendszer lefoglalja a memóriát a standard készletből, amíg a speciális készlet újra el nem érhető. Ha egy speciális készletkérelmet tölt ki a standard készletből, a kérelmező függvény sikeres állapotot ad vissza. Nem ad vissza hibát, mert a foglalás sikeres volt, még akkor sem, ha nem a speciális készletből lett kitöltve.
A speciális készlet mérete a rendszer fizikai memóriájának mennyiségével nő; ideális esetben ennek legalább 1 gigabájtnak (GB) kell lennie. X86-gépeken, mivel a virtuális (a fizikai mellett) terület is használatban van, ne használja a /3GB bővítési lehetőséget speciális pool használata esetén. Érdemes a pagefile minimális/maximális mennyiségét két vagy három tényezővel növelni.
A Special Pool funkciót úgy is konfigurálhatja, hogy a memóriafoglalások igazítása révén észlelje a memóriára mutató hivatkozásokat, amelyek a foglalást megelőznek ("aláfutások") vagy amelyek a felosztáson túlmutatnak ("túlfuttatások"). Ez a funkció csak a Globális jelzők párbeszédpanelen érhető el a Windows összes verziójában. További részletekért lásd: Túlfuttatások és aláfutások észlelése.
A Windows Vista és a Windows újabb verzióiban a Speciális készlet funkciót beállításjegyzék-beállításként konfigurálhatja, amely újraindítást igényel, de a módosításig érvényes marad, vagy kerneljelölőként, amely nem igényel újraindítást, de csak a Windows újraindításáig vagy leállításáig érvényes. Windows korábbi verzióiban a Speciális Pool csak a beállításjegyzék egy beállításaként érhető el.
A Windows Vista és a Windows újabb verzióiban a Speciális készlet funkciót a Globális jelzők párbeszédpanelen vagy a parancssorban konfigurálhatja. A Windows korábbi verzióiban ez a funkció csak a Globális jelzők párbeszédpanelen érhető el.