NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 공용 구조체(ndis.h)

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 공용 구조체는 하나 이상의 Hyper-V 확장 가능한 스위치 포트에 패킷을 전달하기 위한 정보를 지정합니다.

이 정보는 패킷 NET_BUFFER_LIST 구조의 OOB(대역 외) 데이터에 포함되어 있습니다.

구문

typedef union _NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO {
  UINT64 AsUINT64;
  struct {
    UINT32 NumAvailableDestinations : 16;
    UINT32 SourcePortId : 16;
    UINT32 SourceNicIndex : 8;
    UINT32 NativeForwardingRequired : 1;
#if ...
    UINT32 Reserved1 : 1;
#else
    UINT32 Reserved1 : 2;
#endif
    UINT32 IsPacketDataSafe : 1;
    UINT32 SafePacketDataSize : 12;
    UINT32 IsPacketDataUncached : 1;
    UINT32 IsSafePacketDataUncached : 1;
    UINT32 Reserved2 : 7;
  };
} NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO, *PNDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO;

멤버

AsUINT64

전체 64비트 NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 값입니다.

NumAvailableDestinations

NET_BUFFER_LIST 구조 내에서 사용되지 않는 확장 가능한 스위치 대상 포트 요소의 수를 지정하는 값입니다. 자세한 내용은 주의 섹션을 참조하세요.

SourcePortId

NET_BUFFER_LIST 시작된 원본 확장 가능한 스위치 포트의 식별자입니다.

SourceNicIndex

SourcePortId 멤버가 지정한 확장 가능한 스위치 포트에 연결된 원본 네트워크 어댑터의 인덱스를 지정하는 UINT32 값입니다.

이 인덱스 값에 대한 자세한 내용은 네트워크 어댑터 인덱스 값을 참조하세요.

NativeForwardingRequired

이 멤버가 TRUE로 설정된 경우 패킷은 NVGRE 패킷이고 Hyper-V 확장 가능 스위치의 Hyper-V HNV(네트워크 가상화) 구성 요소는 이 패킷을 전달합니다. 자세한 내용은 하이브리드 전달을 참조하세요.

이 플래그는 확장에서 작성해서는 안 됩니다.

참고 이 플래그는 NDIS 6.40 이상에서만 사용할 수 있습니다.

Reserved1

이 멤버는 나중에 NDIS에서 사용하도록 예약되어 있습니다.

이 멤버는 나중에 NDIS에서 사용하도록 예약되어 있습니다.

IsPacketDataSafe

이 멤버가 TRUE로 설정된 경우 모든 패킷 데이터는 신뢰할 수 있는 호스트 메모리에서 가져옵니다.

SafePacketDataSize

신뢰할 수 있는 호스트 메모리에 있는 패킷 데이터의 연속 바이트 수를 지정하는 값입니다. 이 값은 패킷 데이터의 시작부터 바이트 단위로 표시됩니다. SafePacketDataSize 값 이후의 나머지 패킷 데이터(있는 경우)는 Hyper-V 자식 및 부모 파티션에서 액세스하는 신뢰할 수 없는 공유 메모리에 있습니다.

자세한 내용은 주의 섹션을 참조하세요.

참고 이 멤버는 IsPacketDataSafe 멤버가 FALSE로 설정된 경우에만 유효합니다.

IsPacketDataUncached

이 플래그를 설정하지 않으면 전체 패킷 데이터가 캐시됩니다. 설정된 경우 데이터의 일부 또는 전부가 캐시 되지 않습니다 . 설정되면 IsSafePacketDataUncached 필드를 검사 적어도 SafePacketData 부분이 캐시되었는지 확인합니다.

IsSafePacketDataUncached

IsPacketDataUncached 플래그가 설정된 경우 이 필드는 패킷의 SafePacketData 부분이 캐시되는지 여부를 나타냅니다. 이 경우 캐시되는 바이트 수에 대해서는 SafePacketDataSize 필드를 참조하세요.

Reserved2

이 멤버는 나중에 NDIS에서 사용하도록 예약되어 있습니다.

설명

확장 가능한 스위치 확장은 NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL 매크로를 사용하여 NET_BUFFER_LIST구조에서NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 공용 구조체에 액세스할 수 있습니다.

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 공용 구조체의 NumAvailableDestinations 멤버는 NET_BUFFER_LIST구조 내에서 사용하지 않는 확장 가능한 스위치 대상 포트 요소의 수를 지정합니다. 확장 가능한 각 스위치 대상 포트는 NET_BUFFER_LIST 구조체의 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조 내에서 NDIS_SWITCH_PORT_DESTINATION 요소에 의해 지정됩니다. 확장 가능한 스위치 확장은 GetNetBufferListDestinations를 호출하여 NET_BUFFER_LIST 구조에서 현재 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 가져옵니다.

NativeForwardingRequired 멤버는 패킷이 NVGRE 패킷인지 여부를 지정합니다. TRUE이면 패킷은 NVGRE 패킷이고 전달 확장은 배열에서 대상 포트를 추가하거나 제외할 수 있지만 패킷의 전달 대상 포트 배열을 결정하지 않습니다. 자세한 내용은 하이브리드 전달을 참조하세요.

IsPacketDataUncached 플래그는 확장 가능한 스위치 확장이 패킷 데이터의 일부 또는 전부가 캐시되었는지 여부를 결정하는 데 도움이 될 수 있습니다. 이 플래그가 설정되면 데이터의 일부 또는 전부가 캐시 되지 않으며IsSafePacketDataUncached 플래그는 안전한 패킷 데이터 파트가 캐시되는지 여부를 확장에 알려줍니다. 안전한 패킷 데이터가 캐시되면 SafePacketDataSize 멤버는 캐시되는 바이트 수를 지정합니다.

SafePacketDataSize 는 Hyper-V 부모 파티션의 부모 운영 체제에 있는 로컬 또는 신뢰할 수 있는 메모리에 있는 패킷 데이터의 크기를 지정합니다. 이 메모리는 자식 파티션에서 액세스할 수 없습니다. 따라서 해당 파티션에서 실행되는 게스트 운영 체제의 비동기 업데이트로부터 "안전"으로 간주됩니다.

확장 가능한 스위치 확장에 패킷 데이터를 검사하기 위해 더 신뢰할 수 있는 공간이 필요한 경우 다음 단계를 수행해야 합니다.

  1. 확장은 NET_BUFFER_LIST 및 NET_BUFFER 구조를 할당하여 패킷의 NET_BUFFER_LIST 구조를 복제해야 합니다. 그런 다음 확장은 NdisCopyFromNetBufferToNetBuffer 를 호출하여 패킷의 NET_BUFFER 구조를 복제합니다. 이 함수가 성공적으로 완료되면 패킷의 데이터가 신뢰할 수 있는 메모리에 복사됩니다.
  2. 확장은 CopyNetBufferListInfo 를 호출하여 패킷의 OOB 데이터를 중복된 패킷에 복사해야 합니다.
  3. 원본 패킷이 복제된 후 확장은 NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL 매크로를 사용하여 중복된 패킷에서 NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 공용 구조체를 가져와야 합니다. 확장은 IsPacketDataSafe 멤버를TRUE로 설정해야 합니다.
확장 가능한 스위치 인터페이스에서 패킷을 복제하는 방법에 대한 자세한 내용은 원본 패킷 트래픽을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.30 이상에서 지원됩니다.
머리글 ndis.h(Ndis.h 포함)

추가 정보

확장 전달

Hyper-V 확장 가능한 스위치 포트에 패킷 전달

실제 네트워크 어댑터에 패킷 전달

GetNetBufferListDestinations

하이브리드 전달

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER_LIST

NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL

Hyper-V 확장 가능 스위치 개요