Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.