Partilhar via


IOCTL_STORAGE_MCN_CONTROL IOCTL (ntddstor.h)

Habilita ou desabilita temporariamente a entrega dos eventos PnP personalizados GUID_IO_MEDIA_ARRIVAL e GUID_IO_MEDIA_REMOVAL em um dispositivo de mídia removível. Isso, por sua vez, habilita ou desabilita a detecção automática de alterações de mídia para o dispositivo se o chamador tiver aberto o dispositivo com acesso FILE_READ_ATTRIBUTES e se o dispositivo tiver a Reprodução Automática habilitada no registro. O chamador não deve abrir o dispositivo para acesso de leitura ou gravação ou a operação IOCTL falhará. Esse IOCTL não tem nenhum efeito sobre a configuração de Reprodução Automática no Registro.

Um driver para um dispositivo de mídia removível deve fazer o seguinte:

  1. Mantenha uma contagem de solicitações desabilitar, por dispositivo físico, na extensão de objeto do dispositivo.
  2. Quando chamado com esse IOCTL, se o sinalizador para desabilitar a detecção de alterações de mídia for definido, incremente a contagem; se o sinalizador estiver claro, decremente a contagem.
  3. Defina o evento de alteração de mídia para o dispositivo quando o estado de mídia for alterado somente se a contagem de solicitações desabilitar for zero.
Quando o IRP_MJ_DEVICE_CONTROL IRP que contém esse IOCTL é passado para o driver de classe SCSI, o FileObject membro do IO_STACK_LOCATION atual deve apontar para um objeto de arquivo válido. O driver de classe SCSI requer um objeto de arquivo para casos em que um aplicativo de modo de usuário que está desabilitando ou habilitando a Reprodução Automática termina inesperadamente. Nesses casos, o driver de classe SCSI usa o objeto de arquivo para reabilitar a detecção de alterações de mídia. Como o objeto de arquivo é necessário para limpeza adequada, o driver de classe SCSI fará com que o IRP falhe com uma mensagem de erro de STATUS_INVALID_PARAMETER se o FileObject membro do IO_STACK_LOCATION não apontar para um objeto de arquivo válido. Se um aplicativo de modo de usuário abrir o dispositivo, o gerenciador de E/S inicializará esse membro, mas os gravadores de driver no modo kernel não devem assumir que fileObject será inicializado corretamente quando o IRP for gerado por um aplicativo de modo de usuário. Se, por exemplo, um aplicativo de modo de usuário abrir erroneamente o dispositivo para acesso de leitura ou gravação antes de enviar o IOCTL, o CONTROLE DE DISPOSITIVO IRP será roteado por meio do sistema de arquivos, impedindo que o driver de classe SCSI e o driver de dispositivo acessem diretamente o objeto de arquivo do dispositivo.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

O buffer em >AssociatedIrp.SystemBuffer contém um valor booliano, com verdadeiro indicando que o driver deve desabilitar a detecção de alterações de mídia.

Comprimento do buffer de entrada

O comprimento de um booliano.

Buffer de saída

Nenhum.

Comprimento do buffer de saída

Nenhum.

Bloco de status

O campo de Informações do está definido como zero. O campo status está definido como STATUS_SUCCESS ou possivelmente STATUS_BUFFER_TOO_SMALL, STATUS_INVALID_PARAMETER ou STATUS_INVALID_DEVICE_STATE.

Requisitos

Requisito Valor
cabeçalho ntddstor.h (include Ntddstor.h)

Consulte também

IO_STACK_LOCATION