Fungsi ChangerQueryVolumeTags (mcd.h)
ChangerQueryVolumeTags menangani aspek khusus perangkat dari IRP kontrol perangkat dengan kode IOCTL IOCTL_CHANGER_QUERY_VOLUME_TAGS.
Sintaks
NTSTATUS ChangerQueryVolumeTags(
[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 pengambilan informasi tag volume, ChangerQueryVolumeTags mengembalikan nilai STATUS_XXX yang dikembalikan oleh driver port sistem, atau salah satu nilai berikut:
STATUS_SUCCESS
STATUS_INVALID_ELEMENT_ADDRESS
STATUS_INSUFFICIENT_RESOURCES
Jika pengubah tidak mendukung pengambilan informasi tag volume, ChangerQueryVolumeTags mengembalikan STATUS_INVALID_DEVICE_REQUEST.
Keterangan
Rutinitas ini menggabungkan fungsionalitas dua perintah SCSI: SEND VOLUME TAGS dan REQUEST VOLUME ELEMENT ADDRESS. Rutinitas ini diperlukan.
ChangerQueryVolumeTags mengambil informasi tag volume untuk elemen tertentu. Ini juga dapat digunakan untuk menentukan atau menghapus informasi tag volume jika pengubah mendukung operasi ini. Bendera CHANGER_VOLUME_IDENTIFICATION di anggota Features0 dari struktur GET_CHANGER_PARAMETERS menunjukkan apakah pengubah mendukung fungsionalitas ini.
Driver kelas pengubah memeriksa panjang buffer input dan output di lokasi tumpukan I/O sebelum memanggil ChangerQueryVolumeTags. Irp-SystemBuffer> menunjuk ke struktur CHANGER_SEND_VOLUME_TAG_INFORMATION yang menunjukkan elemen, operasi yang akan dilakukan, dan templat yang menentukan ID volume untuk dicari atau diatur.
ChangerQueryVolumeTags terlebih dahulu memeriksa kode tindakan untuk operasi yang tidak didukung, dan mengembalikan STATUS_INVALID_DEVICE_REQUEST untuk yang tidak didukungnya. Selanjutnya, ia membangun SRB dengan CDB untuk menunjukkan alamat khusus perangkat dari elemen awal dan mengirimkannya ke driver port sistem, meneruskan templat ID volume sebagai parameter. (Untuk pengubah SCSI, driver miniclass menggunakan perintah SCSI SEND VOLUME TAG.)
Jika SRB pertama berhasil, ChangerQueryVolumeTags membangun SRB kedua dengan CDB untuk mentransfer hasil SRB sebelumnya. (Untuk pengubah SCSI, driver miniclass menggunakan perintah SCSI REQUEST VOLUME ELEMENT ADDRESS.)
ChangerQueryVolumeTags kemudian mengisi struktur READ_ELEMENT_ADDRESS_INFO di Irp-AssociatedIrp.SystemBuffer > yang menunjukkan jumlah elemen di mana informasi tag volume ditransfer, dan informasi untuk setiap elemen.
Setelah mengisi buffer sistem, ChangerQueryVolumeTags mengatur bidang Informasi di blok status I/O ke jumlah byte yang ditulis ke buffer sebelum kembali ke driver kelas pengubah.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | mcd.h (termasuk Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |