Bagikan melalui


IOCTL_STORAGE_MCN_CONTROL IOCTL (ntddstor.h)

Mengaktifkan atau menonaktifkan pengiriman peristiwa PnP kustom untuk sementara waktu GUID_IO_MEDIA_ARRIVAL dan GUID_IO_MEDIA_REMOVAL pada perangkat media yang dapat dilepas. Ini, pada gilirannya, mengaktifkan atau menonaktifkan deteksi perubahan media (AutoPlay) untuk perangkat jika pemanggil telah membuka perangkat dengan akses FILE_READ_ATTRIBUTES dan jika perangkat mengaktifkan AutoPlay di registri. Pemanggil tidak boleh membuka perangkat untuk akses baca atau tulis atau operasi IOCTL akan gagal. IOCTL ini tidak berpengaruh pada pengaturan AutoPlay di registri.

Driver untuk perangkat media yang dapat dilepas tersebut harus melakukan hal berikut:

  1. Pertahankan jumlah permintaan penonaktifan, per perangkat fisik, di ekstensi objek perangkat.
  2. Ketika dipanggil dengan IOCTL ini, jika bendera untuk menonaktifkan deteksi perubahan media diatur, menaikkan jumlah; jika bendera jelas, kurangi jumlahnya.
  3. Atur peristiwa perubahan media untuk perangkat saat status media diubah hanya jika jumlah permintaan nonaktifkan adalah nol.
Ketika IRP_MJ_DEVICE_CONTROL IRP yang berisi IOCTL ini diteruskan ke driver kelas SCSI, anggota FileObject dari IO_STACK_LOCATION saat ini harus menunjuk ke objek file yang valid. Driver kelas SCSI memerlukan objek file untuk kasus di mana aplikasi mode pengguna yang menonaktifkan atau mengaktifkan AutoPlay berakhir secara tiba-tiba. Dalam kasus seperti itu, driver kelas SCSI menggunakan objek file untuk mengaktifkan kembali deteksi perubahan media. Karena objek file diperlukan untuk pembersihan yang tepat, driver kelas SCSI akan menyebabkan IRP gagal dengan pesan kesalahan STATUS_INVALID_PARAMETER jika anggota FileObject IO_STACK_LOCATION tidak menunjuk ke objek file yang valid. Jika aplikasi mode pengguna membuka perangkat, maka manajer I/O menginisialisasi anggota ini, tetapi penulis driver mode kernel tidak boleh berasumsi bahwa FileObject akan diinisialisasi dengan benar ketika IRP dihasilkan oleh aplikasi mode pengguna. Jika, misalnya, aplikasi mode pengguna secara keliru membuka perangkat untuk akses baca atau tulis sebelum mengirim IOCTL, maka IRP kontrol perangkat akan dirutekan melalui sistem file, mencegah driver kelas SCSI dan driver perangkat mengakses objek file perangkat secara langsung.

Kode utama

IRP_MJ_DEVICE_CONTROL

Buffer input

Buffer di Irp-AssociatedIrp.SystemBuffer> berisi nilai Boolean, dengan TRUE menunjukkan bahwa driver harus menonaktifkan deteksi perubahan media.

Panjang buffer input

Panjang Boolean.

Buffer output

Tidak ada.

Panjang buffer output

Tidak ada.

Blok status

Bidang Informasi diatur ke nol. Bidang Status diatur ke STATUS_SUCCESS, atau mungkin ke STATUS_BUFFER_TOO_SMALL, STATUS_INVALID_PARAMETER, atau STATUS_INVALID_DEVICE_STATE.

Persyaratan

Persyaratan Nilai
Header ntddstor.h (termasuk Ntddstor.h)

Lihat juga

IO_STACK_LOCATION