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

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

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

NetEventQueryRemoveDevice

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

NetEventCancelRemoveDevice

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

NetEventReconfigure

ネットワーク コンポーネントの構成が変更されたことを示します。 たとえば、ユーザーがネットワークとダイヤルアップ接続フォルダーを介して 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 イベントがすべての中間ドライバーの仮想ミニポートに適用されることを除きます。 たとえば、中間ドライバーは、ユーザーが無効になると NetEventIMReEnableDevice イベントを受け取り、デバイス マネージャーまたは別のソースから 1 つの仮想ミニポートを有効にします。 中間ドライバーの電源管理の例については、GitHub の Windows ドライバー サンプル リポジトリで入手できる NDIS MUX 中間ドライバーと通知オブジェクト ドライバーのサンプルを参照してください。

NetEventNDKEnable

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

NetEventNDKDisable

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

NetEventFilterPreDetach

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

NetEventBindFailed

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

NetEventSwitchActivate

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

NetEventInhibitBindsAbove

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

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

NetEventAllowBindsAbove

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

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

NetEventRequirePause

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

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

NetEventAllowStart

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

  • このイベントは 、ミニポートInitializeEx が開始された後にのみ発行でき、 ミニポートHaltEx が返された後に発行することはできません。
  • このイベントはブロックしているため、デッドロックを引き起こすコンテキストによって発行されるべきではありません。
  • このイベントの発行中にロックを保持することはできません。
このイベントは 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 として定義) のポート番号の配列が含まれています。 配列内の要素数を計算するには、NET_PNP_EVENT_NOTIFICATION の NetPnPEvent メンバーで指定されたNET_PNP_EVENT構造体にある BufferLengthメンバーの値を sizeof(NDIS_PORT_NUMBER) で除算します。

NetEventIMReEnableDevice

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

NetEventNDKEnable

バッファー メンバーは NULL です

NetEventNDKDisable

バッファー メンバーは NULL です

NetEventFilterPreDetach

バッファー メンバーは 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 メンバーは、プラグ アンド プレイまたは電源管理イベントの種類を識別します。 バッファーには、イベントの種類に固有の情報が含まれています。

要件

   
サポートされている最小のクライアント 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 拡張可能スイッチ構成のクエリ