NDIS_SWITCH_REPORT_FILTERED_NET_BUFFER_LISTS 콜백 함수(ndis.h)

ReportFilteredNetBufferLists 함수는 확장 가능한 스위치 확장에 의해 포트 배달에서 삭제되거나 제외된 하나 이상의 네트워크 패킷에 대해 보고합니다. 각 네트워크 패킷은 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를 호출해야 합니다.

    확장 가능한 스위치 포트에 대한 패킷 배달을 제외하는 방법에 대한 자세한 내용은 확장 가능한 스위치 대상 포트로 패킷 배달 제외를 참조하세요.

확장은 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 이상에서 지원됩니다.
대상 플랫폼 데스크톱
머리글 ndis.h(Ndis.h 포함)
IRQL <= DISPATCH_LEVEL

추가 정보

FilterAttach

INF AddService 지시문

NDIS_FILTER_ATTACH_PARAMETERS

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

UNICODE_STRING