次の方法で共有


フィルター モジュールの状態と操作

フィルター ドライバーは、ドライバーが管理するフィルター モジュール (フィルター ドライバーのインスタンス) ごとに、次の操作ステータスをサポートしてください。

Detached
デタッチ状態は、フィルター モジュールの初期の状態です。 フィルター モジュールがこの状態であれば、NDIS はフィルター ドライバーの FilterAttach 関数を呼び出して、フィルター モジュールをドライバー スタックにアタッチできます。

アタッチ
アタッチ状態では、フィルター ドライバーは、ドライバー スタックにフィルター モジュールをアタッチする準備を行います。

一時停止
一時停止状態では、フィルター ドライバーは送信または受信操作を行いません。

再起動
再起動状態では、フィルタードライバーは、フィルターモジュールの送受信動作を再起動するために必要なすべての動作を完了します。

実行中
実行中の状態では、フィルタードライバーは、フィルターモジュールの通常の送受信処理を実行します。

一時停止の処理中
一時停止状態では、フィルター ドライバーは、フィルターモジュールの送受信動作を停止するために必要なすべての動作を完了します。

次の表の見出しはフィルター モジュールの状態です。 メジャー イベントが1列目に一覧表示されます。 テーブルの残りのエントリでは、イベントが状態内で発生した後にフィルター モジュールが入力する次の状態を指定します。 空白のエントリは、無効なイベント/状態の組み合わせを表しています。

Event/state デタッチ アタッチ 一時停止 再起動 実行中 一時停止の処理中

フィルターアタッチ

アタッチ

アタッチが完了しました

一時停止

フィルターデタッチ

デタッチ

フィルター再開

再起動

再起動が完了しました

実行中

フィルター一時停止

一時停止の処理中

一時停止が完了しました

一時停止

アタッチに失敗しました

デタッチ

再起動に失敗しました

一時停止

送受信

実行中

一時停止の処理中

OID 要求

一時停止

再起動

実行中

一時停止の処理中

プライマリ フィルター ドライバー イベントは、次のように定義します。

フィルターアタッチ
NDIS は、ドライバー スタックにフィルター モジュールをアタッチするドライバーの FilterAttach 関数を呼び出しました。 フィルター モジュールのアタッチの詳細については、「フィルター モジュールのアタッチ」を参照してください。

アタッチが完了しました
フィルター モジュールがアタッチ状態にあり、フィルター ドライバーがフィルター モジュールに必要なすべてのリソースの初期化を完了すると、フィルター モジュールは一時停止状態になります。

フィルターデタッチ
NDIS は、ドライバー スタックからフィルター モジュールをデタッチするドライバーの FilterDetach 関数を呼び出しました。 詳細については、「フィルター モジュールのデタッチ」を参照してください。

フィルター再開
NDIS は、一時停止されたフィルター モジュールを再起動するドライバーの FilterRestart 関数を呼び出しました。 詳細については、「フィルター モジュールの開始」をご覧ください。

再起動が完了しました
フィルターモジュールが再起動状態にあり、ドライバーが送信動作と受信動作を実行できる場合、フィルターモジュールは実行中状態に入ります。

フィルター一時停止
NDIS は、フィルター モジュールを一時停止するドライバーの FilterPause 関数を呼び出しました。 詳細については、「フィルター モジュールの一時停止」を参照してください。

一時停止が完了しました
ドライバーが送受信操作を停止するために必要なすべての操作を完了すると、一時停止操作が完了し、フィルター モジュールが 一時停止 状態になります。

アタッチに失敗しました
NDIS がドライバーの FilterAttach 関数を呼び出し、アタッチ操作が失敗した場合 (たとえば、必要なリソースが利用できないためなど)、フィルター モジュールはデタッチされた状態に戻ります。

再起動に失敗しました
NDIS がドライバーの FilterRestart 関数を呼び出し、再起動の試行が失敗した場合、フィルター モジュールは一時停止状態に戻ります。

送信および受信操作
ドライバーは、実行中の状態と一時停止中の状態で送受信操作を処理できます。 送受信操作の詳細については「フィルター モジュールの送受信操作」を参照してください。

OID 要求
ドライバーは、実行中再起動一時停止、および一時停止状態の OID リクエストを処理できます。 OID 要求の詳細については「フィルター モジュールの OID 要求」を参照してください。