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.
Stuurprogramma's die secties en weergaven maken die niet moeten worden gedeeld met de gebruikersmodus, moeten het volgende protocol gebruiken wanneer ze met secties en weergaven werken:
Het stuurprogramma moet een kernelhandgreep gebruiken wanneer er een ingang wordt geopend voor het sectieobject. Stuurprogramma's kunnen ervoor zorgen dat een ingang een kernel-handle is door deze te maken in het systeemproces of door het OBJ_KERNEL_HANDLE kenmerk voor de ingang op te geven. Zie Objecthandvatten voor meer informatie.
De weergave moet alleen worden toegewezen vanuit een systeemthread. (Anders is de weergave toegankelijk vanuit het proces waarbinnen de context is gecreƫerd.) Een stuurprogramma kan ervoor zorgen dat de weergave is toegewezen vanuit het systeemproces door een systeemwerkdraad te gebruiken om de toewijzingsbewerking uit te voeren. Zie System Worker Threads en Driver Thread Context voor meer informatie.
Stuurprogramma's die een weergave delen met een gebruikersmodusproces, moeten het volgende protocol gebruiken wanneer ze met secties en weergaven werken:
Het stuurprogramma, niet het gebruikersmodusproces, moet het sectie-object maken en de weergaven in kaart brengen.
Zoals eerder vermeld, moet het stuurprogramma een kernelhandgreep gebruiken bij het openen van een ingang voor het sectieobject. Stuurprogramma's kunnen ervoor zorgen dat een ingang een kernel-handle is door deze te maken in het systeemproces of door het OBJ_KERNEL_HANDLE kenmerk voor de ingang op te geven. Zie Objecthandvatten voor meer informatie.
De weergave is gezien binnen de threadcontext van het proces dat de weergave deelt. Een stuurprogramma op het hoogste niveau kan garanderen dat de weergave wordt toegewezen in de huidige procescontext door de toewijzingsbewerking uit te voeren in een verzendroutine, zoals DispatchDeviceControl. Verzendroutines van stuurprogramma's op lager niveau worden uitgevoerd in een willekeurige threadcontext en kunnen daarom niet veilig een weergave toewijzen in een verzendroutine. Zie Context van driverthread voor meer informatie.
Alle geheugentoegangen tot de weergave binnen het stuurprogramma moeten worden beveiligd met try-except blokken. Een kwaadwillende toepassing in de gebruikersmodus kan de weergave ongedaan maken of de beveiligingsstatus van de weergave wijzigen. Beide zouden een systeemcrash veroorzaken tenzij beschermd door een try-except blok. Zie Uitzonderingen verwerkenvoor meer informatie.
Het stuurprogramma moet ook de inhoud van de weergave valideren indien nodig. De schrijver van het stuurprogramma kan niet aannemen dat alleen een vertrouwd gebruikersmodusonderdeel toegang heeft tot de weergave.
Een stuurprogramma dat een sectieobject moet delen met een toepassing in de gebruikersmodus (die een eigen weergave moet kunnen maken) moet het volgende protocol gebruiken:
Het stuurprogramma, niet het gebruikersmodusproces, moet het sectieobject maken. Stuurprogramma's mogen nooit een handle gebruiken die vanuit de gebruikersmodus is doorgegeven.
Voordat de handle wordt doorgegeven aan de gebruikersmodus, moet het stuurprogramma ObReferenceObjectByHandle aanroepen om een verwijzing naar het sectieobject te verkrijgen. Hiermee voorkomt u dat een kwaadwillende toepassing het sectieobject verwijdert door de handle te sluiten. De objectverwijzing moet worden opgeslagen in de apparaatextensie van het stuurprogramma.
Nadat het stuurprogramma het sectieobject niet meer gebruikt, moet het ObDereferenceObject aanroepen om de objectverwijzing vrij te geven.
Op systemen met Microsoft Windows Server 2003 met Service Pack 1 (SP1) en latere versies kunnen alleen stuurprogramma's in de kernelmodus \Device\PhysicalMemory openen. Stuurprogramma's kunnen echter besluiten om een handle te geven aan een gebruikersapplicatie. Om beveiligingsproblemen te voorkomen, moeten alleen gebruikerstoepassingen die het stuurprogramma vertrouwt toegang krijgen tot \Device\PhysicalMemory.