Fungsi ChangerReinitializeUnit (mcd.h)
ChangerReinitializeUnit menangani aspek khusus perangkat dari IRP kontrol perangkat dengan kode IOCTL IOCTL_CHANGER_REINITIALIZE_TRANSPORT.
Sintaks
NTSTATUS ChangerReinitializeUnit(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
Parameter
[in] DeviceObject
Arahkan ke objek perangkat yang mewakili pengubah.
[in] Irp
Arahkan ke IRP.
Nilai kembali
Jika pengubah mendukung pengulangan elemen transportasi, ChangerReinitializeUnit mengembalikan nilai STATUS_XXX yang dikembalikan oleh driver port sistem, atau salah satu nilai berikut:
STATUS_SUCCESS
STATUS_INVALID_ELEMENT_ADDRESS
STATUS_INVALID_PARAMETER
STATUS_INSUFFICIENT_RESOURCES
Jika pengubah tidak mendukung pengulangan elemen transportasi, ChangerReinitializeUnit mengembalikan STATUS_INVALID_DEVICE_REQUEST.
Keterangan
Rutinitas ini diperlukan.
ChangerReinitializeUnit menyebabkan pengubah mengkalibrasi ulang elemen transportasinya. Tergantung pada pengubahnya, ini dapat mengembalikan transportasi ke posisi "rumah". Driver kelas pengubah biasanya memanggil ChangerReinitializeUnit setelah pengubah diaktifkan atau aplikasi panggilan telah memulai operasi pemulihan. Bendera CHANGER_DEVICE_REINITIALIZE_CAPABLE di Fitur0GET_CHANGER_PARAMETERS menunjukkan apakah transportasi pengubah mendukung kalibrasi ulang dalam keadaan tersebut.
Driver kelas pengubah memeriksa panjang buffer input di lokasi tumpukan I/O sebelum memanggil ChangerReinitializeUnit. Irp-SystemBuffer> menunjuk ke struktur CHANGER_ELEMENT yang menunjukkan elemen untuk dikalibrasi ulang.
ChangerReinitializeUnit membangun SRB dengan CDB untuk memposisikan elemen transportasi dan mengirimkannya ke driver port sistem.
ChangerReinitializeUnit mengatur bidang Informasi di blok status I/O ke sizeof(CHANGER_ELEMENT) sebelum kembali ke driver kelas pengubah.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | mcd.h (termasuk Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |