次の方法で共有


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

関連項目