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;
Angehörige
Version
Die Versionsnummer der Struktur. Legen Sie dieses Element beim Abfragen und Initialisieren von Optimierungen fest.
Size
Die Größe der Struktur, die auf Sizeof(PERF_CONFIGURATION_DATA)festgelegt ist.
Flags
Bitweise ODER von unterstützten Flags. Derzeit werden die folgenden Flags unterstützt:
Flagge | Bedeutung |
---|---|
STOR_PERF_DPC_REDIRECTION |
Dieses Flag wird verwendet, um anzugeben, dass die DPC-Verarbeitung über mehrere CPUs verteilt werden soll.
Dieses Kennzeichen ist gültig, wenn Version auf 2 oder 3 festgelegt ist. |
STOR_PERF_CONCURRENT_CHANNELS |
Dieses Flag wird verwendet, um anzugeben, dass gleichzeitige Aufrufe an die HwStorStartIo Routine unterstützt werden. Vor Windows 8 dürfen Miniports diese Kennzeichnung nicht festlegen.
Dieses Kennzeichen ist gültig, wenn Version auf 2 oder 3 festgelegt ist. |
STOR_PERF_INTERRUPT_MESSAGE_RANGES |
Dieses Flag wird verwendet, um anzugeben, dass die Unterbrechungsumleitung unterstützt wird. Wenn Sie dieses Kennzeichen verwenden, müssen Sie auch das STOR_PERF_DPC_REDIRECTION Flag festlegen.
Dieses Kennzeichen ist gültig, wenn Version auf 2 oder 3 festgelegt ist. |
STOR_PERF_ADV_CONFIG_LOCALITY |
Dieses Kennzeichen wird verwendet, um anzugeben, dass Sie die Gruppe und das Maskieren verwenden sollten, die sich auf die Nachrichtengruppe mit der richtigen Affinität beziehen. Wenn Sie dieses Kennzeichen verwenden, müssen Sie auch die STOR_PERF_INTERRUPT_MESSAGE_RANGES und die STOR_PERF_DPC_REDIRECTION Flags festlegen.
Dieses Kennzeichen ist gültig, wenn Version auf 3 festgelegt ist. |
STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO |
Diese Kennzeichnung wird verwendet, um anzugeben, dass der Miniporttreiber gleichzeitig mit der Übermittlung neuer E/Os-E/A-Vorgänge abgeschlossen wird. Wenn Sie dieses Kennzeichen verwenden, müssen Sie auch das STOR_PERF_DPC_REDIRECTION Flag festlegen.
Dieses Kennzeichen ist gültig, wenn Version auf 3 festgelegt ist. Weitere Informationen finden Sie weiter unten. |
STOR_PERF_DPC_REDIRECTION_CURRENT_CPU |
Dieses Flag wird verwendet, um anzugeben, dass Sie sich für die DPC-Umleitung (erforderlich) entscheiden, aber die E/A-Umleitungsauswahl wird auf die CPU festgelegt, die den DPC anfordert, und nicht die CPU, die die E/A-Anforderung in Storport stammt.
Wenn Sie dieses Kennzeichen verwenden, müssen Sie auch das STOR_PERF_DPC_REDIRECTION Flag festlegen. Dieses Kennzeichen 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 erstellt werden muss.
Dieses Kennzeichen ist gültig, wenn Version auf 5 festgelegt ist. |
ConcurrentChannels
Die Anzahl der gleichzeitigen Aufrufe an die HwStorStartIo Routine, die der Miniporttreiber und die Geräteunterstützung unterstützen. Auf dieses Element wird nur zugegriffen, wenn das STOR_PERF_CONCURRENT_CHANNELS Flag festgelegt wurde. Vor Windows 8 dürfen Miniports diesen Wert nicht festlegen.
FirstRedirectionMessageNumber
Wenn der Flags Mitglied das STOR_PERF_INTERRUPT_MESSAGE_RANGES Flag festgelegt hat, initialisiert der Miniporttreiber die Unterbrechungsumleitung, um mit dieser Nachrichtennummer zu beginnen. Auf dieses Element wird nur zugegriffen, wenn das STOR_PERF_INTERRUPT_MESSAGE_RANGES Flag festgelegt ist.
LastRedirectionMessageNumber
Wenn der Flags Mitglied das STOR_PERF_INTERRUPT_MESSAGE_RANGES Flag festgelegt hat, initialisiert der Miniporttreiber die Unterbrechungsumleitung, um mit dieser Nachrichtennummer zu enden. Auf dieses Element wird nur zugegriffen, wenn das STOR_PERF_INTERRUPT_MESSAGE_RANGES Flag festgelegt ist.
DeviceNode
Wenn der Flags Mitglied das STOR_PERF_ADV_CONFIG_LOCALITY Flag festgelegt hat, initialisiert Storport dieses Feld so, dass es die NUMA-Knotennummer enthält, in der sich das Gerät des Miniporttreibers befindet.
Reserved
Reserviert für die Systemverwendung.
MessageTargets
Wenn das Flags-Element Element den STOR_PERF_ADV_CONFIG_LOCALITY Flag festgelegt hat, initialisiert Storport die Felder in den Strukturen eines GROUP_AFFINITY Arrays. Diese Strukturen entsprechen den derzeit verwendeten Umleitungsnachrichten. Das Array selbst ist nullbasiert, aber FirstRedirectionMessageNumber nicht null sein muss. Der Miniport weist dieses Array zu und legt MessageTargets- darauf fest. Der Miniporttreiber muss ein GROUP_AFFINITY Array zuweisen, das groß genug ist, um alle zurückgegebenen Affinitätsmasken zu enthalten.
Bemerkungen
Die aktuelle Version dieser Struktur wird durch STOR_PERF_VERSIONdefiniert. 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 Kennzeichen festgelegt ist, wird die DPC-Verarbeitung über 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-Datei stammt.
In der Regel führt ein Miniport E/A-Anforderungen in dieser HwStorStartIo Routine durch und ruft StorPortNotification mit dem RequestComplete Benachrichtigungstyp auf. Bei der Verarbeitung von E/A auf diese Weise belässt der Miniport das STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO Flag, das im Flags Mitglied festgelegt ist, sodass Storport die DPC-Umleitung anpassen kann.
Informationen zum Aktivieren von Nachrichtensignalunterbruchs für ein Gerät finden Sie unter Aktivieren von Message-Signaled Interrupts in der Registrierung.
Anforderungen
Anforderung | Wert |
---|---|
Header- | storport.h (include Storport.h) |