Freigeben über


IOCTL_STORAGE_BREAK_RESERVATION IOCTL (ntddstor.h)

Bricht eine Datenträgerreservierung auf. In einem Multi-Initiator-System ("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, ist ein Mittel erforderlich, um die Reservierung des Datenträgers durch Erzwingung zu entfernen.

Ein Mittel, das System zum Freigeben einer reservierten Datenträgerressource zu zwingen, besteht darin, den Bus zurückzusetzen. Tatsächlich entspricht die IOCTL_STORAGE_BREAK_RESERVATION Anforderung für Speichergeräte, deren Busadapter vom SCSI-Porttreiber verwaltet werden, IOCTL_STORAGE_RESET_BUS, was einfach eine Zurücksetzung des Busses ausfü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. Nach Erhalt einer IOCTL_STORAGE_BREAK_RESERVATION Anforderung versucht der STOR-Porttreiber zunächst, die Reserve für die logische Einheit zu entfernen, indem die logische Einheit selbst zurückgesetzt wird. Wenn dies fehlschlägt, versucht der STOR-Porttreiber, das Zielgerät zurückzusetzen, das das übergeordnete Element der logischen Einheit ist. Nur wenn das Zurücksetzen des Zielgeräts fehlschlägt, setzt der Porttreiber den Bus zurück.

Durch zurücksetzen des Busses werden alle Gerätereservierungen und Übertragungsgeschwindigkeitseinstellungen gelöscht, die dann neu verhandelt werden müssen. Da es sich hierbei um einen zeitaufwendigen Betrieb handelt, ist IOCTL_STORAGE_BREAK_RESERVATION immer eine einfache Buszurücksetzung zu bevorzugen.

Der Anrufer erfordert nur Lesezugriff, um eine Buszurücksetzung auszusetzen.

Das SrbStatus- Flag für ausstehende 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

Nichts.

Länge des Ausgabepuffers

Nichts.

Statusblock

Das Feld Information wird auf Null festgelegt. Das Feld Status wird 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)

Siehe auch

IOCTL_STORAGE_RESET_BUS

STORAGE_BREAK_RESERVATION_REQUEST