次の方法で共有


FILTER_DETACH コールバック関数 (ndis.h)

NDIS フィルター ドライバーの FilterDetach 関数を呼び出して、フィルター モジュールに関連付けられているすべてのリソースを解放します。

FILTER_DETACH 型を使用して関数を宣言する必要があります。 詳細については、次の例のセクションを参照してください。
 

構文

FILTER_DETACH FilterDetach;

void FilterDetach(
  [in] NDIS_HANDLE FilterModuleContext
)
{...}

パラメーター

[in] FilterModuleContext

NDIS がドライバー スタックから削除するフィルター モジュールのコンテキスト領域へのハンドル。 フィルター ドライバーは、FilterAttach 関数でこのコンテキスト領域を作成して初期化しました。

戻り値

何一つ

備考

FilterDetach は必須の関数です。 NDIS 呼び出し FilterDetach ドライバー スタックからフィルター モジュールを削除する します。 NDIS 呼び出し FilterDetach、フィルター モジュールが 一時停止 状態です。

FilterDetach は、影響を受けるフィルター モジュールのドライバーのコンテキスト領域とその他のリソース (バッファー プールなど) を解放します。

フィルター ドライバーが FilterDetachから戻った後、フィルター モジュールは Detached 状態になります。

NDIS は、IRQL = PASSIVE_LEVEL で FilterDetach 呼び出します。

の例

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

たとえば、"MyDetach" という名前の FilterDetach 関数を定義するには、次のコード例に示すように FILTER_DETACH 型を使用します。

FILTER_DETACH MyDetach;

次に、次のように関数を実装します。

_Use_decl_annotations_
VOID
 MyDetach(
    NDIS_HANDLE  FilterModuleContext
    )
  {...}

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

Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント NDIS 6.0 以降でサポートされています。
ターゲット プラットフォーム ウィンドウズ
ヘッダー ndis.h (Ndis.h を含む)
IRQL PASSIVE_LEVEL

関連項目

FilterAttach