Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Drivrutiner för enheter som kan överföra stora mängder data åt gången bör använda direkt I/O för dessa överföringar. Användning av direkt I/O för stora överföringar förbättrar en drivrutins prestanda, både genom att minska avbrottskostnaderna och genom att eliminera minnesallokering och kopieringsåtgärder som ingår i buffrad I/O.
I allmänhet begär drivrutiner för masslagringsenheter direkt I/O för överföringsbegäranden, inklusive drivrutiner på lägsta nivå som använder direkt minnesåtkomst (DMA) eller programmerad I/O (PIO) samt mellanliggande drivrutiner som är länkade ovanför dem.
I/O-chefen fastställer att en I/O-åtgärd använder direkt I/O enligt följande:
För IRP_MJ_READ och IRP_MJ_WRITE begäranden anges DO_DIRECT_IO i flags-medlemmen i DEVICE_OBJECT-strukturen . Mer information finns i Initiera ett enhetsobjekt.
För IRP_MJ_DEVICE_CONTROL - och IRP_MJ_INTERNAL_DEVICE_CONTROL-begäranden innehåller IOCTL-kodens värde METHOD_IN_DIRECT eller METHOD_OUT_DIRECT som TransferType-värdet i IOCTL-värdet. Mer information finns i Definiera I/O-kontrollkoder.
Drivrutiner som använder direkt I/O använder ibland också buffrad I/O för att hantera vissa IP-adresser. I synnerhet använder drivrutiner vanligtvis buffrad I/O för vissa I/O-kontrollkoder för IRP_MJ_DEVICE_CONTROL begäranden som kräver dataöverföringar, oavsett om drivrutinen använder direkt I/O för läs- och skrivåtgärder.
Att konfigurera en direkt I/O-överföring varierar något beroende på om DMA eller PIO används. Mer information finns i:
Drivrutiner måste vidta åtgärder för att upprätthålla cachesammansättning under DMA- och PIO-överföringar. Mer information finns i Underhålla cachesammanhållning.