Freigeben über


IOCTL_STORAGE_BREAK_RESERVATION IOCTL (ntddstor.h)

Unterbricht eine Datenträgerreservierung. In einem System mit mehreren Initiatoren ("clustered") kann ein einzelner Computer eine Datenträgerressource reservieren, sodass kein anderer Computer auf den Datenträger zugreifen kann. Wenn der Computer die Ressource nicht rechtzeitig freigeben kann oder kann, ist ein Mittel erforderlich, um die Reservierung des Datenträgers mit Gewalt zu entfernen.

Eine Möglichkeit, das System zum Freigeben einer reservierten Datenträgerressource zu zwingen, besteht darin, den Bus zurückzusetzen. Für Speichergeräte, deren Busadapter vom SCSI-Porttreiber verwaltet werden, entspricht die IOCTL_STORAGE_BREAK_RESERVATION Anforderung IOCTL_STORAGE_RESET_BUS, die einfach eine Zurücksetzung des Busses durchführt und alle reservierten Ressourcen freigibt.

Für Speichergeräte, deren Busadapter vom STOR-Porttreiber verwaltet werden, bietet dieser E/A-Steuerungscode eine bessere Technik zum Unterbrechen einer Datenträgerreservierung. Diese Technik wird als "hierarchisches Zurücksetzen" bezeichnet. Beim Empfang einer IOCTL_STORAGE_BREAK_RESERVATION-Anforderung versucht der STOR-Porttreiber zuerst, die Reserve für die logische Einheit zu entfernen, indem er die logische Einheit selbst zurückgesetzt. Wenn dies fehlschlägt, versucht der STOR-Porttreiber, das Zielgerät zurückzusetzen, das das übergeordnete Zielgerät der logischen Einheit ist. Nur wenn das Zurücksetzen des Zielgeräts fehlschlägt, setzt der Porttreiber den Bus zurück.

Beim Zurücksetzen des Busses werden alle Gerätereservierungen und Übertragungsgeschwindigkeitseinstellungen gelöscht, die dann neu verhandelt werden müssen. Da dies ein zeitaufwändiger Vorgang ist, ist IOCTL_STORAGE_BREAK_RESERVATION immer einer einfachen Busrücksetzung vorzuziehen.

Der Aufrufer benötigt nur Lesezugriff, um eine Busrücksetzung auszustellen.

Das SrbStatus-Flag der ausstehenden SRBs ist auf SRB_STATUS_BUS_RESET festgelegt.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Der Puffer bei Irp-AssociatedIrp.SystemBuffer> enthält eine STORAGE_BREAK_RESERVATION_REQUEST-Struktur, die den zurückzusetzenden Bus identifiziert.

Eingabepufferlänge

Die Länge einer STORAGE_BREAK_RESERVATION_REQUEST-Struktur .

Ausgabepuffer

Keine.

Länge des Ausgabepuffers

Keine.

Statusblock

Das Feld Information ist auf 0 festgelegt. Das Feld Status ist auf STATUS_SUCCESS oder möglicherweise auf STATUS_INSUFFICIENT_RESOURCES, STATUS_NOT_IMPLEMENTED oder STATUS_INVALID_DEVICE_REQUEST festgelegt.

Anforderungen

Anforderung Wert
Header ntddstor.h (include Ntddstor.h)

Weitere Informationen

IOCTL_STORAGE_RESET_BUS

STORAGE_BREAK_RESERVATION_REQUEST