Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När alternativet Simulering av begränsade resurser (kallas Simulering av slumpmässiga lågresurser i Windows 8.1) är aktivt, orsakar drivrutinsverifieraren slumpmässiga fel i drivrutinens minnesallokeringar, vilket kan inträffa om drivrutinen körs på en dator med otillräckligt minne. Detta testar drivrutinens förmåga att svara korrekt på låg minnesanvändning och andra lågresursförhållanden.
Simuleringstestet för låga resurser misslyckas med allokeringar som begärs av anrop till flera olika funktioner, inklusive ExAllocatePoolWithXXX, MmGetSystemAddressForMdlSafe, MmProbeAndLockPages, MmMapLockedPagesSpecifyCacheoch MmMapIoSpace.
Från och med Windows Vista genomför lågresurssimuleringstestet också felinsprutning i IoAllocateIrp, IoAllocateMdl, IoAllocateWorkItem, IoAllocateErrorLogEntry, MmAllocateContiguousMemory, MmAllocateContiguousMemorySpecifyCache, MmAllocatePagesForMdloch MmAllocatePagesForMdlEx. Dessutom, när simulering med låga resurser är aktiverad, kan anrop till KeWaitForMultipleObjects eller KeWaitForSingleObject med parametern Alertable inställd på TRUE returnera STATUS_ALERTED när de körs i kontexten av icke-privilegierade processer. Detta simulerar en möjlig trådavisering som kommer från en annan tråd i samma icke-privilegierade program.
Testet för simulering av låga resurser injicerar också fel i följande GDI-funktioner: EngAllocMem, EngAllocUserMem, EngCreateBitmap, EngCreateDeviceSurface, EngCreateDeviceBitmap, EngCreatePalette, EngCreateClip, EngCreatePath, EngCreateWnd, EngCreateDriverObj, BRUSHOBJ_pvAllocRbrushoch CLIPOBJ_ppoGetPath.
I Windows 7 och senare versioner av Windows-operativsystemet stöder alternativet Simulering av låga resurser minne som allokerats med hjälp av följande kernel-API:er:
IoAllocateIrp- och andra rutiner för att allokera dataskapelser för I/O-begärandepaket (IRP)
RtlAnsiStringToUnicodeString och andra RTL-strängrutiner (run-time library)
Från och med Windows 8.1 misslyckas allokeringar även när de begärs av anrop till MmAllocateNodePagesForMdlEx. För vissa funktioner fyller drivrutinsverifieraren nu det allokerade minnet med ett slumpmässigt mönster. Men bara i situationer där funktionen returnerar oinitierat minne. Dessa funktioner omfattar:
- MmAllocatePagesForMdlEx
- MmAllocateNodePagesForMdlEx
- MmAllocateContiguousMemory
- MmAllocateContiguousMemorySpecifyCache
- MmAllocateContiguousMemorySpecifyCacheNode
- MmAllocateContiguousNodeMemory
- MmAllocateNonCachedMemory
anpassade inställningar för simulering med låga resurser
I Windows Vista och senare versioner av Windows kan du ange följande anpassade inställningar.
Sannolikhet att en viss allokering misslyckas. Standardvärdet är 6%.
Applikationer påverkas. Den här inställningen begränsar de inmatade misslyckade allokeringarna till de angivna programmen. Som standard påverkas alla allokeringar.
Pooltaggar påverkas. Den här inställningen begränsar de inmatade felen till allokeringar med de angivna pooltaggar. Som standard påverkas alla allokeringar.
Fördröj (i minuter) innan allokeringen misslyckas. Den här fördröjningen gör att systemet kan startas och stabiliseras innan fel matas in. Standardvärdet är åtta minuter.
På operativsystem före Windows Vista kan du inte anpassa de här inställningarna. Operativsystemet använder standardvärdena.
simulering av låga resurser utan omstart
Du kan aktivera simulering med låga resurser i Windows 2000 och senare versioner av Windows utan att starta om datorn med hjälp av parametern /volatile. Inställningarna gäller omedelbart, men går förlorade om du stänger av eller startar om datorn.
Du kan också lagra inställningarna för simulering av låga resurser i registret genom att utelämna parametern /volatile. De här inställningarna gäller endast när du startar om datorn, men de gäller tills du ändrar dem.
aktivera det här alternativet
Du kan aktivera alternativet Simulering av låga resurser för en eller flera drivrutiner med hjälp av Driver Verifier Manager eller kommandoraden Verifier.exe. Mer information finns i Välja alternativ för drivrutinsverifierare.
På kommandoraden
På kommandoraden representeras alternativet Simulering av låga resurser av Bit 2 (0x4). Om du vill aktivera simulering med låga resurser använder du ett flaggvärde på 0x4 eller lägger till 0x4 till flaggornas värde. Till exempel:
verifier /flags 0x4 /driver MyDriver.sys
Alternativet är aktivt efter nästa start.
I Windows Vista och senare versioner av Windows kan du använda parametern /faults eller ett flaggvärde på 0x4 för att aktivera simulering med låga resurser. Om du vill ändra inställningarna för simulering med låga resurser måste du använda /fel. Till exempel:
verifier /faults /driver MyDriver.sys
I Windows 2000 och senare versioner av Windows kan du också aktivera och inaktivera simulering av låga resurser utan att starta om datorn genom att lägga till parametern /volatile i kommandot. Till exempel:
verifier /volatile /flags 0x4 /adddriver MyDriver.sys
Den här inställningen gäller omedelbart, men går förlorad när du stänger av eller startar om datorn. Mer information finns i Använda flyktiga inställningar.
I Windows Vista kan du använda parametern /faults för att representera simulering med låg resurs med parametern /volatile för att representera en inställning som är effektiv utan omstart. Inställningsändringen visas. Till exempel:
0> verifier /volatile /faults /adddriver MyDriver.sys New Low Resources Simulation options: - Use default fault injection probability. - Allocations using any pool tag can be failed. - Simulate low resources conditions in any application. The new settings are in effect until you restart this computer or change them again.
Använda Drivrutinsverifieringshanteraren
- Starta hanteraren för drivrutinsverifierare. Skriv Verifier i ett kommandotolkfönster.
- Välj Skapa anpassade inställningar (för kodutvecklare)och klicka sedan på Nästa.
- Välj Välj enskilda inställningar i en fullständig lista.
- Välj Simulering med låga resurser.
Anpassa inställningarna (Windows Vista och senare)
Från och med Windows Vista kan du ändra standardinställningarna för egenskaperna fördröjning, sannolikhet, program och pooltaggar för alternativet Simulering med låga resurser. Du kan ändra de här inställningarna med hjälp av Drivrutinsverifierarhanteraren eller kommandoraden Verifier.exe. Mer information finns i Välja alternativ för drivrutinsverifierare.
På kommandoraden är syntaxen för de här inställningarna följande:
verifier [/volatile] /faults[Probability|PoolTags|Applikationer|DelayMins][/driver|DriverList]
Obs Parametrarna för anpassade inställningar måste visas i den ordning som visas. Om du utelämnar ett värde skriver du citattecken för att behålla dess plats.
underparametrar
/fel
Aktiverar alternativet Simulering av låga resurser i drivrutinsverifieraren. (Du kan inte använda /flags 0x4 med de anpassade inställningsunderparametrarna.)
sannolikhet
Anger sannolikheten för att drivrutinsverifieraren misslyckas med en viss allokering. Skriv ett tal (i decimal- eller hexadecimalt format) för att representera antalet chanser på 10 000 som drivrutinsverifieraren kommer att misslyckas med allokeringen. Standardvärdet 600 betyder 600/10000 eller 6%.
PoolTags
Begränsar de allokeringar som drivrutinsverifieraren kan misslyckas med till allokeringar med de angivna pooltaggarna. Du kan använda jokertecken (*) för att representera flera pooltaggar. För att lista flera pooltaggar separerar du taggarna med blanksteg. Som standard kan alla allokeringar misslyckas.
Applikationer
Begränsar de allokeringar som drivrutinsverifieraren kan misslyckas med för det angivna programmet. Ange namnet på en körbar fil. Om du vill visa en lista över program separerar du programnamnen med blanksteg. Som standard kan alla allokeringar misslyckas.
FördröjningsMinuter
Anger antalet minuter efter start då drivrutinsverifieraren inte avsiktligt misslyckas med några allokeringar. Den här fördröjningen gör att drivrutinerna kan läsas in och systemet stabiliseras innan testet börjar. Skriv ett tal (i decimal- eller hexadecimalt format). Standardvärdet är 8 (minuter).
Följande kommando aktiverar till exempel lågresurssimulering med 10 %% (1000/10000) sannolikhet och en fördröjning på fem minuter för pooltaggarna Tag1 och Fred samt programmet Notepad.exe.
verifier /faults 1000 "Tag1 Fred" Notepad.exe 5
Följande kommando aktiverar simulering med låga resurser med standardvärdena, förutom att fördröjningen utökas till 10 minuter.
verifier /faults "" "" "" 0xa
Att använda drivrutinsverifierarhanteraren
Starta hanteraren för drivrutinsverifierare. Skriv Verifier i ett kommandotolkfönster.
Välj Skapa anpassade inställningar (för kodutvecklare)och klicka sedan på Nästa.
Välj Välj enskilda inställningar i en fullständig lista.
Välj Simulering av låg resursoch klicka sedan på Nästa.
Ändra inställningarna för egenskaperna för fördröjning, sannolikhet, applikationer och pooltaggar efter behov.
Visa resultatet
Du kan övervaka antalet gånger drivrutinsverifieraren med avsikt försöker misslyckas med resursallokeringar genom att visa drivrutinsverifieraren Fel som matats in i den globala räknaren. Den här räknaren visar det totala antalet resursallokeringar som drivrutinsverifieraren misslyckades avsiktligt sedan den senaste starten.
Du kan visa den här räknaren i en loggfil för drivrutinsverifierare (/log), på kommandoraden (/query) eller i Driver Verifier Manager. Om du vill visa globala räknare i Windows 2000 väljer du fliken Globala räknare. I senare versioner av Windows väljer du Visa information om de för närvarande verifierade drivrutinerna uppgiften och trycker sedan på Nästa två gånger. Mer information finns i Övervakning av globala räknare.
Du kan också visa antalet avsiktligt misslyckade allokeringar och antalet totala allokeringar (för att beräkna sannolikheten) med hjälp av tillägget !verifier felsökningsprogram. I följande exempel visas ett exempel på !-verifieraren utdata.
I det här exemplet anger Inför slumpmässiga API-fel vid resursbrist att simulering av resursbrist är aktiverad. resursallokeringar misslyckades avsiktligt representerar antalet avsiktligt misslyckade allokeringar och poolallokeringar representerar totala antalet allokeringar.
!verifier
Verify Level 5 ... enabled options are:
Special pool
Inject random low-resource API failures
Summary of All Verifier Statistics
RaiseIrqls 0x2c671f
AcquireSpinLocks 0xca1a02
Synch Executions 0x10a623
Trims 0x0
Pool Allocations Attempted 0x862e0e
Pool Allocations Succeeded 0x8626e3
Pool Allocations Succeeded SpecialPool 0x768060
Pool Allocations With NO TAG 0x0
Pool Allocations Failed 0x34f
Resource Allocations Failed Deliberately 0x3f5
Om du vill visa stackspårningarna för de allokeringar som senast misslyckades av drivrutinsverifieraren använder du !verifier 4 i kernelfelsökaren.
I följande exempel visas ett exempel på utdata från !verifier 4. Som standard visar !verifier 4 stackspårningar från de fyra senast misslyckade allokeringarna, men du kan använda parametern Quantity för att öka antalet stackspårningar som visas. Till exempel visar !verifier 0x80 de 128 senast misslyckade allokeringarna.
Observera i det här exemplet att Verifier har avlyssnat och ersatt drivrutinsanropet till ExAllocatePoolWithTag. En av de vanligaste orsakerna till drivrutinskrascher inträffar när en drivrutin försöker allokera minne och sedan använder pekaren som allokeringsfunktionen returnerar, innan den har kontrollerat att pekaren inte är NULL.
kd> !verifier 4
Resource fault injection history:
Tracker @ 8354A000 (# entries: 80, size: 80, depth: 8)
Entry @ 8354B258 (index 75)
Thread: C2638220
816760CB nt!VerifierExAllocatePoolWithTag+0x49
A4720443 win32k!bDeleteAllFlEntry+0x15d
A4720AB0 win32k!GreEnableEUDC+0x70
A47218FA win32k!CleanUpEUDC+0x37
A473998E win32k!GdiMultiUserFontCleanup+0x5
815AEACC nt!MiDereferenceSession+0x74
8146D3B4 nt!MmCleanProcessAddressSpace+0x112
815DF739 nt!PspExitThread+0x603
Entry @ 8354B230 (index 74)
Thread: 8436D770
816760CB nt!VerifierExAllocatePoolWithTag+0x49
A462141C win32k!Win32AllocPool+0x13
A4725F94 win32k!StubGdiAlloc+0x10
Erfarenhet av simuleringstestet med låga resurser visar att de flesta drivrutinskrascher orsakas av den senast misslyckade allokeringen. I exemplet ovan inträffade kraschen på vägen till win32k!GreEnableEUDC. Granska koden i sökvägen till allokeringen för att hitta orsaken till kraschen.
Information om !verifierfinns i dokumentationen Felsökningsverktyg för Windows.
Om du vill visa inställningarna i registret på kommandoraden använder du alternativet /querysettings. Till exempel:
C:\>verifier /querysettings
Special pool: Disabled
Pool tracking: Disabled
Force IRQL checking: Disabled
I/O verification: Disabled
Enhanced I/O verification: Disabled
Deadlock detection: Disabled
DMA checking: Disabled
Security checks: Disabled
Force pending I/O requests: Disabled
Low resources simulation: Enabled
IRP Logging: Disabled
Miscellaneous checks: Disabled
Low Resources Simulation options:
- Fault injection probability: 1/10000.
- Fail only allocations using pool tags: Tag1 Tag2.
- Simulate low resources conditions only in applications: test1.exe test2.exe.
- Boot time delay: 2 minutes.
Verified drivers:
blah.sys