次の方法で共有


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

NDIS は、ミニポート ドライバーの ミニポートPause 関数を呼び出して、指定されたミニポート アダプターを介したネットワーク データのフローを停止します。

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

構文

MINIPORT_PAUSE MiniportPause;

NDIS_STATUS MiniportPause(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNDIS_MINIPORT_PAUSE_PARAMETERS PauseParameters
)
{...}

パラメーター

[in] MiniportAdapterContext

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

[in] PauseParameters

へのポインターミニポート アダプターの一時停止パラメーターを定義する NDIS_MINIPORT_PAUSE_PARAMETERS 構造体。

戻り値

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

リターン コード 形容
NDIS_STATUS_SUCCESS
ミニポート ミニポート アダプターを介したネットワーク データのフローを正常に停止しました。
NDIS_STATUS_PENDING
ミニポート一時停止 は一時停止操作を完了せず、操作は非同期的に完了します。 ミニポート ドライバーは、操作が完了したときに、NdisMPauseComplete 関数を呼び出す必要があります。

備考

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

NDIS は、フィルター ドライバーの追加や削除、プロトコル ドライバーのバインドまたはバインド解除などの PnP 操作を妨げる可能性があるデータ フローを停止するミニポート アダプターを一時停止します。

NDIS ミニポート ドライバーの ミニポートPause 関数を呼び出して、ミニポート アダプターの一時停止要求 ミニポートAdapterContextで指定します。 ミニポート アダプターは、一時停止操作が完了するまで、一時停止 状態のままです。

の一時停止 状態のミニポート アダプターの場合、ミニポート ドライバー:

  • へのすべての呼び出しを待機します。NdisMIndicateReceiveNetBufferLists 返す関数を します。
  • NDIS が未処理の受信通知からミニポート ドライバーのすべての NET_BUFFER_LIST 構造体の所有権を返すのを待機します。ミニポートReturnNetBufferLists 関数を します。
  • 未処理のすべての送信要求を完了し、未処理のすべての送信要求に対して NdisMSendNetBufferListsComplete 関数を します。
  • に対して行われたすべての新しい送信要求を拒否します。 ミニポートSendNetBufferListsNdisMSendNetBufferListsCompleteを呼び出すことによってすぐに関数です。 各NET_BUFFER_LISTの完全な状態をNDIS_STATUS_PAUSEDに設定する必要があります。
  • を使用して状態表示を提供できます。NdisMIndicateStatusEx 関数を します。
  • ミニポートOidRequest 関数の OID 要求を処理する必要があります。
  • ミニポート アダプターを停止すると、ドライバーが要求を処理したり、状態の表示を提供したりできない場合は、ミニポート アダプターを完全に停止しないでください。
  • 初期化中にドライバーが割り当てたリソースを解放しないでください。
NDIS は、停止、初期化、電源の変更、一時停止、または再起動要求など、ミニポート アダプターの他の PnP 操作を開始しませんが、ミニポート アダプターが 一時停止 状態です。 NDIS は、ミニポート アダプターが 一時停止 状態の後に、これらの PnP 操作を開始できます。

ミニポート ドライバーがすべての未処理の送信要求を完了し、NDIS が (未処理の受信表示から) 受信したすべてのネットワーク データ構造を返した後、ドライバーは一時停止操作を完了する必要があります。 ドライバーがミニポートPause からNDIS_STATUS_SUCCESS返された場合、一時停止操作は完了です。 ドライバーがNDIS_STATUS_PENDINGを返す場合、ミニポート アダプターは の一時停止 状態のままで、一時停止操作は、ドライバーが NdisMPauseComplete 関数を呼び出した後に完了します。 一時停止操作が完了すると、ミニポート アダプターは 一時停止 状態になります。

一時停止 状態のミニポート アダプターの場合、ミニポート ドライバー:

  • NdisMSendNetBufferListsCompleteを呼び出すことによって、すぐに に対して行われたすべての送信要求を拒否する必要があります。 各NET_BUFFER_LISTの Status メンバーをNDIS_STATUS_PAUSEDに設定する必要があります。
  • 受信割り込みを処理できますが (ミニポートInterrupt 関数を参照)、および割り込み DPC (ミニポートInterruptDPC 関数を参照してください)、受信したネットワーク データを示すべきではありません。
  • NdisMIndicateStatusEx 関数 状態を示すことができます。
  • ミニポートOidRequest 関数の OID 要求を処理する必要があります。
  • デバイスの電源状態を変更する要求を処理する必要があります。ミニポートDevicePnPEventNotify 関数を します。
  • NetTimerCallback 関数の呼び出しを処理できます。
  • ミニポートResetEx 関数でハードウェアをリセットする要求を処理できます。
ミニポート ドライバーは、一時停止要求を失敗できません。 したがって、ミニポート ドライバーは、一時停止要求を処理するリソースが必要な場合は、初期化中にリソースを事前に割り当てする必要があります。

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

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

の例

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

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

MINIPORT_PAUSE MyPause;

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

_Use_decl_annotations_
NDIS_STATUS
 MyPause(
    NDIS_HANDLE  MiniportAdapterContext,
    PNDIS_MINIPORT_PAUSE_PARAMETERS  MiniportPauseParameters
    )
  {...}

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

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

必要条件

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

関連項目

ミニポートDevicePnPEventNotify

ミニポートInitializeEx

ミニポートInterrupt

ミニポートInterruptDPC

ミニポートResetEx

ミニポートの 開始

ミニポートReturnNetBufferLists

ミニポートSendNetBufferLists

NDIS_MINIPORT_PAUSE_PARAMETERS

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists

NdisMIndicateStatusEx

NdisMPauseComplete

NdisMRegisterMiniportDriver

NdisMSendNetBufferListsComplete

NetTimerCallback