다음을 통해 공유


NotifyTeredoPortChange 함수(netioapi.h)

NotifyTeredoPortChange 함수는 로컬 컴퓨터의 Teredo 서비스 포트에 대해 Teredo 클라이언트에서 사용하는 UDP 포트 번호 변경에 대한 알림을 받도록 등록합니다.

구문

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API NotifyTeredoPortChange(
  [in]      PTEREDO_PORT_CHANGE_CALLBACK Callback,
  [in]      PVOID                        CallerContext,
  [in]      BOOLEAN                      InitialNotification,
  [in, out] HANDLE                       *NotificationHandle
);

매개 변수

[in] Callback

Teredo 클라이언트 포트 변경이 발생할 때 호출할 함수에 대한 포인터입니다. 이 함수는 Teredo 포트 변경 알림이 수신될 때 호출됩니다.

[in] CallerContext

Teredo 포트 변경 알림을 받을 때 콜백 매개 변수에 지정된 콜백 함수에 전달되는 사용자 컨텍스트입니다.

[in] InitialNotification

변경 알림 등록이 완료된 직후 콜백을 호출해야 하는지 여부를 나타내는 값입니다. 이 초기 알림은 Teredo 클라이언트 포트에 대한 변경이 발생했음을 나타내지 않습니다. 콜백이 등록되었음을 확인하는 이 매개 변수의 목적입니다.

[in, out] NotificationHandle

나중에 변경 알림을 등록 취소하는 데 사용할 수 있는 핸들을 반환하는 데 사용되는 포인터입니다. 성공하면 이 매개 변수에 알림 핸들이 반환됩니다. 오류가 발생하면 NULL 이 반환됩니다.

반환 값

함수가 성공하면 반환 값이 NO_ERROR.

함수가 실패하면 반환 값은 다음 오류 코드 중 하나입니다.

반환 코드 설명
ERROR_INVALID_HANDLE
잘못된 핸들이 발생한 내부 오류가 발생했습니다.
ERROR_INVALID_PARAMETER
잘못된 매개 변수가 함수에 전달되었습니다. 콜백 매개 변수가 NULL 포인터인 경우 이 오류가 반환됩니다.
ERROR_NOT_ENOUGH_MEMORY
메모리가 부족했습니다.
기타
FormatMessage를 사용하여 반환된 오류에 대한 메시지 문자열을 가져옵니다.

설명

NotifyTeredoPortChange 함수는 Windows Vista 이상에서 정의됩니다.

GetTeredoPort 함수를 사용하여 Teredo 서비스 포트에 대해 Teredo 클라이언트에서 사용하는 초기 UDP 포트 번호를 검색할 수 있습니다.

Teredo 포트는 동적이며 로컬 컴퓨터에서 Teredo 클라이언트가 다시 시작될 때마다 변경할 수 있습니다. notifyTeredoPortChange 함수를 호출하여 Teredo 서비스 포트가 변경될 때 알림을 받도록 애플리케이션을 등록할 수 있습니다.

콜백 매개 변수에 지정된 콜 함수의 호출이 serialize됩니다. 콜백 함수는 VOID 형식의 함수로 정의되어야 합니다. 콜백 함수에 전달되는 매개 변수는 다음과 같습니다.

매개 변수 Description
IN PVOID CallerContext 알림을 등록할 때 NotifyTeredoPortChange 함수에 전달된 CallerContext 매개 변수입니다.
USHORT 포트에서 현재 Teredo 클라이언트에서 사용하는 UDP 포트 번호입니다. NotificationType 매개 변수에서 콜백 함수에 전달된 MIB_NOTIFICATION_TYPE 값이 MibInitialNotification으로 설정된 경우 이 매개 변수는 0입니다. 알림을 등록할 때 NotifyTeredoPortChange에 전달된 InitialNotification 매개 변수가 TRUE로 설정된 경우에만 발생할 수 있습니다.
IN MIB_NOTIFICATION_TYPE NotificationType 알림 유형입니다. 이 멤버는 Netioapi.h 헤더 파일에 정의된 MIB_NOTIFICATION_TYPE 열거형 형식의 값 중 하나일 수 있습니다.
 

콜백 매개 변수에 지정된 콜백 함수는 NotifyTeredoPortChange 함수를 호출하는 애플리케이션과 동일한 프로세스에서 구현되어야 합니다. 콜백 함수가 별도의 DLL에 있는 경우 변경 알림을 등록하기 위해 NotifyTeredoPortChange 함수를 호출하기 전에 DLL을 로드해야 합니다.

변경 알림을 등록하기 위해 NotifyTeredoPortChange 함수가 호출되면 애플리케이션이 변경 알림 등록을 취소하거나 애플리케이션이 종료될 때까지 이러한 알림이 계속 전송됩니다. 애플리케이션이 종료되면 시스템은 변경 알림에 대한 등록을 자동으로 등록 취소합니다. 애플리케이션이 종료되기 전에 변경 알림을 명시적으로 등록 취소하는 것이 좋습니다.

변경 알림에 대한 등록은 시스템 종료 또는 다시 부팅에서 유지되지 않습니다.

변경 알림을 등록 취소하려면 NotifyTeredoPortChange에서 반환된 NotificationHandle 매개 변수를 전달하는 CancelMibChangeNotify2 함수를 호출합니다.

애플리케이션은 현재 동일한 NotificationHandle 매개 변수에 대한 알림 콜백 함수를 실행 중인 스레드의 컨텍스트에서 CancelMibChangeNotify2 함수를 호출할 수 없습니다. 그렇지 않으면 해당 콜백을 실행하는 스레드가 교착 상태가 발생합니다. 따라서 CancelMibChangeNotify2 함수는 알림 콜백 루틴의 일부로 직접 호출되어서는 안 됩니다. 좀 더 일반적인 상황에서 CancelMibChangeNotify2 함수를 실행하는 스레드는 알림 콜백 작업을 실행하는 스레드가 유사한 교착 상태를 초래하기 때문에 대기할 리소스를 소유할 수 없습니다. CancelMibChangeNotify2 함수는 알림 콜백을 수신하는 스레드에 종속성이 없는 다른 스레드에서 호출되어야 합니다.

또한 Teredo 클라이언트는 RFC 4380에 정의된 대로 멀티캐스트 IPv4 주소 224.0.0.253에서 전송된 멀티캐스트 트래픽을 수신 대기하는 데 정적 UDP 포트 3544를 사용합니다. 자세한 내용은 http://www.ietf.org/rfc/rfc4380.txt를 참조하세요.

NotifyTeredoPortChange 함수는 들어오는 트래픽과 나가는 Teredo 트래픽을 허용하도록 적절한 예외를 구성하기 위해 주로 방화벽 애플리케이션에서 사용됩니다.

NotifyStableUnicastIpAddressTable 함수는 주로 Teredo 클라이언트를 사용하는 애플리케이션에서 사용됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 netioapi.h(Iphlpapi.h 포함)
라이브러리 Iphlpapi.lib
DLL Iphlpapi.dll

추가 정보

CancelMibChangeNotify2

GetTeredoPort

NotifyStableUnicastIpAddressTable