Condividi tramite


IOCTL_STORAGE_BREAK_RESERVATION IOCTL (ntddstor.h)

Interrompe una prenotazione del disco. In un sistema multi-iniziatore ("clustered") un singolo computer può riservare una risorsa disco, in modo che nessun altro computer possa accedere al disco. Se il computer non libera o non riesce a liberare la risorsa in modo tempestivo, è necessario rimuovere la prenotazione del disco forzatamente.

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 di porta SCSI, la richiesta IOCTL_STORAGE_BREAK_RESERVATION equivale a IOCTL_STORAGE_RESET_BUS, che semplicemente esegue una reimpostazione del bus, liberando tutte le relative risorse riservate.

Per i dispositivi di archiviazione i cui adattatori bus sono gestiti dal driver di porta STOR, questo codice di controllo di I/O offre una tecnica migliore per interrompere una prenotazione del disco. Questa tecnica è detta "reimpostazione gerarchica". Dopo aver ricevuto una richiesta di IOCTL_STORAGE_BREAK_RESERVATION, il driver della porta STOR tenta innanzitutto di rimuovere la riserva nell'unità logica reimpostando l'unità logica stessa. In caso di errore, il driver della porta STOR tenta di reimpostare il dispositivo di destinazione padre dell'unità logica. Solo quando la reimpostazione del dispositivo di destinazione non riesce, 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 dispendiosa in termini di tempo, IOCTL_STORAGE_BREAK_RESERVATION è sempre preferibile a una semplice reimpostazione del bus.

Il chiamante richiede solo l'accesso in lettura per rilasciare una reimpostazione del bus.

Il flag SrbStatus di SrbStatus in sospeso è impostato su SRB_STATUS_BUS_RESET.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

Il buffer in corrispondenza 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 di stato

Il campo informazioni è impostato su zero. Il campo stato di è impostato su STATUS_SUCCESS oppure su STATUS_INSUFFICIENT_RESOURCES, STATUS_NOT_IMPLEMENTED o STATUS_INVALID_DEVICE_REQUEST.

Fabbisogno

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

Vedere anche

IOCTL_STORAGE_RESET_BUS

STORAGE_BREAK_RESERVATION_REQUEST