Fungsi ChangerExchangeMedium (mcd.h)
ChangerExchangeMedium menangani aspek khusus perangkat dari IRP kontrol perangkat dengan kode IOCTL IOCTL_CHANGER_EXCHANGE_MEDIUM.
Sintaks
NTSTATUS ChangerExchangeMedium(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
Parameter
[in] DeviceObject
Arahkan ke objek perangkat yang mewakili pengubah.
[in] Irp
Arahkan ke IRP.
Mengembalikan nilai
Jika pengubah mendukung pertukaran media, ChangerExchangeMedium mengembalikan status yang dikembalikan oleh driver port sistem, atau salah satu nilai berikut:
STATUS_SUCCESS
STATUS_DESTINATION_ELEMENT_FULL
STATUS_INVALID_ELEMENT_ADDRESS
STATUS_SOURCE_ELEMENT_EMPTY
Jika pengubah tidak mendukung pertukaran media, ChangerExchangeMedium mengembalikan STATUS_INVALID_DEVICE_REQUEST.
Keterangan
Rutinitas ini diperlukan.
ChangerExchangeMedium memindahkan sepotong media dari elemen sumber ke satu tujuan dan dari tujuan tersebut ke tujuan lain. Sumber dan tujuan kedua sering kali sama, menghasilkan pertukaran media yang sederhana.
Bendera CHANGER_EXCHANGE_MEDIA di Fitur0 dari struktur GET_CHANGER_PARAMETERS menunjukkan apakah pengubah mendukung fungsionalitas ini. Pengubah yang mendukung pertukaran media biasanya memiliki dua mekanisme pemilih pada satu elemen transportasi, atau setidaknya dua elemen transportasi. Pengubah yang memiliki mekanisme pemilih tunggal mungkin mendukung pertukaran media melalui emulasi perintah.
Driver kelas changer memeriksa panjang buffer input di lokasi tumpukan I/O sebelum memanggil rutinitas ChangerExchangeMedium driver miniclass. Irp-SystemBuffer> menunjuk ke struktur CHANGER_EXCHANGE_MEDIUM sebagai parameter input yang menunjukkan elemen transportasi dan tujuan yang akan diatur.
ChangerExchangeMedium pertama-tama memverifikasi bahwa alamat elemen transportasi, sumber, dan tujuan valid, lalu mengonversi alamat elemen berbasis nol ke alamat elemen khusus perangkat. Kemudian membangun SRB dengan CDB untuk bertukar media dan mengirimkannya ke driver port sistem.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | mcd.h (termasuk Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |