Compartilhar via


Função ScsiPortWmiSetInstanceCount (scsiwmi.h)

O ScsiPortWmiSetInstanceCount especifica o número de instâncias para as quais os buffers de dados devem ser reservados dentro da estrutura WNODE_ALL_DATA no contexto de solicitação.

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

Sintaxe

BOOLEAN ScsiPortWmiSetInstanceCount(
  [in]  PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in]  ULONG                    InstanceCount,
  [out] PULONG                   BufferAvail,
  [out] PULONG                   SizeNeeded
);

Parâmetros

[in] RequestContext

Ponteiro para uma estrutura do tipo SCSIWMI_REQUEST_CONTEXT que contém o contexto de solicitação para um SRB WMI.

[in] InstanceCount

Contém o número de instâncias para as quais o minidriver fornecerá dados.

[out] BufferAvail

Contém, no retorno, o número de bytes de espaço em buffer disponível para descrever nomes e dados de instância. O valor retornado neste membro pode ser passado para as rotinas ScsiPortWmiSetData e ScsiPortWmiSetInstanceName no parâmetro BufferAvail dessas rotinas.

A rotina ScsiPortWmiSetInstanceCount inicializa uma matriz de ponteiros para buffers de dados, com um elemento de matriz para cada instância. Se não houver memória suficiente disponível no WNODE para inicializar uma matriz de tamanho InstanceCount, um zero será retornado nesse membro.

[out] SizeNeeded

Indica, na entrada, o número de bytes necessários para descrever todo o WNODE antes de configurar as matrizes internas no WNODE. No retorno, esse membro conterá o tamanho de todo o WNODE, incluindo as matrizes recém-inicializadas dentro do WNODE.

Retornar valor

A rotina ScsiPortWmiSetInstanceCount retornará TRUE se a operação for bem-sucedida e FALSE se o WNODE contido no contexto de solicitação não for do tipo WNODE_ALL_DATA.

Comentários

O minidriver deve chamar ScsiPortWmiSetInstanceCount antes de chamar ScsiPortWmiSetData ou ScsiPortWmiSetInstanceName. O minidriver só deve chamar ScsiPortWmiSetInstanceCount uma vez.

O parâmetro RequestContext aponta para uma estrutura de contexto de solicitação, SCSIWMI_REQUEST_CONTEXT, que contém informações associadas a um bloco de solicitação SCSI ( Instrumentação de Gerenciamento do Windows ) (SRB). A estrutura de contexto de solicitação, por sua vez, contém uma das Estruturas de WNODE_XXX WMI usadas pelo sistema WMI para passar dados entre consumidores de dados no modo usuário e provedores de dados no modo kernel, como drivers.

A rotina ScsiPortWmiSetInstanceCount requer que a estrutura WNODE definida dentro do contexto de solicitação seja do tipo WNODE_ALL_DATA. Isso ocorre porque ScsiPortWmiSetInstanceCount reserva uma área de dados que armazenará informações para várias instâncias associadas a um bloco de dados WMI. Ao contrário da estrutura WNODE_SINGLE_INSTANCE que contém informações sobre uma única instância, a estrutura WNODE_ALL_DATA contém uma matriz de ponteiros para áreas de buffer para instâncias diferentes e ScsiPortWmiSetInstanceCount inicializa essa matriz, para que cada buffer de dados de instância possa ser acessado individualmente usando um índice de instância.

A memória alocada para o contexto de solicitação deve permanecer válida até que o driver de miniporto chame ScsiPortWmiPostProcess e ScsiPortWmiPostProcess retorne o status SRB final e o tamanho do buffer. Se o SRB puder ser pendente, a memória do contexto de solicitação deverá ser alocada da extensão SRB. Se o SRB não puder ser pendente, a memória poderá ser alocada de um quadro de pilha que não sai do escopo.

Requisitos

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

Confira também

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE