Compartilhar via


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

A rotina HwScsiWmiSetDataBlock de um driver de miniport é chamada para alterar todos os itens de dados em uma única instância de um bloco de dados. Essa rotina é opcional.

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_SET_DATABLOCK PscsiwmiSetDatablock;

BOOLEAN PscsiwmiSetDatablock(
  [in] PVOID DeviceContext,
  [in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in] ULONG GuidIndex,
  [in] ULONG InstanceIndex,
  [in] ULONG BufferSize,
  [in] PUCHAR Buffer
)
{...}

Parâmetros

[in] DeviceContext

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

[in] RequestContext

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 o bloco especificado por GuidIndex tiver várias instâncias, InstanceIndex especificará a instância.

[in] BufferSize

Especifica o tamanho em bytes do buffer em Buffer.

[in] Buffer

Aponta para um buffer que contém novos valores para a instância.

Retornar valor

HwScsiWmiSetDataBlock 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.

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 HwScsiWmiSetDataBlock do driver de miniporte se MinorFunction indicar uma solicitação para alterar uma instância de um bloco de dados.

Se um driver de miniporto não implementar uma rotina HwScsiWmiSetDataBlock , ele deverá definir SetWmiDataBlock como NULL no SCSI_WMILIB_CONTEXT o driver de miniporto passa para ScsiPortWmiDispatchFunction. Nesse caso, o driver de porta retorna SRB_STATUS_ERROR para o chamador.

Se o driver de miniporto implementar HwScsiWmiSetDataBlock , ele deverá alterar a instância do bloco de dados para os novos valores do buffer.

Se todos os itens no bloco de dados forem somente leitura, o driver de miniporto deverá retornar SRB_STATUS_ERROR. Caso contrário, o driver de miniporte altera os itens que pode e retorna SRB_STATUS_SUCCESS.

O driver de miniporte deve chamar ScsiPortWmiPostProcess com um valor SrbStatus apropriado quando a solicitação for concluída. Se a solicitação não estiver pendente, ScsiPortWmiPostProcess deverá ser chamado no retorno de chamada HwScsiWmiSetDataBlock . Caso contrário, ScsiPortWmiPostProcess deverá ser chamado quando a solicitação for realmente 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