次の方法で共有


SpbControllerSetIoOtherCallback 関数 (spbcx.h)

SpbControllerSetIoOtherCallback メソッドは、SPB コントローラー ドライバーの EvtSpbControllerIoOther コールバック関数を登録します。

構文

void SpbControllerSetIoOtherCallback(
  [in]           WDFDEVICE                    FxDevice,
  [in]           PFN_SPB_CONTROLLER_OTHER     EvtSpbControllerIoOther,
  [in, optional] PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
);

パラメーター

[in] FxDevice

SPB コントローラーを表すデバイス オブジェクトへの WDFDEVICE ハンドル。

[in] EvtSpbControllerIoOther

EvtSpbControllerIoOther コールバック関数へのポインター。 SPB コントローラー ドライバーは、この関数を実装します。 SPB フレームワーク拡張機能 (SpbCx) は、この関数を呼び出して、コントローラー ドライバーに I/O コントロール要求を渡します。 この関数に渡される I/O 要求の種類の詳細については、次の「解説」セクションを参照してください。

[in, optional] EvtIoInCallerContext

EvtIoInCallerContext コールバック関数へのポインター。これは、I/O 制御要求がコントローラーの I/O キューに最初に到着したときに呼び出され、要求に SPB フレームワーク拡張機能 (SpbCx) が認識しない IOCTL コードが含まれています。 このコールバックは要求元のプロセス コンテキストで実行され、後で EvtSpbControllerIoOther コールバックによって処理される要求を前処理できます。 このパラメーターは省略可能であり、そのような前処理が必要ない場合は NULL として指定できます。 詳細については、次の「解説」セクションを参照してください。

戻り値

何一つ

備考

このメソッドは、SPB コントローラー ドライバーが、バス固有またはドライバー固有のカスタム I/O コントロール コード (IOCTL) のサポートを宣言する方法を提供します。 SPB コントローラー ドライバーがこのメソッドを呼び出さない場合、SpbCx はこのようなすべての I/O コントロール要求を拒否し、SPB コント ローラー ドライバーはそれらを表示しません。

SpbCx は、SPB コントローラーの I/O キューを管理します。 既定では、SpbCx がサポートしていない IOCTL を持つ I/O 制御要求を受信した場合、SpbCx はエラー状態コードSTATUS_INVALID_DEVICE_REQUESTで要求を完了します。

ただし、spbControllerSetIoOtherCallback 呼び出すことによって、SPB コントローラー ドライバーは、SPB フレームワーク拡張機能 (SpbCx) がサポートしていない I/O コントロール要求のサポートを宣言します。 この場合、SpbCx がサポートしていない IOCTL コードを持つ I/O 制御要求を受け取ると、SpbCx は EvtSpbControllerIoOther 関数を呼び出して、処理のために SPB コントローラー ドライバーに要求を渡します。 SPB コントローラー ドライバーは、要求の完了を担当します。

SpbCx がサポートする IOCTL の一覧については、「SpbCx I/O コントロール コードのを参照してください。

EvtIoInCallerContext コールバック関数の省略可能な は、要求元のプロセス コンテキストで実行され、要求が EvtSpbControllerIoOther コールバック関数に渡される前に、バッファー ポインターなどのコンテキスト依存要求パラメーターを前処理できます。 EvtIoInCallerContext 関数が呼び出されると、spbControllerSetRequestAttributes の以前の呼び出しで SPB コントローラー ドライバーが要求した要求ごとのコンテキストが既に割り当てられ、要求に割り当てられます。

SPB コントローラー ドライバーは、デバイス オブジェクト コミット 前にこのメソッドを呼び出す必要があります。つまり、EvtDriverDeviceAdd コールバックから戻るか、コントローラーの子リストに PDO を追加する前です。 子リストは、バスに接続されているデバイスを表します。 詳細については、「バス上のデバイスの列挙」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 8 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー spbcx.h
ライブラリ Spbcxstubs.lib
IRQL PASSIVE_LEVEL

関連項目

EvtIoInCallerContext

EvtSpbControllerIoOther

spbControllerSetRequestAttributes