Storport-Treiberunterstützungsroutinen

Auf dieser Seite werden einige der Supportroutinen kategorisiert, die miniports vom systemseitig bereitgestellten Storport-Treiber bereitgestellt werden. Eine vollständige Liste finden Sie unter storport.h .

Eine Liste der Miniportroutinen des Storport-Treibers finden Sie unter Storport Miniport-Treiberroutinen.

Supportroutinen für direkten Speicherzugriff

Der Storport-Treiber bietet die folgenden DMA-Unterstützungsroutinen (Direct Memory Access).

-Routine zurückgegebener Wert BESCHREIBUNG
StorPortBuildScatterGatherList Erstellt eine Punkt-/Sammlungsliste 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 StorPortBuildScatterGatherList-Routine erstellt wurden.

Allgemeine Supportroutinen

Storport bietet die folgenden allgemeinen Supportroutinen.

-Routine zurückgegebener Wert BESCHREIBUNG
StorPortDebugPrint Gibt eine Debugzeichenfolge an den Kerneldebugger aus, wenn der Debugger angefügt ist.
StorPortEtwEvent2 Veröffentlicht ein ETW-Ereignis (Event Tracing for Windows) in einem Speicherablaufverfolgungskanal. Der Miniport kann zwei allgemeine 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 allgemeine 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 allgemeine 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 das Geräteobjekt, an das das funktionale Geräteobjekt angefügt ist.
StorPortGetSystemPortNumber Ruft die systemseitig zugewiesene Portnummer für einen Speicheradapter ab.
StorPortInitializeSListHead Initialisiert den Kopf einer von Storport verwalteten singly verknüpften Liste.
StorPortInterlockedFlushSList Entfernt alle Elemente aus einer von Storport verwalteten, singly verknüpften Liste. Der Zugriff auf die Liste wird auf einem Multiprozessorsystem synchronisiert.
StorPortInterlockedPopEntrySList Entfernt ein Element von der Vorderseite einer von Storport verwalteten singly verknüpften Liste. Der Zugriff auf die Liste wird auf einem Multiprozessorsystem synchronisiert.
StorPortInterlockedPushEntrySList Fügt ein Element an der Vorderseite einer von Storport verwalteten, singly 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 von einer früheren Version handelt oder nicht.
StorPortIsDeviceOperationAllowed Ermöglicht einem Miniport, zu bestimmen, ob Vorgänge für eine bestimmte Geräteverwaltungsklasse zulässig sind.
StorPortLogError Benachrichtigt den Porttreiber, dass ein Fehler aufgetreten ist.
StorPortLogSystemEvent Ermöglicht Miniporttreibern den vollständigen Zugriff auf die Funktionen der Windows-Kernelereigniseinrichtung, sodass Miniporttreiber Ereignisprotokolleinträge erstellen können, die bei der Behandlung von Speicherproblemen wirklich nützlich sind. Es bietet eine bessere Alternative zu StorPortLogError.
StorPortQueryDepthSList Ruft die Anzahl der Einträge in einer von Storport verwalteten singly verknüpften Liste ab.
StorPortQueryPerformanceCounter Fragt den aktuellen Systemleistungsindikatorwert ab und gibt den wert 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 die Daten dann in den HBA-Speicherbereich des Miniporttreibers.

Supportroutinen für die E/A-Anforderungsverarbeitung

Storport bietet die folgenden E/A-Anforderungsverarbeitungsroutinen.

-Routine zurückgegebener Wert BESCHREIBUNG
StorPortBusy Benachrichtigt den Porttreiber darüber, dass der Adapter derzeit ausgelastet ist und ausstehende Anforderungen verarbeitet.
StorPortCompleteRequest Schließt alle ausstehenden Anforderungen ab, indem der SRB-wert status auf SrbStatus festgelegt wird.
StorPortCompleteServiceIrp Wird von einem virtuellen Storport-Miniporttreiber aufgerufen, wenn er eine Anforderung abschließen muss, die er in seiner HwStorProcessServiceRequest-Rückrufroutine empfangen hat.
StorPortDeviceBusy Benachrichtigt den Porttreiber darüber, dass die angegebene logische Einheit derzeit ausgelastet ist und ausstehende Anforderungen verarbeitet.
StorPortDeviceReady Benachrichtigt den Porttreiber, dass die angegebene logische Einheit bereit ist, neue Anforderungen zu verarbeiten.
StorPortFreeWorker Gibt ein Storport-Arbeitselement frei, das zuvor von der StorPortInitializeWorker-Routine 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 workerthread ausgeführt wird.
StorPortQueueWorkItem Plant die Ausführung eines Storport-Arbeitselements im Kontext eines System workerthreads.
StorPortPause Hält einen Adapter für den angegebenen Zeitraum an.
StorPortPauseDevice Hält ein bestimmtes logisches Einheitsgerä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 zuvor angehaltene logische Einheit fort.

Initialisierungsunterstützungsroutinen

Der Storport-Treiber bietet die folgenden Initialisierungsunterstützungsroutinen.

-Routine zurückgegebener Wert BESCHREIBUNG
StorPortEnablePassiveInitialization Ermöglicht die Ausführung der HwStorPassiveInitializeRoutine-Rückrufroutine des Miniports bei 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ößtmögliche Knotennummer auf dem System zurück.
StorPortGetLogicalProcessorRelationship Gibt Beziehungsinformationen für einen oder mehrere angegebene Typen zurück. Diese Typen umfassen 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 verwenden die angegebenen Beziehungstypen.
StorPortGetLogicalUnit Gibt einen Zeiger auf den Speicherbereich des Miniporttreibers pro logischer Einheit zurück.
StorPortGetNodeAffinity Erstellt eine Maske der aktiven Prozessoren in einem angeforderten NUMA-Knoten (Non-Uniform Memory Access).
StorPortGetStartIoPerfParams Places die Leistungsparameter für eine bestimmte E/A-Anforderung in einer STARTIO_PERFORMANCE_PARAMETERS-Struktur.
StorPortInitialize Initialisiert die Porttreiberparameter und Erweiterungsdaten. StorPortInitilize speichert auch die Adapterinformationen, die vom Miniporttreiber bereitgestellt werden.
StorPortInitializePerfOpts Initialisiert die Leistungsoptimierungen, die sowohl der Miniporttreiber als auch der Storport-Treiber unterstützen, mithilfe einer PERF_CONFIGURATION_DATA-Struktur.
StorPortSetAdapterBusType Wird verwendet, um den BusType des Adapters abhängig von seiner aktuellen Konfiguration anzupassen. Wenn Sie busType mit dieser Routine festlegen, können Sie die globale Eigenschaft überschreiben, die im Miniport-INF festgelegt ist, ohne den Treiber erneut installieren zu müssen. Dies ist nützlich für Szenarien 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 Ermöglicht einem Miniport das Empfangen von Energieeinstellungsbenachrichtigungen. Der Miniport registriert ein Array von GUIDs, die die Energieeinstellungen identifizieren, für die Stromwechselbenachrichtigungen empfangen werden sollen.
StorPortSetUnitAttributes Registriert die Energieattribute eines Speichergeräts beim Storport-Treiber.

Unterbrechungsunterstützungsroutinen

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

-Routine zurückgegebener Wert BESCHREIBUNG
StorPortGetMSIInfo Ruft die MSI-Informationen (Message Signaled Interrupt) für die angegebene Nachricht ab.
StorPortSynchronizeAccess Ermöglicht synchronisierten Zugriff auf die Geräteerweiterung eines Miniporttreibers.
StorPortInitializeDpc Initialisiert einen StorPort-Aufruf der verzögerten Prozedur (DPC).
StorPortIssueDpc Gibt einen Storport-DPC aus.
StorPortStallExecution Stagniert den Miniport-Fahrer.

Sperren von Supportroutinen

Der Storport-Treiber bietet die folgenden Sperrunterstützungsroutinen.

-Routine zurückgegebener Wert BESCHREIBUNG
StorPortAcquireMSISpinLock Ruft die Msi-Drehsperre (Message Signaled Interrupt) ab, die der angegebenen Nachricht zugeordnet ist.
StorPortAcquireSpinLock Ruft die angegebene Drehsperre ab.
StorPortReleaseMSISpinLock Gibt eine zuvor erworbene MSI-Drehsperre für die angegebene Nachricht frei.
StorPortReleaseSpinLock Gibt einen von StorPortAcquireSpinLock erworbenen Spinlock frei.

Unterstützungsroutinen für die Speicherverwaltung

Der Storport-Treiber bietet die folgenden Speicherverwaltungsroutinen.

-Routine zurückgegebener Wert BESCHREIBUNG
StorPortAllocateContiguousMemorySpecifyCacheNode Ordnet einen Bereich von physisch zusammenhängendem, nicht zwischengespeichertem, nicht auslagerten Arbeitsspeicher zu.
StorPortAllocateMdl Weist eine MDL zu, um den angegebenen nicht ausgelagerten Poolspeicher zu beschreiben.
StorPortAllocatePool Ordnet einen Block mit nicht zusammenhängendem, nicht ausgelagertem Poolspeicher zu.
StorPortAllocateRegistryBuffer Weist einen Puffer zu, den ein Miniport zum Lesen und Schreiben von Registrierungsdaten verwenden kann.
StorPortBuildMdlForNonPagedPool Updates die MDL, um den zugeordneten Nicht-Auslagerungsspeicher zu beschreiben.
StorPortConvertUlongToPhysicalAddress Konvertiert eine nicht signierte long-Adresse in eine physische Adresse.
StorPortConvertPhysicalAddressToULong64 Konvertiert eine physische Adresse in einen ULONG64 Wert.
StorPortFreeMdl Gibt eine Arbeitsspeicherdeskriptorliste (Memory Descriptor List, MDL) frei, die nicht ausgelagerten Poolspeicher beschreibt.
StorPortFreeContiguousMemorySpecifyCache Gibt die Zuordnung eines Bereichs von nicht zwischengespeichertem Arbeitsspeicher im nicht ausgelagerten Teil des Systemadressraums auf.
StorPortFreePool Gibt einen Speicherblock frei, der zuvor durch einen Aufruf der StorPortAllocatePool-Routine zugeordnet wurde.
StorPortFreeRegistryBuffer Gibt den Puffer frei, der zum Speichern von Registrierungsdaten zugewiesen wurde.
StorPortGetDataInBufferMdl Gibt eine MDL zurück, die dem Eingabedatenpuffer eines SCSI-Anforderungsblocks (SRB) zugeordnet ist.
StorPortGetDataInBufferScatterGatherList Gibt die Punktsammlungsliste 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 Konvertiert einen angegebenen virtuellen Adressbereich in einen physischen Adressbereich für einen DMA-Vorgang.
StorPortGetSystemAddress Gibt eine virtuelle Adresse im Systembereich für den Datenpuffer des angegebenen SCSI-Anforderungsblocks (SRB) zurück.
StorPortGetUncachedExtension Ordnet einen nicht zwischengespeicherten gemeinsamen Puffer zu, der von der CPU und dem Gerät gemeinsam verwendet werden soll.
StorPortMarkDumpMemory Ein Miniport sollte arbeitsspeichermarkieren, der für die Speicherabbilddatei oder die Ruhezustandsdatei verwendet wird. Markierter Arbeitsspeicher wird beibehalten und bleibt nach dem Fortsetzen aus dem Ruhezustand gültig. Der zu markierende Arbeitsspeicher wird durch eine Adresse und eine Bereichslänge in einem Aufruf von StorPortMarkDumpMemory angegeben.
StorPortMoveMemory Kopiert Arbeitsspeicher aus einem Puffer in einen anderen.

Benachrichtigungsunterstützungsroutinen

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

-Routine zurückgegebener Wert BESCHREIBUNG
StorPortAsyncNotificationDetected Benachrichtigt den Storport-Treiber über ein Speichergerät status Änderungsereignis.
StorPortNotification Benachrichtigt den Storport-Fahrer über bestimmte Ereignisse und Bedingungen.
StorPortStateChangeDetected Benachrichtigt den Storport-Porttreiber über eine Zustandsänderung für eine LUN (Logical Unit Number), einen HBA-Port (Host Bus Adapter) oder ein Zielgerät.

E/A-Unterstützungsroutinen für Port und Registrierung

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

-Routine zurückgegebener Wert BESCHREIBUNG
StorPortGetDeviceBase Ordnet eine E/A-Adresse dem Systemadressraum zu.
StorPortFreeDeviceBase Gibt einen Bereich von Geräte-E/A-Arbeitsspeicher frei, der von StorPortGetDeviceBase zugeordnet wurde.
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 Reihe 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 Bestimmt, 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 von Bytes ohne Vorzeichen aus einem Puffer an den HBA.
StorPortWriteRegisterBufferUlong Überträgt eine bestimmte Anzahl von ULONG-Werten aus einem Puffer an den HBA.
StorPortWriteRegisterBufferUlong64 Schreibt eine Reihe von ULONG64-Werten aus einer angegebenen 64-Bit-Registeradresse.
StorPortWriteRegisterBufferUshort Überträgt eine bestimmte Anzahl von USHORT-Werten aus einem Puffer an den HBA.
StorPortWriteRegisterUchar Überträgt eine bestimmte Anzahl von Zeichenwerten aus einem Puffer an die angegebene HBA-Registeradresse.
StorPortWriteRegisterUlong Überträgt einen ULONG-Wert an die angegebene HBA-Registeradresse.
StorPortWriteRegisterUlong64 Schreibt einen ULONG64 Wert in die angegebene Registeradresse.
StorPortWriteRegisterUshort Überträgt einen ULONG-Wert an die angegebene HBA-Registeradresse.

Unterstützungsroutinen für die Laufzeitenergieverwaltung

Der Storport-Treiber bietet die folgenden Laufzeit-Energieverwaltungsroutinen.

-Routine zurückgegebener Wert BESCHREIBUNG
StorPortInitializePoFxPower Registriert ein Speichergerät beim Power Management Framework (PoFx).
StorPortPoFxActivateComponent Erhöht die Anzahl der Aktivierungsverweis für die angegebene Komponente eines Speichergeräts.
StorPortPoFxIdleComponent Verringert die Anzahl der Aktivierungsverweis einer angegebenen Komponente eines Speichergeräts.
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 von der Leerlaufbedingung zur aktiven Bedingung in der angegebenen Speichergerätekomponente toleriert werden kann.
StorPortPoFxSetComponentResidency Legt die geschätzte Zeit fest, wie lange eine Speichergerätekomponente wahrscheinlich im Leerlauf verbleibt, nachdem die Komponente in den Leerlaufzustand wechselt.

Timerunterstützungsroutinen

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

-Routine zurückgegebener Wert BESCHREIBUNG
StorPortFreeTimer Gibt ein Storport-Zeitgeberkontextobjekt frei, das zuvor von der StorPortInitializeTimer-Routine erstellt wurde.
StorPortInitializeTimer Erstellt ein Storport-Zeitgeberkontextobjekt.
StorPortRequestTimer Plant ein Rückrufereignis für ein Storport-Zeitgeberkontextobjekt.