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.

Confira também

HwStorAdapterControl

SCSI_SUPPORTED_CONTROL_TYPE_LIST

SCSI_UNIT_CONTROL_TYPE