Hyper-V 확장 가능 스위치 전달 컨텍스트 데이터 형식
Hyper-V 확장 가능한 스위치 데이터 경로를 트래버스하는 각 패킷의 NET_BUFFER_LIST 구조에는 OOB(대역 외) 데이터가 포함됩니다. 이 데이터는 패킷이 시작된 원본 포트와 패킷 배달을 위한 하나 이상의 대상 포트를 지정합니다. 이 OOB 데이터를 확장 가능한 전환 전달 컨텍스트라고 합니다.
패킷의 NET_BUFFER_LIST 구조 내에서 확장 가능한 스위치 전달 컨텍스트에 액세스하도록 선언된 데이터 형식은 다음과 같습니다.
NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO
패킷의 전달 특성을 포함하는 64비트 공용 구조체입니다. 이 데이터에는 패킷이 시작된 원본 포트 및 네트워크 어댑터 연결에 대한 식별자가 포함됩니다. 이 데이터에는 대상 포트 배열에서 사용할 수 있는 사용되지 않는 요소 수도 포함됩니다.
확장 가능한 스위치 확장은 NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL 매크로를 사용하여 이 데이터에 액세스할 수 있습니다.
NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY
이 구조체는 패킷의 대상 포트 배열을 정의합니다. 이 배열의 각 요소는 NDIS_SWITCH_PORT_DESTINATION 구조체로 서식이 지정됩니다.
NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조체에는 총 요소 수의 현재 수와 배열에서 사용된 요소 수를 지정하는 멤버가 포함됩니다.
확장 가능한 스위치 확장은 GetNetBufferListDestinations 함수를 호출하여 이 배열을 가져올 수 있습니다. 드라이버가 여러 대상 포트가 있는 패킷에 대해 배열의 요소를 추가하거나 수정하는 경우 UpdateNetBufferListDestinations 함수를 호출해야 합니다. 이 함수는 패킷의 전달 컨텍스트에서 해당 변경 내용을 대상 포트 배열에 커밋합니다.
참고 대상 포트가 하나만 있는 패킷에 변경 내용을 커밋하려면 드라이버가 AddNetBufferListDestination 함수를 호출하는 것이 더 효율적입니다.
NDIS_SWITCH_PORT_DESTINATION
이 구조체는 패킷의 대상 포트를 정의합니다. 단일 대상 포트가 있는 패킷의 경우 대상 포트 배열에 하나의 NDIS_SWITCH_PORT_DESTINATION 요소만 있습니다. 여러 대상 포트가 있는 패킷의 경우 배열에 이러한 요소 중 하나 이상이 있습니다.
확장 가능한 스위치 확장이 GetNetBufferListDestinations 를 호출하여 패킷의 대상 포트 배열을 가져온 후 NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX 매크로를 사용하여 배열의 개별 요소에 액세스할 수 있습니다.