OID_PM_ADD_PROTOCOL_OFFLOAD

NDIS プロトコル ドライバーは、セットとして、OID_PM_ADD_PROTOCOL_OFFLOAD OID を使用して、ネットワーク アダプターに電源管理のプロトコル オフロードを追加します。 NDIS_OID_REQUEST 構造体の InformationBuffer メンバーには、NDIS_PM_PROTOCOL_OFFLOAD 構造体へのポインターが含まれています。

解説

NDIS 6.20 以降のプロトコル ドライバーは、OID_PM_ADD_PROTOCOL_OFFLOAD OID を使用して、ネットワーク アダプターに電源管理のプロトコル オフロードを追加します。 要求が成功すると、ネットワーク アダプターは、低電力状態のとき、オフロードされたプロトコルに必要な応答パケットを生成して送信する必要があります。

プロトコル ドライバーは、基になるネットワーク アダプターに正常にバインドされた後、およびプロトコルをオフロードするために必要なデータ (インターフェイスの IP アドレスなど) が含まれるとすぐに、プロトコルをオフロードできます。 プロトコル ドライバーは、以前に追加された WOL パターンやオフロードされたプロトコルの拒否など、他の電源管理イベント通知に応答してプロトコルをオフロードする場合もあります。

NDIS と同じミニポート アダプターにバインドされている他のプロトコル ドライバーの競合状態を回避するため、NDIS は、ネットワーク アダプターを低電力状態に設定し始めた後、そのネットワーク アダプターに別のプロトコルをオフロードしようとして失敗します。 たとえば、NDIS プロトコル ドライバーがそのネットワーク アダプターの NetEventSetPower イベント通知を処理するコンテキストでプロトコルをオフロードしようとすると、NDIS では要求が失敗します。

NDIS は、上部の NDIS ドライバーにこの OID 要求を送信するか、上部のドライバーへの要求を完了する前に、NDIS_PM_PROTOCOL_OFFLOAD 構造体の ULONG ProtocolOffloadId メンバーを一意の値に設定します。 プロトコル ドライバーと NDIS は、OID_PM_REMOVE_PROTOCOL_OFFLOAD OID 要求でこのプロトコル オフロード識別子を使用して、基になるネットワーク アダプターからプロトコル オフロードを削除します。

プロトコル オフロード識別子は、ネットワーク アダプターに設定されている各プロトコル オフロードの一意の値です。 ただし、プロトコル オフロード識別子は、すべてのネットワーク アダプターでグローバルに一意ではありません。

NDIS または基になるネットワーク アダプターがオフロードを拒否した場合、NDIS_STATUS_PM_OFFLOAD_REJECTED の状態表示が生成されます。 これは、OID の NDIS_STATUS_SUCCESS が返された後に発生する場合があります。 NDIS_STATUS_INDICATION 構造体の StatusBuffer メンバーには、拒否されたプロトコル オフロードの ULONG プロトコル オフロード識別子が含まれています。

ネイティブ 802.11 ワイヤレス LAN ミニポート ドライバーがこの OID を使用する方法の詳細については、「低電力プロトコル オフロードの追加と削除」を参照してください。

ミニポート ドライバーは、次の要求の状態コードのいずれかを返します。

NDIS_STATUS_SUCCESS
要求されたプロトコル オフロードが正常に追加されました。 NDIS_PM_PROTOCOL_OFFLOAD 構造体の ProtocolOffloadId メンバーには、プロトコル オフロード識別子が含まれています。

NDIS_STATUS_PENDING
要求の完了が保留中です。 NDIS は、要求が完了した後、呼び出し元の OID 要求完了ハンドラーに最終的な状態コードと結果を渡すことになります。

NDIS_STATUS_PM_PROTOCOL_OFFLOAD_LIST_FULL
プロトコル オフロード リストがいっぱいで、ネットワーク アダプターが別のプロトコル オフロードを追加できないため、要求が失敗しました。

NDIS_STATUS_RESOURCES
NDIS または基になるネットワーク アダプターは、リソースの不足のため、新しいプロトコル オフロードを追加できませんでした。

NDIS_STATUS_INVALID_PARAMETER
NDIS_PM_PROTOCOL_OFFLOAD 構造体の 1 つ以上のパラメーターが無効でした。

NDIS_STATUS_BUFFER_TOO_SHORT
情報バッファーが短すぎました。 NDIS は、NDIS_OID_REQUEST 構造体の DATA.SET_INFORMATION.BytesNeeded メンバーを必要な最小バッファー サイズに設定します。

NDIS_STATUS_NOT_SUPPORTED
ネットワーク アダプターは、要求されたプロトコル オフロードをサポートしていません。

NDIS_STATUS_FAILURE
上記の理由以外の理由で要求が失敗しました。

要件

バージョン

NDIS 6.20 以降でサポートされています。 ミニポート ドライバーには必須です。

ヘッダー

Ntddndis.h (Ndis.h を含む)

関連項目

NDIS_OID_REQUEST

NDIS_PM_PROTOCOL_OFFLOAD

NDIS_STATUS_INDICATION

NDIS_STATUS_PM_OFFLOAD_REJECTED

OID_PM_REMOVE_PROTOCOL_OFFLOAD

省電力プロトコル オフロードの追加と削除