SPB_CONTROLLER_CONFIG 結構 (spbcx.h)
SPB_CONTROLLER_CONFIG 結構包含SPB控制器驅動程式的組態設定。
語法
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;
成員
Size
這個結構的大小,以位元組為單位。 SpbDeviceInitialize 方法會使用此參數值來判斷正在使用哪一個結構版本。
ControllerDispatchType
控制器驅動程式的 I/O 佇列分派類型。 將此成員設定為 WdfIoQueueDispatchSequential 或 WdfIoQueueDispatchParallel,但不設定為 WdfIoQueueDispatchManual。 SPB_CONTROLLER_CONFIG_INIT函式會將這個成員初始化為其預設值 WdfIoQueueDispatchSequential。 如需這些分派類型的詳細資訊,請參閱 I/O 佇列的範例用法。
在次級模式中運作的控制器驅動程序應該將此成員設定為 WdfIoQueueDispatchParallel。 例如,I2C 控制器可能會附加為周邊裝置至 SPI 總線。 此裝置可作為 I2C 總線上的主機,但是 SPI 總線的次級。
PowerManaged
控制器驅動程式的 I/O 佇列是否應受到電源管理。 將此成員設定為 WdfTrue ,以指出佇列應受到電源管理。 將此成員設定為 WdfFalse ,表示佇列不應受到電源管理。 如果此成員設定為 WdfDefault,除非驅動程式呼叫 WdfFdoInitSetFilter 方法,否則佇列將會受到電源管理,以將呼叫端識別為高階或較低層級篩選驅動程式。 SPB_CONTROLLER_CONFIG_INIT函式會將這個成員初始化為 WdfDefault。
當 I/O 要求可在電源管理的佇列中使用時,只有當裝置處於其運作 (D0) 狀態時,架構才會將要求傳遞給驅動程式。 如需詳細資訊,請參閱 I/O 佇列的電源管理。
EvtSpbTargetConnect
EvtSpbTargetConnect 回呼函式的指標。 SPB 控制器驅動程式會實作此函式。 EvtSpbTargetConnect 成員是選擇性的,而且可以是 NULL。
EvtSpbTargetDisconnect
EvtSpbTargetDisconnect 回呼函式的指標。 SPB 控制器驅動程式會實作此函式。 EvtSpbTargetDisconnect 成員是選擇性的,而且可以是 NULL。
EvtSpbControllerLock
EvtSpbControllerLock 回呼函式的指標。 SPB 控制器驅動程式會實作此函式。 EvtSpbControllerLock 成員是選擇性的,可以是 NULL。 如需 EvtSpbControllerLock 函式的詳細資訊,請參閱 處理 Client-Implemented 序列。
EvtSpbControllerUnlock
EvtSpbControllerUnlock 回呼函式的指標。 SPB 控制器驅動程式會實作此函式。 此成員是選擇性的,可以是 NULL。 如需 EvtSpbControllerUnlock 函式的詳細資訊,請參閱 處理 Client-Implemented 序列。
EvtSpbIoRead
EvtSpbControllerIoRead 回呼函式的指標。 SPB 控制器驅動程式會實作此函式。 此成員不是選擇性的,而且不得為 NULL。
EvtSpbIoWrite
EvtSpbControllerIoWrite 回呼函式的指標。 SPB 控制器驅動程式會實作此函式。 此成員不是選擇性的,而且不得為 NULL。
EvtSpbIoSequence
EvtSpbControllerIoSequence 回呼函式的指標。 SPB 控制器驅動程式會實作此函式。 此成員不是選擇性的,而且不得為 NULL。
備註
SpbDeviceInitialize 方法會使用此結構中的資訊來完成 SPB 控制器的初始化。 將此結構傳遞至 SpbDeviceInitialize 之前,請先呼叫 SPB_CONTROLLER_CONFIG_INIT 函式,將此結構的成員初始化為其預設值,並視需要以 SPB 控制器驅動程式特有的資訊覆寫這些預設值。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始支援。 |
標頭 | spbcx.h |
另請參閱
- 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