Compartir a través de


IOCTL_STORAGE_MCN_CONTROL IOCTL (ntddstor.h)

Habilita o deshabilita temporalmente la entrega de los eventos PnP personalizados GUID_IO_MEDIA_ARRIVAL y GUID_IO_MEDIA_REMOVAL en un dispositivo multimedia extraíble. Esto, a su vez, habilita o deshabilita la detección de cambios multimedia (Reproducción automática) para el dispositivo si el autor de la llamada ha abierto el dispositivo con FILE_READ_ATTRIBUTES acceso y si el dispositivo tiene habilitada reproducción automática en el registro. El autor de la llamada no debe abrir el dispositivo para el acceso de lectura o escritura o se producirá un error en la operación IOCTL. Este IOCTL no tiene ningún efecto en la configuración reproducción automática en el Registro.

Un controlador para este dispositivo multimedia extraíble debe hacer lo siguiente:

  1. Mantenga un recuento de solicitudes de deshabilitación, por dispositivo físico, en la extensión de objeto de dispositivo.
  2. Cuando se llama con este IOCTL, si se establece la marca para deshabilitar la detección de cambios multimedia, incremente el recuento; si la marca está desactivada, disminuya el recuento.
  3. Establezca el evento de cambio multimedia para el dispositivo cuando se cambie el estado multimedia solo si el recuento de solicitudes de deshabilitación es cero.
Cuando el irP de IRP_MJ_DEVICE_CONTROL que contiene este IOCTL se pasa al controlador de clase SCSI, el miembro FileObject del IO_STACK_LOCATION actual debe apuntar a un objeto de archivo válido. El controlador de clase SCSI requiere un objeto de archivo para los casos en los que una aplicación en modo de usuario que está deshabilitando o habilitando La reproducción automática finaliza inesperadamente. En tales casos, el controlador de clase SCSI usa el objeto de archivo para volver a habilitar la detección de cambios multimedia. Dado que el objeto de archivo es necesario para una limpieza adecuada, el controlador de clase SCSI hará que IRP produzca un error con un mensaje de error de STATUS_INVALID_PARAMETER si el miembro FileObject de IO_STACK_LOCATION no apunta a un objeto de archivo válido. Si una aplicación en modo de usuario abre el dispositivo, el administrador de E/S inicializa este miembro, pero los escritores de controladores en modo kernel no deben suponer que FileObject se inicializará correctamente cuando una aplicación en modo usuario genere el IRP. Si, por ejemplo, una aplicación en modo de usuario abre erróneamente el dispositivo para el acceso de lectura o escritura antes de enviar el IOCTL, el IRP de control de dispositivos se enrutará a través del sistema de archivos, lo que impide que el controlador de clase SCSI y el controlador del dispositivo accedan directamente al objeto de archivo del dispositivo.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

El búfer de Irp-AssociatedIrp.SystemBuffer> contiene un valor booleano, con TRUE que indica que el controlador debe deshabilitar la detección de cambios multimedia.

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_BUFFER_TOO_SMALL, STATUS_INVALID_PARAMETER o STATUS_INVALID_DEVICE_STATE.

Requisitos

Requisito Valor
Header ntddstor.h (incluya Ntddstor.h)

Consulte también

IO_STACK_LOCATION