IOCTL_CDROM_EXCLUSIVE_ACCESS IOCTL (ntddcdrm.h)
Permintaan IOCTL_CDROM_EXCLUSIVE_ACCESS menginstruksikan driver kelas CD-ROM untuk:
- Laporkan status akses perangkat CD-ROM.
- Kunci perangkat CD-ROM untuk akses eksklusif.
- Buka kunci perangkat CD-ROM untuk akses eksklusif.
Kode utama
Buffer input
Bergantung pada operasi yang diminta pemanggil, pemanggil harus menyediakan salah satu struktur berikut sebagai input di Irp-AssociatedIrp.SystemBuffer>:
-
CDROM_EXCLUSIVE_ACCESS (untuk melaporkan status akses perangkat CD-ROM)
-
CDROM_EXCLUSIVE_LOCK (untuk mengunci perangkat CD-ROM untuk akses eksklusif)
-
CDROM_EXCLUSIVE_ACCESS (untuk membuka kunci perangkat CD-ROM yang dikunci aplikasi untuk akses eksklusif)
Panjang buffer input
Anggota Parameters.DeviceIoControl.InputBufferLength dalam struktur IO_STACK_LOCATION menunjukkan ukuran, dalam byte, dari buffer input yang dialokasikan pengguna.
Buffer output
Jika pemanggil meminta status akses eksklusif perangkat CD-ROM (RequestType = ExclusiveAccessQueryState), driver kelas CD-ROM mengembalikan struktur jenis CDROM_EXCLUSIVE_LOCK_STATE dalam buffer di Irp-AssociatedIrp.SystemBuffer>yang anggota LockState-nya menunjukkan status akses perangkat.
Panjang buffer output
Anggota Parameters.DeviceIoControl.OutputBufferLength di lokasi tumpukan I/O (IO_STACK_LOCATION) menunjukkan ukuran, dalam byte, dari buffer output.
Blok status
Bidang Informasi diatur ke jumlah byte yang dikembalikan. Bidang Status diatur ke STATUS_SUCCESS jika permintaan berhasil.
Jika permintaan gagal, bidang Status mungkin diatur ke salah satu pesan kesalahan berikut:
STATUS_ACCESS_DENIED (kode kesalahan Windows: ERROR_ACCESS_DENIED)
Perangkat sudah dikunci untuk akses eksklusif.
STATUS_BUFFER_TOO_SMALL (kode kesalahan Windows: ERROR_INSUFFICIENT_BUFFER)
Buffer output terlalu kecil untuk permintaan ExclusiveAccessQueryState .
STATUS_INFO_LENGTH_MISMATCH (kode kesalahan Windows: ERROR_BAD_LENGTH)
Buffer input terlalu kecil.
STATUS_INVALID_DEVICE_REQUEST (kode kesalahan Windows: ERROR_INVALID_FUNCTION)
Driver kelas CD-ROM mengembalikan kode status ini ketika salah satu dari dua kesalahan berikut terjadi:
- Penelepon membuat permintaan pada tingkat IRQL selain PASSIVE_LEVEL.
- Pemanggil mengirim permintaan dengan RequestType = ExclusiveAccessUnlockDevice untuk membuka kunci perangkat yang tidak dalam mode eksklusif.
STATUS_INVALID_DEVICE_STATE (kode kesalahan Windows: ERROR_BAD_COMMAND)
Pemanggil mencoba mengunci perangkat ketika driver sistem file dipasang pada perangkat ini, tanpa menentukan bahwa driver kelas harus menangguhkan pemeriksaan untuk driver sistem file yang dipasang. Untuk menangguhkan pemeriksaan driver sistem file yang dipasang, pemanggil harus mengatur anggota BenderaCDROM_EXCLUSIVE_ACCESS ke 1.
STATUS_INVALID_HANDLE (kode kesalahan Windows: ERROR_INVALID_HANDLE)
Driver kelas CD-ROM mengembalikan kode status ini ketika salah satu dari dua kesalahan berikut terjadi:
- Objek file yang diperlukan untuk melacak permintaan tidak tersedia. Driver kelas CD-ROM tidak menerima permintaan untuk membuat objek file dari pemanggil ini.
- Pemanggil mengirim permintaan dengan RequestType = ExclusiveAccessUnlockDevice untuk membuka kunci perangkat, meskipun pemanggil tidak memiliki akses eksklusif ke perangkat.
STATUS_INVALID_PARAMETER (kode kesalahan Windows: ERROR_INVALID_PARAMETER)
Driver kelas CD-ROM mengembalikan kode status ini ketika salah satu dari dua kesalahan berikut terjadi:
- RequestType yang ditentukan bukan anggota EXCLUSIVE_ACCESS_REQUEST_TYPE yang valid.
- String nama pemanggil di anggota CallerNameCDROM_EXCLUSIVE_LOCK melanggar konvensi penamaan. CallerName harus berupa string yang dihentikan NULL yang berisi karakter berikut: alfanumerik (A - Z, a - z, 0 - 9), spasi, titik, koma, titik dua (:), titik koma (;), tanda hubung (-), dan garis bawah (_). Panjang string harus kurang dari CDROM_EXCLUSIVE_CALLER_LENGTH byte, termasuk NULL di akhir string.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | ntddcdrm.h (termasuk Ntddcdrm.h) |