Compartilhar via


IOCTL_STORAGE_BREAK_RESERVATION IOCTL (ntddstor.h)

Quebra uma reserva de disco. Em um sistema multi-iniciador ("clusterizado"), um único computador pode reservar um recurso de disco para que nenhum outro computador possa acessar o disco. Se o computador não liberar ou não o recurso em tempo hábil, um meio será necessário para remover a reserva do disco à força.

Um meio de forçar o sistema a liberar um recurso de disco reservado é redefinir o barramento. Na verdade, para dispositivos de armazenamento cujos adaptadores de barramento são gerenciados pelo driver de porta SCSI, a solicitação de IOCTL_STORAGE_BREAK_RESERVATION é equivalente a IOCTL_STORAGE_RESET_BUS, que simplesmente faz uma redefinição do barramento, liberando todos os seus recursos reservados.

Para dispositivos de armazenamento cujos adaptadores de barramento são gerenciados pelo driver de porta STOR, esse código de controle de E/S oferece uma técnica melhor de quebrar uma reserva de disco. Essa técnica é chamada de "redefinição hierárquica". Ao receber uma solicitação de IOCTL_STORAGE_BREAK_RESERVATION, o driver de porta STOR primeiro tenta remover a reserva na unidade lógica redefinindo a própria unidade lógica. Se isso falhar, o driver de porta STOR tentará redefinir o dispositivo de destino que é o pai da unidade lógica. Somente quando a redefinição do dispositivo de destino falhar, o driver de porta redefinirá o barramento.

A redefinição do barramento limpa todas as reservas de dispositivo e as configurações de velocidade de transferência, que devem ser renegociadas. Como essa é uma operação demorada, IOCTL_STORAGE_BREAK_RESERVATION é sempre preferível a uma simples redefinição de barramento.

O chamador requer apenas acesso de leitura para emitir uma redefinição de barramento.

O sinalizador SrbStatus de SRBs pendentes está definido como SRB_STATUS_BUS_RESET.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

O buffer em Irp-AssociatedIrp.SystemBuffer> contém uma estrutura STORAGE_BREAK_RESERVATION_REQUEST que identifica o barramento a ser redefinido.

Comprimento do buffer de entrada

O comprimento de uma estrutura STORAGE_BREAK_RESERVATION_REQUEST .

Buffer de saída

Nenhum.

Comprimento do buffer de saída

Nenhum.

Bloco de status

O campo Informações é definido como zero. O campo Status é definido como STATUS_SUCCESS ou possivelmente para STATUS_INSUFFICIENT_RESOURCES, STATUS_NOT_IMPLEMENTED ou STATUS_INVALID_DEVICE_REQUEST.

Requisitos

Requisito Valor
Cabeçalho ntddstor.h (inclua Ntddstor.h)

Confira também

IOCTL_STORAGE_RESET_BUS

STORAGE_BREAK_RESERVATION_REQUEST