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