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 の