NDIS_SWITCH_COPY_NET_BUFFER_LIST_INFO 콜백 함수(ndis.h)

Hyper-V 확장은 CopyNetBufferListInfo 함수를 호출하여 원본 패킷의 NET_BUFFER_LIST 구조에서 대상 패킷의 NET_BUFFER_LIST 구조로 OOB(out-of-band) 전달 컨텍스트를 복사합니다. 이 컨텍스트에는 확장 가능한 스위치 원본 포트 및 네트워크 어댑터 정보가 포함됩니다. 확장 가능한 스위치 대상 포트 정보도 복사할 수 있습니다.

구문

NDIS_SWITCH_COPY_NET_BUFFER_LIST_INFO NdisSwitchCopyNetBufferListInfo;

NDIS_STATUS NdisSwitchCopyNetBufferListInfo(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST DestNetBufferList,
  [in]      PNET_BUFFER_LIST SrcNetBufferList,
  [in]      UINT32 Flags
)
{...}

매개 변수

[in] NdisSwitchContext

확장이 연결된 확장 가능한 스위치 모듈의 핸들을 포함하는 NDIS_SWITCH_CONTEXT 값입니다. 확장이 NdisFGetOptionalSwitchHandlers를 호출하면 이 핸들은 NdisSwitchContext 매개 변수를 통해 반환됩니다.

[in, out] DestNetBufferList

확장 가능한 스위치 전달 컨텍스트가 복사되는 대상 패킷의 NET_BUFFER_LIST 구조체에 대한 포인터입니다.

[in] SrcNetBufferList

확장 가능한 스위치 전달 컨텍스트가 복사되는 원본 패킷에 대한 NET_BUFFER_LIST 구조체에 대한 포인터입니다.

[in] Flags

UINT32 값입니다. NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS 플래그를 지정하면 함수는 확장 가능한 스위치 대상 포트를 원본 패킷에서 대상 패킷으로 복사합니다.

원본 패킷의 NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 공용 구조체에 포함된 데이터는 항상 대상 패킷의 확장 가능한 스위치 전달 컨텍스트에 복사됩니다. 이 데이터에는 패킷이 시작된 네트워크 어댑터 연결의 원본 포트 식별자 및 인덱스가 포함됩니다. 대상 패킷에 복사되는 확장 가능한 스위치 대상 포트 수에 따라 NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 공용 구조체의 NumAvailableDestinations 멤버가 대상 패킷에서 업데이트됩니다.

전달 컨텍스트에 대한 자세한 내용은 Hyper-V 확장 가능한 전환 전달 컨텍스트를 참조하세요.

반환 값

호출이 성공하면 함수는 NDIS_STATUS_SUCCESS 반환합니다. 그렇지 않으면 Ndis.h에 정의된 NDIS_STATUS_Xxx 오류 코드를 반환합니다.

설명

확장 가능한 스위치 확장은 CopyNetBufferListInfo 함수를 호출하여 원본 패킷에서 대상 패킷으로 OOB 데이터를 복사합니다. 이 데이터에는 다음이 포함됩니다.

  • 원본 패킷의 NET_BUFFER_LIST 구조의 NetBufferListInfo 배열의 데이터입니다.
  • 원본 패킷의 확장 가능한 스위치 전달 컨텍스트에서 데이터를 NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO .
  • 원본 패킷의 확장 가능한 스위치 전달 컨텍스트에서 확장 가능한 스위치 대상 포트에 대한 데이터입니다.
    참고 이 데이터는 NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS 플래그가 지정된 경우에만 복사됩니다.
     
확장에서 CopyNetBufferListInfo를 호출하기 전에 다음 단계에 따라 대상 패킷의 NET_BUFFER_LIST 구조를 준비해야 합니다.
  1. 확장은 먼저 원본 패킷의 NET_BUFFER_LIST 구조에서 파생된 대상 패킷에 대한 NET_BUFFER_LIST 구조를 초기화해야 합니다.

    예를 들어 확장은 NdisAllocateCloneNetBufferList 를 호출하여 원본 패킷의 전체 복사본을 만들 수 있습니다. 또한 확장은 NdisAllocateFragmentNetBufferList 를 호출하여 원본 패킷 조각의 복사본만 만들 수 있습니다. 자세한 내용은 파생 NET_BUFFER_LIST 구조를 참조하세요.

  2. 확장은 대상 패킷에 대한 확장 가능한 스위치 전달 컨텍스트를 할당하려면 AllocateNetBufferListForwardingContext 함수를 호출해야 합니다. 이 데이터는 패킷의 원본 및 대상 포트와 같은 OOB 확장 가능한 스위치 전달 정보를 저장하는 데 사용됩니다.
참고 확장이 원본 패킷을 만들거나 복제하는 경우 확장은 이전에 패킷에 대한 AllocateNetBufferListForwardingContext 함수를 호출해야 합니다. 확장이 확장 가능한 스위치 드라이버 스택을 통해 필터링하는 원본 패킷에는 할당된 확장 가능한 스위치 전달 컨텍스트가 이미 포함되어 있습니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.30 이상에서 지원됩니다.
대상 플랫폼 데스크톱
머리글 ndis.h(Ndis.h 포함)
IRQL <= DISPATCH_LEVEL

추가 정보

AllocateNetBufferListForwardingContext

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NdisAllocateCloneNetBufferList

NdisAllocateFragmentNetBufferList

NdisFGetOptionalSwitchHandlers