Compartilhar via


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

A rotina HwStorFindAdapter usa a configuração fornecida para determinar se há suporte para um HBA específico e, se for, para retornar informações de configuração sobre esse adaptador.

Sintaxe

HW_FIND_ADAPTER HwFindAdapter;

ULONG HwFindAdapter(
           PVOID DeviceExtension,
  [in]     PVOID HwContext,
  [in]     PVOID BusInformation,
  [in]     PCHAR ArgumentString,
  [in/out] PPORT_CONFIGURATION_INFORMATION ConfigInfo,
  [in]     PBOOLEAN Reserved3
)
{...}

Parâmetros

DeviceExtension

Fornece uma área de armazenamento por adaptador.

[in] HwContext

Definido como NULL.

[in] BusInformation

Definido como NULL.

[in] ArgumentString

Fornece uma cadeia de caracteres terminada em NULL com informações de contexto sobre o driver.

[in/out] ConfigInfo

Fornece uma estrutura de PORT_CONFIGURATION_INFORMATION inicializada que o driver de miniporto usa durante a inicialização.

[in] Reserved3

Reservado para uso do sistema.

Retornar valor

HwStorFindAdapter deve retornar um dos seguintes valores de status:

Código de retorno Descrição
SP_RETURN_FOUND Indica que um HBA com suporte foi encontrado e que as informações de configuração relevantes do HBA foram determinadas e definidas com êxito na estrutura PORT_CONFIGURATION_INFORMATION .
SP_RETURN_ERROR Indica que um HBA foi encontrado, mas houve um erro ao obter as informações de configuração. Se possível, esse erro deve ser registrado com StorPortLogError.
SP_RETURN_BAD_CONFIG Indica que as informações de configuração fornecidas eram inválidas para o adaptador.
SP_RETURN_NOT_FOUND Indica que nenhum HBA com suporte foi encontrado para as informações de configuração fornecidas.

Comentários

Como o driver storport dá suporte apenas a dispositivos PnP (Plug and Play), os parâmetros HwContext e BusInformation para HwStorFindAdapter não são fornecidos a drivers de miniporte não virtuais.

HwStorFindAdapter deve definir os campos MaximumTransferLength e NumberOfPhysicalBreaks na estrutura ConfigInfo . Além desses campos, a estrutura PORT_CONFIGURATION_INFORMATION sempre especificará totalmente todos os recursos do adaptador necessários para iniciar o adaptador.

O nome HwStorFindAdapter é apenas um espaço reservado. O protótipo real dessa rotina é definido em Storport.h da seguinte maneira:

typedef
ULONG
HW_FIND_ADAPTER (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_z_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _In_ PBOOLEAN  Reserved3
  );

Na maioria dos casos, o StorPort chama a rotina HwStorFindAdapter em IRQL == PASSIVE_LEVEL sem adquirir nenhum bloqueio de rotação. O caso de exceção ocorre quando o miniporto não dá suporte à chamada HwStorAdaptorControl com o tipo de controle ScsiRestartAdapter . Nessa situação, o StorPort reinicializará o adaptador chamando HwStorFindAdapter e HwStorInitialize. Quando esse é o caso, HwStorFindAdapter é chamado em IRQL == DISPATCH_LEVEL. Além disso, quando no modo de despejo, HwStorFindAdapter é chamado em IRQL == HIGH_LEVEL.

Exemplos

Para definir uma função de retorno de chamada HwStorFindAdapter , primeiro você deve fornecer uma declaração de função que identifique o tipo de função de retorno de chamada que você está definindo. O Windows fornece um conjunto de tipos de função de retorno de chamada para drivers. Declarar uma função usando os tipos de função de retorno de chamada ajuda a Análise de Código para Drivers, SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação a encontrar erros e é um requisito para gravar drivers para o sistema operacional Windows.

Por exemplo, para definir uma rotina de retorno de chamada HwStorFindAdapter chamada MyHwFindAdapter, use o tipo HW_FIND_ADAPTER conforme mostrado neste exemplo de código:

HW_FIND_ADAPTER MyHwFindAdapter;

Em seguida, implemente sua rotina de retorno de chamada da seguinte maneira:

_Use_decl_annotations_
ULONG
MyHwFindAdapter (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_z_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _In_ PBOOLEAN  Reserved3
  );
  {
      ...
  }

O tipo de função HW_FIND_ADAPTER é definido no arquivo de cabeçalho Storport.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função HW_FIND_ADAPTER no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função para drivers storport. Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho storport.h (inclua Storport.h)
IRQL PASSIVE_LEVEL (consulte a seção Comentários.)

Confira também

HwStorInitialize

PORT_CONFIGURATION_INFORMATION

StorPortInitialize

StorPortLogError