次の方法で共有


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

こちらもご覧ください