IOCTL_STORAGE_BREAK_RESERVATION IOCTL (ntddstor.h)
Interrompe una prenotazione del disco. In un sistema multi-initiator ("clustered") un singolo computer può riservare una risorsa disco, in modo che nessun altro computer possa accedere al disco. Se il computer non riesce o non riesce a liberare la risorsa in modo tempestivo, è necessario rimuovere la prenotazione del disco forzando la prenotazione del disco.
Uno dei mezzi per forzare il sistema a liberare una risorsa disco riservata consiste nel reimpostare il bus. Infatti, per i dispositivi di archiviazione i cui adattatori bus sono gestiti dal driver della porta SCSI, la richiesta di IOCTL_STORAGE_BREAK_RESERVATION equivale a IOCTL_STORAGE_RESET_BUS, che semplicemente esegue una reimpostazione del bus, liberando tutte le risorse riservate.
Per i dispositivi di archiviazione i cui adattatori bus sono gestiti dal driver di porta STOR, questo codice di controllo I/O offre una tecnica migliore per interrompere una prenotazione del disco. Questa tecnica è chiamata "reimpostazione gerarchica". Dopo aver ricevuto una richiesta di IOCTL_STORAGE_BREAK_RESERVATION, il driver di porta STOR tenta innanzitutto di rimuovere la riserva nell'unità logica reimpostando l'unità logica stessa. In caso contrario, il driver di porta STOR tenta di reimpostare il dispositivo di destinazione padre dell'unità logica. Solo quando la reimpostazione del dispositivo di destinazione ha esito negativo, il driver della porta reimposta il bus.
La reimpostazione del bus cancella tutte le prenotazioni dei dispositivi e le impostazioni di velocità di trasferimento, che devono quindi essere rinegoziate. Poiché si tratta di un'operazione che richiede tempo, IOCTL_STORAGE_BREAK_RESERVATION deve essere sempre preferito a una semplice reimpostazione del bus.
Il chiamante richiede solo l'accesso in lettura per generare una reimpostazione del bus.
Il flag SrbStatus degli SRB in sospeso è impostato su SRB_STATUS_BUS_RESET.
Codice principale
Buffer di input
Il buffer in Irp-AssociatedIrp.SystemBuffer> contiene una struttura STORAGE_BREAK_RESERVATION_REQUEST che identifica il bus da reimpostare.
Lunghezza del buffer di input
Lunghezza di una struttura STORAGE_BREAK_RESERVATION_REQUEST .
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_INSUFFICIENT_RESOURCES, STATUS_NOT_IMPLEMENTED o STATUS_INVALID_DEVICE_REQUEST.
Requisiti
Requisito | Valore |
---|---|
Intestazione | ntddstor.h (include Ntddstor.h) |