SpbControllerSetIoOtherCallback-Funktion (spbcx.h)

Die SpbControllerSetIoOtherCallback-Methode registriert die EvtSpbControllerIoOther-Rückruffunktion eines SPB-Controllertreibers.

Syntax

void SpbControllerSetIoOtherCallback(
  [in]           WDFDEVICE                    FxDevice,
  [in]           PFN_SPB_CONTROLLER_OTHER     EvtSpbControllerIoOther,
  [in, optional] PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
);

Parameter

[in] FxDevice

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

[in] EvtSpbControllerIoOther

Ein Zeiger auf eine EvtSpbControllerIoOther-Rückruffunktion . Der SPB-Controllertreiber implementiert diese Funktion. Die SPB-Frameworkerweiterung (SpbCx) ruft diese Funktion auf, um eine E/A-Steuerelementanforderung an den Controllertreiber zu übergeben. Weitere Informationen zum Typ von E/A-Anforderungen, die an diese Funktion übergeben werden, finden Sie im folgenden Abschnitt Hinweise.

[in, optional] EvtIoInCallerContext

Ein Zeiger auf eine EvtIoInCallerContext-Rückruffunktion , die aufgerufen wird, wenn eine E/A-Steuerelementanforderung zum ersten Mal in der E/A-Warteschlange des Controllers eingeht, und die Anforderung einen IOCTL-Code enthält, den die SPB-Frameworkerweiterung (SpbCx) nicht erkennt. Dieser Rückruf wird im Prozesskontext des Anforderungserstellers ausgeführt und kann Anforderungen vorverarbeiten, die später vom EvtSpbControllerIoOther-Rückruf verarbeitet werden. Dieser Parameter ist optional und kann als NULL angegeben werden, wenn keine solche Vorverarbeitung erforderlich ist. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

Rückgabewert

Keine

Bemerkungen

Diese Methode bietet eine Möglichkeit für Ihren SPB-Controllertreiber, die Unterstützung für benutzerdefinierte E/A-Steuerungscodes (IOCTLs) zu deklarieren, die bus- oder treiberspezifisch sind. Wenn der SPB-Controllertreiber diese Methode nicht aufruft, lehnt SpbCx alle E/A-Steuerelementanforderungen ab, und der SPB-Controllertreiber sieht sie nie.

SpbCx verwaltet die E/A-Warteschlange für den SPB-Controller. Wenn SpbCx eine E/A-Steuerungsanforderung empfängt, die über eine IOCTL verfügt, die nicht unterstützt wird, schließt SpbCx die Anforderung standardmäßig mit einem Fehler status Code STATUS_INVALID_DEVICE_REQUEST ab.

Durch aufrufen von SpbControllerSetIoOtherCallback deklariert der SPB-Controllertreiber jedoch seine Unterstützung für E/A-Steuerelementanforderungen, die von der SPB-Frameworkerweiterung (SpbCx) nicht unterstützt werden. In diesem Fall ruft SpbCx die EvtSpbControllerIoOther-Funktion auf, um die Anforderung zur Verarbeitung an den SPB-Controllertreiber zu übergeben. Der SPB-Controllertreiber ist für den Abschluss der Anforderung verantwortlich.

Eine Liste der von SpbCx unterstützten IOCTLs finden Sie unter SpbCx-E/A-Steuerungscodes.

Die optionale Rückruffunktion EvtIoInCallerContext wird im Prozesskontext des Anforderungserstellers ausgeführt und kann kontextabhängige Anforderungsparameter wie Pufferzeiger vorverarbeiten, bevor die Anforderung an die Rückruffunktion EvtSpbControllerIoOther übergeben wird. Wenn die EvtIoInCallerContext-Funktion aufgerufen wird, wird jeder Anforderungskontext, den der SPB-Controllertreiber in einem vorherigen Aufruf von SpbControllerSetRequestAttributes angefordert hat, bereits zugeordnet und der Anforderung zugewiesen.

Der SPB-Controllertreiber muss diese Methode aufrufen, bevor er das Geräteobjekt committet , d. h. bevor es vom Rückruf "EvtDriverDeviceAdd " zurückgibt oder die PDO der untergeordneten Liste des Controllers hinzufügt. Die untergeordnete Liste stellt die Geräte dar, die an den Bus angefügt sind. Weitere Informationen finden Sie unter Auflisten der Geräte in einem Bus.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 8.
Zielplattform Universell
Header spbcx.h
Bibliothek Spbcxstubs.lib
IRQL PASSIVE_LEVEL

Weitere Informationen

EvtIoInCallerContext

EvtSpbControllerIoOther

SpbControllerSetRequestAttributes