次の方法で共有


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

ミニポートrestart 関数は、一時停止されているミニポート アダプターの再起動要求を開始します。

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

構文

MINIPORT_RESTART MiniportRestart;

NDIS_STATUS MiniportRestart(
  [in] NDIS_HANDLE MiniportAdapterContext,
       PNDIS_MINIPORT_RESTART_PARAMETERS RestartParameters
)
{...}

パラメーター

[in] MiniportAdapterContext

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

RestartParameters

へのポインターミニポート アダプターの再起動パラメーターを定義する NDIS_MINIPORT_RESTART_PARAMETERS 構造体。

戻り値

ミニポートRestart は、次のいずれかの状態値を返します。

リターン コード 形容
NDIS_STATUS_SUCCESS

ミニポートの開始 ミニポート アダプターを介してネットワーク データのフローを正常に再起動しました。

NDIS_STATUS_PENDING
ミニポートリスタート は再起動操作を完了せず、操作は非同期的に完了します。 ミニポート ドライバーは、操作が完了したときに、NdisMRestartComplete 関数を呼び出す必要があります。
NDIS_STATUS_RESOURCES

ミニポートの開始 リソースが不足しているために失敗しました。

NDIS_STATUS_FAILURE
上記の状態値は適用されていません。 このような状況では、ドライバーは、エラーの理由を指定するパラメーターを使用して、NdisWriteErrorLogEntry 関数を呼び出す必要があります。

備考

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

ミニポートAdapterContext パラメーターで指定されたミニポート アダプターは、NDIS がミニポートRestart 呼び出すときに 状態を再起動 に入ります。

NDIS 呼び出し ミニポートRestart、ミニポート ドライバー:

  • 送受信操作を再開するために必要なすべてのタスクを完了する必要があります。
  • 必要に応じて、RestartAttributes メンバーで指定されている再起動属性を変更します。 NDIS_MINIPORT_RESTART_PARAMETERS 構造体。 RestartAttributes 内のポインターが NULL 場合、ミニポート ドライバーは、変更または再起動属性の一覧に追加しないでください。 RestartAttributes のポインターが NULL以外の場合は、NDIS_RESTART_ATTRIBUTES 構造体を指します。 ミニポート ドライバーが再起動しない場合は、属性を変更しないでください。
  • を使用して状態表示を提供できます。NdisMIndicateStatusEx 関数を します。
  • ミニポートOidRequest 関数の状態要求を処理する必要があります。
ミニポート ドライバーが再起動属性の一覧を変更する場合、ミニポート ドライバー:
  • 再起動属性の一覧に新しいメディア固有の属性を追加できます。 この状況では、ミニポート ドライバーは、新しいを割り当てる必要があります。 NDIS_RESTART_ATTRIBUTES 構造体 -- たとえば、ndisAllocateMemoryWithTagPriority 関数を し、新しい属性のメモリ領域を提供します。 上にあるドライバーに再起動属性を伝達した後、NDIS はミニポート ドライバーの属性メモリを解放します。
  • 再起動属性の一覧でメディア固有の属性を変更できます。 ミニポート ドライバーは、より多くのメモリ領域が必要な場合は、NdisFreeMemory 関数を使用してNDIS_RESTART_ATTRIBUTES構造体を解放し、変更された情報を含む新しい構造体を割り当てることができます。 上にあるドライバーに再起動属性を伝達した後、NDIS はミニポート ドライバーの属性メモリを解放します。
  • 内の任意のフィールドを変更できます。 NDIS_RESTART_GENERAL_ATTRIBUTES 構造体。 NDIS が、RestartAttributes メンバー内に以外の NULL ポインターを提供する場合 NDIS_MINIPORT_RESTART_PARAMETERS 構造体には、属性リストに、NDIS_RESTART_ATTRIBUTES 構造体の Oid メンバーが含まれるエントリが 1 つ含まれています。 OID_GEN_MINIPORT_RESTART_ATTRIBUTESData メンバーには、NDIS_RESTART_GENERAL_ATTRIBUTES構造体が含まれています。
  • 次の点を確認する必要があります。 NDIS_RESTART_GENERAL_ATTRIBUTES 構造体には、正しい情報が含まれています。 NDIS_RESTART_GENERAL_ATTRIBUTES構造体に必要な情報が含まれていることを確認するには、まず、NDIS_RESTART_GENERAL_ATTRIBUTES構造体の Header メンバーで指定されている NDIS_OBJECT_HEADER 構造体の Revision メンバーを確認して、構造体のバージョンを確認する必要があります。
NDIS は、再起動操作が完了するまで、停止、初期化、電源変更、一時停止要求など、ミニポート アダプターの他のプラグ アンド プレイ (PnP) 操作を開始しません。

ミニポート ドライバーが正常に送信操作と受信操作を再起動した後、再起動操作を完了する必要があります。 ドライバーがミニポートリスタート からNDIS_STATUS_SUCCESS返された場合、再起動操作は完了です。 ドライバーがNDIS_STATUS_PENDINGを返した場合は、再起動操作を続行できます。 ドライバーが NdisMRestartComplete 関数 呼び出した後、再起動操作が完了します。 再起動操作が完了すると、ミニポート アダプターは 実行中 状態になります。

ミニポート ドライバーは、ミニポート アダプターの受信パケットを示す再開できますすぐに NDIS 呼び出し ミニポートRestart と、ドライバーが NdisMRestartComplete を呼び出す前にします。 ミニポート ドライバーは、ドライバーが再起動要求を完了した後、送信要求を受け入れる準備ができている必要があります。

ミニポート ドライバーが送受信操作を再起動しない場合、ドライバーは、ミニポートRestart から適切なエラー状態返す必要があります。 このような状況では、ドライバーが開始されたすべての送受信操作を停止し、一時停止 状態に戻る必要があります。

NDIS 呼び出し IRQL = PASSIVE_LEVEL でミニポートの を開始します。

の例

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

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

MINIPORT_RESTART MyRestart;

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

_Use_decl_annotations_
NDIS_STATUS
 MyRestart(
    NDIS_HANDLE  MiniportAdapterContext,
    PNDIS_MINIPORT_RESTART_PARAMETERS  RestartParameters
    )
  {...}

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

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

必要条件

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

関連項目

ミニポートInitializeEx

ミニポートOidRequest

ミニポートPause

NDIS_MINIPORT_RESTART_PARAMETERS

NDIS_OBJECT_HEADER

NDIS_RESTART_ATTRIBUTES

NdisAllocateMemoryWithTagPriority NDIS_RESTART_GENERAL_ATTRIBUTES

NdisFreeMemory

NdisMIndicateStatusEx

NdisMRegisterMiniportDriver

NdisMRestartComplete

NdisWriteErrorLogEntry

OID_GEN_MINIPORT_RESTART_ATTRIBUTES