NotifyIpInterfaceChange 함수
NotifyIpInterfaceChange 함수는 로컬 컴퓨터의 모든 IP 인터페이스, IPv4 인터페이스 또는 IPv6 인터페이스 변경에 대한 알림을 받을 드라이버를 등록합니다.
구문
NETIOAPI_API NotifyIpInterfaceChange(
_In_ ADDRESS_FAMILY Family,
_In_ PIPINTERFACE_CHANGE_CALLBACK Callback,
_In_ PVOID CallerContext,
_In_ BOOLEAN InitialNotification,
_Inout_ HANDLE *NotificationHandle
);
매개 변수
가족 [in]
변경 알림을 위해 드라이버를 등록할 주소 패밀리입니다.주소 패밀리에 사용할 수 있는 값은 Winsock2.h 헤더 파일에 나열됩니다. AF_ 주소 패밀리 및 PF_ 프로토콜 패밀리 상수의 값은 동일하므로(예: AF_INET 및 PF_INET) 두 상수 중 하나를 사용할 수 있습니다.
Windows Vista 이상 버전의 Windows 운영 체제에서 Family 매개 변수에 대한 가능한 값은 Ws2def.h 헤더 파일에 정의됩니다. Ws2def.h 헤더 파일은 Netioapi.h에 자동으로 포함되며 Ws2def.h를 직접 사용하면 안 됩니다.
현재 주소 패밀리에 대해 지원되는 값은 다음과 같습니다.
AF_INET
IPv4 주소 패밀리입니다. 이 값을 지정하면 이 함수는 IPv4 변경 알림에 대해서만 알림을 받도록 드라이버를 등록합니다.AF_INET6
IPv6 주소 패밀리입니다. 이 값을 지정하면 이 함수는 IPv6 변경 알림에 대해서만 드라이버를 등록합니다.AF_UNSPEC
주소 패밀리는 지정되지 않습니다. 이 값을 지정하면 이 함수는 IPv4 및 IPv6 변경 내용 모두에 대해 알림을 받을 드라이버를 등록합니다.
콜백 [in]
변경이 발생할 때 호출할 함수에 대한 포인터입니다. 이 함수는 인터페이스 알림이 수신될 때 호출됩니다.CallerContext [in]
인터페이스 알림을 받을 때 콜백 매개 변수에 지정된 콜백 함수에 전달되는 사용자 컨텍스트입니다.InitialNotification [in]
변경 알림 등록이 완료된 직후 콜백을 호출해야 하는지 여부를 나타내는 값입니다. 이 초기 알림은 IP 인터페이스에 대한 변경이 발생했음을 나타내지 않습니다. 콜백이 등록되었음을 확인하는 이 매개 변수의 목적입니다.NotificationHandle [in, out]
나중에 변경 알림을 등록 취소하는 데 사용할 수 있는 핸들을 반환하는 데 사용되는 포인터입니다. 성공하면 이 매개 변수에 알림 핸들이 반환됩니다. 오류가 발생하면 NULL 이 반환됩니다.
반환 값
NotifyIpInterfaceChange 는 함수가 성공하면 STATUS_SUCCESS 반환합니다.
함수가 실패하면 NotifyIpInterfaceChange 는 다음 오류 코드 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
ERROR_INVALID_HANDLE | 잘못된 핸들이 발생한 내부 오류가 발생했습니다. |
STATUS_INVALID_PARAMETER | 잘못된 매개 변수가 함수에 전달되었습니다. Family 매개 변수가 AF_INET, AF_INET6 또는 AF_UNSPEC 않은 경우 이 오류가 반환됩니다. |
STATUS_NOT_ENOUGH_MEMORY | 메모리가 부족했습니다. |
기타 | FormatMessage 함수를 사용하여 반환된 오류에 대한 메시지 문자열을 가져옵니다. |
설명
드라이버는 Family 매개 변수를 AF_INET, AF_INET6 또는 AF_UNSPEC 설정해야 합니다.
콜백 매개 변수에 지정된 콜 백 함수의 호출이 serialize됩니다. 콜백 함수는 VOID 형식의 함수로 정의되어야 합니다. 콜백 함수에 전달되는 매개 변수는 다음과 같습니다.
매개 변수 | Description |
---|---|
IN PVOID CallerContext |
변경 알림을 위해 드라이버를 등록할 때 NotifyIpInterfaceChange 함수에 전달되는 CallerContext 매개 변수입니다. |
IN PMIB_IPINTERFACE_ROW Row OPTIONAL |
변경된 인터페이스의 MIB_IPINTERFACE_ROW 항목에 대한 포인터입니다. 이 매개 변수는 NotificationType 매개 변수에서 콜백 함수에 전달되는 MIB_NOTIFICATION_TYPE 값이 MibInitialNotification으로 설정된 경우 NULL 포인터입니다. 이 상황은 변경 알림을 위해 드라이버를 등록할 때 NotifyIpInterfaceChange에 전달된 InitialNotification 매개 변수가 TRUE로 설정된 경우에만 발생할 수 있습니다. |
IN MIB_NOTIFICATION_TYPE NotificationType |
알림 유형입니다. 이 멤버는 MIB_NOTIFICATION_TYPE 열거형 형식의 값 중 하나일 수 있습니다. |
변경 알림에 대한 드라이버를 등록 취소하려면 CancelMibChangeNotify2 함수를 호출하여 NotifyIpInterfaceChange가 반환하는 NotificationHandle 매개 변수를 전달합니다.
요구 사항
대상 플랫폼 |
유니버설 |
버전 |
Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다. |
헤더 |
Netioapi.h(Netioapi.h 포함) |
라이브러리 |
Netio.lib |
Irql |
< DISPATCH_LEVEL |