Bagikan melalui


Metode untuk Mengakses Buffer Data

Salah satu tanggung jawab utama tumpukan driver adalah mentransfer data antara aplikasi mode pengguna dan perangkat sistem. Sistem operasi menyediakan tiga metode berikut untuk mengakses buffer data:

I/O buffer
Sistem operasi membuat buffer sistem yang tidak disebarkan, sama ukurannya dengan buffer aplikasi. Untuk operasi tulis, manajer I/O menyalin data pengguna ke dalam buffer sistem sebelum memanggil tumpukan driver. Untuk operasi baca, manajer I/O menyalin data dari buffer sistem ke dalam buffer aplikasi setelah tumpukan driver menyelesaikan operasi yang diminta.

Untuk informasi selengkapnya, lihat Menggunakan I/O Buffered.

I/O Langsung
Sistem operasi mengunci buffer aplikasi dalam memori. Kemudian membuat daftar deskriptor memori (MDL) yang mengidentifikasi halaman memori terkunci, dan meneruskan MDL ke tumpukan driver. Driver mengakses halaman terkunci melalui MDL.

Untuk informasi selengkapnya, lihat Menggunakan I/O Langsung.

Baik Buffered maupun I/O Langsung
Sistem operasi meneruskan alamat dan ukuran awal virtual buffer aplikasi ke tumpukan driver. Buffer hanya dapat diakses dari driver yang dijalankan dalam konteks utas aplikasi.

Untuk informasi selengkapnya, lihat Menggunakan I/O Buffered maupun Direct.

Untuk permintaan IRP_MJ_READ dan IRP_MJ_WRITE , driver menentukan metode I/O dengan menggunakan bendera di setiap struktur DEVICE_OBJECT . Untuk informasi selengkapnya, lihat Menginisialisasi Objek Perangkat.

Untuk permintaan IRP_MJ_DEVICE_CONTROL dan IRP_MJ_INTERNAL_DEVICE_CONTROL , metode I/O ditentukan oleh nilai TransferType yang terkandung dalam setiap nilai IOCTL. Untuk informasi selengkapnya, lihat Menentukan Kode Kontrol I/O.

Semua driver dalam tumpukan driver harus menggunakan metode akses buffer yang sama untuk setiap permintaan, kecuali mungkin untuk driver tingkat tertinggi (yang dapat menggunakan metode "tidak keduanya", terlepas dari metode yang digunakan oleh driver yang lebih rendah).