다음을 통해 공유


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

추가 정보

CancelMibChangeNotify2

GetIfEntry2

GetIfStackTable

GetIfTable2

GetInvertedIfStackTable

GetIpInterfaceEntry

InitializeIpInterfaceEntry

MIB_IF_ROW2

MIB_IF_TABLE2

MIB_IPINTERFACE_ROW

MIB_NOTIFICATION_TYPE

SetIpInterfaceEntry