estrutura PERF_CONFIGURATION_DATA (storport.h)

A estrutura PERF_CONFIGURATION_DATA descreve as otimizações de desempenho compatíveis com a rotina 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:

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

Esse sinalizador é válido quando Version é definido como 2 ou 3.

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

Esse sinalizador é válido quando Version é definido como 2 ou 3.

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

Esse sinalizador é válido quando Version é definido 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 Version é definido como 3.

STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO Esse sinalizador é usado para indicar que o driver de miniporto concluirá e/S 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 Version é definido como 3. Consulte os comentários abaixo.

STOR_PERF_DPC_REDIRECTION_CURRENT_CPU Esse sinalizador é usado para indicar que você está optando pelo Redirecionamento de DPC (obrigató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 Version é definido como 4.

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

Esse sinalizador é válido quando Version é definido como 5.

ConcurrentChannels

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

FirstRedirectionMessageNumber

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

LastRedirectionMessageNumber

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

DeviceNode

Quando o membro Flags 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 membro Flags tem o sinalizador STOR_PERF_ADV_CONFIG_LOCALITY definido, o Storport inicializa os campos de nas 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 para ser zero. O miniporto aloca essa matriz e define MessageTargets para apontar para ela. O driver de miniporto deve alocar uma matriz de GROUP_AFFINITY grande o suficiente para conter todas as máscaras de afinidade retornadas.

Comentários

A versão atual dessa estrutura é definida por STOR_PERF_VERSION. Definir Versão para esse valor permitirá que os Sinalizadores especifiquem 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 E/S dessa maneira, o miniporto deixará o sinalizador STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO definido no membro Flags , permitindo que Storport ajuste o redirecionamento de DPC.

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

Requisitos

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

Confira também

StorPortInitializePerfOpts