IOCTL_STORAGE_MCN_CONTROL IOCTL (ntddstor.h)

Abilita o disabilita temporaneamente il recapito degli eventi PnP personalizzati GUID_IO_MEDIA_ARRIVAL e GUID_IO_MEDIA_REMOVAL in un dispositivo multimediale rimovibile. Questo, a sua volta, abilita o disabilita il rilevamento delle modifiche multimediali (AutoPlay) per il dispositivo se il chiamante ha aperto il dispositivo con accesso FILE_READ_ATTRIBUTES e se il dispositivo ha abilitato AutoPlay nel Registro di sistema. Il chiamante non deve aprire il dispositivo per l'accesso in lettura o scrittura o l'operazione IOCTL avrà esito negativo. Questo IOCTL non ha alcun effetto sull'impostazione AutoPlay nel Registro di sistema.

Un driver per tale dispositivo multimediale rimovibile deve eseguire le operazioni seguenti:

  1. Mantenere un numero di richieste di disabilitazione, per dispositivo fisico, nell'estensione dell'oggetto dispositivo.
  2. Quando viene chiamato con questo IOCTL, se il flag per disabilitare il rilevamento delle modifiche multimediali è impostato, aumentare il conteggio; se il flag è chiaro, decrerere il conteggio.
  3. Impostare l'evento di modifica multimediale per il dispositivo quando lo stato multimediale viene modificato solo se il conteggio delle richieste di disabilitazione è zero.
Quando il IRP_MJ_DEVICE_CONTROL IRP che contiene questo IOCTL viene passato al driver di classe SCSI, il membro FileObject dell'IO_STACK_LOCATION corrente deve puntare a un oggetto file valido. Il driver di classe SCSI richiede un oggetto file per i casi in cui un'applicazione in modalità utente che disabilita o abilita AutoPlay termina in modo imprevisto. In questi casi, il driver di classe SCSI usa l'oggetto file per ripristinare il rilevamento delle modifiche multimediali. Poiché l'oggetto file è necessario per la pulizia corretta, il driver di classe SCSI causerà l'esito negativo dell'IRP con un messaggio di errore di STATUS_INVALID_PARAMETER se il membro FileObject di IO_STACK_LOCATION non punta a un oggetto file valido. Se un'applicazione in modalità utente apre il dispositivo, la gestione I/O inizializza questo membro, ma i writer di driver in modalità kernel non devono presupporre che FileObject verrà inizializzato correttamente quando l'IRP viene generato da un'applicazione in modalità utente. Se, ad esempio, un'applicazione in modalità utente apre erroneamente il dispositivo per l'accesso in lettura o scrittura prima dell'invio di IOCTL, il controllo del dispositivo verrà instradato attraverso il file system, impedendo al driver di classe SCSI e al driver del dispositivo di accedere direttamente all'oggetto file del dispositivo.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

Il buffer in Irp-AssociatedIrp.SystemBuffer> contiene un valore booleano, con TRUE che indica che il driver deve disabilitare il rilevamento delle modifiche multimediali.

Lunghezza del buffer di input

Lunghezza di un booleano.

Buffer di output

Nessuno.

Lunghezza del buffer di output

Nessuno.

Blocco dello stato

Il campo Informazioni è impostato su zero. Il campo Stato è impostato su STATUS_SUCCESS o eventualmente su STATUS_BUFFER_TOO_SMALL, STATUS_INVALID_PARAMETER o STATUS_INVALID_DEVICE_STATE.

Requisiti

Requisito Valore
Intestazione ntddstor.h (include Ntddstor.h)

Vedi anche

IO_STACK_LOCATION