função de retorno de chamada PSCSIWMI_QUERY_DATABLOCK (scsiwmi.h)

A rotina HwScsiWmiQueryDataBlock de um driver de miniport é chamada para obter uma única instância ou todas as instâncias de um bloco de dados. Essa rotina é necessária.

Nota Os modelos de driver de porta SCSI e driver de miniporto SCSI podem ser alterados ou indisponíveis no futuro. Em vez disso, recomendamos usar os modelos de driver do Storport e do driver de miniporto storport .
 

Sintaxe

PSCSIWMI_QUERY_DATABLOCK PscsiwmiQueryDatablock;

BOOLEAN PscsiwmiQueryDatablock(
  [in]      PVOID Context,
  [in]      PSCSIWMI_REQUEST_CONTEXT DispatchContext,
  [in]      ULONG GuidIndex,
  [in]      ULONG InstanceIndex,
  [in]      ULONG InstanceCount,
  [in, out] PULONG InstanceLengthArray,
  [in]      ULONG BufferAvail,
  [out]     PUCHAR Buffer
)
{...}

Parâmetros

[in] Context

Aponta para o valor de contexto definido pelo miniporto definido pelo driver passado para ScsiPortWmiDispatchFunction.

[in] DispatchContext

Aponta para a estrutura SCSIWMI_REQUEST_CONTEXT que o driver de miniporto passou para ScsiPortWmiDispatchFunction.

[in] GuidIndex

Especifica o bloco de dados por seu índice na lista de GUIDs na estrutura SCSI_WMILIB_CONTEXT que o driver de miniporto passou para ScsiPortWmiDispatchFunction.

[in] InstanceIndex

Se HwScsiWmiQueryDataBlock for chamado em resposta a uma solicitação de IRP_MN_QUERY_SINGLE_INSTANCE, InstanceIndex especificará a instância a ser consultada. Se HwScsiWmiQueryDataBlock for chamado em resposta a um IRP_MN_QUERY_ALL_DATA REQUEST, InstanceIndex será zero.

[in] InstanceCount

Se HwScsiWmiQueryDataBlock for chamado em resposta a uma solicitação de IRP_MN_QUERY_SINGLE_INSTANCE, InstanceCount será 1. Se HwScsiWmiQueryDataBlock for chamado em resposta a um IRP_MN_QUERY_ALL_DATA REQUEST, InstanceCount será o número de instâncias a serem retornadas.

[in, out] InstanceLengthArray

Aponta para uma matriz de ULONGs que indicam o comprimento de cada instância do bloco de dados a ser retornado. Essa matriz tem elementos InstanceCount . Esse valor pode ser NULL quando não há espaço suficiente no buffer de saída para atender à solicitação.

[in] BufferAvail

Especifica o número máximo de bytes disponíveis para receber dados no buffer em Buffer.

[out] Buffer

Aponta para o buffer para receber dados da instância. Se o buffer for grande o suficiente para receber todos os dados, o driver de miniporto gravará dados de instância no buffer com cada instância alinhada em um limite de 8 bytes. Se o buffer for muito pequeno para receber todos os dados, o driver de miniporto chamará ScsiPortWmiPostProcess com um status de SRB_STATUS_DATA_OVERRUN e definirá BufferUsed para o tamanho do buffer de saída necessário para atender à solicitação.

Retornar valor

HwScsiWmiQueryDataBlock retornará SRB_STATUS_PENDING se a solicitação estiver pendente ou um valor de status SRB diferente de zero se a solicitação tiver sido concluída. O valor de status SRB retornado por essa rotina é o mesmo que foi passado para ScsiPortWmiPostProcess. Embora o tipo de dados de valor retornado seja BOOLEAN, a rotina HwScsiWmiQueryDataBlock realmente retorna um valor de status SRB.

Comentários

Quando um driver de miniporto recebe um SRB no qual o membro function é definido como SRB_FUNCTION_WMI, ele chama ScsiPortWmiDispatchFunction com um ponteiro para uma estrutura de SCSI_WMILIB_CONTEXT inicializada e MinorFunction definido como Srb-WmiSubFunction>. O driver de porta SCSI chama a rotina HwScsiWmiQueryDataBlock do driver de miniporte se MinorFunction indicar uma solicitação para obter uma única instância ou todas as instâncias de um bloco de dados.

O driver de miniporto grava dados da instância no buffer. Para solicitações que não estão pendentes, o driver de miniporto chama ScsiPortWmiPostProcess com um valor SrbStatus apropriado antes de retornar de HwScsiWmiQueryDataBlock. Se a solicitação for pendente, o driver de miniporto chamará ScsiPortWmiPostProcess quando a solicitação for concluída.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho scsiwmi.h (inclua Scsiwmi.h)

Confira também

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess