SPB_CONTROLLER_CONFIG-Struktur (spbcx.h)
Die SPB_CONTROLLER_CONFIG-Struktur enthält die Konfigurationseinstellungen für einen SPB-Controllertreiber.
Syntax
typedef struct _SPB_CONTROLLER_CONFIG {
ULONG Size;
WDF_IO_QUEUE_DISPATCH_TYPE ControllerDispatchType;
WDF_TRI_STATE PowerManaged;
PFN_SPB_TARGET_CONNECT EvtSpbTargetConnect;
PFN_SPB_TARGET_DISCONNECT EvtSpbTargetDisconnect;
PFN_SPB_CONTROLLER_LOCK EvtSpbControllerLock;
PFN_SPB_CONTROLLER_UNLOCK EvtSpbControllerUnlock;
PFN_SPB_CONTROLLER_READ EvtSpbIoRead;
PFN_SPB_CONTROLLER_WRITE EvtSpbIoWrite;
PFN_SPB_CONTROLLER_SEQUENCE EvtSpbIoSequence;
} SPB_CONTROLLER_CONFIG, *PSPB_CONTROLLER_CONFIG;
Member
Size
Die Größe (in Bytes) dieser Struktur. Die SpbDeviceInitialize-Methode verwendet diesen Parameterwert, um zu bestimmen, welche Version der Struktur verwendet wird.
ControllerDispatchType
Der Verteilertyp der E/A-Warteschlange für den Controllertreiber. Legen Sie diesen Member entweder auf WdfIoQueueDispatchSequential oder WdfIoQueueDispatchParallel fest, aber nicht auf WdfIoQueueDispatchManual. Die SPB_CONTROLLER_CONFIG_INIT-Funktion initialisiert dieses Element mit dem Standardwert WdfIoQueueDispatchSequential. Weitere Informationen zu diesen Verteilertypen finden Sie unter Beispielverwendungen von E/A-Warteschlangen.
Ein Controllertreiber, der im untergeordneten Modus arbeitet, sollte diesen Member auf WdfIoQueueDispatchParallel festlegen. Beispielsweise kann ein I2C-Controller als Peripheriegerät an einen SPI-Bus angeschlossen sein. Dieses Gerät fungiert als master auf dem I2C-Bus, ist aber auf dem SPI-Bus ein untergeordnetes Gerät.
PowerManaged
Gibt an, ob die E/A-Warteschlange für den Controllertreiber mit Strom verwaltet werden soll. Legen Sie diesen Member auf WdfTrue fest, um anzugeben, dass die Warteschlange energieverwaltet werden soll. Legen Sie diesen Member auf WdfFalse fest, um anzugeben, dass die Warteschlange nicht mit Energie verwaltet werden soll. Wenn dieser Member auf WdfDefault festgelegt ist, wird die Warteschlange mit Energie verwaltet, es sei denn, der Treiber ruft die WdfFdoInitSetFilter-Methode auf, die den Aufrufer als Filtertreiber der oberen oder unteren Ebene identifiziert. Die SPB_CONTROLLER_CONFIG_INIT-Funktion initialisiert dieses Element in WdfDefault.
Wenn E/A-Anforderungen in einer energieverwalteten Warteschlange verfügbar sind, übermittelt das Framework die Anforderungen nur dann an den Treiber, wenn sich das Gerät im Betriebszustand (D0) befindet. Weitere Informationen finden Sie unter Energieverwaltung für E/A-Warteschlangen.
EvtSpbTargetConnect
Ein Zeiger auf die Rückruffunktion EvtSpbTargetConnect . Diese Funktion wird vom SPB-Controllertreiber implementiert. Das EvtSpbTargetConnect-Element ist optional und kann NULL sein.
EvtSpbTargetDisconnect
Ein Zeiger auf die Rückruffunktion EvtSpbTargetDisconnect . Diese Funktion wird vom SPB-Controllertreiber implementiert. Das EvtSpbTargetDisconnect-Element ist optional und kann NULL sein.
EvtSpbControllerLock
Der Zeiger auf die Rückruffunktion EvtSpbControllerLock . Diese Funktion wird vom SPB-Controllertreiber implementiert. Der EvtSpbControllerLock-Member ist optional und kann NULL sein. Weitere Informationen zur EvtSpbControllerLock-Funktion finden Sie unter Behandeln Client-Implemented Sequenzen.
EvtSpbControllerUnlock
Ein Zeiger auf die Rückruffunktion EvtSpbControllerUnlock . Diese Funktion wird vom SPB-Controllertreiber implementiert. Dieser Member ist optional und kann NULL sein. Weitere Informationen zur Funktion EvtSpbControllerUnlock finden Sie unter Behandeln Client-Implemented Sequenzen.
EvtSpbIoRead
Ein Zeiger auf die Rückruffunktion EvtSpbControllerIoRead . Diese Funktion wird vom SPB-Controllertreiber implementiert. Dieser Member ist nicht optional und darf nicht NULL sein.
EvtSpbIoWrite
Ein Zeiger auf die Rückruffunktion EvtSpbControllerIoWrite . Diese Funktion wird vom SPB-Controllertreiber implementiert. Dieser Member ist nicht optional und darf nicht NULL sein.
EvtSpbIoSequence
Ein Zeiger auf die Rückruffunktion EvtSpbControllerIoSequence . Diese Funktion wird vom SPB-Controllertreiber implementiert. Dieser Member ist nicht optional und darf nicht NULL sein.
Hinweise
Die SpbDeviceInitialize-Methode verwendet die Informationen in dieser Struktur, um die Initialisierung des SPB-Controllers abzuschließen. Bevor Sie diese Struktur an SpbDeviceInitialize übergeben, rufen Sie die SPB_CONTROLLER_CONFIG_INIT-Funktion auf, um die Member dieser Struktur mit ihren Standardwerten zu initialisieren, und überschreiben Sie diese Standardwerte bei Bedarf mit Informationen, die für Ihren SPB-Controllertreiber spezifisch sind.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Wird ab Windows 8 unterstützt. |
Kopfzeile | spbcx.h |
Weitere Informationen
- EvtSpbControllerIoRead
- EvtSpbControllerIoSequence
- EvtSpbControllerIoWrite
- EvtSpbControllerLock
- EvtSpbControllerUnlock
- EvtSpbTargetConnect
- EvtSpbTargetDisconnect
- IOCTL_SPB_EXECUTE_SEQUENCE
- IOCTL_SPB_LOCK_CONTROLLER
- IOCTL_SPB_UNLOCK_CONTROLLER
- IRP_MN_READ
- IRP_MN_WRITE
- SPB_CONTROLLER_CONFIG_INIT
- SpbDeviceInitialize
- SpbRequestGetParameters
- WdfFdoInitSetFilter