IOCTL_STORAGE_EJECTION_CONTROL IOCTL (ntddstor.h)
Bloquea el dispositivo para evitar la eliminación de los medios. Si el controlador puede impedir que los medios se quiten mientras la unidad está en uso, el controlador deshabilita o habilita el mecanismo que expulsa medios, bloqueando así la unidad. Un llamador debe abrir el dispositivo con FILE_READ_ATTRIBUTES para enviar esta solicitud.
A diferencia de IOCTL_STORAGE_MEDIA_REMOVAL, el controlador realiza un seguimiento de IOCTL_STORAGE_EJECTION_CONTROL solicitudes por llamador y omite las solicitudes de desbloqueo para las que no ha recibido una solicitud de bloqueo del mismo llamador, lo que impide que otros autores de llamadas desbloqueen la unidad.
Un controlador para un dispositivo multimedia extraíble: puede admitir este IOCTL debe hacer lo siguiente:
- Mantenga un recuento de bloqueos, etiquetado por llamador, en la extensión de objeto de dispositivo.
- Mantenga el recuento de bloqueos por dispositivo físico.
- Cuando se llama con este IOCTL, si se establece la marca para evitar quitar el medio, incremente el recuento; si la marca está desactivada y el controlador ha recibido previamente una solicitud de bloqueo del mismo autor de llamada, disminuye el recuento.
- Evite la eliminación de los medios a menos que todos los recuentos de bloqueos sean cero.
Para asegurarse de que los bloqueos de eliminación de medios se liberan correctamente, el controlador de clase realiza un seguimiento de los autores de llamadas que bloquean el medio con IOCTL_STORAGE_EJECTION_CONTROL. Si el autor de la llamada finaliza sin desbloquear el dispositivo, el controlador de clase desbloquea el dispositivo.
Código principal
Búfer de entrada
El búfer de Irp-AssociatedIrp.SystemBuffer> contiene un valor booleano, con TRUE que indica que el controlador debe bloquear el medio en la unidad.
Longitud del búfer de entrada
Longitud de un valor booleano.
Búfer de salida
Ninguno.
Longitud del búfer de salida
Ninguno.
Bloque de estado
El campo Información se establece en cero. El campo Estado se establece en STATUS_SUCCESS, o posiblemente en STATUS_INVALID_DEVICE_REQUEST, STATUS_NO_MEDIA_IN_DEVICE o STATUS_DEVICE_NOT_CONNECTED.
Requisitos
Requisito | Valor |
---|---|
Header | ntddstor.h (incluya Ntddstor.h) |