Menggunakan I/O Langsung
Driver untuk perangkat yang dapat mentransfer data dalam jumlah besar pada satu waktu harus menggunakan I/O langsung untuk transfer tersebut. Menggunakan I/O langsung untuk transfer besar meningkatkan performa driver, baik dengan mengurangi overhead gangguannya maupun dengan menghilangkan alokasi memori dan operasi penyalinan yang melekat pada I/O yang di-buffer.
Umumnya, driver perangkat penyimpanan massal meminta I/O langsung untuk permintaan transfer, termasuk driver tingkat terendah yang menggunakan akses memori langsung (DMA) atau I/O terprogram (PIO), serta driver perantara yang ditautkan di atasnya.
Manajer I/O menentukan bahwa operasi I/O menggunakan I/O langsung sebagai berikut:
Untuk permintaan IRP_MJ_READ dan IRP_MJ_WRITE , DO_DIRECT_IO diatur dalam anggota Bendera struktur DEVICE_OBJECT . Untuk informasi selengkapnya, lihat Menginisialisasi Objek Perangkat.
Untuk permintaan IRP_MJ_DEVICE_CONTROL dan IRP_MJ_INTERNAL_DEVICE_CONTROL , nilai kode IOCTL berisi METHOD_IN_DIRECT atau METHOD_OUT_DIRECT sebagai nilai TransferType dalam nilai IOCTL. Untuk informasi selengkapnya, lihat Menentukan Kode Kontrol I/O.
Driver yang menggunakan I/O langsung terkadang juga akan menggunakan I/O buffer untuk menangani beberapa RUNP. Secara khusus, driver biasanya menggunakan I/O buffer untuk beberapa kode kontrol I/O untuk permintaan IRP_MJ_DEVICE_CONTROL yang memerlukan transfer data, terlepas dari apakah driver menggunakan I/O langsung untuk operasi baca dan tulis.
Menyiapkan transfer I/O langsung sedikit bervariasi, tergantung pada apakah DMA atau PIO sedang digunakan. Untuk informasi selengkapnya, lihat:
Menggunakan I/O Langsung dengan DMA
Menggunakan I/O Langsung dengan PIO
Driver harus mengambil langkah-langkah untuk menjaga koherensi cache selama transfer DMA dan PIO. Untuk informasi selengkapnya, lihat Mempertahankan Koherensi Cache.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk