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 イベントについて説明します。
重要
NetPnpEventNotification の VPortId フィールドがNDIS_DEFAULT_VPORT_IDとは異なる値に設定されている場合、VPortId を有効にするには Flags メンバーをNET_EVENT_FLAGS_VPORT_ID_VALIDに設定する必要があります。
戻り値
NdisMNetPnPEvent は次を返すことができます。
リターン コード | 説明 |
---|---|
|
基になるドライバーは、プラグ アンド プレイまたは Power Management イベントを正常に処理しました。 |
|
上にあるドライバーは、指定されたプラグ アンド プレイまたは Power Management イベントを満たすために必要なシステム リソースを取得できませんでした。 |
|
入力パラメーターの一部が無効であるため、NDIS は呼び出しに失敗しました。 |
|
NDIS 6.0 以降のプロトコル ドライバーは、この状態を返す必要があります。 NDIS 5。プラグ アンド プレイをサポートしていない x プロトコル ドライバーは、NetEventSetPower に応答してこの状態を返し、NDIS が基になるアダプターからバインドを解除する必要があることを示すことができます。 |
|
無効な NDIS ポートが NetEventPortActivation または NetEventPortDeactivation PnP イベントで指定されたため、 NDIS は要求に失敗しました。 |
|
NDIS ポートが無効なポート状態にあったため、NDIS は要求に失敗しました。 ポートは、 NetEventPortActivation または NetEventPortDeactivation PnP イベントで指定されます。 |
|
伝達されたプラグ アンド プレイまたは Power Management イベントの処理に、基になるドライバーの試行が失敗しました。 |
戻り値は、伝達されたイベントが NetEventQueryPower または NetEventQueryRemoveDevice イベントである場合にのみ有効です。 他のすべての伝達イベントの場合、戻り値は常にNDIS_STATUS_SUCCESS。
イベントが NetEventPortActivation であり、呼び出しが失敗した場合、呼び出し元は、受信通知または状態表示で関連付けられているポートを使用しないでください。
注釈
どのミニポート ドライバーでも NdisMNetPnPEvent を呼び出して 、NetEventPortActivation イベントと NetEventPortDeactivation イベント を 生成できます。 中間ドライバーのみが他のイベント通知を行うことができます。
- その MiniportOidRequest 関数は NdisMNetPnPEvent を呼び出してはなりません。
- MiniportOidRequest 関数が OID 要求のNDIS_STATUS_PENDINGを返す場合、NDIS ドライバーは NdisMOidRequestComplete を呼び出して OID 要求を完了するまで NdisMNetPnPEvent を呼び出す必要があります。
伝達されるイベントが NetEventQueryPower または NetEventQueryRemoveDevice の場合、中間ドライバーは NdisMNetPnPEvent によって返されるNDIS_STATUS値をチェックする必要があります。 返された状態がNDIS_STATUS_SUCCESS場合、中間ドライバーはイベントを処理し、 ProtocolNetPnPEvent 関数からNDIS_STATUS_SUCCESSを返す必要があります。 返された状態がNDIS_STATUS_SUCCESSされていない場合、中間ドライバーは、それ以上の処理を行わずに 、ProtocolNetPnPEvent 関数から報告された状態を返す必要があります。
中間ドライバーがその ProtocolNetPnPEvent 関数によって受信した NetEventSetPower を処理する方法は、指定されたデバイスの電源状態によって異なります。 指定したデバイスの電源状態が NdisDeviceStateD0 の場合、中間ドライバーはイベントを処理し、 NdisMNetPnPEvent を呼び出す必要があります。 その他の指定されたデバイス電源状態の場合、中間ドライバーは最初に NdisMNetPnPEvent を呼び出してから、イベントを処理する必要があります。
NetEventReconfigure または NetEventBindList が NULL 以外の ProtocolBindingContext で示されている場合にのみ、中間ドライバーは NdisMNetPnPEvent を呼び出して NetEventReconfigure または NetEventBindList を伝達する必要があります。 NetEventReconfigure または NetEventBindList が NULLProtocolBindingContext で示されている場合、中間ドライバーは NdisMNetPnPEvent を呼び出してイベントを伝達しないでください。
中間ドライバーが NetEventReconfigure または NetEventBindList を処理する場合は、イベントに関連付けられているすべてのデータを検証する必要があります。
中間ドライバーは、NdisMNetPnPEvent を呼び出して、NetEventBindsComplete、NetEventPause、NetEventRestart、NetEventPortActivation、または 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) |