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 |