Função ChangerQueryVolumeTags (mcd.h)

ChangerQueryVolumeTags manipula os aspectos específicos do dispositivo de um IRP de controle de dispositivo com o código IOCTL de IOCTL_CHANGER_QUERY_VOLUME_TAGS.

Sintaxe

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

Parâmetros

[in] DeviceObject

Ponteiro para o objeto de dispositivo que representa o alterador.

[in] Irp

Ponteiro para o IRP.

Retornar valor

Se o alterador der suporte à recuperação de informações de marca de volume, ChangerQueryVolumeTags retornará o valor STATUS_XXX retornado pelo driver de porta do sistema ou um dos seguintes valores:

STATUS_SUCCESS

STATUS_INVALID_ELEMENT_ADDRESS

STATUS_INSUFFICIENT_RESOURCES

Se o alterador não der suporte à recuperação de informações de marca de volume, ChangerQueryVolumeTags retornará STATUS_INVALID_DEVICE_REQUEST.

Comentários

Essa rotina combina a funcionalidade de dois comandos SCSI: SEND VOLUME TAGS e REQUEST VOLUME ELEMENT ADDRESS. Essa rotina é necessária.

ChangerQueryVolumeTags recupera informações de marca de volume para elementos especificados. Ele também pode ser usado para definir ou limpar informações de marca de volume se o alterador der suporte a essas operações. O sinalizador CHANGER_VOLUME_IDENTIFICATION no membro Features0 da estrutura GET_CHANGER_PARAMETERS indica se o alterador dá suporte a essa funcionalidade.

O driver de classe do alterador verifica os comprimentos de buffer de entrada e saída no local da pilha de E/S antes de chamar ChangerQueryVolumeTags. Irp-SystemBuffer> aponta para uma estrutura CHANGER_SEND_VOLUME_TAG_INFORMATION que indica os elementos, a operação a ser executada e um modelo que especifica a ID do volume a ser pesquisada ou definida.

ChangerQueryVolumeTags primeiro verifica o código de ação para operações sem suporte e retorna STATUS_INVALID_DEVICE_REQUEST para aqueles aos quais ele não dá suporte. Em seguida, ele cria um SRB com um CDB para indicar o endereço específico do dispositivo do elemento inicial e o envia para o driver de porta do sistema, passando o modelo de ID de volume como um parâmetro. (Para um alterador SCSI, o driver de miniclasse usa o comando SCSI SEND VOLUME TAG.)

Se o primeiro SRB for bem-sucedido, ChangerQueryVolumeTags criará um segundo SRB com um CDB para transferir os resultados do SRB anterior. (Para um alterador SCSI, o driver de miniclasse usa o comando SCSI REQUEST VOLUME ELEMENT ADDRESS.)

ChangerQueryVolumeTags preenche uma estrutura READ_ELEMENT_ADDRESS_INFO em Irp-AssociatedIrp.SystemBuffer> que indica o número de elementos para os quais as informações da marca de volume foram transferidas e as informações de cada elemento.

Depois de preencher o buffer do sistema, ChangerQueryVolumeTags define o campo Informações no bloco de status de E/S como o número de bytes gravados no buffer antes de retornar ao driver de classe do alterador.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho mcd.h (include Mcd.h, Ntddchgr.h)
IRQL PASSIVE_LEVEL

Confira também

, GET_CHANGER_PARAMETERS

CHANGER_ELEMENT

CHANGER_ELEMENT_STATUS

CHANGER_SEND_VOLUME_TAG_INFORMATION

ChangerGetElementStatus

READ_ELEMENT_ADDRESS_INFO