共用方式為


ChangerQueryVolumeTags 函式 (mcd.h)

ChangerQueryVolumeTags 會 使用 IOCTL_CHANGER_QUERY_VOLUME_TAGS 的 IOCTL 程式代碼來處理裝置控制項 IRP 的裝置特定層面。

語法

NTSTATUS ChangerQueryVolumeTags(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PIRP           Irp
);

參數

[in] DeviceObject

代表變更器的裝置物件的指標。

[in] Irp

IRP 的指標。

傳回值

如果變更程序支援擷取磁碟區標籤資訊, ChangerQueryVolumeTags 會傳回系統埠驅動程式所傳回的 STATUS_XXX 值,或下列其中一個值:

STATUS_SUCCESS

STATUS_INVALID_ELEMENT_ADDRESS

STATUS_INSUFFICIENT_RESOURCES

如果變更程式不支援擷取磁碟區標記資訊,ChangerQueryVolumeTags 會傳回STATUS_INVALID_DEVICE_REQUEST。

備註

此例程結合了兩個 SCSI 命令的功能:SEND VOLUME TAGS 和 REQUEST VOLUME ELEMENT ADDRESS。 此例程是必要的。

ChangerQueryVolumeTags 會 擷取指定元素的磁碟區標記資訊。 如果變更器支持這些作業,它也可以用來定義或清除磁碟區標籤資訊。 GET_CHANGER_PARAMETERS 結構 之 Features0 成員中的 CHANGER_VOLUME_IDENTIFICATION 旗標會指出變更器是否支援這項功能。

changer 類別驅動程式會在呼叫 ChangerQueryVolumeTags 之前,先檢查 I/O 堆棧位置中的輸入和輸出緩衝區長度。 Irp-SystemBuffer> 指向CHANGER_SEND_VOLUME_TAG_INFORMATION結構,指出要執行的元素、要執行的作業,以及指定要搜尋或設定之磁碟區標識符的範本。

ChangerQueryVolumeTags 會先檢查動作程式代碼是否有不支持的作業,並針對不支援的作業傳回STATUS_INVALID_DEVICE_REQUEST。 接下來,它會建置具有CDB的SRB,以指出起始元素的裝置特定位址,並將它傳送至系統埠驅動程式,並將磁碟區標識符範本當做參數傳遞。 (針對 SCSI 變更器,迷你類別驅動程式會使用 SCSI 命令 SEND VOLUME TAG.)

如果第一個 SRB 成功, ChangerQueryVolumeTags 會使用 CDB 建置第二個 SRB,以傳輸先前 SRB 的結果。 (針對 SCSI 變更器,迷你類別驅動程式會使用 SCSI 命令 REQUEST VOLUME ELEMENT ADDRESS.)

ChangerQueryVolumeTags 接著會在 Irp-AssociatedIrp.SystemBuffer> 填入READ_ELEMENT_ADDRESS_INFO結構,指出傳輸磁碟區卷標資訊的元素數目,以及每個元素的資訊。

填入系統緩衝區之後, ChangerQueryVolumeTags 會將 I/O 狀態區塊中的 資訊 欄位設定為寫入緩衝區的位元元組數,然後再返回變更程式類別驅動程式。

規格需求

需求
目標平台 桌面
標頭 mcd.h (包括 Mcd.h、Ntddchgr.h)
IRQL PASSIVE_LEVEL

另請參閱

、GET_CHANGER_PARAMETERS

CHANGER_ELEMENT

CHANGER_ELEMENT_STATUS

CHANGER_SEND_VOLUME_TAG_INFORMATION

ChangerGetElementStatus

READ_ELEMENT_ADDRESS_INFO