Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sterowniki dla urządzeń, które mogą przesyłać duże ilości danych w danym momencie, powinny używać bezpośrednich operacji we/wy dla tych transferów. Korzystanie z bezpośrednich operacji we/wy w przypadku dużych transferów zwiększa wydajność sterownika, zarówno poprzez zmniejszenie obciążenia przerwania, jak i wyeliminowanie alokacji pamięci i operacji kopiowania związanych z buforowaną operacją we/wy.
Ogólnie rzecz biorąc, sterowniki urządzeń pamięci masowej żądają bezpośredniego I/O dla żądań transferu, w tym sterowników najniższego poziomu korzystających z bezpośredniego dostępu do pamięci (DMA) lub zaprogramowanych operacji I/O (PIO), a także wszystkich pośrednich sterowników znajdujących się powyżej nich.
Menedżer we/wy określa, że operacja we/wy korzysta z trybu bezpośredniego we/wy w następujący sposób:
W przypadku żądań IRP_MJ_READ i IRP_MJ_WRITE DO_DIRECT_IO jest ustawiony w elemencie Flags struktury DEVICE_OBJECT. Aby uzyskać więcej informacji, zobacz Inicjowanie obiektu urządzenia.
W przypadku żądań IRP_MJ_DEVICE_CONTROL i IRP_MJ_INTERNAL_DEVICE_CONTROL kod IOCTL ma wartość, która zawiera METHOD_IN_DIRECT lub METHOD_OUT_DIRECT jako TransferType wewnątrz wartości IOCTL. Aby uzyskać więcej informacji, zobacz Definiowanie kodów kontrolnych I/O.
Sterowniki korzystające z bezpośrednich operacji we/wy czasami również używają buforowanych operacji we/wy do obsługi niektórych środowisk IRPs. W szczególności sterowniki zwykle używają buforowanego I/O dla niektórych kodów kontrolnych I/O dla IRP_MJ_DEVICE_CONTROL wniosków, które wymagają transferu danych, niezależnie od tego, czy sterownik używa bezpośredniego I/O do operacji odczytu i zapisu.
Konfigurowanie bezpośredniego transferu we/wy różni się nieznacznie, w zależności od tego, czy jest używana usługa DMA czy PIO. Aby uzyskać więcej informacji, zobacz:
Używanie bezpośredniego we/wy z DMA
Używanie bezpośredniego we/wy z PIO
Sterowniki muszą podjąć kroki w celu zapewnienia spójności pamięci podręcznej podczas transferów DMA i PIO. Aby uzyskać więcej informacji, zobacz Utrzymywanie spójności pamięci podręcznej.