Freigeben über


Storport-Treiberunterstützungsroutinen

Diese Seite kategorisiert einige der Unterstützungsroutinen, die vom Storport-Treiber des Systems für Miniports bereitgestellt werden. Die vollständige Liste finden Sie unter storport.h.

Die Liste der Storport-Treiberroutinen für Miniports finden Sie unter Storport-Treiberroutinen für Miniports.

Unterstützungsroutinen für den direkten Speicherzugriff

Storport-Treiber stellen die folgenden Unterstützungsroutinen für den direkten Speicherzugriff (Direct Memory Access, DMA) bereit.

Routine Beschreibung
StorPortBuildScatterGatherList Erstellt eine Scatter-/Gather-Liste für den angegebenen Datenpuffer.
StorPortGetScatterGatherList Ruft die zugeordnete Scatter-/Gather-Liste für den angegebenen SCSI-Anforderungsblock (SRB) ab.
StorPortPutScatterGatherList Gibt alle Ressourcen frei, die einer Scatter-/Gather-Liste zugeordnet sind, die zuvor durch einen Aufruf der Routine StorPortBuildScatterGatherList erstellt wurde.

Allgemeine Unterstützungsroutinen

Storport stellt die folgenden allgemeinen Unterstützungsroutinen bereit.

Routine Beschreibung
StorPortDebugPrint Druckt eine Debugzeichenfolge zum Kerneldebugger, wenn der Debugger angefügt ist.
StorPortEtwEvent2 Veröffentlicht ein Ereignis der Ereignisablaufverfolgung für Windows (Event Tracing for Windows, ETW) zu einem Speicherablaufverfolgungskanal. Der Miniport kann zwei universelle ETW-Parameter protokollieren. Die ETW-Parameter werden als zwei Name-Wert-Paare ausgedrückt.
StorPortEtwEvent4 Veröffentlicht ein ETW-Ereignis in einem Speicherablaufverfolgungskanal. Der Miniport kann vier universelle ETW-Parameter protokollieren. Die ETW-Parameter werden als vier Name-Wert-Paare ausgedrückt.
StorPortEtwEvent8 Veröffentlicht ein ETW-Ereignis in einem Speicherablaufverfolgungskanal. Der Miniport kann acht universelle ETW-Parameter protokollieren. Die ETW-Parameter werden als acht Name-Wert-Paare ausgedrückt.
StorPortGetActivityIdSrb Ruft die ETW-Aktivitäts-ID ab, die einem Anforderungsblock zugeordnet ist.
StorPortGetDeviceObjects Gibt die Geräteobjekte zurück, die dem Adaptergerätestapel zugeordnet sind. Die zurückgegebenen Geräteobjekte sind die funktionalen und physischen Geräteobjekte des Adapters und des Geräteobjekts, dem das funktionale Geräteobjekt angefügt ist.
StorPortGetSystemPortNumber Ruft die vom System zugewiesene Portnummer für einen Speicheradapter ab.
StorPortInitializeSListHead Initialisiert den Anfang einer von Storport verwalteten einfach verknüpften Liste.
StorPortInterlockedFlushSList Entfernt alle Elemente aus einer von Storport verwalteten einfach verknüpften Liste. Der Zugriff auf die Liste wird auf einem Multiprozessorsystem synchronisiert.
StorPortInterlockedPopEntrySList Entfernt ein Element aus dem Anfang einer von Storport verwalteten einfach verknüpften Liste. Der Zugriff auf die Liste wird auf einem Multiprozessorsystem synchronisiert.
StorPortInterlockedPushEntrySList Fügt ein Element am Anfang einer von Storport verwalteten einfach verknüpften Liste ein. Der Zugriff auf die Liste wird auf einem Multiprozessorsystem synchronisiert.
StorPortInvokeAcpiMethod Führt eine ACPI-Methode für ein Speichergerät aus.
StorPortIsCurrentOsInstallationUpgrade Überprüft, ob es sich bei der aktuellen Installation von Windows um ein Upgrade einer früheren Version handelt oder nicht.
StorPortIsDeviceOperationAllowed Ermöglicht einem Miniport die Feststellung, ob Vorgänge für eine bestimmte Geräteverwaltungsklasse zulässig sind.
StorPortLogError Benachrichtigt den Porttreiber, dass ein Fehler aufgetreten ist.
StorPortLogTelemetry Protokolliert ein Miniport-Telemetrieereignis, um die Diagnose oder Sammlung nützlicher Informationen zu unterstützen.
StorPortLogSystemEvent Stellt Miniporttreibern vollständigen Zugriff auf die Funktionen der Windows-Kernel-Ereigniseinrichtung bereit, sodass Miniporttreiber Ereignisprotokolleinträge erstellen können, die bei der Behebung von Speicherproblemen wirklich nützlich sind. Dies ist eine bessere Alternative zu StorPortLogError.
StorPortQueryDepthSList Ruft die Anzahl der Einträge in einer einfach verknüpften Liste ab, die von Storport verwaltet wird.
StorPortQueryPerformanceCounter Fragt den aktuellen Zählerwert für die Systemleistung ab und gibt ihn zurück.
StorPortQuerySystemTime Ruft die aktuelle Systemzeit ab.
StorPortRegistryRead Liest die Registrierungsdaten für das angegebene Gerät und den angegebenen Wert.
StorPortRegistryReadAdapterKey Liest die Hardware- oder Geräteregistrierungsadapterschlüssel in der Registrierung unter HKLM/CurrentControlSet/Enum/<Instanzpfad>/DeviceParameters/....
StorPortRegistryWriteAdapterKey Schreibt die Hardware- oder Geräteregistrierungsadapterschlüssel in der Registrierung unter HKLM/CurrentControlSet/Enum/<Instanzpfad>/DeviceParameters/....
StorPortRegistryWrite Konvertiert die Registrierungsdaten, die in einem angegebenen Puffer enthalten sind, von ASCII in Unicode und schreibt dann die Daten in den Speicherbereich des Miniporttreibers pro HBA.

Unterstützungsroutinen für die Verarbeitung von E/A-Anforderungen

Storport stellt die folgenden Unterstützungsroutinen für die Verarbeitung von E/A-Anforderungen bereit.

Routine Beschreibung
StorPortBusy Benachrichtigt den Porttreiber, dass der Adapter derzeit aufgrund der Verarbeitung ausstehender Anforderungen ausgelastet ist.
StorPortCompleteRequest Schließt alle ausstehenden Anforderungen durch Festlegung des SRB-Statuswerts auf SrbStatus an.
StorPortCompleteServiceIrp Wird von einem virtuellen Storport-Miniporttreiber aufgerufen, wenn eine Anforderung abgeschlossen werden muss, die dieser in seiner HwStorProcessServiceRequest-Rückrufroutine empfangen hat.
StorPortDeviceBusy Benachrichtigt den Porttreiber, dass die angegebene logische Einheit derzeit aufgrund der Verarbeitung ausstehender Anforderungen ausgelastet ist.
StorPortDeviceReady Benachrichtigt den Porttreiber, dass die angegebene logische Einheit für die Verarbeitung neuer Anforderungen bereit ist.
StorPortFreeWorker Gibt ein Storport-Arbeitselement frei, das zuvor von der Routine StorPortInitializeWorker zugewiesen wurde.
StorPortGetRequestInfo Ruft die E/A-Anforderungsinformationen ab, die einem SCSI-Anforderungsblock (SRB) zugeordnet sind, und gibt sie in einer STOR_REQUEST_INFO-Struktur zurück.
StorPortInitializeWorker Erstellt ein neues Storport-Arbeitselement, das in einem System Worker-Thread ausgeführt wird.
StorPortQueueWorkItem Plant ein Storport-Arbeitselement, das im Kontext eines System Worker-Threads ausgeführt werden soll.
StorPortPause Hält einen Adapter für den angegebenen Zeitraum an.
StorPortPauseDevice Hält ein bestimmtes logisches Einheitengerät für den angegebenen Zeitraum an.
StorPortReady Benachrichtigt den Porttreiber, dass der Adapter nicht mehr ausgelastet ist.
StorPortResume Setzt einen angehaltenen Adapter fort.
StorPortResumeDevice Setzt eine logische Einheit fort, die zuvor angehalten wurde.

Initialisierungsunterstützungsroutinen

Storport-Treiber stellen die folgenden Initialisierungsunterstützungsroutinen bereit.

Routine Beschreibung
StorPortEnablePassiveInitialization Ermöglicht der HwStorPassiveInitializeRoutine-Rückrufroutine des Miniports die Ausführung auf PASSIVE_LEVEL während der Miniportinitialisierung.
StorPortGetActiveGroupCount Gibt die Anzahl der Prozessorgruppen zurück, die im System vorhanden sind.
StorPortGetActiveNodeCount Gibt die Anzahl der Knoten zurück, die im System vorhanden sind.
StorPortGetBusData Ruft die busspezifischen Konfigurationsinformationen ab, die zum Initialisieren des HBA erforderlich sind.
StorPortGetCurrentProcessorNumber Ruft die aktuelle Prozessornummer aus dem Kernel ab.
StorPortGetGroupAffinity Erstellt eine Maske der aktiven Prozessoren in einer angeforderten Gruppe.
StorPortGetHighestNodeNumber Gibt die größte mögliche Anzahl von Knoten im System zurück.
StorPortGetLogicalProcessorRelationship Gibt Beziehungsinformationen für einen oder mehrere angegebene Typen zurück. Zu diesen Typen gehören Gruppen, physische Pakete und Knoten im Hostsystem. Die zurückgegebenen Informationen umfassen Prozessoraffinitätsmasken, die aus den logischen Prozessoren im Hostsystem bestehen. Diese logischen Prozessoren teilen die angegebenen Beziehungstypen.
StorPortGetLogicalUnit Gibt einen Zeiger auf den Speicherbereich pro logischer Einheit des Miniporttreibers zurück.
StorPortGetNodeAffinity Erstellt eine Maske der aktiven Prozessoren in einem angeforderten nicht einheitlichen Speicherzugriff (Non-Uniform Memory Access, NUMA).
StorPortGetStartIoPerfParams Platziert die Leistungsparameter für eine bestimmte E/A-Anforderung in einer STARTIO_PERFORMANCE_PARAMETERS-Struktur.
StorPortInitialize Initialisiert die Parameter und Erweiterungsdaten des Porttreibers. StorPortInitilize speichert auch die vom Miniporttreiber bereitgestellten Adapterinformationen.
StorPortInitializePerfOpts Initialisiert die Leistungsoptimierungen, die sowohl der Miniporttreiber als auch der Storport-Treiber mithilfe einer PERF_CONFIGURATION_DATA-Struktur unterstützen.
StorPortSetAdapterBusType Wird verwendet, um den BusType des Adapters abhängig von der aktuellen Konfiguration anzupassen. Wenn Sie den BusType mit dieser Routine festlegen, können Sie die in der Miniport-INF festgelegte globale Eigenschaft außer Kraft setzen, ohne den Treiber erneut installieren zu müssen. Diese Funktion ist für Szenarien nützlich wie RAID-Unterstützung oder Unterstützung für mehrere Adapter mit einem anderen Bustyp.
StorPortSetBusDataByOffset Schreibt busspezifische Konfigurationsinformationen.
StorPortSetDeviceQueueDepth Legt die maximale Tiefe der Gerätewarteschlange für das angegebene Gerät fest.
StorPortSetPowerSettingNotificationGuids Aktiviert einen Miniport für den Empfang von Energieeinstellungsbenachrichtigungen. Der Miniport registriert ein Array von GUIDs, die die Energieeinstellungen angeben, die Energieänderungsbenachrichtigungen empfangen sollen.
StorPortSetUnitAttributes Registriert die Leistungsattribute eines Speichereinheitengeräts beim Storport-Treiber.

Unterbrechen von Unterstützungsroutinen

Storport-Treiber stellen die folgenden Unterbrechungsunterstützungsroutinen bereit.

Routine Beschreibung
StorPortGetMSIInfo Ruft die Message-Signaled Interrupt (MSI)-Informationen für die angegebene Nachricht ab.
StorPortSynchronizeAccess Stellt einen synchronisierten Zugriff auf die Geräteerweiterung eines Miniporttreibers bereit.
StorPortInitializeDpc Initialisiert einen verzögerten Prozeduraufruf (Deferred Procedure Call, DPC) für Storport.
StorPortIssueDpc Gibt einen Storport-DPC aus.
StorPortStallExecution Hält den Miniporttreiber an.

Sperren von Unterstützungsroutinen

Storport-Treiber stellen die folgenden Sperrungsunterstützungsroutinen bereit.

Routine Beschreibung
StorPortAcquireMSISpinLock Übernimmt den Message Signaled Interrupt (MSI)-Spinlock, der der angegebenen Nachricht zugeordnet ist.
StorPortAcquireSpinLock Übernimmt den angegebenen Spinlock.
StorPortReleaseMSISpinLock Gibt einen zuvor übernommenen MSI-Spinlock für die angegebene Nachricht frei.
StorPortReleaseSpinLock Gibt einen Spinlock frei, der von StorPortAcquireSpinLock übernommen wurde.

Speicherverwaltungs-Unterstützungsroutinen

Storport-Treiber stellen die folgenden Speicherverwaltungs-Unterstützungsroutinen bereit.

Routine Beschreibung
StorPortAllocateContiguousMemorySpecifyCacheNode Teilt einen Bereich eines physisch zusammenhängendem, nicht zwischengespeicherten Speichers zu.
StorPortAllocateMdl Weist eine Speicherdeskriptorliste (Memory Descriptor List, MDL) zu, um den angegebenen nicht ausgelagertem Poolspeicher zu beschreiben.
StorPortAllocatePool Teilt einen Block eines nicht zusammenhängenden, nicht ausgelagerten Poolspeichers zu.
StorPortAllocateRegistryBuffer Teilt einen Puffer zu, den ein Miniport zum Lesen und Schreiben von Registrierungsdaten verwenden kann.
StorPortBuildMdlForNonPagedPool Aktualisiert die MDL, um den zugeordneten nicht ausgelagerten Speicher zu beschreiben.
StorPortConvertUlongToPhysicalAddress Wandelt eine nicht signierte lange Adresse in eine physische Adresse um.
StorPortConvertPhysicalAddressToULong64 Wandelt eine physische Adresse in einen ULONG64-Wert um.
StorPortFreeMdl Gibt eine Speicherdeskriptorliste (Memory Descriptor List, MDL) frei, die einen nicht ausgelagerten Poolspeicher beschreibt.
StorPortFreeContiguousMemorySpecifyCache Hebt die Zuteilung eines nicht zwischengespeicherten Speichers im nicht ausgelagerten Bereich des Systemadressraums auf.
StorPortFreePool Gibt einen Speicherblock frei, der zuvor durch einen Aufruf der Routine StorPortAllocatePool zugeteilt wurde.
StorPortFreeRegistryBuffer Gibt den Puffer frei, der dem Speichern von Registrierungsdaten zugeteilt wurde.
StorPortGetDataInBufferMdl Gibt eine MDL zurück, die dem Eingabedatenpuffer eines SCSI-Anforderungsblocks (SRB) zugeordnet ist.
StorPortGetDataInBufferScatterGatherList Gibt die Scatter-Gather-Liste zurück, die dem Eingabedatenpuffer eines SCSI-Anforderungsblocks (SRB) zugeordnet ist.
StorPortGetDataInBufferSystemAddress Gibt die Systemadresse für den Eingabedatenpuffer eines SCSI-Anforderungsblocks (SRB) zurück.
StorPortGetOriginalMdl Gibt die MDL zurück, die dem angegebenen SRB zugeordnet ist.
StorPortGetVirtualAddress Ruft eine virtuelle Adresse ab, die der angegebenen physischen Adresse zugeordnet ist.
StorPortGetPhysicalAddress Wandelt einen bestimmten virtuellen Adressbereich in einen physischen Adressbereich für einen DMA-Vorgang um.
StorPortGetSystemAddress Gibt eine virtuelle Adresse im Systembereich für den Datenpuffer des angegebenen SCSI-Anforderungsblocks (SRB) zurück.
StorPortGetUncachedExtension Teilt einen nicht zwischengespeicherten gemeinsamen Puffer zu, den die CPU und das Gerät gemeinsam nutzen können.
StorPortMarkDumpMemory Ein Miniport sollte den Arbeitsspeicher markieren, der für die Dump- oder Ruhezustandsdatei verwendet wird. Der markierte Arbeitsspeicher wird beibehalten und bleibt gültig, wenn der Vorgang nach dem Ruhezustand fortgesetzt wird. Der Arbeitsspeicher, der markiert werden soll, wird durch eine Adresse und eine Bereichslänge in einem Aufruf von StorPortMarkDumpMemory angegeben.
StorPortMoveMemory Kopiert den Arbeitsspeicher von einem Puffer in einen anderen Puffer.

Benachrichtigungsunterstützungsroutinen

Storport-Treiber stellen die folgenden Benachrichtigungsunterstützungsroutinen bereit.

Routine Beschreibung
StorPortAsyncNotificationDetected Benachrichtigt den Storport-Treiber über ein Speichergerätstatus-Änderungsereignis.
StorPortNotification Benachrichtigt den Storport-Treiber über bestimmte Ereignisse und Bedingungen.
StorPortStateChangeDetected Benachrichtigt den Storport-Porttreiber über eine Zustandsänderung für eine logische Einheitennummer (Logical Unit Number, LUN), einen Hostbusadapter (HBA) oder ein Zielgerät.

Port- und Registrierungs-E/A-Unterstützungsroutinen

Der Storport-Treiber stellt die folgenden Port- und Registrierungs-E/A-Unterstützungsroutinen bereit.

Routine Beschreibung
StorPortGetDeviceBase Ordnet dem Systemadressraum eine E/A-Adresse zu.
StorPortFreeDeviceBase Gibt einen Bereich des Geräte-E/A-Arbeitsspeichers frei, den StorPortGetDeviceBase zuvor zugeordnet hat.
StorPortReadPortBufferUchar Liest einen Wert aus einer angegebenen Portadresse.
StorPortReadPortBufferUlong Liest einen Wert aus einer angegebenen Portadresse.
StorPortReadPortBufferUshort Liest einen Wert aus einer angegebenen Portadresse.
StorPortReadPortUchar Liest einen Wert aus einer angegebenen Portadresse.
StorPortReadPortUlong Liest einen Wert aus einer angegebenen Portadresse.
StorPortReadPortUshort Liest einen Wert aus einer angegebenen Portadresse.
StorPortReadRegisterBufferUchar Liest einen Wert aus einer angegebenen Registeradresse.
StorPortReadRegisterBufferUlong Liest einen Wert aus einer angegebenen Registeradresse.
StorPortReadRegisterBufferUlong64 Liest eine angegebene Anzahl von ULONG64-Werten aus der angegebenen 64-Bit-Registeradresse in einen Puffer.
StorPortReadRegisterBufferUshort Liest einen Wert aus einer angegebenen Registeradresse.
StorPortReadRegisterUchar Liest einen Wert aus einer angegebenen Registeradresse.
StorPortReadRegisterUlong Liest einen Wert aus einer angegebenen Registeradresse.
StorPortReadRegisterUlong64 Liest einen 64-Bit-Wert aus einer angegebenen 64-Bit-Registeradresse.
StorPortReadRegisterUshort Liest einen Wert aus einer angegebenen Registeradresse.
StorPortValidateRange Ermittelt, ob ein angegebener Bereich von E/A-Adressen von einem anderen Adapter verwendet wird. Diese Routine ist in Windows NT 4.0 und höheren Betriebssystemen veraltet.
StorPortWritePortBufferUchar Schreibt einen Wert in eine angegebene Registeradresse.
StorPortWritePortBufferUlong Schreibt einen Wert in eine angegebene Registeradresse.
StorPortWritePortBufferUshort Schreibt einen Wert in eine angegebene Registeradresse.
StorPortWritePortUchar Schreibt einen Wert in eine angegebene Registeradresse.
StorPortWritePortUlong Schreibt einen Wert in eine angegebene Registeradresse.
StorPortWritePortUshort Schreibt einen Wert in eine angegebene Registeradresse.
StorPortWriteRegisterBufferUchar Überträgt eine bestimmte Anzahl nicht signierter Bytes aus einem Puffer zum HBA.
StorPortWriteRegisterBufferUlong Überträgt eine bestimmte Anzahl von ULONG-Werten aus einem Puffer zum HBA.
StorPortWriteRegisterBufferUlong64 Schreibt eine angegebene Anzahl von ULONG64-Werten aus der angegebenen 64-Bit-Registeradresse.
StorPortWriteRegisterBufferUshort Überträgt eine bestimmte Anzahl von USHORT-Werten aus einem Puffer zum HBA.
StorPortWriteRegisterUchar Überträgt eine bestimmte Anzahl von Zeichenwerten aus einem Puffer zur angegebenen HBA-Registeradresse.
StorPortWriteRegisterUlong Überträgt einen ULONG-Wert an die angegebene HBA-Registeradresse.
StorPortWriteRegisterUlong64 Schreibt einen ULONG64-Wert zur angegebenen Registeradresse.
StorPortWriteRegisterUshort Überträgt einen ULONG-Wert an die angegebene HBA-Registeradresse.

Unterstützungsroutinen für die Energieverwaltung zur Laufzeit

Storport-Treiber stellt die folgenden Unterstützungsroutinen für die Energieverwaltung zur Laufzeit bereit.

Routine Beschreibung
StorPortInitializePoFxPower Registriert ein Speichergerät beim Power Management Framework (PoFx).
StorPortPoFxActivateComponent Erhöht die Aktivierungsreferenzzahl für die angegebene Komponente eines Speichergeräts in Inkrementen.
StorPortPoFxIdleComponent Senkt die Aktivierungsreferenzzahl einer angegebenen Komponente eines Speichergeräts in Inkrementen.
StorPortPoFxPowerControl Sendet eine Energiesteuerungsanforderung an das Power Management Framework (PoFx) zur Weiterleitung an das Power-Engine-Plug-In (PEP).
StorPortPoFxSetComponentLatency Gibt die maximale Latenz an, die beim Übergang vom Leerlauf- in den aktiven Modus in der angegebenen Speichergerätekomponente toleriert werden kann.
StorPortPoFxSetComponentResidency Legt die geschätzte Zeit dafür fest, wie lange eine Speichergerätkomponente voraussichtlich im Leerlaufzustand bleibt, nachdem sie in den Leerlaufzustand gewechselt ist.

Timerunterstützungsroutinen

Der Storport-Treiber stellt die folgenden Timerunterstützungsroutinen bereit.

Routine Beschreibung
StorPortFreeTimer Gibt ein Storport-Timerkontextobjekt frei, das zuvor von der Routine StorPortInitializeTimer erstellt wurde.
StorPortInitializeTimer Erstellt ein Storport-Timerkontextobjekt.
StorPortRequestTimer Plant ein Rückrufereignis für ein Storport-Timerkontextobjekt.