Freigeben über


EVT_SPB_TARGET_CONNECT Rückruffunktion (spbcx.h)

Die EvtSpbTargetConnect Ereignisrückruffunktion eines SPB-Controllertreibers öffnet eine Verbindung mit einem Zielgerät im Bus.

Syntax

EVT_SPB_TARGET_CONNECT EvtSpbTargetConnect;

NTSTATUS EvtSpbTargetConnect(
  [in] WDFDEVICE Controller,
  [in] SPBTARGET Target
)
{...}

Parameter

[in] Controller

Ein WDFDEVICE-Handle für das Framework-Geräteobjekt, das den SPB-Controller darstellt.

[in] Target

Ein SPBTARGET- Handle für das zu öffnende Ziel. Das Ziel ist ein Peripheriegerät oder port, das an den Bus angeschlossen ist.

Rückgabewert

EvtSpbTargetConnect gibt STATUS_SUCCESS zurück, wenn der Treiber die Verbindung mit dem Ziel erfolgreich öffnet. Andernfalls gibt die Funktion einen geeigneten NTSTATUS-Fehlercode zurück.

Bemerkungen

Die Implementierung dieser Funktion durch den SPB-Controllertreiber ist optional.

Die SPB-Frameworkerweiterung (SpbCx) verwaltet die E/A-Warteschlange für den SPB-Controller. Wenn der SPB-Controllertreiber eine EvtSpbTargetConnect Rückruffunktion registriert, ruft SpbCx diese Funktion auf, wenn ein Client (Peripherietreiber) des Controllers eine IRP_MJ_CREATE Anforderung sendet, eine Verbindung mit einem Zielgerät auf dem Bus zu öffnen. Wenn die EvtSpbTargetConnect--Funktion einen Fehlercode zurückgibt, schlägt SpbCx die IRP_MJ_CREATE Anforderung fehl. Ein Client, der erfolgreich eine Verbindung mit einem Ziel öffnet, hat exklusiven Zugriff auf das Ziel, bis die Verbindung geschlossen ist.

Rufen Sie die SpbTargetGetConnectionParameters Methode auf, um die Verbindungsparameter für das Zielgerät abzurufen. Ein SPB-Controllertreiber ruft diese Methode in der Regel von der EvtSpbTargetConnect-Funktion des Treibers auf. SpbTargetGetConnectionParameters schreibt die Verbindungsparameter in eine vom Aufrufer bereitgestellte SPB_CONNECTION_PARAMETERS Struktur. Das ConnectionParameters Member dieser Struktur ist ein Zeiger auf einen Puffer, der die Verbindungseinstellungen für das Zielgerät enthält. Der Treiber verwendet diese Einstellungen, um den SPB-Controller für die Kommunikation mit dem Gerät zu konfigurieren. Weitere Informationen finden Sie unter Abrufen der Verbindungseinstellungen für ein Gerät.

Die EvtSpbTargetConnect Rückruffunktion wird synchron aus dem Kontext des Clientthreads aufgerufen, der die Verbindung mit dem Ziel anfordert.

SpbCx ruft die EvtSpbTargetDisconnect Rückruffunktion auf, um eine Zielverbindung zu schließen, die zuvor von einem EvtSpbTargetConnect Rückruf geöffnet wurde.

Um eine EvtSpbTargetConnect- Rückruffunktion zu registrieren, rufen Sie die SpbDeviceInitialize-Methode auf.

Beispiele

Um eine EvtSpbTargetConnect- Rückruffunktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der rückruffunktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine EvtSpbTargetConnect- Rückruffunktion zu definieren, die MyEvtSpbTargetConnectbenannt ist, verwenden Sie den EVT_SPB_TARGET_CONNECT Funktionstyp, wie in diesem Codebeispiel gezeigt:

EVT_SPB_TARGET_CONNECT  MyEvtSpbTargetConnect;

Implementieren Sie dann die Rückruffunktion wie folgt:

_Use_decl_annotations_
NTSTATUS
  MyEvtSpbTargetConnect(
    WDFDEVICE Controller,
    SPBTARGET Target
    )
{ ... }

Der EVT_SPB_TARGET_CONNECT Funktionstyp wird in der Headerdatei "Spbcx.h" definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp EVT_SPB_TARGET_CONNECT in der Headerdatei angewendet werden, verwendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für KMDF-Treiber. Weitere Informationen zu Use_decl_annotationsfinden Sie unter Annotating Function Behavior.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Wird ab Windows 8 unterstützt.
Zielplattform- Desktop
Header- spbcx.h
IRQL- Wird bei PASSIVE_LEVEL aufgerufen.

Siehe auch

EvtSpbTargetDisconnect

IRP_MJ_CREATE

SPBTARGET-

SPB_CONNECTION_PARAMETERS

SpbDeviceInitialize