Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Windows geeft elke gebruikersmodustoepassing een blok virtuele adressen. Dit wordt de gebruikersruimte van die toepassing genoemd. Het andere grote blok adressen, ook wel systeemruimte of kernelruimte genoemd, kan niet rechtstreeks worden geopend door de toepassing.
Wanneer WinDbg of CDB een onderbrekingspunt instelt in de gebruikersruimte, wordt dit onderbrekingspunt ingesteld op het opgegeven adres in de gebruikersruimte van één proces. Tijdens foutopsporing in de gebruikersmodus bepaalt het huidige proces de betekenis van virtuele adressen. Zie Processen en threads beheren voor meer informatie.
In de kernelmodus kunt u onderbrekingspunten instellen in de gebruikersruimte met de opdrachten bp, bu en ba of met het dialoogvenster Onderbrekingspunten . U moet eerst de procescontext gebruiken om het gebruikersmodusproces op te geven dat eigenaar is van die adresruimte met behulp van .process /i (of een processpecifiek onderbrekingspunt op een kernelruimtefunctie) om het doel over te schakelen naar de juiste procescontext.
Onderbrekingspunten in de gebruikersruimte zijn altijd gekoppeld aan het proces waarvan de procescontext actief was toen de onderbrekingspunten werden ingesteld. Als dit proces wordt opgespoord door een foutopsporingsprogramma in de gebruikersmodus en als een kernelfoutopsporingsprogramma fouten opspoort op de computer waarop het proces wordt uitgevoerd, wordt dit onderbrekingspunt opgesplitst in het foutopsporingsprogramma in de gebruikersmodus, zelfs als het onderbrekingspunt daadwerkelijk is ingesteld vanuit het kernelfoutopsporingsprogramma. U kunt op dit moment in het systeem inbreken vanuit het kernelfoutopsporingsprogramma of de opdracht .breakin (break to the Kernel Debugger) van het foutopsporingsprogramma in de gebruikersmodus gebruiken om het besturingselement over te dragen naar het kernelfoutopsporingsprogramma.
Het bereik van de gebruikersruimte en systeemruimte bepalen
Als u de omvang van de gebruikersruimte en systeemruimte op de doelcomputer wilt bepalen, kunt u de opdracht dp (Display Memory) van een kernelfoutopsporingsprogramma gebruiken om de globale Windows-variabele MmHighestUserAddress weer te geven. Deze variabele bevat het adres van de bovenkant van de gebruikersruimte. Omdat systeemruimteadressen altijd hoger zijn dan adressen van de gebruikersruimte, kunt u met deze waarde bepalen of een bepaald adres zich in de gebruikersruimte of in de kernelruimte bevindt.
Op een 32-bits doelcomputer met een x86-processor en standaard opstartparameters wordt met deze opdracht bijvoorbeeld het volgende resultaat weergegeven:
kd> dp nt!mmhighestuseraddress L1
81f71864 7ffeffff
Dit geeft aan dat de gebruikersruimte varieert van het adres 0x00000000 tot 0x7FFEFFFF, en systeemruimte varieert daarom van 0x80000000 tot het hoogst mogelijke adres (dat is 0xFFFFFFFF op een standaard 32-bits Windows-installatie).
Bij een 64-bits doelcomputer vinden verschillende waarden plaats. Met deze opdracht kan bijvoorbeeld het volgende worden weergegeven:
0: kd> dp nt!mmhighestuseraddress L1
fffff800`038b4010 000007ff`fffeffff
Dit geeft aan dat de gebruikersruimte varieert van 0x00000000'000000000 tot 0x000007FF'FFFEFFFF. Daarom bevat systeemruimte alle adressen van 0x00000800'00000000 naar boven.
Zie Microsoft Windows Internals van David Salomon en Mark Russinovich (4e editie, Microsoft Press, 2005) voor meer informatie over Het beheer van Windows-geheugen.