NDIS ウェイク理由状態表示機能のレポート

NDIS 6.30 以降、ミニポート ドライバーは、次のいずれかの原因で発生するウェイクアップ イベントを報告する NDIS ウェイク理由の状態表示 (NDIS_STATUS_PM_WAKE_REASON) を発行できるかどうかを報告する必要があります。

  • ネットワーク アダプターは、Wake-on-LAN (WOL) パターンに一致するパケットを受信しました。 これには、OID_GEN_CURRENT_PACKET_FILTER のオブジェクト識別子 (OID) セット要求によって指定された受信フィルターに一致するパケットの受信が含まれます。

    注: この種類のウエイクアップ理由の状態表示には、受信したパケットをネットワーク アダプターが保存できる必要があります。 ドライバーは、状態表示内で受信したパケットを返す必要があります。

  • ネットワーク アダプターは、802.11 アクセス ポイント (AP) からの関連付け解除やモバイル ブロードバンド (MB) ショート メッセージ サービス (SMS) メッセージの受信など、メディア固有のイベントを検出しました。

  • ネットワーク アダプターは、WOL パターンまたはメディアの種類 (メディアに依存しないイベント) に固有ではない別の有効なイベントを検出しました。 たとえば、ミニポート ドライバーは、メディア接続または切断を検出するネットワーク アダプターを有効にした場合、NDIS_STATUS_PM_WAKE_REASON 状態表示を発行します。

注: NDIS ウェイク理由の状態表示のサポートは、モバイル ブロードバンド (MB) ミニポート ドライバーではオプションとなります。

NDIS がドライバーの MiniportInitializeEx 関数を呼び出すと、ミニポート ドライバーは、次の手順に従って、そのウェイク理由の状態表示機能を報告します。

  1. ミニポート ドライバーは、下層ハードウェアの電源管理機能を使用して NDIS_PM_CAPABILITIES 構造体を初期化します。

    ウェイク理由の状態表示のサポートを有効にするには、ミニポート ドライバーは、次のように NDIS_PM_CAPABILITIES構造体のメンバーを設定する必要があります。

    • ミニポート ドライバーは、構造体の Header メンバー内の NDIS_PM_CAPABILITIES 構造体のリビジョンと長さに対して、NDIS_PM_CAPABILITIES_REVISION_2 と NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2 を指定する必要があります。

    • ネットワーク アダプターがシステムのウェイク アップ イベントの原因となった受信パケットを格納できる場合、ミニポート ドライバーは、この構造体の Flags メンバー内の NDIS_PM_WAKE_PACKET_INDICATION_SUPPORTED フラグを設定します。

      このフラグが設定されている場合、ネットワーク アダプターは、アダプターがウェイクアップ イベントを生成する原因となった受信パケットを保存できる必要があります。 さらに、ミニポート ドライバーは、ネットワーク アダプターが最大出力状態に遷移した後、このパケットで次の操作を行う必要があります。

      • ミニポート ドライバーは、NdisMIndicateReceiveNetBufferLists を呼び出すことで、パケットを表示できる必要があります。

      • ミニポート ドライバーは、NDIS_STATUS_PM_WAKE_REASON 状態表示を発行できる必要があり、表示と共にパケットを渡す必要があります。

    • ミニポート ドライバーは、MaxWoLPacketSaveBuffer メンバーを、システム ウェイクアップ イベントの原因となった WOL パケットを含むバッファーの最大サイズ (バイト単位) に設定します。

      MaxWoLPacketSaveBuffer メンバーの値は、ネットワーク メディアの最大伝送単位 (MTU) ヘッダーとメディア アクセス制御 (MAC) ヘッダーのサイズ (バイト単位) 以下である必要があります。 ドライバーは、OID_GEN_MAXIMUM_FRAME_SIZE の OID クエリ要求を通じて MTU サイズを報告します。

    • ミニポート ドライバーは、アダプターがネットワーク インターフェイスに接続されたときにウェイクアップ イベントを生成するなど、ネットワーク アダプターがサポートするメディアに依存しないウェイクアップ イベントに SupportedWakeUpEvents を設定します。

    • ミニポート ドライバーは、 MediaSpecificWakeUpEvents を、ネットワーク アダプターがサポートするメディア固有のウェイクアップ イベントに設定します。 これらのイベントには、802.11 アダプターが AP との関連付けが解除されたときの、ウェイクアップ イベントの生成が含まれます。

  2. ミニポート ドライバーは、NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 構造体を初期化し、初期化された NDIS_PM_CAPABILITIES 構造体のアドレスに PowerManagementCapabilitiesEx メンバーを設定します。

  3. ミニポート ドライバーは、電源管理機能を登録する NdisMSetMiniportAttributes 関数を呼び出します。 ミニポート ドライバーがこの関数を呼び出すと、MiniportAttributes パラメーターを NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 構造体のアドレスに設定します。

ミニポート ドライバーがウェイク理由の状態表示機能を報告するときに使用するメソッドは、電源管理機能を報告するための NDIS 6.20 メソッドに基づいています。 このメソッドの詳細については、「電源管理機能のレポート」を参照してください。

アダプターの初期化プロセスの詳細については、「ミニポート アダプターの初期化」を参照してください。

電源管理機能を報告する方法の詳細については、「電源管理機能のレポート」を参照してください。