Поделиться через


Функция NotifyUnicastIpAddressChange

Функция NotifyUnicastIpAddressChange регистрирует драйвер, чтобы получать уведомления об изменениях во всех одноадресных IP-интерфейсах, одноадресных IPv4-адресах или одноадресных IPv6-адресах на локальном компьютере.

Синтаксис

NETIOAPI_API NotifyUnicastIpAddressChange(
  _In_    ADDRESS_FAMILY                     Family,
  _In_    PUNICAST_IPADDRESS_CHANGE_CALLBACK Callback,
  _In_    PVOID                              CallerContext,
  _In_    BOOLEAN                            InitialNotification,
  _Inout_ HANDLE                             *NotificationHandle
);

Параметры

  • Family [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.

  • Обратный вызов [в]
    Указатель на функцию, вызываемую при изменении. Эта функция вызывается при получении уведомления об одноадресном IP-адресе.

  • CallerContext [in]
    Контекст пользователя, который передается функции обратного вызова, указанной в параметре Callback при получении уведомления интерфейса.

  • InitialNotification [in]
    Значение типа , указывающее, следует ли вызывать обратный вызов сразу после завершения регистрации уведомления об изменениях. Это начальное уведомление не указывает, что произошло изменение одноадресного IP-адреса. Этот параметр предоставляет подтверждение регистрации обратного вызова.

  • NotificationHandle [вход, выход]
    Указатель, который используется для возврата дескриптора, который драйвер позже может использовать для отмены регистрации уведомления об изменении драйвера. При успешном выполнении в этом параметре возвращается дескриптор уведомления. При возникновении ошибки возвращается значение NULL .

Возвращаемое значение

NotifyUnicastIpAddressChange возвращает STATUS_SUCCESS, если функция выполнена успешно.

Если функция завершается ошибкой, NotifyUnicastIpAddressChange возвращает один из следующих кодов ошибок:

Код возврата Описание
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 , который передается функции NotifyUnicastIpAddressChange при регистрации драйвера для уведомлений об изменениях.

IN PMIB_UNICASTIPADDRESS_ROW строка НЕОБЯЗАТЕЛЬНЫЙ

Указатель на запись MIB_UNICASTIPADDRESS_ROW для ip-адреса одноадресной рассылки, который был изменен. Этот параметр является указателем NULL , если значение MIB_NOTIFICATION_TYPE , передаваемое в параметре NotificationType функции обратного вызова, имеет значение MibInitialNotification. Такая ситуация может возникнуть только в том случае, если параметр InitialNotification , передаваемый в NotifyUnicastIpAddressChange , был установлен в значение TRUE при регистрации драйвера для уведомлений об изменениях.

IN MIB_NOTIFICATION_TYPE NotificationType

Тип уведомления. Этот элемент может быть одним из значений из типа перечисления MIB_NOTIFICATION_TYPE .

Чтобы отменить регистрацию драйвера для уведомлений об изменениях, вызовите функцию CancelMibChangeNotify2 , передав параметр NotificationHandle , возвращаемый NotifyUnicastIpAddressChange .

Требования

Целевая платформа

Универсальное

Версия

Доступно в Windows Vista и более поздних версиях операционных систем Windows.

Заголовок

Netioapi.h (включая Netioapi.h)

Библиотека

Netio.lib

IRQL

< DISPATCH_LEVEL

См. также раздел

CancelMibChangeNotify2

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

InitializeUnicastIpAddressEntry

MIB_NOTIFICATION_TYPE

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyStableUnicastIpAddressTable

SetUnicastIpAddressEntry