フィルター モジュールの状態と操作
フィルター ドライバーは、ドライバーが管理するフィルター モジュール (フィルター ドライバーのインスタンス) ごとに、次の操作ステータスをサポートしてください。
Detached
デタッチ状態は、フィルター モジュールの初期の状態です。 フィルター モジュールがこの状態であれば、NDIS はフィルター ドライバーの FilterAttach 関数を呼び出して、フィルター モジュールをドライバー スタックにアタッチできます。
アタッチ
アタッチ状態では、フィルター ドライバーは、ドライバー スタックにフィルター モジュールをアタッチする準備を行います。
一時停止
一時停止状態では、フィルター ドライバーは送信または受信操作を行いません。
再起動
再起動状態では、フィルタードライバーは、フィルターモジュールの送受信動作を再起動するために必要なすべての動作を完了します。
実行中
実行中の状態では、フィルタードライバーは、フィルターモジュールの通常の送受信処理を実行します。
一時停止の処理中
一時停止状態では、フィルター ドライバーは、フィルターモジュールの送受信動作を停止するために必要なすべての動作を完了します。
次の表の見出しはフィルター モジュールの状態です。 メジャー イベントが1列目に一覧表示されます。 テーブルの残りのエントリでは、イベントが状態内で発生した後にフィルター モジュールが入力する次の状態を指定します。 空白のエントリは、無効なイベント/状態の組み合わせを表しています。
Event/state | デタッチ | アタッチ | 一時停止 | 再起動 | 実行中 | 一時停止の処理中 |
---|---|---|---|---|---|---|
フィルターアタッチ |
アタッチ |
|||||
アタッチが完了しました |
一時停止 |
|||||
フィルターデタッチ |
デタッチ |
|||||
フィルター再開 |
再起動 |
|||||
再起動が完了しました |
実行中 |
|||||
フィルター一時停止 |
一時停止の処理中 |
|||||
一時停止が完了しました |
一時停止 |
|||||
アタッチに失敗しました |
デタッチ |
|||||
再起動に失敗しました |
一時停止 |
|||||
送受信 |
実行中 |
一時停止の処理中 |
||||
OID 要求 |
一時停止 |
再起動 |
実行中 |
一時停止の処理中 |
プライマリ フィルター ドライバー イベントは、次のように定義します。
フィルターアタッチ
NDIS は、ドライバー スタックにフィルター モジュールをアタッチするドライバーの FilterAttach 関数を呼び出しました。 フィルター モジュールのアタッチの詳細については、「フィルター モジュールのアタッチ」を参照してください。
アタッチが完了しました
フィルター モジュールがアタッチ状態にあり、フィルター ドライバーがフィルター モジュールに必要なすべてのリソースの初期化を完了すると、フィルター モジュールは一時停止状態になります。
フィルターデタッチ
NDIS は、ドライバー スタックからフィルター モジュールをデタッチするドライバーの FilterDetach 関数を呼び出しました。 詳細については、「フィルター モジュールのデタッチ」を参照してください。
フィルター再開
NDIS は、一時停止されたフィルター モジュールを再起動するドライバーの FilterRestart 関数を呼び出しました。 詳細については、「フィルター モジュールの開始」をご覧ください。
再起動が完了しました
フィルターモジュールが再起動状態にあり、ドライバーが送信動作と受信動作を実行できる場合、フィルターモジュールは実行中状態に入ります。
フィルター一時停止
NDIS は、フィルター モジュールを一時停止するドライバーの FilterPause 関数を呼び出しました。 詳細については、「フィルター モジュールの一時停止」を参照してください。
一時停止が完了しました
ドライバーが送受信操作を停止するために必要なすべての操作を完了すると、一時停止操作が完了し、フィルター モジュールが 一時停止 状態になります。
アタッチに失敗しました
NDIS がドライバーの FilterAttach 関数を呼び出し、アタッチ操作が失敗した場合 (たとえば、必要なリソースが利用できないためなど)、フィルター モジュールはデタッチされた状態に戻ります。
再起動に失敗しました
NDIS がドライバーの FilterRestart 関数を呼び出し、再起動の試行が失敗した場合、フィルター モジュールは一時停止状態に戻ります。
送信および受信操作
ドライバーは、実行中の状態と一時停止中の状態で送受信操作を処理できます。 送受信操作の詳細については「フィルター モジュールの送受信操作」を参照してください。
OID 要求
ドライバーは、実行中、再起動、一時停止、および一時停止状態の OID リクエストを処理できます。 OID 要求の詳細については「フィルター モジュールの OID 要求」を参照してください。