次の方法で共有


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

FilterRestart 関数は、指定されたフィルター モジュールの再起動操作を開始します。

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

構文

FILTER_RESTART FilterRestart;

NDIS_STATUS FilterRestart(
  [in] NDIS_HANDLE FilterModuleContext,
  [in] PNDIS_FILTER_RESTART_PARAMETERS RestartParameters
)
{...}

パラメーター

[in] FilterModuleContext

フィルター ドライバーを再起動する必要があるフィルター モジュールのコンテキスト領域へのハンドル。 フィルター ドライバーは、FilterAttach 関数でこのコンテキスト領域を作成して初期化しました。

[in] RestartParameters

へのポインター NDIS_FILTER_RESTART_PARAMETERS フィルター モジュールの再起動パラメーターを定義する構造体です。

戻り値

FilterRestart は、次のいずれかの状態値を返します。

リターン コード 形容
NDIS_STATUS_SUCCESS
FilterRestart 指定したフィルター モジュールが正常に再起動されました。
NDIS_STATUS_PENDING
フィルター ドライバーは、再起動操作が完了した後、NdisFRestartComplete 関数の呼び出しで非同期的に要求を完了します。
NDIS_STATUS_RESOURCES
リソースが不足しているため、FilterRestart 失敗しました。
NDIS_STATUS_FAILURE
上記の状態値は適用されていません。 フィルター ドライバーは、エラーの理由を指定するパラメーターと共に、NdisWriteEventLogEntry 関数を呼び出す必要があります。

備考

FilterRestart は、フィルター ドライバーに必要な関数です。 NDIS は、フィルター モジュールが 一時停止 状態のときに、FilterRestart を呼び出すことができます。 フィルター モジュールは、FilterRestartの実行開始時に、再起動 状態になります。

NDIS 呼び出し FilterRestart、フィルター ドライバー:

  • 通常の送受信操作を再開するために必要な操作を完了する必要があります。
  • 必要に応じて、構成パラメーターの読み取りまたは書き込みを行います。
  • 必要に応じて、バッファー プールを再割り当てします。
  • 必要に応じて、RestartAttributes メンバーで指定されている再起動属性を変更します。 NDIS_FILTER_RESTART_PARAMETERS 構造体。 RestartAttributes のポインターが NULL 場合、フィルター ドライバーは再起動属性の一覧を変更したり追加したりしないでください。 RestartAttributes 内のポインターが null以外の場合は、再起動属性の一覧の最初の NDIS_RESTART_ATTRIBUTES 構造体を指します。 フィルター ドライバーが再起動しない場合は、属性を変更しないでください。
  • 必要に応じて、OID 要求を使用して、基になるドライバーの情報を照会または設定します。 フィルター ドライバーは、再起動属性の一覧で既に提供されている情報の OID 要求を発行しないでください。
  • NDIS_STATUS_SUCCESSまたはエラー状態を返します。
フィルター ドライバーが再起動属性の一覧を変更する場合、フィルター ドライバーは次のようになります。
  • Oid メンバーの OID が認識されない場合は、メディア固有の属性を変更しないでください。 NDIS_RESTART_ATTRIBUTES 構造体。
  • 再起動属性の一覧に新しいメディア固有の属性を追加できます。 この状況では、フィルター ドライバーは、新しいNDIS_RESTART_ATTRIBUTES構造体を割り当てる必要があります。たとえば、ndisAllocateMemoryWithTagPriority 関数を し、新しい属性のメモリ領域を提供します。 上にあるドライバーに再起動属性を伝達した後、NDIS は、フィルター ドライバーの属性メモリを解放します。
  • 再起動属性の一覧でメディア固有の属性を変更できます。 フィルター ドライバーは、より多くのメモリ領域が必要な場合は、NdisFreeMemory 関数を使用して NDIS_RESTART_ATTRIBUTES 構造体を解放し、変更された情報を格納する新しい構造体を割り当てることができます。 上にあるドライバーに再起動属性を伝達した後、NDIS は、フィルター ドライバーの属性メモリを解放します。
  • if the Oid member in the NDIS_RESTART_ATTRIBUTES structure is is OID_GEN_MINIPORT_RESTART_ATTRIBUTES NDIS_RESTART_GENERAL_ATTRIBUTES 構造体には、フィルター ドライバーに必要な情報が含まれています。 NDIS_RESTART_GENERAL_ATTRIBUTES構造体に必要な情報が含まれていることを確認するには、NDIS_RESTART_GENERAL_ATTRIBUTES構造体の Header メンバーで指定されている NDIS_OBJECT_HEADER 構造体の Revision メンバーを確認する必要があります。
    フィルター ドライバーは、NDIS_RESTART_GENERAL_ATTRIBUTES構造体のメンバーを変更できます。 フィルター ドライバーが変更する必要がある一部の属性が NDIS が提供する構造体のリビジョンに含まれていない場合、フィルター ドライバーは、不足している属性の OID 要求を発行する上にあるドライバーに依存する必要があります。 フィルター ドライバーは、OID 要求が完了したときに属性を変更できます。
     
  • フィルター ドライバーが再起動属性を変更する場合は、FilterOidRequest 関数を指定する必要があります。 フィルター ドライバーは、基になるドライバーが再起動属性で受け取る情報が、OID 要求に応答して受信する情報と一致していることを確認する必要があります。
フィルター ドライバーが状態を返すか、NdisFRestartComplete 関数 呼び出した後、再起動操作が完了します。 操作が正常に完了した場合、フィルター モジュールは 実行中 状態になり、通常の送受信処理が再開されます。 再起動操作が失敗した場合、フィルター モジュールは Paused 状態に戻ります。

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

の例

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

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

FILTER_RESTART MyRestart;

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

_Use_decl_annotations_
NDIS_STATUS
 MyRestart(
    NDIS_HANDLE  FilterModuleContext,
    PNDIS_FILTER_RESTART_PARAMETERS  FilterRestartParameters
    )
  {...}

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

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

必要条件

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

関連項目

FilterAttach

FilterOidRequest

FilterStatus

NDIS_FILTER_RESTART_PARAMETERS

NDIS_OBJECT_HEADER

NDIS_RESTART_ATTRIBUTES

NDIS_RESTART_GENERAL_ATTRIBUTES

NDIS_STATUS_LINK_STATE

NdisAllocateMemoryWithTagPriority

NdisFRegisterFilterDriver

NdisFRestartComplete

NdisFreeMemory

NdisWriteEventLogEntry

OID_GEN_LINK_STATE

OID_GEN_MINIPORT_RESTART_ATTRIBUTES