NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT 콜백 함수(ndis.h)

Hyper-V 확장 가능 스위치 확장은 SetNetBufferListSwitchContext 함수를 호출하여 확장 할당 컨텍스트 버퍼를 NET_BUFFER_LIST 연결합니다. 그런 다음 컨텍스트가 수신에 설정되어 있고 다른 확장이 자체 컨텍스트를 설정했는지 여부에 관계없이 송신 시 NBL이 다시 표시되는지 여부를 포함하여 해당 NET_BUFFER_LIST 수명 동안 컨텍스트에 액세스할 수 있습니다. 이 유형의 액세스는 기존 NDIS NET_BUFFER_LIST 컨텍스트 API(NdisAllocateNetBufferListContext/ NET_BUFFER_LIST_CONTEXT_DATA_START)를 사용할 수 없습니다. 다른 확장은 원래 NDIS 컨텍스트에 대한 포인터가 손실되는 NET_BUFFER_LIST 소유권을 가져올 때 NDIS 컨텍스트를 할당할 수 있기 때문입니다.

구문

NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT NdisSwitchSetNetBufferListSwitchContext;

NDIS_STATUS NdisSwitchSetNetBufferListSwitchContext(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      PNDIS_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE ContextType,
  [in]      PVOID Context
)
{...}

매개 변수

[in] NdisSwitchContext

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

[in, out] NetBufferList

컨텍스트 연결을 수신하는 단일 패킷에 대한 NET_BUFFER_LIST 구조체에 대한 포인터입니다.

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

[in] ContextType

컨텍스트를 검색할 때 키로 사용되는 NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE 사용하여 선언된 컨텍스트 형식입니다.

[in] Context

지정된 ContextType을 사용하여 검색할 수 있는 컨텍스트에 대한 포인터입니다.

반환 값

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

설명

SetNetBufferListSwitchContext API를 사용하면 확장이 수신 시 NET_BUFFER_LIST 컨텍스트를 연결하고 송신 시 검색할 수 있습니다. 그럼에도 불구하고 확장은 송신에 존재하지 않는 수신 컨텍스트에 복원력이 있어야 합니다. 스위치 컨텍스트는 NET_BUFFER_LIST 복제될 때 유지되지 않으므로 수신과 송신 간에 NET_BUFFER_LIST 복제되는 시나리오에서는 NET_BUFFER_LIST 원래의 스위치 컨텍스트가 없습니다.

확장은 컨텍스트의 수명을 관리해야 합니다. 한 가지 방법은 NDIS NET_BUFFER_LIST 컨텍스트( NdisAllocateNetBufferListContext를 사용하거나 확장이 NET_BUFFER_LIST 풀을 소유하는 경우 미리 구성됨)를 할당하고 SetNetBufferListSwitchContext 를 사용하여 컨텍스트 형식 식별자를 NDIS NET_BUFFER_LIST 컨텍스트와 연결하는 것입니다. NBL이 완료되면 확장은 NDIS NET_BUFFER_LIST 컨텍스트를 해제할 수 있습니다( NdisFreeNetBufferListContext를 사용하거나 확장에서 시작된 경우 NET_BUFFER_LIST 자체 해제).

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

요구 사항

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

추가 정보

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

GetNetBufferListSwitchContext

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest