Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Treiber für Geräte, die große Datenmengen gleichzeitig übertragen können, sollten direkte E/A-Vorgänge für diese Übertragungen verwenden. Die Verwendung von direkten E/A-Vorgängen für große Übertragungen verbessert die Leistung eines Treibers, indem sowohl der Unterbrechungsaufwand reduziert wird als auch die Speicherzuordnung und das Kopieren von Vorgängen beseitigt werden, die mit gepufferten E/A-Vorgängen verbunden sind.
Im Allgemeinen fordern Massenspeichergerätetreiber direkte E/A für Übertragungsanforderungen an, einschließlich Treibern der niedrigsten Ebene, die den direkten Speicherzugriff (Direct Memory Access, DMA) oder programmierte E/A (PIO) verwenden, sowie alle darüber verketteten Zwischentreiber.
Der E/A-Manager ermittelt, dass ein E/A-Vorgang direkte E/A-Vorgänge verwendet:
Für IRP_MJ_READ - und IRP_MJ_WRITE-Anforderungen wird DO_DIRECT_IO im Flags-Element der DEVICE_OBJECT-Struktur festgelegt. Weitere Informationen finden Sie unter Initialisieren eines Geräteobjekts.
Für IRP_MJ_DEVICE_CONTROL - und IRP_MJ_INTERNAL_DEVICE_CONTROL-Anforderungen enthält der Wert des IOCTL-Codes METHOD_IN_DIRECT oder METHOD_OUT_DIRECT als TransferType-Wert im IOCTL-Wert. Weitere Informationen finden Sie unter Definieren von E/A-Steuerungscodes.
Treiber, die direkte E/A verwenden, verwenden manchmal auch gepufferte E/A-Vorgänge, um einige IRPs zu verarbeiten. Insbesondere verwenden Treiber in der Regel gepufferte E/A-Steuerungscodes für IRP_MJ_DEVICE_CONTROL Anforderungen, die Datenübertragungen erfordern, unabhängig davon, ob der Treiber direkte E/A für Lese- und Schreibvorgänge verwendet.
Das Einrichten einer direkten E/A-Übertragung variiert geringfügig, je nachdem, ob DMA oder PIO verwendet wird. Weitere Informationen finden Sie unter
Verwenden der direkten E/A mit DMA
Verwenden von Direct E/O mit PIO
Treiber müssen Schritte unternehmen, um die Cachekohärenz während DMA- und PIO-Übertragungen aufrechtzuerhalten. Weitere Informationen finden Sie unter Verwalten der Cachekohärenz.