次の方法で共有


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

警告

すべての NDIS 6.83 以降のドライバーでは、ミニポートCheckForHangEx および ミニポートResetEx コールバック関数は推奨されません。 詳細については、「NDIS 6.83 以降の ハングチェックおよびリセット操作」を参照してください。

NDIS は、ミニポート ドライバーの ミニポートCheckForHangEx 関数を呼び出して、ネットワーク インターフェイス カード (NIC) を表すミニポート アダプターの動作状態を確認します。

ミニポート ドライバーは、MINIPORT_CHECK_FOR_HANG 型を使用してこの関数を宣言できます。
 
NDIS 6.30 以降では、この関数は、定期的な Check-for-Hang アクティビティによって引き起こされる負の電力影響を回避するために、低電力 SoC プラットフォームで実行されているドライバーに登録しないでください。
 

構文

MINIPORT_CHECK_FOR_HANG MiniportCheckForHang;

BOOLEAN MiniportCheckForHang(
  [in] NDIS_HANDLE MiniportAdapterContext
)
{...}

パラメーター

[in] MiniportAdapterContext

ミニポート ドライバーがその ミニポートInitializeEx 関数に割り当てられたコンテキスト領域へのハンドル。 ミニポート ドライバーは、ミニポート アダプターの状態情報を維持するには、このコンテキスト領域を使用します。

戻り値

ミニポートCheckForHangEx は、ドライバーが NIC が動作していないと判断し、NDIS がドライバーの ミニポートResetEx 関数を呼び出す必要がある場合、TRUE を返します。 詳細については、「解説」セクションを参照してください。

備考

ミニポート ドライバーは、ミニポートCheckForHangEx エントリ ポイントを呼び出すときに指定します。NdisMRegisterMiniportDriver 関数を します。

中間ドライバー ミニポートCheckForHangEx は必要ありません。

ミニポートCheckForHangEx は、NIC の内部状態を確認し、NIC が正しく動作していないことを検出した場合 TRUE を返します。

既定では、NDIS はミニポートCheckForHangEx 約 2 秒ごとに を呼び出します。 このため、ミニポート ドライバーの ミニポートCheckForHangEx 関数は、できるだけ早く返す必要があります。

NDIS 6.30 以降では、ミニポートCheckForHangEx への呼び出し間の間隔を測定するために、高い許容値を持つ合体可能なタイマーが使用されます。 そのため、このルーチンは、時間の影響を受けやすい操作には使用しないでください。
 
ミニポートCheckForHangEx TRUE 返す場合、NDIS はミニポート ドライバーの ミニポートResetEx 関数を呼び出します。

ミニポート ドライバーが、ミニポートCheckForHangEx への 2 つの連続する呼び出し内で OID 要求を完了しない場合、NDIS はドライバーの ミニポートResetEx 関数を呼び出すことができます。 ただし、不要なリセットを回避するために、ドライバーの ミニポートInitializeEx 関数を呼び出すときに適切な CheckForHangTimeInSeconds 値を設定することで、ハングチェックのタイムアウト間隔を延長できます。NdisMSetMiniportAttributes 関数を します。

CheckForHangTimeInSeconds タイムアウト値の設定の詳細については、「ミニポート アダプターの Check-for-Hang 操作とリセット操作 を参照してください。

NDIS 6.30 以降では、ミニポート ドライバーがタイムアウト期間の有効期限 が切れる前に保留中の送信要求を完了していないとミニポート ドライバーが検出した場合 ミニポートCheckForHangEx TRUE を返す必要があります。 タイムアウト期間はドライバー固有ですが、2 秒のタイムアウト期間を使用することをお勧めします。
 
ミニポートCheckForHangEx 割り込みによって割り込むことができます。

NDIS は、IRQL = PASSIVE_LEVEL でミニポートCheckForHangEx 呼び出します。

の例

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

たとえば、"MyCheckForHangEx" という名前の ミニポートCheckForHangEx 関数を定義するには、次のコード例に示すように MINIPORT_CHECK_FOR_HANG 型を使用します。

MINIPORT_CHECK_FOR_HANG MyCheckForHangEx;

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

_Use_decl_annotations_
BOOLEAN
 MyCheckForHangEx(
    NDIS_HANDLE  MiniportAdapterContext
    )
  {...}

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

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

必要条件

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

関連項目

ミニポート アダプターのハングチェックとリセット操作

ミニポートInitializeEx

ミニポートResetEx

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes