Partilhar via


HW_UNIT_CONTROL função de retorno de chamada (storport.h)

A rotina de HwStorUnitControl de um driver de miniporto é 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 por 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.

Valor de retorno

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 miniporto concluiu a operação solicitada com êxito.
ScsiUnitControlUnsuccessful A operação de controle de unidade não foi bem-sucedida.

Observações

O Storport chama o HwStorUnitControl de um miniporto com um scsiQuerySupportedControlTypes tipo de controle após o HBA ter sido inicializado, mas antes da primeira E/S. O driver de miniporto preenche a estrutura de SCSI_SUPPORTED_CONTROL_TYPE_LIST em Parameters com as operações compatíveis. Depois que HwStorUnitControl retorna dessa chamada, o driver Storport chama o do driver de miniporto HwStorAdapterControl retorno de chamada somente para operações compatíveis com o miniporto.

O Storport chama HwStorUnitControl para notificar o driver de miniporto de uma alteração no dispositivo de unidade identificado pelo Addressou 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
de cliente com suporte mínimo Windows 8
da Plataforma de Destino Universal
cabeçalho storport.h (inclua Storport.h)
IRQL Consulte Comentários.

Consulte também

HwStorAdapterControl

SCSI_SUPPORTED_CONTROL_TYPE_LIST

SCSI_UNIT_CONTROL_TYPE