次の方法で共有


EVT_SPB_TARGET_CONNECT コールバック関数 (spbcx.h)

SPB コントローラー ドライバーの EvtSpbTargetConnect イベント コールバック関数は、バス上のターゲット デバイスへの接続を開きます。

構文

EVT_SPB_TARGET_CONNECT EvtSpbTargetConnect;

NTSTATUS EvtSpbTargetConnect(
  [in] WDFDEVICE Controller,
  [in] SPBTARGET Target
)
{...}

パラメーター

[in] Controller

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

[in] Target

SPBTARGET、開くターゲットへのハンドルです。 ターゲットは、バスに接続されている周辺機器またはポートです。

戻り値

EvtSpbTargetConnect 、ドライバーがターゲットへの接続を正常に開いた場合にSTATUS_SUCCESSを返します。 それ以外の場合、関数は適切な NTSTATUS エラー コードを返します。

備考

SPB コントローラー ドライバーによるこの関数の実装は省略可能です。

SPB フレームワーク拡張機能 (SpbCx) は、SPB コントローラーの I/O キューを管理します。 SPB コントローラー ドライバーが EvtSpbTargetConnect コールバック関数を登録する場合、SpbCx は、コントローラーのクライアント (周辺機器ドライバー) がバス上のターゲット デバイスへの接続を開く IRP_MJ_CREATE 要求を送信するときに、この関数を呼び出します。 EvtSpbTargetConnect 関数がエラー コードを返した場合、SpbCx は IRP_MJ_CREATE 要求に失敗します。 ターゲットへの接続を正常に開いたクライアントは、接続が閉じられるまでターゲットへの排他アクセス権を持っています。

SpbTargetGetConnectionParameters メソッドを呼び出して、ターゲット デバイスの接続パラメーターを取得します。 SPB コントローラー ドライバーは、通常、ドライバーの EvtSpbTargetConnect 関数からこのメソッドを呼び出します。 spbTargetGetConnectionParameters 、呼び出し元が指定した SPB_CONNECTION_PARAMETERS 構造体に接続パラメーターを書き込みます。 この構造体の ConnectionParameters メンバーは、ターゲット デバイスの接続設定を含むバッファーへのポインターです。 ドライバーは、これらの設定を使用して、デバイスと通信するように SPB コントローラーを構成します。 詳細については、「デバイスの接続設定を取得する方法」を参照してください。

EvtSpbTargetConnect コールバック関数は、ターゲットへの接続を要求するクライアント スレッドのコンテキストから同期的に呼び出されます。

SpbCx は、EvtSpbTargetDisconnect コールバック関数を呼び出して、EvtSpbTargetConnect コールバックによって以前に開かれたターゲット接続を閉じます。

EvtSpbTargetConnect コールバック関数を登録するには、SpbDeviceInitialize メソッドを呼び出します。

EvtSpbTargetConnect コールバック関数 を定義するには、まず、定義するコールバック関数の型を識別する関数宣言を指定する必要があります。 Windows には、ドライバーのコールバック関数の種類のセットが用意されています。 コールバック関数の種類を使用して関数を宣言すると、ドライバー のコード分析、静的ドライバー検証ツール (SDV)、およびその他の検証ツールをすると、エラーが検出され、Windows オペレーティング システムのドライバーを記述するための要件になります。

たとえば、MyEvtSpbTargetConnectという名前の EvtSpbTargetConnect コールバック関数を定義するには、次のコード例に示すように、EVT_SPB_TARGET_CONNECT関数型を使用します。

EVT_SPB_TARGET_CONNECT  MyEvtSpbTargetConnect;

次に、次のようにコールバック関数を実装します。

_Use_decl_annotations_
NTSTATUS
  MyEvtSpbTargetConnect(
    WDFDEVICE Controller,
    SPBTARGET Target
    )
{ ... }

EVT_SPB_TARGET_CONNECT関数型は、Spbcx.h ヘッダー ファイルで定義されています。 コード分析ツールの実行時にエラーをより正確に識別するには、Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations 注釈を使用すると、ヘッダー ファイル内のEVT_SPB_TARGET_CONNECT関数型に適用される注釈が使用されます。 関数宣言の要件の詳細については、「KMDF ドライバーの関数ロール型を使用して関数を宣言する」を参照してください。 Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 8 以降でサポートされています。
ターゲット プラットフォーム デスクトップ
ヘッダー spbcx.h
IRQL PASSIVE_LEVELで呼び出されます。

関連項目

EvtSpbTargetDisconnect する

IRP_MJ_CREATE

SPBTARGET

SPB_CONNECTION_PARAMETERS

spbDeviceInitialize