다음을 통해 공유


NotifyStableUnicastIpAddressTable 함수(netioapi.h)

NotifyStableUnicastIpAddressTable 함수는 로컬 컴퓨터에서 안정적인 유니캐스트 IP 주소 테이블을 검색합니다.

구문

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API NotifyStableUnicastIpAddressTable(
  [in]      ADDRESS_FAMILY                           Family,
  [in, out] PMIB_UNICASTIPADDRESS_TABLE              *Table,
  [in]      PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback,
  [in]      PVOID                                    CallerContext,
  [in, out] HANDLE                                   *NotificationHandle
);

매개 변수

[in] Family

검색할 주소 패밀리입니다.

주소 패밀리에 대한 가능한 값은 Winsock2.h 헤더 파일에 나열됩니다. AF_ 주소 패밀리 및 PF_ 프로토콜 패밀리 상수의 값은 동일하므로(예: AF_INETPF_INET) 상수를 사용할 수 있습니다.

Windows Vista 이상용으로 릴리스된 Windows SDK 헤더 파일의 organization 변경되었으며 이 멤버에 대한 가능한 값은 Ws2def.h 헤더 파일에 정의됩니다. Ws2def.h 헤더 파일은 Winsock2.h에 자동으로 포함되며 직접 사용하면 안 됩니다.

현재 지원되는 값은 AF_INET, AF_INET6AF_UNSPEC.

의미
AF_UNSPEC
0
주소 패밀리는 지정되지 않습니다. 이 매개 변수를 지정하면 함수는 IPv4 및 IPv6 항목이 모두 포함된 안정적인 유니캐스트 IP 주소 테이블을 검색합니다.
AF_INET
2
IPv4(인터넷 프로토콜 버전 4) 주소 패밀리입니다. 이 매개 변수를 지정하면 함수는 IPv4 항목만 포함하는 안정적인 유니캐스트 IP 주소 테이블을 검색합니다.
AF_INET6
23
IPv6(인터넷 프로토콜 버전 6) 주소 패밀리입니다. 이 매개 변수를 지정하면 함수는 IPv6 항목만 포함하는 안정적인 유니캐스트 IP 주소 테이블을 검색합니다.

[in, out] Table

MIB_UNICASTIPADDRESS_TABLE 구조체에 대한 포인터입니다. NotifyStableUnicastIpAddressTable이 성공하면 이 매개 변수는 로컬 컴퓨터에서 안정적인 유니캐스트 IP 주소 테이블을 반환합니다.

NotifyStableUnicastIpAddressTable이 I/O 요청이 보류 중임을 나타내는 ERROR_IO_PENDING 반환하면 안정적인 유니캐스트 IP 주소 테이블이 CallerCallback 매개 변수의 함수로 반환됩니다.

[in] CallerCallback

안정적인 유니캐스트 IP 주소 테이블을 사용하여 호출할 함수에 대한 포인터입니다. NotifyStableUnicastIpAddressTableERROR_IO_PENDING 반환하면 I/O 요청이 보류 중임을 나타내는 이 함수가 호출됩니다.

[in] CallerContext

안정적인 유니캐스트 IP 주소 테이블 si를 사용할 수 있는 경우 CallerCallback 매개 변수에 지정된 콜백 함수에 전달된 사용자 컨텍스트입니다.

[in, out] NotificationHandle

안정적인 유니캐스트 IP 주소 테이블을 검색하는 요청을 취소하는 데 사용할 수 있는 핸들을 반환하는 데 사용되는 포인터입니다. NotifyStableUnicastIpAddressTable의 반환 값이 I/O 요청이 보류 중임을 나타내는 ERROR_IO_PENDING 경우 이 매개 변수가 반환됩니다.

반환 값

함수가 즉시 성공하면 반환 값이 NO_ERROR 안정적인 유니캐스트 IP 테이블이 Table 매개 변수에 반환됩니다.

I/O 요청이 보류 중인 경우 함수는 ERROR_IO_PENDING 반환하고 I/O 요청이 안정적인 유니캐스트 IP 주소 테이블로 완료되면 CallerCallback 매개 변수가 가리키는 함수가 호출됩니다.

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

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

설명

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

NotifyStableUnicastIpAddressTable 함수가 즉시 성공하면 반환 값이 NO_ERROR 안정적인 유니캐스트 IP 테이블이 Table 매개 변수에 반환됩니다. 호출 애플리케이션은 MIB_UNICASTIPADDRESS_TABLE 정보가 더 이상 필요하지 않은 경우 FreeMibTable 함수를 사용하여 Table 매개 변수가 가리키는 메모리를 해제해야 합니다.

주문형 전화 접속 주소를 제외한 모든 유니캐스트 IP 주소는 기본 설정 상태인 경우에만 안정적인 것으로 간주됩니다. 일반적인 유니캐스트 IP 주소 항목의 경우 IpDadStateP 참조로 설정된 IP 주소에 대한 MIB_UNICASTIPADDRESS_ROW DadState 멤버에 해당합니다. 모든 주문형 전화 접속 주소는 자체 안정성 메트릭을 정의합니다. 현재 이 함수에서 고려하는 유일한 주문형 전화 접속 주소는 로컬 컴퓨터의 Teredo 클라이언트에서 사용하는 유니캐스트 IP 주소입니다.

Family 매개 변수는 AF_INET, AF_INET6 또는 AF_UNSPEC 설정해야 합니다.

NotifyStableUnicastIpAddressTable이 성공하고 NO_ERROR 반환하면 Table 매개 변수는 로컬 컴퓨터에서 안정적인 유니캐스트 IP 주소 테이블을 반환합니다.

NotifyStableUnicastIpAddressTable이 I/O 요청이 보류 중임을 나타내는 ERROR_IO_PENDING 반환하면 안정적인 유니캐스트 IP 주소 테이블이 CallerCallback 매개 변수의 함수로 반환됩니다.

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

Teredo 사용하는 유니캐스트 IP 주소를 로컬 컴퓨터에서 사용할 수 있지만 안정적인(정규화된) 상태가 아닌 경우 NotifyStableUnicastIpAddressTable은 ERROR_IO_PENDING 반환하고, 결국 CallerCallback 매개 변수에서 함수를 호출하여 안정적인 유니캐스트 IP 주소 테이블이 반환됩니다. Teredo 주소를 사용할 수 없거나 안정적인 상태이고 다른 유니캐스트 IP 주소가 안정적인 상태인 경우 CallerCallback 매개 변수의 함수는 호출되지 않습니다.

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

매개 변수 Description
IN PVOID CallerContext 알림을 등록할 때 NotifyStableUnicastIpAddressTable 함수에 전달된 CallerContext 매개 변수입니다.
IN PMIB_UNICASTIPADDRESS_TABLE AddressTable 로컬 컴퓨터에서 안정적인 유니캐스트 IP 주소 테이블을 포함하는 MIB_UNICASTIPADDRESS_TABLE 대한 포인터입니다.
 

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

콜백 표시에 사용되는 AddressTable 매개 변수가 가리키는 메모리는 운영 체제에서 할당됩니다. 알림을 받는 애플리케이션은 MIB_UNICASTIPADDRESS_TABLE 정보가 더 이상 필요하지 않은 경우 FreeMibTable 함수를 사용하여 AddressTable 매개 변수가 가리키는 메모리를 해제해야 합니다.

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

시스템이 종료되거나 다시 부팅되면 변경 알림에 대한 등록이 유지되지 않습니다.

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

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

요구 사항

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

추가 정보

CancelMibChangeNotify2

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

FreeMibTable

GetTeredoPort

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

IP 도우미 함수 참조

InitializeUnicastIpAddressEntry

MIB_NOTIFICATION_TYPE

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyTeredoPortChange

NotifyUnicastIpAddressChange

SetUnicastIpAddressEntry