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 キューの Power Management」を参照してください。
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 以降でサポートされています。 |
Header | 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