Compartir a través de


IOCTL_STORAGE_BREAK_RESERVATION IOCTL (ntddstor.h)

Interrumpe una reserva de disco. En un sistema de varios iniciadores ("agrupados"), un único equipo puede reservar un recurso de disco para que ningún otro equipo pueda acceder al disco. Si el equipo no libera o no puede liberar el recurso de forma oportuna, se necesita un medio para quitar la reserva del disco por fuerza.

Uno de los medios para forzar al sistema a liberar un recurso de disco reservado es restablecer el bus. De hecho, para los dispositivos de almacenamiento cuyos adaptadores de bus están administrados por el controlador de puerto SCSI, la solicitud de IOCTL_STORAGE_BREAK_RESERVATION es equivalente a IOCTL_STORAGE_RESET_BUS, lo que simplemente realiza un restablecimiento del bus, liberando todos sus recursos reservados.

En el caso de los dispositivos de almacenamiento cuyos adaptadores de bus se administran mediante el controlador de puerto STOR, este código de control de E/S ofrece una mejor técnica de interrumpir una reserva de disco. Esa técnica se denomina "restablecimiento jerárquico". Tras recibir una solicitud de IOCTL_STORAGE_BREAK_RESERVATION, el controlador de puerto STOR primero intenta quitar la reserva en la unidad lógica restableciendo la propia unidad lógica. Si se produce un error, el controlador de puerto STOR intenta restablecer el dispositivo de destino que es el elemento primario de la unidad lógica. Solo cuando se produce un error al restablecer el dispositivo de destino, el controlador de puerto restablecerá el bus.

Al restablecer el bus se borran todas las reservas de dispositivos y la configuración de velocidad de transferencia, que debe renegociarse. Dado que se trata de una operación que consume mucho tiempo, IOCTL_STORAGE_BREAK_RESERVATION siempre es preferible a un simple restablecimiento de bus.

El autor de la llamada solo requiere acceso de lectura para emitir un restablecimiento de bus.

La marca SrbStatus de srBs pendientes se establece en SRB_STATUS_BUS_RESET.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

El búfer de Irp-AssociatedIrp.SystemBuffer> contiene una estructura STORAGE_BREAK_RESERVATION_REQUEST que identifica el bus que se va a restablecer.

Longitud del búfer de entrada

Longitud de una estructura STORAGE_BREAK_RESERVATION_REQUEST .

Búfer de salida

Ninguno.

Longitud del búfer de salida

Ninguno.

Bloque de estado

El campo Información se establece en cero. El campo Estado se establece en STATUS_SUCCESS, o posiblemente en STATUS_INSUFFICIENT_RESOURCES, STATUS_NOT_IMPLEMENTED o STATUS_INVALID_DEVICE_REQUEST.

Requisitos

Requisito Valor
Header ntddstor.h (incluya Ntddstor.h)

Consulte también

IOCTL_STORAGE_RESET_BUS

STORAGE_BREAK_RESERVATION_REQUEST