NDIS_SWITCH_REPORT_FILTERED_NET_BUFFER_LISTS コールバック関数 (ndis.h)

ReportFilteredNetBufferLists 関数は、拡張可能スイッチ拡張機能によってポート配信から削除または除外された 1 つ以上のネットワーク パケットについて報告します。 各ネットワーク パケットは、 NET_BUFFER_LIST 構造を介して定義されます。

構文

NDIS_SWITCH_REPORT_FILTERED_NET_BUFFER_LISTS NdisSwitchReportFilteredNetBufferLists;

void NdisSwitchReportFilteredNetBufferLists(
  [in]           NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in]           PUNICODE_STRING ExtensionGuid,
  [in]           PUNICODE_STRING ExtensionFriendlyName,
  [in]           NDIS_SWITCH_PORT_ID PortId,
  [in]           UINT32 Flags,
  [in]           UINT32 NumberOfNetBufferLists,
  [in]           PNET_BUFFER_LIST NetBufferLists,
  [in, optional] PUNICODE_STRING FilterReason
)
{...}

パラメーター

[in] NdisSwitchContext

Hyper-V 拡張可能スイッチ拡張機能がアタッチされている拡張可能スイッチ モジュールのハンドルを含むNDIS_SWITCH_CONTEXT値。 拡張機能が NdisFGetOptionalSwitchHandlers を呼び出すと、このハンドルは NdisSwitchContext パラメーターを介して返されます。

[in] ExtensionGuid

拡張機能の GUID を含む UNICODE_STRING 構造体へのポインター。 NDIS は、NDIS_FILTER_ATTACH_PARAMETERS構造体の FilterModuleGuidName メンバーでこの GUID を指定します。 NDIS は、拡張機能の FilterAttach 関数を呼び出すときに、AttachParameters パラメーターでこの構造体へのポインターを渡します。

[in] ExtensionFriendlyName

拡張機能のわかりやすい名前を含む UNICODE_STRING 構造体へのポインター。 この名前は、拡張機能の INF ファイルの AddService ディレクティブDisplayName エントリによって定義されます。

[in] PortId

拡張可能スイッチ ポートを指定するNDIS_SWITCH_PORT_ID値。 詳細については、「解説」を参照してください。

[in] Flags

UINT32 値。 NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_IS_INCOMING フラグを指定すると、 PortId メンバーがドロップされたパケットのソースを定義することを示します。 指定しない場合、PortId メンバーは宛先拡張可能スイッチ ポートを定義します。 詳細については、「解説」を参照してください。

[in] NumberOfNetBufferLists

NetBufferLists パラメーターで指定されたNET_BUFFER_LIST構造体の数を含む UINT32 値。

[in] NetBufferLists

NET_BUFFER_LIST構造体のリンクされたリストへのポインター。

[in, optional] FilterReason

パケットのドロップまたは除外の理由のわかりやすい説明を含む、 UNICODE_STRING 構造体へのポインター。 詳細については、「解説」を参照してください。

戻り値

なし

解説

拡張機能が拡張可能スイッチ ポートへのパケットの配信を除外する場合は、 ReportFilteredNetBufferLists を呼び出す必要があります。 この関数が呼び出されると、拡張可能スイッチ モジュールはカウンターをインクリメントし、破棄または除外されたパケットのイベントをログに記録します。 破棄または除外されたパケットセットのイベントをログに記録すると、拡張可能スイッチ モジュールは FilterReason パラメーターで指定されたわかりやすい説明を使用します。

拡張機能では、次の方法でパケットの配信を除外できます。

  • 拡張機能は、拡張可能スイッチ ドライバー スタックを介してパケットを転送する代わりに、パケットを完了します。 たとえば、拡張機能は NdisFSendNetBufferListsComplete を呼び出して、NDIS が FilterSendNetBufferLists 関数を呼び出したときに検査したパケットをドロップできます。
  • 拡張機能は、パケットの宛先ポートを変更します。 たとえば、パケットの宛先ポートのNDIS_SWITCH_PORT_DESTINATION構造で IsExcluded メンバーを TRUE に設定する場合、拡張機能は ReportFilteredNetBufferLists を呼び出す必要があります。

    拡張可能スイッチ ポートへのパケット配信を除外する方法の詳細については、「Extensible Switch Destination Ports へのパケット配信を除外する」を参照してください。

この拡張機能は、 ReportFilteredNetBufferLists を呼び出すときに、次のガイドラインに従う必要があります。
  • NetBufferLists パラメーターは、NET_BUFFER_LIST構造体のリンクリストを指定しました。 これらの構造体で指定されたすべてのパケットは、同じポートから受信または送信され、同じ理由で破棄または除外されている必要があります。
  • 送信元ポートに基づくポリシーが原因でパケットが破棄される場合は、NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_IS_INCOMING フラグを指定する必要があります。 また、拡張機能では 、PortId パラメーターを、パケットの受信元ポートの識別子に設定する必要があります。
  • 宛先ポートに基づくポリシーが原因でパケットが破棄される場合は、NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_IS_INCOMING フラグを指定しないでください。 また、拡張機能では 、PortId パラメーターを、パケットの送信先となるポートの識別子に設定する必要があります。

要件

要件
サポートされている最小のクライアント NDIS 6.30 以降でサポートされています。
対象プラットフォーム デスクトップ
Header ndis.h (Ndis.h を含む)
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

FilterAttach

INF AddService ディレクティブ

NDIS_FILTER_ATTACH_PARAMETERS

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

UNICODE_STRING