Freigeben über


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

Nichts

Bemerkungen

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

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

Durch Aufrufen von SpbControllerSetIoOtherCallbackdeklariert der SPB-Controllertreiber jedoch seine Unterstützung für E/A-Steuerelementanforderungen, die die SPB-Frameworkerweiterung (SpbCx) nicht unterstützt. In diesem Fall ruft SpbCx, wenn spbCx eine E/A-Steuerelementanforderung mit einem IOCTL-Code empfängt, der nicht unterstützt wird, die EvtSpbControllerIoOther-Funktion auf, um die Anforderung an den SPB-Controllertreiber zur Verarbeitung 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 I/O Control Codes.

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

Der SPB-Controllertreiber muss diese Methode aufrufen, bevor er commits das Geräteobjekt, d. h. bevor er aus der EvtDriverDeviceAdd Rückruf zurückgibt oder der untergeordneten Liste des Controllers die PDO hinzufügt. Die untergeordnete Liste stellt die Geräte dar, die an den Bus angeschlossen sind. Weitere Informationen finden Sie unter Aufzählen der Geräte auf einem Bus-.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 8.
Zielplattform- Universal
Header- spbcx.h
Library Spbcxstubs.lib
IRQL- PASSIVE_LEVEL

Siehe auch

EvtIoInCallerContext

EvtSpbControllerIoOther

SpbControllerSetRequestAttributes