NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS 콜백 함수(ndis.h)

Hyper-V 확장 가능 스위치 확장은 UpdateNetBufferListDestinations 함수를 호출하여 확장이 확장 가능한 여러 스위치 대상 포트가 포함된 패킷에 대해 수정한 내용을 커밋합니다. 함수는 패킷의 NET_BUFFER_LIST 구조의 OOB(out-of-band) 확장 가능한 스위치 전달 컨텍스트에 이러한 수정 내용을 저장합니다.

구문

NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS NdisSwitchUpdateNetBufferListDestinations;

NDIS_STATUS NdisSwitchUpdateNetBufferListDestinations(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      UINT32 NumberOfNewDestinations,
  [in]      PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY Destinations
)
{...}

매개 변수

[in] NdisSwitchContext

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

[in, out] NetBufferList

단일 패킷에 대한 NET_BUFFER_LIST 구조체에 대한 포인터입니다.

참고 이 구조체에는 확장 가능한 전환 전달 컨텍스트가 포함되어야 합니다. 확장이 패킷을 만들거나 복제한 경우 AllocateNetBufferListForwardingContext 함수를 호출하여 이전에 이 구조를 할당했어야 합니다.
 

[in] NumberOfNewDestinations

패킷에 추가된 새 대상 포트 수를 지정하는 UINT32 값입니다.

[in] Destinations

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조체에 대한 포인터입니다. 이 구조체는 패킷의 확장 가능한 스위치 대상 포트를 지정합니다.

참고 확장은 GetNetBufferListDestinations 함수에 대한 이전 호출을 통해 이 구조를 수신했습니다.
 

반환 값

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

설명

확장 가능한 스위치 확장은 GetNetBufferListDestinations 함수를 호출하여 패킷에 대한 확장 가능한 스위치 대상 포트의 배열을 가져옵니다. 함수가 성공적으로 반환되면 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조체에 대한 포인터가 포함된 Destinations 매개 변수를 통해 배열을 가져옵니다. 이 배열의 각 요소는 패킷의 대상 포트를 지정하는 NDIS_SWITCH_PORT_DESTINATION 구조체로 형식이 지정됩니다.

확장이 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조를 가져온 후 확장은 다음을 수행할 수 있습니다.

확장이 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조에서 대상 포트를 추가하거나 수정하는 경우 확장은 UpdateNetBufferListDestinations 함수를 호출하여 해당 변경 내용을 패킷의 NET_BUFFER_LIST 구조에 커밋해야 합니다.
참고 전달 확장만 UpdateNetBufferListDestinations 를 호출하여 여러 대상 포트가 있는 패킷에 대해 추가되거나 변경된 대상 포트를 커밋할 수 있습니다. 이러한 유형의 확장에 대한 자세한 내용은 확장 전달을 참조하세요.
 
UpdateNetBufferListDestinations에 대한 호출이 NDIS_STATUS_SUCCESS 반환하는 경우 확장 가능한 스위치 인터페이스는 패킷의 송신 또는 수신 작업이 완료될 때까지 대상 포트에서 참조되는 확장 가능한 스위치 포트 및 네트워크 어댑터 연결이 삭제되지 않도록 보장합니다.

또한 대상 포트에 대한 변경 내용이 커밋된 후에는 대상 포트를 제거할 수 없으며 대상 포트의 NDIS_SWITCH_PORT_DESTINATION 구조의 IsExcluded 멤버만 변경할 수 있습니다. 자세한 내용은 확장 가능한 스위치 대상 포트에 패킷 배달 제외를 참조하세요.

참고 성능상의 이유로 확장은 UpdateNetBufferListDestinations 함수를 호출하여 하나의 대상 포트만 있는 패킷에 변경 내용을 커밋하면 안 됩니다. 대신 확장은 AddNetBufferListDestination 을 호출하여 패킷의 대상 포트에 변경 내용을 커밋합니다.
 
확장 가능한 스위치 전달 컨텍스트에 대한 자세한 내용은 Hyper-V 확장 가능한 전환 전달 컨텍스트를 참조하세요.

요구 사항

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

추가 정보

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

OID_SWITCH_NIC_DELETE