Функция NotifyTeredoPortChange
Функция notifyTeredoPortChange регистрирует драйвер для получения уведомлений об изменениях номера порта UDP, используемых клиентом Teredo для порта службы Teredo на локальном компьютере.
Синтаксис
NETIOAPI_API NotifyTeredoPortChange(
_In_ PTEREDO_PORT_CHANGE_CALLBACK Callback,
_In_ PVOID CallerContext,
_In_ BOOLEAN InitialNotification,
_Inout_ HANDLE * NotificationHandle
);
Параметры
обратного вызова [in]
Указатель на функцию для вызова при изменении клиентского порта Teredo. Эта функция вызывается при получении уведомления об изменении порта Teredo.CallerContext [in]
Контекст пользователя, передаваемый функции обратного вызова, указанной в параметре обратного вызова при получении уведомления об изменении порта Teredo.InitialNotification [in]
Значение, указывающее, следует ли вызывать обратный вызов сразу после завершения регистрации уведомления об изменении драйвера. Это первоначальное уведомление не указывает на то, что произошло изменение клиентского порта Teredo. Этот параметр обеспечивает подтверждение регистрации обратного вызова.NotificationHandle [in, out]
Указатель, используемый для возврата дескриптора, который драйвер может позже использовать для отмены регистрации уведомления об изменении драйвера. При успешном выполнении дескриптор уведомлений возвращается в этом параметре. При возникновении ошибки возвращается NULL.
Возвращаемое значение
NotifyTeredoPortChange возвращает STATUS_SUCCESS, если функция выполнена успешно.
Если функция завершается ошибкой, NotifyTeredoPortChange возвращает один из следующих кодов ошибок:
Возвращаемый код | Описание |
---|---|
ERROR_INVALID_HANDLE | Произошла внутренняя ошибка, из-за которой обнаружен недопустимый дескриптор. |
STATUS_INVALID_PARAMETER | Недопустимый параметр был передан функции. Эта ошибка возвращается, если параметр обратного вызова является указателем NULL. |
STATUS_NOT_ENOUGH_MEMORY | Недостаточно памяти. |
Другие | Используйте функцию FormatMessage, чтобы получить строку сообщения для возвращаемой ошибки. |
Замечания
Вызов функции обратного вызова, указанной в параметре обратного вызова , сериализуется. Функция обратного вызова должна быть определена как функция типа VOID. Параметры, передаваемые функции обратного вызова, включают следующие.
Параметр | Описание |
---|---|
IN PVOID CallerContext |
Параметр CallerContext, передаваемый функции NotifyTeredoPortChange при регистрации драйвера для уведомлений об изменениях. |
порта USHORT |
Номер порта UDP, используемый клиентом Teredo. Этот параметр равен нулю, если для параметра MIB_NOTIFICATION_TYPENotificationType для функции обратного вызова задано значение 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.