Compartilhar via


IOCTL_STORAGE_EJECTION_CONTROL IOCTL (ntddstor.h)

Bloqueia o dispositivo para impedir a remoção da mídia. Se o driver puder impedir que a mídia seja removida enquanto a unidade está em uso, o driver desabilita ou habilita o mecanismo que ejeta a mídia, bloqueando assim a unidade. Um chamador deve abrir o dispositivo com FILE_READ_ATTRIBUTES para enviar essa solicitação.

Ao contrário de IOCTL_STORAGE_MEDIA_REMOVAL, o driver rastreia IOCTL_STORAGE_EJECTION_CONTROL solicitações pelo chamador e ignora solicitações de desbloqueio para as quais não recebeu uma solicitação de bloqueio do mesmo chamador, impedindo assim que outros chamadores desbloqueiem a unidade.

Um driver para um dispositivo de mídia removível – pode dar suporte a este IOCTL deve fazer o seguinte:

  1. Mantenha uma contagem de bloqueios, marcada pelo chamador, na extensão de objeto do dispositivo.
  2. Mantenha a contagem de bloqueios por dispositivo físico.
  3. Quando chamado com esse IOCTL, se o sinalizador para impedir a remoção da mídia estiver definido, incremente a contagem; se o sinalizador estiver limpo e o driver tiver recebido anteriormente uma solicitação de bloqueio do mesmo chamador, decremente a contagem.
  4. Impedir a remoção da mídia, a menos que todas as contagens de bloqueio sejam zero.
Em circunstâncias normais, o chamador que bloqueou o dispositivo usando IOCTL_STORAGE_EJECTION_CONTROL, desbloqueia o dispositivo enviando IOCTL_STORAGE_EJECTION_CONTROL novamente com Irp->AssociatedIrp.SystemBuffer definido como um valor booliano de FALSE. No entanto, às vezes, o chamador não consegue desbloquear o dispositivo corretamente.

Para garantir que os bloqueios de remoção de mídia sejam liberados corretamente, o driver de classe controla os chamadores que bloqueiam a mídia com IOCTL_STORAGE_EJECTION_CONTROL. Se o chamador terminar sem desbloquear o dispositivo, o driver de classe desbloqueará o dispositivo.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

O buffer em Irp-AssociatedIrp.SystemBuffer> contém um valor booliano, com TRUE indicando que o driver deve bloquear a mídia na unidade.

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 Informações é definido como zero. O campo Status é definido como STATUS_SUCCESS ou possivelmente para STATUS_INVALID_DEVICE_REQUEST, STATUS_NO_MEDIA_IN_DEVICE ou STATUS_DEVICE_NOT_CONNECTED.

Requisitos

Requisito Valor
Cabeçalho ntddstor.h (inclua Ntddstor.h)

Confira também

IOCTL_STORAGE_EJECT_MEDIA