次の方法で共有


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

I/O 制御要求がコントローラーの I/O キューに最初に到着したときに呼び出される EvtIoInCallerContext コールバック関数へのポインター。要求には、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 関数が呼び出されると、SPB コントローラー ドライバーが SpbControllerSetRequestAttributes の以前の呼び出しで要求した要求ごとのコンテキストが既に割り当てられ、要求に割り当てられます。

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

要件

要件
サポートされている最小のクライアント Windows 8 以降で使用できます。
対象プラットフォーム ユニバーサル
Header spbcx.h
Library Spbcxstubs.lib
IRQL PASSIVE_LEVEL

こちらもご覧ください

EvtIoInCallerContext

EvtSpbControllerIoOther

SpbControllerSetRequestAttributes