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) |