HW_UNIT_CONTROL função de retorno de chamada (storport.h)
A rotina HwStorUnitControl de um driver de miniport é chamada para executar operações síncronas para controlar o estado do dispositivo de unidade de armazenamento.
Sintaxe
HW_UNIT_CONTROL HwUnitControl;
SCSI_UNIT_CONTROL_STATUS HwUnitControl(
[in] PVOID DeviceExtension,
[in] SCSI_UNIT_CONTROL_TYPE ControlType,
[in] PVOID Parameters
)
{...}
Parâmetros
[in] DeviceExtension
Um ponteiro para a área de armazenamento por unidade do driver de miniport.
[in] ControlType
Um valor SCSI_UNIT_CONTROL_TYPE que especifica uma operação de controle de unidade, em que cada tipo de controle inicia uma ação pelo driver de miniporto. Consulte SCSI_UNIT_CONTROL_TYPE para obter detalhes.
[in] Parameters
Ponteiro para uma estrutura ou valor que contém informações relacionadas ao ControlType. Todas as estruturas são alocadas pelo chamador. Consulte SCSI_UNIT_CONTROL_TYPE para obter detalhes.
Endereço
O endereço da unidade para a qual a operação de controle é especificada.
Retornar valor
Dependendo do tipo de controle, HwStorUnitControl retorna um dos seguintes valores de SCSI_UNIT_CONTROL_STATUS :
Código de retorno | Descrição |
---|---|
ScsiUnitControlSuccess | O driver de miniporta concluiu a operação solicitada com êxito. |
ScsiUnitControlUnsuccessful | A operação de controle de unidade não foi bem-sucedida. |
Comentários
O Storport chama hwStorUnitControl de um miniport com um tipo de controle ScsiQuerySupportedControlTypes após o HBA ter sido inicializado, mas antes da primeira E/S. O driver de miniporta preenche a estrutura SCSI_SUPPORTED_CONTROL_TYPE_LIST em Parâmetros com as operações compatíveis. Depois que HwStorUnitControl retornar dessa chamada, o driver storport chamará o retorno de chamada HwStorAdapterControl do driver de miniport apenas para operações com suporte no miniporto.
O Storport chama HwStorUnitControl para notificar o driver de miniporto de uma alteração no dispositivo de unidade identificado pelo Address ou que o miniporto deve executar uma consulta ou definir uma operação nessa unidade, como iniciar uma unidade ou manipular uma operação de controle de energia para uma unidade.
A tabela a seguir lista o IRQL atual e o spinlock adquiridos quando o tipo de controle é emitido.
Tipo de controle | IRQL | Bloqueio de rotação |
---|---|---|
ScsiQuerySupportedControlTypes | PASSIVE_LEVEL | Nenhum |
ScsiUnitUsage | PASSIVE_LEVEL | Nenhum |
ScsiUnitStart | PASSIVE_LEVEL | Nenhum |
ScsiUnitPower | DISPATCH_LEVEL | Nenhum |
ScsiUnitPoFxPowerInfo | PASSIVE_LEVEL | Nenhum |
ScsiUnitPoFxPowerRequired | DISPATCH_LEVEL | Nenhum |
ScsiUnitPoFxPowerActive | DISPATCH_LEVEL | Nenhum |
ScsiUnitPoFxPowerSetFState | DISPATCH_LEVEL | Nenhum |
ScsiUnitPoFxPowerControl | DISPATCH_LEVEL | Nenhum |
ScsiUnitRemove | PASSIVE_LEVEL | Nenhum |
ScsiUnitSurpriseRemoval | PASSIVE_LEVEL | Nenhum |
ScsiUnitRichDescription | PASSIVE_LEVEL | Nenhum |
ScsiUnitQueryBusType | PASSIVE_LEVEL | Nenhum |
ScsiUnitQueryFruId | PASSIVE_LEVEL | Nenhum |
O nome HwStorUnitControl é apenas um espaço reservado. O protótipo real dessa rotina é definido em storport.h da seguinte maneira:
typedef
SCSI_UNIT_CONTROL_STATUS
HW_UNIT_CONTROL (
_In_ PVOID DeviceExtension,
_In_ SCSI_UNIT_CONTROL_TYPE ControlType,
_In_ PVOID Parameters
);
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 |
Plataforma de Destino | Universal |
Cabeçalho | storport.h (inclua Storport.h) |
IRQL | Consulte Observações. |