Функция NotifyTeredoPortChange
Функция NotifyTeredoPortChange регистрирует драйвер для уведомления об изменениях номера порта UDP, который клиент Teredo использует для порта службы Teredo на локальном компьютере.
Синтаксис
NETIOAPI_API NotifyTeredoPortChange(
_In_ PTEREDO_PORT_CHANGE_CALLBACK Callback,
_In_ PVOID CallerContext,
_In_ BOOLEAN InitialNotification,
_Inout_ HANDLE * NotificationHandle
);
Параметры
Обратный вызов [в]
Указатель на функцию, вызываемую при изменении порта клиента Teredo. Эта функция вызывается при получении уведомления об изменении порта Teredo.CallerContext [in]
Контекст пользователя, передаваемый функции обратного вызова, указанной в параметре Callback при получении уведомления об изменении порта Teredo.InitialNotification [in]
Значение типа , указывающее, следует ли вызывать обратный вызов сразу после завершения регистрации уведомления об изменении драйвера. Это начальное уведомление не указывает, что произошло изменение порта клиента Teredo. Этот параметр предоставляет подтверждение регистрации обратного вызова.NotificationHandle [вход, выход]
Указатель, который используется для возврата дескриптора, который драйвер позже может использовать для отмены регистрации уведомления об изменении драйвера. При успешном выполнении в этом параметре возвращается дескриптор уведомления. При возникновении ошибки возвращается значение NULL .
Возвращаемое значение
NotifyTeredoPortChange возвращает STATUS_SUCCESS, если функция выполнена успешно.
Если функция завершается сбоем, NotifyTeredoPortChange возвращает один из следующих кодов ошибок:
Код возврата | Описание |
---|---|
ERROR_INVALID_HANDLE | Произошла внутренняя ошибка при обнаружении недопустимого дескриптора. |
STATUS_INVALID_PARAMETER | В функцию передан недопустимый параметр. Эта ошибка возвращается, если параметр Callback является указателем NULL . |
STATUS_NOT_ENOUGH_MEMORY | Недостаточно памяти. |
Другое | Используйте функцию FormatMessage , чтобы получить строку сообщения для возвращаемой ошибки. |
Комментарии
Вызов функции обратного вызова, указанной в параметре Callback , сериализуется. Функция обратного вызова должна быть определена как функция типа VOID. Параметры, передаваемые функции обратного вызова, включают следующие.
Параметр | Описание |
---|---|
IN PVOID CallerContext |
Параметр CallerContext , который передается функции NotifyTeredoPortChange при регистрации драйвера для уведомлений об изменениях. |
В порте USHORT |
Номер порта UDP, который в настоящее время использует клиент Teredo. Этот параметр равен нулю, если значение MIB_NOTIFICATION_TYPE , передаваемое в параметре NotificationType функции обратного вызова, имеет значение MibInitialNotification. Такая ситуация может возникнуть только в том случае, если параметр InitialNotification , передаваемый в NotifyTeredoPortChange , был установлен в значение TRUE при регистрации драйвера для уведомлений об изменениях. |
IN MIB_NOTIFICATION_TYPE NotificationType |
Тип уведомления. Этот элемент может быть одним из значений из типа перечисления MIB_NOTIFICATION_TYPE . |
Драйвер может использовать функцию GetTeredoPort для получения начального номера порта UDP, который клиент Teredo использовал для порта службы Teredo.
Порт Teredo является динамическим и может измениться при перезапуске клиента Teredo на локальном компьютере. Драйвер может зарегистрироваться для получения уведомлений при изменении порта службы Teredo, вызвав функцию NotifyTeredoPortChange .
Клиент Teredo также использует статический UDP-порт 3544 для прослушивания многоадресного трафика, который отправляется по многоадресной IPv4-адресу 224.0.0.253, как определено в RFC 4380. Дополнительные сведения см. в разделе Teredo: туннелирование IPv6 через преобразование сетевых адресов (NATs) UDPthrough.
Функция NotifyTeredoPortChange используется в основном драйверами брандмауэра для настройки соответствующих исключений для включения входящего и исходящего трафика Teredo.
Чтобы отменить регистрацию драйвера для уведомлений об изменениях, вызовите функцию CancelMibChangeNotify2 , передав параметр NotificationHandle , возвращаемый функцией NotifyTeredoPortChange .
Требования
Целевая платформа |
Универсальное |
Версия |
Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
Заголовок |
Netioapi.h (включая Netioapi.h) |
Библиотека |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |