Partager via


IOCTL_STORAGE_BREAK_RESERVATION IOCTL (ntddstor.h)

Interrompt une réservation de disque. Dans un système multi-initiateur (« cluster »), un seul ordinateur peut réserver une ressource de disque, afin qu’aucun autre ordinateur ne puisse accéder au disque. Si l’ordinateur ne libère pas ou ne peut pas libérer la ressource en temps voulu, un moyen est nécessaire pour supprimer la réservation du disque par la force.

L’un des moyens de forcer le système à libérer une ressource de disque réservée consiste à réinitialiser le bus. En fait, pour les périphériques de stockage dont les adaptateurs de bus sont gérés par le pilote de port SCSI, la demande de IOCTL_STORAGE_BREAK_RESERVATION équivaut à IOCTL_STORAGE_RESET_BUS, qui effectue simplement une réinitialisation du bus, libérant toutes ses ressources réservées.

Pour les périphériques de stockage dont les adaptateurs de bus sont gérés par le pilote de port STOR, ce code de contrôle d’E/S offre une meilleure technique de rupture d’une réservation de disque. Cette technique est appelée « réinitialisation hiérarchique ». Lors de la réception d’une demande de IOCTL_STORAGE_BREAK_RESERVATION, le pilote de port STOR tente d’abord de supprimer la réserve sur l’unité logique en réinitialisant l’unité logique elle-même. En cas d’échec, le pilote de port STOR tente de réinitialiser l’appareil cible qui est le parent de l’unité logique. Ce n’est qu’en cas d’échec de la réinitialisation de l’appareil cible que le pilote de port réinitialise le bus.

La réinitialisation du bus efface toutes les réservations d’appareil et les paramètres de vitesse de transfert, qui doivent ensuite être renégocié. Étant donné qu’il s’agit d’une opération chronophage, IOCTL_STORAGE_BREAK_RESERVATION est toujours à préférer à une simple réinitialisation de bus.

L’appelant n’a besoin que d’un accès en lecture pour émettre une réinitialisation de bus.

L’indicateur SrbStatus des SRB en attente est défini sur SRB_STATUS_BUS_RESET.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

La mémoire tampon dans Irp-AssociatedIrp.SystemBuffer> contient une structure STORAGE_BREAK_RESERVATION_REQUEST qui identifie le bus à réinitialiser.

Longueur de la mémoire tampon d’entrée

Longueur d’une structure de STORAGE_BREAK_RESERVATION_REQUEST .

Mémoire tampon de sortie

Aucun.

Longueur de la mémoire tampon de sortie

Aucun.

Bloc d’état

Le champ Informations est défini sur zéro. Le champ État est défini sur STATUS_SUCCESS, ou éventuellement sur STATUS_INSUFFICIENT_RESOURCES, STATUS_NOT_IMPLEMENTED ou STATUS_INVALID_DEVICE_REQUEST.

Configuration requise

Condition requise Valeur
En-tête ntddstor.h (inclure Ntddstor.h)

Voir aussi

IOCTL_STORAGE_RESET_BUS

STORAGE_BREAK_RESERVATION_REQUEST