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(네트워크 가상화) 구성 요소는 이 패킷을 전달합니다. 자세한 내용은 하이브리드 전달을 참조하세요.
이 플래그는 확장에서 작성해서는 안 됩니다.
Reserved1
이 멤버는 나중에 NDIS에서 사용하도록 예약되어 있습니다.
이 멤버는 나중에 NDIS에서 사용하도록 예약되어 있습니다.
IsPacketDataSafe
이 멤버가 TRUE로 설정된 경우 모든 패킷 데이터는 신뢰할 수 있는 호스트 메모리에서 가져옵니다.
SafePacketDataSize
신뢰할 수 있는 호스트 메모리에 있는 패킷 데이터의 연속 바이트 수를 지정하는 값입니다. 이 값은 패킷 데이터의 시작부터 바이트 단위로 표시됩니다. SafePacketDataSize 값 이후의 나머지 패킷 데이터(있는 경우)는 Hyper-V 자식 및 부모 파티션에서 액세스하는 신뢰할 수 없는 공유 메모리에 있습니다.
자세한 내용은 주의 섹션을 참조하세요.
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 부모 파티션의 부모 운영 체제에 있는 로컬 또는 신뢰할 수 있는 메모리에 있는 패킷 데이터의 크기를 지정합니다. 이 메모리는 자식 파티션에서 액세스할 수 없습니다. 따라서 해당 파티션에서 실행되는 게스트 운영 체제의 비동기 업데이트로부터 "안전"으로 간주됩니다.
확장 가능한 스위치 확장에 패킷 데이터를 검사하기 위해 더 신뢰할 수 있는 공간이 필요한 경우 다음 단계를 수행해야 합니다.
- 확장은 NET_BUFFER_LIST 및 NET_BUFFER 구조를 할당하여 패킷의 NET_BUFFER_LIST 구조를 복제해야 합니다. 그런 다음 확장은 NdisCopyFromNetBufferToNetBuffer 를 호출하여 패킷의 NET_BUFFER 구조를 복제합니다. 이 함수가 성공적으로 완료되면 패킷의 데이터가 신뢰할 수 있는 메모리에 복사됩니다.
- 확장은 CopyNetBufferListInfo 를 호출하여 패킷의 OOB 데이터를 중복된 패킷에 복사해야 합니다.
- 원본 패킷이 복제된 후 확장은 NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL 매크로를 사용하여 중복된 패킷에서 NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 공용 구조체를 가져와야 합니다. 확장은 IsPacketDataSafe 멤버를TRUE로 설정해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | NDIS 6.30 이상에서 지원됩니다. |
머리글 | ndis.h(Ndis.h 포함) |
추가 정보
NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기