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

NDIS は、フィルター ドライバーの FilterNetPnPEvent 関数を呼び出して、ネットワーク プラグ アンド プレイ (PnP) イベントと Power Management イベントをドライバーに通知します。

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

構文

FILTER_NET_PNP_EVENT FilterNetPnpEvent;

NDIS_STATUS FilterNetPnpEvent(
  [in] NDIS_HANDLE FilterModuleContext,
  [in] PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
)
{...}

パラメーター

[in] FilterModuleContext

フィルター モジュールのコンテキスト領域へのハンドル。 FilterAttach 関数でこのコンテキスト領域を作成および初期化したフィルター ドライバー。

[in] NetPnPEventNotification

へのポインター NET_PNP_EVENT_NOTIFICATION 構造体。フィルター ドライバーに示されている PnP イベントまたは Power Management イベントについて説明します。

戻り値

FilterNetPnPEvent は、次のいずれかを返すことができます。

リターン コード 説明
NDIS_STATUS_SUCCESS
ドライバーが PnP イベントを正常に処理しました。
NDIS_STATUS_FAILURE
ドライバーが PnP イベントに失敗しました。
 

戻り値は、伝達されたイベントが NetEventQueryPower または NetEventQueryRemove イベントである場合にのみ有効です。 他のすべての伝達イベントでは、戻り値は常にNDIS_STATUS_SUCCESS。

注釈

FilterNetPnPEvent は省略可能な関数です。 フィルター ドライバーがネットワーク PnP イベントを処理しない場合は、 を呼び出すときに、この関数のエントリ ポイントを NULL に設定できます。 NdisFRegisterFilterDriver 関数。

FilterNetPnPEvent は、プロトコル ドライバーの ProtocolNetPnPEvent 関数に似ています。 フィルター ドライバーは、これらの通知を基になるドライバーに転送することも、それ自体を処理して転送することもできません。 通知を転送するには、 NdisFNetPnPEvent 関数を呼び出します。 この関数を と混同しないでください。 FilterDevicePnPEventNotify 関数。スタックから基になるドライバーに送信される通知をフィルター処理します。

NDIS は FilterNetPnPEvent を呼び出して、基になる NIC に対して発行された PnP または Power Management イベントをフィルター ドライバーに通知します。 NDIS は、NIC の上にある各フィルター ドライバーの FilterNetPnPEvent 関数を呼び出し、基になる各プロトコル ドライバーの ProtocolNetPnPEvent 関数を呼び出します。

フィルター モジュールがドライバー スタックに挿入または削除されると、スタックの特性が変わる可能性があります。 NDIS は、影響を受けるすべてのプロトコル バインドとフィルター モジュールに PnP イベントを送信して、この変更について通知します。 フィルター ドライバーは、このような変更を適切に処理する必要があります。

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

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

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

FILTER_NET_PNP_EVENT MyNetPnPEvent;

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

_Use_decl_annotations_
NDIS_STATUS
 MyNetPnPEvent(
    NDIS_HANDLE  FilterModuleContext,
    PNET_PNP_EVENT_NOTIFICATION  NetPnPEvent
    )
  {...}

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

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

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
対象プラットフォーム Windows
ヘッダー ndis.h (Ndis.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

FilterAttach

FilterDevicePnPEventNotify

NET_PNP_EVENT_NOTIFICATION

NdisFNetPnPEvent

NdisFRegisterFilterDriver

ProtocolNetPnPEvent