IOCTL_STORAGE_EJECTION_CONTROL IOCTL (ntddstor.h)

Blocca il dispositivo per impedire la rimozione dei supporti. Se il driver può impedire la rimozione del supporto mentre l'unità è in uso, il driver disabilita o abilita il meccanismo che espelle il supporto, bloccando l'unità. Un chiamante deve aprire il dispositivo con FILE_READ_ATTRIBUTES per inviare questa richiesta.

A differenza di IOCTL_STORAGE_MEDIA_REMOVAL, il driver tiene traccia delle richieste IOCTL_STORAGE_EJECTION_CONTROL dal chiamante e ignora le richieste di sblocco per le quali non ha ricevuto una richiesta di blocco dallo stesso chiamante, impedendo così ad altri chiamanti di sbloccare l'unità.

Un driver per un dispositivo multimediale rimovibile: può supportare questo IOCTL deve eseguire le operazioni seguenti:

  1. Mantenere un conteggio dei blocchi, contrassegnato dal chiamante, nell'estensione dell'oggetto dispositivo.
  2. Mantenere il numero di blocchi per dispositivo fisico.
  3. Quando viene chiamato con questo IOCTL, se il flag per impedire la rimozione del supporto è impostato, incrementare il conteggio; se il flag è chiaro e il driver ha ricevuto in precedenza una richiesta di blocco dallo stesso chiamante, decrementare il conteggio.
  4. Impedisci la rimozione del supporto, a meno che tutti i conteggi dei blocchi non siano zero.
In circostanze normali, il chiamante che ha bloccato il dispositivo usando IOCTL_STORAGE_EJECTION_CONTROL, sblocca il dispositivo inviando nuovamente IOCTL_STORAGE_EJECTION_CONTROL con Irp->AssociatedIrp.SystemBuffer impostato su un valore booleano FALSE. Tuttavia, a volte il chiamante non riesce a sbloccare correttamente il dispositivo.

Per garantire che i blocchi di rimozione dei supporti vengano rilasciati correttamente, il driver di classe tiene traccia dei chiamanti che bloccano il supporto con IOCTL_STORAGE_EJECTION_CONTROL. Se il chiamante termina senza sbloccare il dispositivo, il driver di classe sblocca il 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 bloccare il supporto nell'unità.

Lunghezza del buffer di input

Lunghezza di un valore 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 oppure su STATUS_INVALID_DEVICE_REQUEST, STATUS_NO_MEDIA_IN_DEVICE o STATUS_DEVICE_NOT_CONNECTED.

Requisiti

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

Vedi anche

IOCTL_STORAGE_EJECT_MEDIA