Partilhar via


estrutura PERF_CONFIGURATION_DATA (storport.h)

A estrutura PERF_CONFIGURATION_DATA descreve as otimizações de desempenho compatíveis com a rotina de StorPortInitializePerfOpts.

Sintaxe

typedef struct _PERF_CONFIGURATION_DATA {
  ULONG           Version;
  ULONG           Size;
  ULONG           Flags;
  ULONG           ConcurrentChannels;
  ULONG           FirstRedirectionMessageNumber;
  ULONG           LastRedirectionMessageNumber;
  ULONG           DeviceNode;
  ULONG           Reserved;
  PGROUP_AFFINITY MessageTargets;
} PERF_CONFIGURATION_DATA, *PPERF_CONFIGURATION_DATA;

Membros

Version

O número de versão da estrutura. Defina esse membro ao consultar e inicializar otimizações.

Size

O tamanho da estrutura, definido como sizeof(PERF_CONFIGURATION_DATA).

Flags

Um OR bit a bit de sinalizadores com suporte. Atualmente, há suporte para os seguintes sinalizadores:

Bandeira Significado
STOR_PERF_DPC_REDIRECTION Esse sinalizador é usado para indicar que o processamento de DPC deve ser distribuído em várias CPUs.

Esse sinalizador é válido quando versão é definida como 2 ou 3.

STOR_PERF_CONCURRENT_CHANNELS Esse sinalizador é usado para indicar que há suporte para chamadas simultâneas para a rotina de HwStorStartIo. Antes do Windows 8, os miniportos não devem definir esse sinalizador.

Esse sinalizador é válido quando versão é definida como 2 ou 3.

STOR_PERF_INTERRUPT_MESSAGE_RANGES Esse sinalizador é usado para indicar que há suporte para redirecionamento de interrupção. Ao usar esse sinalizador, você também deve definir o sinalizador STOR_PERF_DPC_REDIRECTION.

Esse sinalizador é válido quando versão é definida como 2 ou 3.

STOR_PERF_ADV_CONFIG_LOCALITY Esse sinalizador é usado para indicar que você deve usar o grupo e a máscara que pertencem ao grupo de mensagens com a afinidade correta. Ao usar esse sinalizador, você também deve definir o STOR_PERF_INTERRUPT_MESSAGE_RANGES e os sinalizadores de STOR_PERF_DPC_REDIRECTION.

Esse sinalizador é válido quando versão é definida como 3.

STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO Esse sinalizador é usado para indicar que o driver de miniporto será concluído simultaneamente com o envio de novos E/Ss. Ao usar esse sinalizador, você também deve definir o sinalizador STOR_PERF_DPC_REDIRECTION.

Esse sinalizador é válido quando versão é definida como 3. Veja as observações abaixo.

STOR_PERF_DPC_REDIRECTION_CURRENT_CPU Esse sinalizador é usado para indicar que você está optando pelo Redirecionamento de DPC (necessário), mas a opção de redirecionamento de E/S é definida como a CPU que solicita o DPC e não a CPU que origina a solicitação de E/S no Storport.

Ao usar esse sinalizador, você também deve definir o sinalizador STOR_PERF_DPC_REDIRECTION.

Esse sinalizador é válido quando versão é definida como 4.

STOR_PERF_NO_SGL Esse sinalizador é usado para indicar que o miniporto não precisa que SGLs sejam criados pelo driver storport para um buffer de solicitação de E/S.

Esse sinalizador é válido quando versão é definida como 5.

ConcurrentChannels

O número de chamadas simultâneas para o HwStorStartIo rotina que o driver de miniporto e o dispositivo dão suporte. Esse membro só será acessado quando o sinalizador de STOR_PERF_CONCURRENT_CHANNELS tiver sido definido. Antes do Windows 8, os miniportos não devem definir esse valor.

FirstRedirectionMessageNumber

Quando o Flags membro tem o sinalizador STOR_PERF_INTERRUPT_MESSAGE_RANGES definido, o driver de miniporto inicializa o redirecionamento de interrupção para começar com esse número de mensagem. Esse membro só é acessado quando o sinalizador de STOR_PERF_INTERRUPT_MESSAGE_RANGES é definido.

LastRedirectionMessageNumber

Quando o Flags membro tem o sinalizador STOR_PERF_INTERRUPT_MESSAGE_RANGES definido, o driver de miniporto inicializa o redirecionamento de interrupção para terminar com esse número de mensagem. Esse membro só é acessado quando o sinalizador de STOR_PERF_INTERRUPT_MESSAGE_RANGES é definido.

DeviceNode

Quando o Flags membro tem o sinalizador STOR_PERF_ADV_CONFIG_LOCALITY definido, o Storport inicializa esse campo para conter o número do nó NUMA no qual o dispositivo do driver de miniporto reside.

Reserved

Reservado para uso do sistema.

MessageTargets

Quando o Flags membro tem o sinalizador STOR_PERF_ADV_CONFIG_LOCALITY definido, o Storport inicializa os campos das estruturas de uma matriz de GROUP_AFFINITY. Essas estruturas correspondem às mensagens de redirecionamento que estão sendo usadas no momento. A matriz em si é baseada em zero, mas FirstRedirectionMessageNumber não é necessário ser zero. O miniporto aloca essa matriz e define messageTargets apontar para ela. O driver de miniporto deve alocar uma matriz GROUP_AFFINITY grande o suficiente para conter todas as máscaras de afinidade retornadas.

Observações

A versão atual dessa estrutura é definida por STOR_PERF_VERSION. Definir versão para esse valor permitirá que Flags especifique todas as otimizações com suporte.

A finalidade do sinalizador STOR_PERF_DPC_REDIRECTION é garantir que as CPUs individuais não sejam sobrecarregadas com o processamento de DPC. Quando esse sinalizador é definido, o processamento de DPC é distribuído por várias CPUs. Se STOR_PERF_DPC_REDIRECTION_CURRENT_CPU não estiver definido, o StorPort tentará agendar DPCs de conclusão de E/S na mesma CPU que originou a E/S.

Normalmente, um miniporto conclui solicitações de E/S em sua rotina HwStorStartIo e chama StorPortNotification com o tipo de notificação RequestComplete. Para processar a E/S dessa maneira, o miniporto deixará o sinalizador STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO definido no membro sinalizadores, permitindo que Storport ajuste o redirecionamento de DPC.

Para obter informações sobre como habilitar interrupções sinalizadas por mensagem para um dispositivo, consulte Habilitar interrupções de Message-Signaled no registro.

Requisitos

Requisito Valor
cabeçalho storport.h (inclua Storport.h)

Consulte também

StorPortInitializePerfOpts