Bagikan melalui


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

Lihat juga

, GET_CHANGER_PARAMETERS

CHANGER_ELEMENT

CHANGER_ELEMENT_STATUS

CHANGER_SEND_VOLUME_TAG_INFORMATION

ChangerGetElementStatus

READ_ELEMENT_ADDRESS_INFO