структура PERF_CONFIGURATION_DATA (storport.h)

Структура PERF_CONFIGURATION_DATA описывает оптимизацию производительности, поддерживаемую подпрограммой StorPortInitializePerfOpts .

Синтаксис

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;

Члены

Version

Номер версии структуры. Задайте этот член при запросе и инициализации оптимизации.

Size

Размер структуры, задается значение sizeof(PERF_CONFIGURATION_DATA).

Flags

Побитовое ИЛИ поддерживаемых флагов. В настоящее время поддерживаются следующие флаги:

Flag Значение
STOR_PERF_DPC_REDIRECTION Этот флаг используется, чтобы указать, что обработка DPC должна быть распределена по нескольким ЦП.

Этот флаг действителен, если для параметра Version задано значение 2 или 3.

STOR_PERF_CONCURRENT_CHANNELS Этот флаг используется, чтобы указать, что поддерживаются параллельные вызовы подпрограммы HwStorStartIo . До Windows 8 минипорты не должны устанавливать этот флаг.

Этот флаг действителен, если для параметра Version задано значение 2 или 3.

STOR_PERF_INTERRUPT_MESSAGE_RANGES Этот флаг используется, чтобы указать, что перенаправление прерываний поддерживается. При использовании этого флага необходимо также задать флаг STOR_PERF_DPC_REDIRECTION.

Этот флаг действителен, если для параметра Version задано значение 2 или 3.

STOR_PERF_ADV_CONFIG_LOCALITY Этот флаг используется, чтобы указать, что следует использовать группу и маску, относящиеся к группе сообщений с правильным сходством. При использовании этого флага необходимо также задать флаги STOR_PERF_INTERRUPT_MESSAGE_RANGES и STOR_PERF_DPC_REDIRECTION.

Этот флаг действителен, если для параметра Version задано значение 3.

STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO Этот флаг используется, чтобы указать, что драйвер мини-порта будет выполнять операции ввода-вывода одновременно с отправкой новых операций ввода-вывода. При использовании этого флага необходимо также задать флаг STOR_PERF_DPC_REDIRECTION.

Этот флаг действителен, если для параметра Version задано значение 3. См. примечания ниже.

STOR_PERF_DPC_REDIRECTION_CURRENT_CPU Этот флаг используется для указания того, что вы выбираете перенаправление DPC (обязательно), но выбор перенаправления ввода-вывода устанавливается для ЦП, запрашивающего DPC, а не ЦП, отправляющего запрос ввода-вывода в Storport.

При использовании этого флага необходимо также задать флаг STOR_PERF_DPC_REDIRECTION.

Этот флаг действителен, если для параметра Version задано значение 4.

STOR_PERF_NO_SGL Этот флаг используется, чтобы указать, что для мини-порта не требуется создавать SGL с помощью драйвера storport для буфера запросов ввода-вывода.

Этот флаг действителен, если для параметра Version задано значение 5.

ConcurrentChannels

Количество одновременных вызовов подпрограммы HwStorStartIo , поддерживаемой драйвером мини-порта и устройством. Доступ к этому элементу осуществляется только при установке флага STOR_PERF_CONCURRENT_CHANNELS. До Windows 8 минипорты не должны задавать это значение.

FirstRedirectionMessageNumber

Если для элемента Flags задан флаг STOR_PERF_INTERRUPT_MESSAGE_RANGES, драйвер мини-порта инициализирует перенаправление прерываний, чтобы начать с этого номера сообщения. Доступ к этому элементу осуществляется только при установке флага STOR_PERF_INTERRUPT_MESSAGE_RANGES.

LastRedirectionMessageNumber

Если для элемента Flags задан флаг STOR_PERF_INTERRUPT_MESSAGE_RANGES, драйвер мини-порта инициализирует перенаправление прерываний, чтобы завершиться этим номером сообщения. Доступ к этому элементу осуществляется только при установке флага STOR_PERF_INTERRUPT_MESSAGE_RANGES.

DeviceNode

Если для элемента Flags задан флаг STOR_PERF_ADV_CONFIG_LOCALITY, Storport инициализирует это поле, чтобы оно содержало номер узла NUMA, в котором находится устройство драйвера мини-порта.

Reserved

Зарезервировано для системного использования.

MessageTargets

Если для элемента Flags задан флаг STOR_PERF_ADV_CONFIG_LOCALITY, Storport инициализирует поля в структурах массива GROUP_AFFINITY . Эти структуры соответствуют сообщениям перенаправления, которые используются в настоящее время. Сам массив основан на нулях, но значение FirstRedirectionMessageNumber не обязательно должно быть равным нулю. Мини-порт выделяет этот массив и задает MessageTargets , чтобы указать на него. Драйвер мини-порта должен выделить GROUP_AFFINITY массив достаточно большой, чтобы вместить все возвращенные маски сходства.

Комментарии

Текущая версия этой структуры определяется STOR_PERF_VERSION. Если задать для параметра Version это значение, флаги смогут указать все поддерживаемые оптимизации.

Флаг STOR_PERF_DPC_REDIRECTION предназначен для обеспечения того, чтобы отдельные ЦП не перегружены обработкой DPC. Если этот флаг установлен, обработка DPC распределяется по нескольким ЦП. Если STOR_PERF_DPC_REDIRECTION_CURRENT_CPU не задано, StorPort попытается запланировать завершение ввода-вывода на том же ЦП, который был источником ввода-вывода.

Как правило, мини-порт выполняет запросы ввода-вывода в процедуре HwStorStartIo и вызывает StorPortNotification с типом уведомления RequestComplete . Для обработки ввода-вывода таким образом мини-порт оставляет флаг STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO, заданный в элементе Flags , позволяя Storport настроить перенаправление DPC.

Сведения о включении прерываний с сигналом сообщения для устройства см. в разделе Включение прерываний Message-Signaled в реестре.

Требования

Требование Значение
Заголовок storport.h (включая Storport.h)

См. также раздел

StorPortInitializePerfOpts