Функция 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
);
Параметры
Семья [в]
Семейство адресов для регистрации драйвера для уведомлений об изменениях.Возможные значения семейства адресов перечислены в файле заголовка 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]
Контекст пользователя, передаваемый функции обратного вызова, указанной в параметре Callback при получении уведомления интерфейса.InitialNotification [in]
Значение типа , указывающее, следует ли вызывать обратный вызов сразу после завершения регистрации уведомления об изменениях. Это начальное уведомление не указывает на то, что в ИНТЕРФЕЙСе IP произошло изменение. Назначение этого параметра для подтверждения регистрации обратного вызова.NotificationHandle [вход, выход]
Указатель, используемый для возврата дескриптора, который позже можно использовать для отмены регистрации уведомления об изменениях. При успешном выполнении в этом параметре возвращается дескриптор уведомления. При возникновении ошибки возвращается значение 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.
Вызов функции обратного вызова, указанной в параметре Callback , сериализуется. Функция обратного вызова должна быть определена как функция типа VOID. К параметрам, передаваемым функции обратного вызова, относятся следующие.
Параметр | Описание |
---|---|
IN PVOID CallerContext |
Параметр CallerContext , который передается функции NotifyIpInterfaceChange при регистрации драйвера для уведомлений об изменениях. |
IN PMIB_IPINTERFACE_ROW Row ( НЕОБЯЗАТЕЛЬНО) |
Указатель на запись MIB_IPINTERFACE_ROW для измененного интерфейса. Этот параметр является указателем NULL , если значение MIB_NOTIFICATION_TYPE , передаваемое в параметре NotificationType в функцию обратного вызова, имеет значение MibInitialNotification. Такая ситуация может возникнуть только в том случае, если параметр InitialNotification, передаваемый в NotifyIpInterfaceChange, при регистрации драйвера для уведомлений об изменениях. |
IN MIB_NOTIFICATION_TYPE NotificationType |
Тип уведомления. Этот член может быть одним из значений типа перечисления MIB_NOTIFICATION_TYPE . |
Чтобы отменить регистрацию драйвера для уведомлений об изменениях, вызовите функцию CancelMibChangeNotify2 , передав параметр NotificationHandle , возвращаемый NotifyIpInterfaceChange .
Требования
Целевая платформа |
Универсальное |
Версия |
Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
Заголовок |
Netioapi.h (включая Netioapi.h) |
Библиотека |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |