IOCTL_STORAGE_BREAK_RESERVATION IOCTL (ntddstor.h)
Interrompe 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 fizer ou não puder liberar 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 ônibus, 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 ao redefinir o 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 redefinição de barramento simples.
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
Buffer de entrada
O buffer em > 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 de Informações do está definido como zero. O campo status de está definido como STATUS_SUCCESS ou possivelmente STATUS_INSUFFICIENT_RESOURCES, STATUS_NOT_IMPLEMENTED ou STATUS_INVALID_DEVICE_REQUEST.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | ntddstor.h (include Ntddstor.h) |