PERF_CONFIGURATION_DATA-Struktur (storport.h)

Die PERF_CONFIGURATION_DATA-Struktur beschreibt die Leistungsoptimierungen, die von der StorPortInitializePerfOpts-Routine unterstützt werden.

Syntax

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;

Member

Version

Die Versionsnummer der Struktur. Legen Sie diesen Member beim Abfragen und Initialisieren von Optimierungen fest.

Size

Die Größe der Struktur, festgelegt auf sizeof(PERF_CONFIGURATION_DATA).

Flags

Ein bitweiser OR mit unterstützten Flags. Derzeit werden die folgenden Flags unterstützt:

Flag Bedeutung
STOR_PERF_DPC_REDIRECTION Dieses Flag wird verwendet, um anzugeben, dass die DPC-Verarbeitung auf mehrere CPUs verteilt sein soll.

Dieses Flag ist gültig, wenn Version auf 2 oder 3 festgelegt ist.

STOR_PERF_CONCURRENT_CHANNELS Dieses Flag wird verwendet, um anzugeben, dass gleichzeitige Aufrufe der HwStorStartIo-Routine unterstützt werden. Vor Windows 8 dürfen Miniports dieses Flag nicht festlegen.

Dieses Flag ist gültig, wenn Version auf 2 oder 3 festgelegt ist.

STOR_PERF_INTERRUPT_MESSAGE_RANGES Dieses Flag wird verwendet, um anzugeben, dass die Interruptumleitung unterstützt wird. Wenn Sie dieses Flag verwenden, müssen Sie auch das STOR_PERF_DPC_REDIRECTION-Flag festlegen.

Dieses Flag ist gültig, wenn Version auf 2 oder 3 festgelegt ist.

STOR_PERF_ADV_CONFIG_LOCALITY Dieses Flag wird verwendet, um anzugeben, dass Sie die Gruppe und die Maske verwenden sollten, die sich auf die Nachrichtengruppe mit der richtigen Affinität beziehen. Wenn Sie dieses Flag verwenden, müssen Sie auch die STOR_PERF_INTERRUPT_MESSAGE_RANGES- und die STOR_PERF_DPC_REDIRECTION-Flags festlegen.

Dieses Flag ist gültig, wenn Version auf 3 festgelegt ist.

STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO Dieses Flag wird verwendet, um anzugeben, dass der Miniporttreiber die E/A-Vorgänge gleichzeitig mit der Übermittlung neuer E/A-Vorgänge abschließt. Wenn Sie dieses Flag verwenden, müssen Sie auch das STOR_PERF_DPC_REDIRECTION-Flag festlegen.

Dieses Flag ist gültig, wenn Version auf 3 festgelegt ist. Weitere Informationen finden Sie weiter unten im Abschnitt "Hinweise".

STOR_PERF_DPC_REDIRECTION_CURRENT_CPU Dieses Flag wird verwendet, um anzugeben, dass Sie sich für die DPC-Umleitung entscheiden (erforderlich), aber die Auswahl der E/A-Umleitung ist auf die CPU festgelegt, die den DPC anfordert, und nicht auf die CPU, die die E/A-Anforderung in Storport angibt.

Wenn Sie dieses Flag verwenden, müssen Sie auch das STOR_PERF_DPC_REDIRECTION-Flag festlegen.

Dieses Flag ist gültig, wenn Version auf 4 festgelegt ist.

STOR_PERF_NO_SGL Dieses Flag wird verwendet, um anzugeben, dass miniport keine SGLs vom Storport-Treiber für einen E/A-Anforderungspuffer erstellen muss.

Dieses Flag ist gültig, wenn Version auf 5 festgelegt ist.

ConcurrentChannels

Die Anzahl gleichzeitiger Aufrufe der HwStorStartIo-Routine , die der Miniporttreiber und das Gerät unterstützen. Auf dieses Element wird nur zugegriffen, wenn das flag STOR_PERF_CONCURRENT_CHANNELS festgelegt wurde. Vor Windows 8 dürfen Miniports diesen Wert nicht festlegen.

FirstRedirectionMessageNumber

Wenn für das Flags-Element das flag STOR_PERF_INTERRUPT_MESSAGE_RANGES festgelegt ist, initialisiert der Miniporttreiber die Interruptumleitung, um mit dieser Nachrichtennummer zu beginnen. Auf dieses Element wird nur zugegriffen, wenn das flag STOR_PERF_INTERRUPT_MESSAGE_RANGES festgelegt ist.

LastRedirectionMessageNumber

Wenn für das Flags-Element das flag STOR_PERF_INTERRUPT_MESSAGE_RANGES festgelegt ist, initialisiert der Miniporttreiber die Interruptumleitung, um mit dieser Nachrichtennummer zu enden. Auf dieses Element wird nur zugegriffen, wenn das flag STOR_PERF_INTERRUPT_MESSAGE_RANGES festgelegt ist.

DeviceNode

Wenn für das Flags-Element das STOR_PERF_ADV_CONFIG_LOCALITY-Flag festgelegt ist, initialisiert Storport dieses Feld, um die NUMA-Knotennummer zu enthalten, in der sich das Gerät des Miniporttreibers befindet.

Reserved

Ist für das System reserviert.

MessageTargets

Wenn für das Flags-Element das STOR_PERF_ADV_CONFIG_LOCALITY-Flag festgelegt ist, initialisiert Storport die Felder von in den Strukturen eines GROUP_AFFINITY Arrays. Diese Strukturen entsprechen den derzeit verwendeten Umleitungsmeldungen. Das Array selbst ist nullbasiert, aber FirstRedirectionMessageNumber muss nicht 0 sein. Der Miniport weist dieses Array zu und legt MessageTargets so fest, dass es darauf verweist. Der Miniporttreiber muss ein GROUP_AFFINITY Array zuordnen, das groß genug ist, um alle zurückgegebenen Affinitätsmasken aufzunehmen.

Hinweise

Die aktuelle Version dieser Struktur wird durch STOR_PERF_VERSION definiert. Wenn Sie Version auf diesen Wert festlegen, können Flags alle unterstützten Optimierungen angeben.

Der Zweck des STOR_PERF_DPC_REDIRECTION Flags besteht darin, sicherzustellen, dass einzelne CPUs nicht mit der DPC-Verarbeitung überfordert werden. Wenn dieses Flag festgelegt ist, wird die DPC-Verarbeitung auf mehrere CPUs verteilt. Wenn STOR_PERF_DPC_REDIRECTION_CURRENT_CPU nicht festgelegt ist, versucht StorPort, E/A-Vervollständigungs-DPCs auf derselben CPU zu planen, die die E/A-Vorgänge ausgelöst hat.

In der Regel schließt ein Miniport E/A-Anforderungen in der HwStorStartIo-Routine ab und ruft StorPortNotification mit dem Benachrichtigungstyp RequestComplete auf. Für die Verarbeitung von E/A auf diese Weise lässt der Miniport das STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO-Flag im Flags-Element festgelegt, sodass Storport die DPC-Umleitung anpassen kann.

Informationen zum Aktivieren von nachrichtengesteuerten Interrupts für ein Gerät finden Sie unter Aktivieren Message-Signaled Interrupts in der Registrierung.

Anforderungen

Anforderung Wert
Header storport.h (einschließlich Storport.h)

Weitere Informationen

StorPortInitializePerfOpts