NdisMNetPnPEvent 関数 (ndis.h)

NDIS ミニポート ドライバー (およびミニポート ドライバーとして登録されている中間ドライバー) は NdisMNetPnPEvent 関数を呼び出して、ネットワーク プラグ アンド プレイ イベント、NDIS PnP イベント、または Power Management イベントを発生させるか、上にあるドライバーに伝達します。

構文

NDIS_STATUS NdisMNetPnPEvent(
  [in] NDIS_HANDLE                 MiniportAdapterHandle,
       PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
);

パラメーター

[in] MiniportAdapterHandle

ミニポートInitializeEx 関数の MiniportAdapterHandle パラメーターで指定された NDIS ハンドル。 このハンドルは、イベントの影響を受けるミニポート アダプターを識別します。 呼び出し元が中間ドライバーの場合、これは仮想ミニポートのハンドルです。

NetPnPEventNotification

へのポインター NET_PNP_EVENT_NOTIFICATION構造体。ネットワーク プラグ アンド プレイ イベント、NDIS PnP イベント、または Power Management イベントについて説明します。

重要

NetPnpEventNotificationVPortId フィールドがNDIS_DEFAULT_VPORT_IDとは異なる値に設定されている場合、VPortId を有効にするには Flags メンバーをNET_EVENT_FLAGS_VPORT_ID_VALIDに設定する必要があります。

戻り値

NdisMNetPnPEvent は次を返すことができます。

リターン コード 説明
NDIS_STATUS_SUCCESS
基になるドライバーは、プラグ アンド プレイまたは Power Management イベントを正常に処理しました。
NDIS_STATUS_RESOURCES
上にあるドライバーは、指定されたプラグ アンド プレイまたは Power Management イベントを満たすために必要なシステム リソースを取得できませんでした。
NDIS_STATUS_INVALID_PARAMETER
入力パラメーターの一部が無効であるため、NDIS は呼び出しに失敗しました。
NDIS_STATUS_NOT_SUPPORTED
NDIS 6.0 以降のプロトコル ドライバーは、この状態を返す必要があります。 NDIS 5。プラグ アンド プレイをサポートしていない x プロトコル ドライバーは、NetEventSetPower に応答してこの状態を返し、NDIS が基になるアダプターからバインドを解除する必要があることを示すことができます。
NDIS_STATUS_INVALID_PORT
無効な NDIS ポートが NetEventPortActivation または NetEventPortDeactivation PnP イベントで指定されたため、 NDIS は要求に失敗しました。
NDIS_STATUS_INVALID_PORT_STATE
NDIS ポートが無効なポート状態にあったため、NDIS は要求に失敗しました。 ポートは、 NetEventPortActivation または NetEventPortDeactivation PnP イベントで指定されます。
NDIS_STATUS_FAILURE
伝達されたプラグ アンド プレイまたは Power Management イベントの処理に、基になるドライバーの試行が失敗しました。
 

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

イベントが NetEventPortActivation であり、呼び出しが失敗した場合、呼び出し元は、受信通知または状態表示で関連付けられているポートを使用しないでください。

注釈

どのミニポート ドライバーでも NdisMNetPnPEvent を呼び出して 、NetEventPortActivation イベントと NetEventPortDeactivation イベント 生成できます。 中間ドライバーのみが他のイベント通知を行うことができます。

メモ デッドロックを防ぐには、NDIS ドライバーで次の操作を行う必要があります。
 
ネットワーク プラグ アンド プレイ イベント、NDIS PnP イベント、または Power Management イベントの通知を上にあるドライバーに伝達するために、NDIS 中間ドライバーは、ドライバーの ProtocolNetPnPEvent 関数のコンテキストで NdisMNetPnPEvent呼び出します。

伝達されるイベントが NetEventQueryPower または NetEventQueryRemoveDevice の場合、中間ドライバーは NdisMNetPnPEvent によって返されるNDIS_STATUS値をチェックする必要があります。 返された状態がNDIS_STATUS_SUCCESS場合、中間ドライバーはイベントを処理し、 ProtocolNetPnPEvent 関数からNDIS_STATUS_SUCCESSを返す必要があります。 返された状態がNDIS_STATUS_SUCCESSされていない場合、中間ドライバーは、それ以上の処理を行わずに 、ProtocolNetPnPEvent 関数から報告された状態を返す必要があります。

中間ドライバーがその ProtocolNetPnPEvent 関数によって受信した NetEventSetPower を処理する方法は、指定されたデバイスの電源状態によって異なります。 指定したデバイスの電源状態が NdisDeviceStateD0 の場合、中間ドライバーはイベントを処理し、 NdisMNetPnPEvent を呼び出す必要があります。 その他の指定されたデバイス電源状態の場合、中間ドライバーは最初に NdisMNetPnPEvent を呼び出してから、イベントを処理する必要があります。

NetEventReconfigure または NetEventBindListNULL 以外の ProtocolBindingContext で示されている場合にのみ、中間ドライバーは NdisMNetPnPEvent を呼び出して NetEventReconfigure または NetEventBindList を伝達する必要があります。 NetEventReconfigure または NetEventBindListNULLProtocolBindingContext で示されている場合、中間ドライバーは NdisMNetPnPEvent を呼び出してイベントを伝達しないでください。

中間ドライバーが NetEventReconfigure または NetEventBindList を処理する場合は、イベントに関連付けられているすべてのデータを検証する必要があります。

中間ドライバーは、NdisMNetPnPEvent を呼び出して、NetEventBindsCompleteNetEventPauseNetEventRestartNetEventPortActivation、または NetEventPortDeactivation イベントを伝達しないでください。

NDIS 中間ドライバーは、その ProtocolNetPnPEvent 関数で受け取る NetEventPortActivation イベントまたは NetEventPortDeactivation イベントに応じて、仮想ミニポート用の独自の NDIS ポート イベントを生成できます。

他のすべての伝達イベントについて、中間ドライバーの ProtocolNetPnPEvent 関数は 、NdisMNetPnPEvent によって返される状態値を伝達する必要があります。

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 Irql_Protocol_Driver_Function(ndis)NdisMNetPnPEventInOIDRequest(ndis)

こちらもご覧ください

MiniportInitializeEx

MiniportOidRequest

NET_PNP_EVENT_NOTIFICATION

ProtocolNetPnPEvent