HW_FIND_ADAPTER Rückruffunktion (storport.h)

Die HwStorFindAdapter-Routine verwendet die angegebene Konfiguration, um zu bestimmen, ob ein bestimmter HBA unterstützt wird, und, wenn dies der Grund ist, um Konfigurationsinformationen zu diesem Adapter zurückzugeben.

Syntax

HW_FIND_ADAPTER HwFindAdapter;

ULONG HwFindAdapter(
           PVOID DeviceExtension,
  [in]     PVOID HwContext,
  [in]     PVOID BusInformation,
  [in]     PCHAR ArgumentString,
  [in/out] PPORT_CONFIGURATION_INFORMATION ConfigInfo,
  [in]     PBOOLEAN Reserved3
)
{...}

Parameter

DeviceExtension

Stellt einen Speicherbereich pro Adapter bereit.

[in] HwContext

Auf NULL festgelegt.

[in] BusInformation

Auf NULL festgelegt.

[in] ArgumentString

Stellt eine NULL-beendete Zeichenfolge mit Kontextinformationen zum Treiber bereit.

[in/out] ConfigInfo

Stellt eine initialisierte PORT_CONFIGURATION_INFORMATION-Struktur bereit, die der Miniporttreiber während der Initialisierung verwendet.

[in] Reserved3

Ist für das System reserviert.

Rückgabewert

HwStorFindAdapter muss einen der folgenden status-Werte zurückgeben:

Rückgabecode Beschreibung
SP_RETURN_FOUND Gibt an, dass ein unterstützter HBA gefunden wurde und dass die HBA-relevanten Konfigurationsinformationen erfolgreich ermittelt und in der PORT_CONFIGURATION_INFORMATION-Struktur festgelegt wurden.
SP_RETURN_ERROR Gibt an, dass ein HBA gefunden wurde, aber beim Abrufen der Konfigurationsinformationen ein Fehler aufgetreten ist. Wenn möglich, sollte ein solcher Fehler mit StorPortLogError protokolliert werden.
SP_RETURN_BAD_CONFIG Gibt an, dass die angegebenen Konfigurationsinformationen für den Adapter ungültig waren.
SP_RETURN_NOT_FOUND Gibt an, dass für die bereitgestellten Konfigurationsinformationen kein unterstützter HBA gefunden wurde.

Hinweise

Da der Storport-Treiber nur Plug & Play (PnP)-Geräte unterstützt, werden die Parameter HwContext und BusInformation für HwStorFindAdapter nicht für nicht virtuelle Miniporttreiber bereitgestellt.

HwStorFindAdapter muss die Felder MaximumTransferLength und NumberOfPhysicalBreaks in der ConfigInfo-Struktur festlegen. Außer diesen Feldern gibt die PORT_CONFIGURATION_INFORMATION-Struktur immer alle Adapterressourcen vollständig an, die zum Starten des Adapters erforderlich sind.

Der Name HwStorFindAdapter ist nur ein Platzhalter. Der eigentliche Prototyp dieser Routine ist in Storport.h wie folgt definiert:

typedef
ULONG
HW_FIND_ADAPTER (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_z_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _In_ PBOOLEAN  Reserved3
  );

In den meisten Fällen ruft StorPort die HwStorFindAdapter-Routine bei IRQL == PASSIVE_LEVEL auf, ohne Drehsperren zu erhalten. Der Ausnahmefall ist, wenn der Miniport das Aufrufen von HwStorAdaptorControl mit dem ScsiRestartAdapter-Steuerelementtyp nicht unterstützt. In diesem Fall initialisiert StorPort stattdessen den Adapter erneut, indem sowohl HwStorFindAdapter als auch HwStorInitialize aufgerufen werden. In diesem Fall wird HwStorFindAdapter unter IRQL == DISPATCH_LEVEL aufgerufen. Außerdem wird HwStorFindAdapter im Speicherabbildmodus unter IRQL == HIGH_LEVEL aufgerufen.

Beispiele

Um eine HwStorFindAdapter-Rückruffunktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der Rückruffunktion identifiziert, die Sie definieren. Windows bietet eine Reihe von Rückruffunktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine HwStorFindAdapter-Rückrufroutine namens MyHwFindAdapter zu definieren, verwenden Sie den typ HW_FIND_ADAPTER , wie in diesem Codebeispiel gezeigt:

HW_FIND_ADAPTER MyHwFindAdapter;

Implementieren Sie dann Ihre Rückrufroutine wie folgt:

_Use_decl_annotations_
ULONG
MyHwFindAdapter (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_z_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _In_ PBOOLEAN  Reserved3
  );
  {
      ...
  }

Der HW_FIND_ADAPTER Funktionstyp ist in der Storport.h-Headerdatei definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations-Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den HW_FIND_ADAPTER Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für Storport-Treiber. Informationen zu Use_decl_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header storport.h (Storport.h einschließen)
IRQL PASSIVE_LEVEL (Siehe Abschnitt "Hinweise").

Weitere Informationen

HwStorInitialize

PORT_CONFIGURATION_INFORMATION

StorPortInitialize

StorPortLogError