NET_PNP_EVENT 構造体 (netpnp.h)

NET_PNP_EVENT構造体では、ネットワーク プラグ アンド プレイ (PnP) イベント、NDIS PnP イベント、または電源管理イベントについて説明します。

構文

typedef struct _NET_PNP_EVENT {
  NET_PNP_EVENT_CODE NetEvent;
  PVOID              Buffer;
  ULONG              BufferLength;
  ULONG_PTR          NdisReserved[4];
  ULONG_PTR          TransportReserved[4];
  ULONG_PTR          TdiReserved[4];
  ULONG_PTR          TdiClientReserved[4];
} NET_PNP_EVENT, *PNET_PNP_EVENT;

メンバー

NetEvent

イベントを次のいずれかとして記述するイベント コード。

NetEventSetPower

電源マネージャーが Set Power 要求を送信したことを示します。これは、システムの電源状態への移行を指定します。 NDIS は、この状態をデバイスの適切なデバイス電源状態に変換します。

詳細については、「解説」を参照してください。

NetEventQueryPower

電源マネージャーが Query Power 要求を送信したことを示します。この要求は、システムの電源状態への移行を要求します。 NDIS は、この状態をデバイスの適切なデバイス電源状態に変換します。

詳細については、「解説」を参照してください。

NetEventQueryRemoveDevice

PnP マネージャーがクエリ削除デバイス要求を送信したことを示します。 PnP マネージャーは、操作を中断せずにデバイスを削除できるかどうかを照会するために、この要求を送信します。

NetEventCancelRemoveDevice

PnP マネージャーがデバイスの削除の取り消し要求を送信したことを示します。 PnP マネージャーは、PnP マネージャーがデバイスの削除要求のクエリを送信した後、デバイスの削除を取り消すためにこの要求を送信します。

NetEventReconfigure

ネットワーク コンポーネントの構成が変更されたことを示します。 たとえば、ユーザーがネットワークとダイヤルアップ Connections フォルダーを介して TCP/IP の IP アドレスを変更した場合、NDIS は NetEventReconfigure イベントを TCP/IP プロトコルに示します。 また、中間ドライバーは通常、このイベントをトリガーとして使用して、 NdisIMInitializeDeviceInstanceEx 関数とその仮想ミニポートを開始します。 NetEventReconfigure の詳細については、「NetEventIMReEnableDevice」を参照してください。

NetEventBindList

バインド リストの処理順序が再構成されたことをプロトコル ドライバーに示します。 この一覧は、複数のバインドのいずれかにルーティングされる可能性があるユーザー要求など、処理時にバインドに適用される相対順序を示します。 このイベントで渡されるバッファーには、null で終わる Unicode 文字列として書式設定されたデバイス名の一覧が含まれています。 各デバイス名の形式は、ProtocolBindAdapterEx 関数の呼び出しに渡される AdapterName メンバーと同じです。

NetEventBindsComplete

プロトコル ドライバーがバインドできるすべての NIC にバインドされていることを示します。 PNP NIC がシステムに接続されていない限り、NDIS はプロトコルにそれ以上 NIC を示しません。

NetEventPnPCapabilities

ユーザーが基になるアダプターのウェイクアップ機能を有効または無効にしたことを示します。 (バインディングは、ProtocolNetPnPEvent 関数に渡される ProtocolBindingContext パラメーターによって指定されます)。

NetEventPause

指定したプロトコル バインドが一時停止状態に入る必要があることを示します。 バインドは、NDIS がバインドのすべての未処理の送信要求を完了した後、一時停止状態になります。

NetEventRestart

指定したプロトコル バインドが再起動状態に入っていることを示します。 プロトコル ドライバーがバインディングの送受信操作を再開する準備ができたら、バインディングは実行中の状態になります。

NetEventPortActivation

指定したバインディングに関連付けられているポートの一覧のアクティブ化を示します。

NetEventPortDeactivation

指定したバインディングに関連付けられているポートの一覧の非アクティブ化を示します。

NetEventIMReEnableDevice

NDIS 6.0 以降の中間ドライバーの仮想ミニポートの構成が変更されたことを示します。 NetEventIMReEnableDeviceNetEventReconfigure イベントに似ていますが、中間ドライバーが 1 つの仮想ミニポートに対してこのイベントを受信し、 NetEventReconfigure イベントがすべての中間ドライバーの仮想ミニポートに適用されることを除きます。 たとえば、ユーザーが無効にし、デバイス マネージャーまたは別のソースから 1 つの仮想ミニポートを有効にすると、中間ドライバーは NetEventIMReEnableDevice イベントを受け取ります。 ドライバーの中間電源管理の例については、GitHub の Windows ドライバー サンプル リポジトリで入手できる NDIS MUX 中間ドライバーとオブジェクト通知ドライバーのサンプルを参照してください。

NetEventNDKEnable

ネットワーク ダイレクト カーネル (NDK) が現在有効になっていることを示します。

NetEventNDKDisable

NDK が現在無効になっていることを示します。

NetEventFilterPreDetach

フィルターがデタッチされようとしていることを示します。フィルターが FilterDetach ハンドラーでは不可能な必要なクリーンアップを実行できるようにします (その時点で OID と表示パスが閉じられているためです)。

NetEventBindFailed

バインド イベントエラーが発生したことを示します。

NetEventSwitchActivate

Hyper-V 拡張可能スイッチがアクティブ化を完了し、スイッチ拡張機能が安全にクエリを実行して、さらにスイッチの構成を行うことができることを示します。 この表示は、拡張機能ミニポートによって発行された Hyper-V 拡張可能スイッチ スタックでのみ使用されます。 詳細については、「 Hyper-V 拡張可能スイッチの構成NDIS_SWITCH_PARAMETERS の照会」を参照してください。

NetEventInhibitBindsAbove

他のフィルターとプロトコルがミニポート アダプターにバインドできないようにする同期イベント。 以前にバインドされていたフィルターまたはプロトコルは、イベントが完了する前にバインド解除されます。 使用規則を次に示します。

  • ミニポート アダプターを 1000 ミリ秒より長く禁止状態のままにしないでください。
  • このイベントは 、MiniportInitializeEx が開始された後にのみ発行でき、 MiniportHaltEx が返された後に発行することはできません。
  • このイベントは、ミニポート アダプターが D0 状態の場合にのみ発行できます。
  • このイベントはブロックしているため、デッドロックを引き起こすコンテキストによって発行されるべきではありません。
  • このイベントの発行中にロックを保持することはできません。
  • このイベントは、PASSIVE_LEVELで発行する必要があります。
このイベントは NDIS バージョン 6.50 以降で使用でき、V2 以降のバージョンの NET_PNP_EVENTで使用する必要があります。 このイベントは、必要に応じてミニポート ドライバーによって発行できます。 プロトコルとフィルターは、このイベントを受信したり、発行したりすることはできません。

NetEventAllowBindsAbove

NetEventInhibitBindsAbove の効果を反転させる非同期イベント。 使用規則を次に示します。

  • このイベントは 、MiniportInitializeEx が開始された後にのみ発行でき、 MiniportHaltEx が返された後に発行することはできません。
  • このイベントは、ミニポート アダプターが D0 状態の場合にのみ発行できます。
  • このイベントの発行中にロックを保持することはできません。
  • このイベントは、PASSIVE_LEVELで発行する必要があります。
このイベントは NDIS バージョン 6.50 以降で使用でき、V2 以降のバージョンの NET_PNP_EVENTで使用する必要があります。 このイベントは、必要に応じてミニポート ドライバーによって発行できます。 プロトコルとフィルターは、このイベントを受信したり、発行したりすることはできません。

NetEventRequirePause

ミニポート アダプターを含むプロトコルとフィルターを示す同期イベントを一時停止する必要があります。 プロトコルとフィルターとミニポート アダプターは、 NdisMNetPnPEvent ルーチンが返されるときに一時停止することが保証されます。 使用規則を次に示します。

  • ユーザー アプリケーションの遅延を防ぐために、NetEventAllowStart イベントと NetEventRequirePause イベントの間で 1000 ミリ秒を超える遅延を回避します。
  • このイベントは 、MiniportInitializeEx が開始された後にのみ発行でき、 MiniportHaltEx が返された後に発行することはできません。
  • このイベントが発行された後、NDIS が MiniportPause を 呼び出す保証はありません。 特に、ミニポート アダプターが既に一時停止されている場合、NDIS では追加の開始一時停止ループは導入されません。 つまり、 MiniportPause が呼び出される回数が、このイベントが発行された金額より大きい、より小さい、または等しくないことを意味します。
  • このイベントはブロックしているため、デッドロックを引き起こすコンテキストによって発行されるべきではありません。
  • このイベントの発行中にロックを保持することはできません。
このイベントは NDIS バージョン 6.50 以降で使用でき、V2 以降のバージョンの NET_PNP_EVENTで使用する必要があります。 このイベントは、必要に応じてミニポート ドライバーによって発行できます。 プロトコルとフィルターは、このイベントを受信したり、発行したりすることはできません。

NetEventAllowStart

ミニポート アダプターを含むプロトコルとフィルターを示す非同期イベントを一時停止する必要はありません。 使用規則を次に示します。 NdisMNetPnPEvent ルーチンが返された後、プロトコルとフィルター内のドライバーの一時停止状態は保証されません。

  • このイベントは 、MiniportInitializeEx が開始された後にのみ発行でき、 MiniportHaltEx が返された後に発行することはできません。
  • このイベントはブロックしているため、デッドロックを引き起こすコンテキストによって発行されるべきではありません。
  • このイベントの発行中にロックを保持することはできません。
このイベントは NDIS バージョン 6.50 以降で使用でき、V2 以降のバージョンの NET_PNP_EVENTで使用する必要があります。 このイベントは、必要に応じてミニポート ドライバーによって発行できます。 プロトコルとフィルターは、このイベントを受信したり、発行したりすることはできません。

Buffer

NetEvent メンバーで示されるイベントに固有の情報を含むバッファーのアドレス。 イベントの種類ごとに、バッファーには次の情報が含まれます。

NetEventSetPower

バッファーには、デバイスが移行しているデバイスの電源状態が含まれています。

NDIS がプロトコル ドライバーの ProtocolNetPnPEvent 関数を呼び出すと、デバイスの状態はNDIS_DEVICE_POWER_STATEされ、次のいずれかの値を指定できます。

NdisDeviceStateUnspecified

ネットワーク デバイスは、電源管理をサポートしていません。

NdisDeviceStateD0

デバイスが完全な機能とパフォーマンスを提供するフルパワー状態。

NdisDeviceStateD1

ホストからの送信要求がデバイスによって受け入れられない、デバイスが受信したデータがホスト メモリに転送されず、割り込みが発生しない低電力状態。 一部のデバイス コンテキストが失われる可能性があります。 NIC とそのミニポート ドライバーの機能によっては、デバイスがウェイクアップ信号を生成できる場合があります。

NdisDeviceStateD2

NdisDeviceStateD1 に似た低電力状態です。ただし、通常、より多くの電力とより少ないコンテキストが保存され、完全な電源状態に移行するためにより多くの時間が必要になる点が除きます。

NdisDeviceStateD3

電源がデバイスから完全に削除されたオフ状態。

プロトコル ドライバーの場合、 NdisDeviceStateD0 は、NIC が完全に動作し、通常の操作で使用できる状態であることを意味します。 その他のデバイスの状態は、デバイスが完全に電源が供給されておらず、ネットワーク データの送受信に使用できないことを意味します。

NetEventQueryPower

バッファーには、デバイスに対して要求されたデバイスの電源状態が含まれています。 デバイスの状態はNDIS_DEVICE_POWER_STATEです ( NetEventSetPower 値の説明で説明されています)。

NetEventQueryRemoveDevice

バッファーの内容は NULL です

NetEventCancelRemoveDevice

バッファーの内容は NULL です

NetEventReconfigure

バッファーには、プロトコル固有のデータを含めることができます。 プロトコル ドライバーは、このデータの検証を担当します。

NetEventBindList

バッファーには、ネットワーク コンポーネントの変更されたバインディング リストが含まれています。 構造体NET_PNP_EVENT_NOTIFICATION 渡されています。 バインド リストは、一連の null で終わる Unicode 文字列であり、REG_MULTI_SZ形式です。 各文字列はアダプター名です。 プロトコルにバインドされている TDI クライアントは、このバインド リストを使用してバインドを並べ替えます。 プロトコル ドライバーは、この一覧の検証を担当します。

NetEventBindsComplete

バッファーの内容は NULL です

NetEventPnPCapabilities

バッファーは、ビットマスクを含む ULONG です。 ビットマスクでNDIS_DEVICE_WAKE_UP_ENABLE フラグを設定すると、NIC のウェイクアップ機能が有効になります。 それ以外の場合、NIC のウェイクアップ機能は無効になります。 (バインディングは、ProtocolNetPnPEvent に渡される ProtocolBindingContext パラメーターによって指定されます)。0 に設定すると、このフラグは NIC のウェイクアップ機能が無効になっていることを示します。

NetEventPause

バッファーには、 NDIS_PROTOCOL_PAUSE_PARAMETERS 構造体。

NetEventRestart

バッファーに NULL または が含まれている可能性があります。 NDIS_PROTOCOL_RESTART_PARAMETERS 構造体。 NDIS は、 NDIS_PROTOCOL_RESTART_PARAMETERS 構造体の RestartAttributes メンバー内のNDIS_RESTART_ATTRIBUTES構造体へのポインターを提供します。

メモ バッファーが NULL の場合、前回の再起動以降、再起動属性は変更されていません。
 

NetEventPortActivation

バッファーには、NDIS がアクティブ化するポートを識別 するNDIS_PORT 構造体の一覧の最初のエントリが含まれています。 NDIS_PORT構造体の Next メンバーを使用して、リスト内の次の構造体を取得できます。

NetEventPortDeactivation

バッファーには、NDIS が非アクティブ化する NDIS ポートを識別するNDIS_PORT_NUMBER型 (ULONG として定義) のポート番号の配列が含まれています。 配列内の要素の数を計算するには、 bufferLength メンバーの値を除算します。これは、 NET_PNP_EVENT_NOTIFICATIONNetPnPEvent メンバーで指定された NET_PNP_EVENT構造体内にある sizeof(NDIS_PORT_NUMBER) で除算します。

NetEventIMReEnableDevice

バッファーには、有効になっているデバイスの仮想ミニポートのデバイス オブジェクトに名前を付ける null で終わる Unicode 文字列を含む、NDIS_STRING型の変数へのポインターが含まれています。 文字列は、完全なパス名 (たとえば、\Device\DeviceName) です

NetEventNDKEnable

Buffer メンバーは NULL です

NetEventNDKDisable

Buffer メンバーは NULL です

NetEventFilterPreDetach

Buffer メンバーは NULL です

NetEventBindFailed

バッファーには 、NDIS_BIND_FAILED_NOTIFICATION 構造体が含まれています。

NetEventSwitchActivate

バッファーの内容は NULL です。

NetEventAllowBindsAbove

バッファーの内容は NULL です。

NetEventInhibitBindsAbove

バッファーの内容は NULL です。

NetEventAllowStart

バッファーの内容は NULL です。

NetEventRequirePause

バッファーの内容は NULL です。

BufferLength

Buffer でのイベント固有の情報のバイト数。

NdisReserved[4]

NDIS で使用するために予約されている領域。

TransportReserved[4]

トランスポート ドライバーで使用するために予約されている領域。

TdiReserved[4]

TDI で使用するために予約されている領域。

TdiClientReserved[4]

TDI クライアントで使用するために予約されている領域。

注釈

NDIS 6.0 以降のバージョンでは、オペレーティング システムがミニポート アダプターを表すターゲット デバイス オブジェクトにシステム PnP イベントまたは電源管理イベントを発行すると、NDIS はイベントを に変換します。 NET_PNP_EVENT_NOTIFICATION 構造体。 NET_PNP_EVENT_NOTIFICATION 構造体の NetPnPEvent メンバーは、NET_PNP_EVENT構造体です。

NDIS は、プロトコル ドライバーのProtocolNetPnPEvent 関数を呼び出すことによって、ミニポート アダプターにバインドされている各プロトコル ドライバーにNET_PNP_EVENT構造体へのポインターを渡します。 ポインターは NdisCompleteNetPnPEvent 関数への入力パラメーターであるため、プロトコル ドライバーはこのポインターを保存する必要があります。これは、 ドライバーが ProtocolNetPnPEvent の呼び出しを非同期的に完了するために呼び出します。

NDIS は、フィルター ドライバーのFilterNetPnPEvent 関数を呼び出すことによって、ミニポート アダプターにバインドされている各フィルター ドライバーにNET_PNP_EVENT構造体へのポインターを渡します。 フィルター ドライバーは FilterNetPnPEvent への呼び出しを同期的に完了する必要があるため、このポインターを保存する必要はありません。

NDIS 6.30 以降では、NDIS が ProtocolNetPnPEvent 関数または FilterNetPnPEvent 関数を呼び出すときに、プロトコルドライバーまたはフィルター ドライバーは次のガイドラインに従う必要があります。

  • NET_PNP_EVENT構造体の NetEvent メンバーが NetEventSetPower に設定されている場合、ドライバーは新しい I/O 要求の生成を停止する必要があります。 また、ドライバーは保留中の I/O 要求の完了を待つ必要があります。

    プロトコルまたはフィルター ドライバーが ProtocolNetPnPEvent または FilterNetPnPEvent から戻った後、次の条件に該当する場合、電源状態の遷移中に NDIS によってこれらのドライバーが一時停止および再起動されることはありません。

    • 基になるミニポート ドライバーは、NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES構造体のNDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND フラグを設定します。 ドライバーは、 NdisMSetMiniportAttributes 関数の呼び出しで、この構造体へのポインターを渡します。
    • ミニポート ドライバーに接続されているすべてのフィルター ドライバーは、NDIS 6.30 以降のバージョンの NDIS をサポートします。
    • ミニポート ドライバーにバインドされているすべてのプロトコル ドライバーは、NDIS 6.30 以降のバージョンの NDIS をサポートします。
  • NET_PNP_EVENT構造体の NetEvent メンバーが NetEventSetPower または NetEventQueryPower に設定されている場合、ドライバーは保留中の I/O 要求の完了を待つ必要はありません。
NET_PNP_EVENT構造体の NetEvent メンバーは、プラグ アンド プレイまたは電源管理イベントの種類を識別します。 Buffer には、イベントの種類に固有の情報が含まれています。

要件

要件
サポートされている最小のクライアント NDIS 5.1 および NDIS 6.0 以降でサポートされています。 この構造体の NDIS 5.1 バージョンの詳細については、「NET_PNP_EVENT (NDIS 5.1)」を参照してください。
Header netpnp.h (Ndis.h、Netpnp.h を含む)

こちらもご覧ください

FilterNetPnPEvent

NDIS_BIND_FAILED_NOTIFICATION

NDIS_PORT

NDIS_PROTOCOL_PAUSE_PARAMETERS NDIS_PROTOCOL_RESTART_PARAMETERS

NDIS_RESTART_ATTRIBUTES

NDIS_SWITCH_PARAMETERS

NET_PNP_EVENT_NOTIFICATION

NdisCompleteNetPnPEvent

NdisIMInitializeDeviceInstanceEx

ProtocolBindAdapterEx

ProtocolNetPnPEvent

Hyper-V 拡張可能スイッチ構成のクエリ