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


функция обратного вызова _EVENT_CALLBACK (rtmv2.h)

Обратный вызов RTM_EVENT_CALLBACK используется диспетчером таблиц маршрутизации для информирования клиента о том, что произошло указанное событие.

Синтаксис

_EVENT_CALLBACK EventCallback;

DWORD EventCallback(
  RTM_ENTITY_HANDLE RtmRegHandle,
  RTM_EVENT_TYPE EventType,
  PVOID Context1,
  PVOID Context2
)
{...}

Параметры

RtmRegHandle

Дескриптор клиента, которому диспетчер таблиц маршрутизации отправляет уведомление.

EventType

Указывает событие, о котором диспетчер таблиц маршрутизации уведомляет клиента. Используются следующие значения.

Значение Значение
RTM_ENTITY_REGISTERED
Клиент только что зарегистрирован в диспетчере таблиц маршрутизации.
RTM_ENTITY_DEREGISTERED
Регистрация клиента только что отменена.
RTM_ROUTE_EXPIRED
Истекло время ожидания маршрута.
RTM_CHANGE_NOTIFICATION
Было сделано уведомление об изменении.

Context1

Для вызовов RTM_ENTITY_REGISTERED: содержит дескриптор зарегистрированной сущности.

Для вызовов RTM_ENTITY_DEREGISTERED: содержит дескриптор сущности, которая не зарегистрирована.

Для вызовов RTM_ROUTE_EXPIRED: содержит дескриптор маршрута, для который истекло время ожидания.

Для вызовов RTM_CHANGE_NOTIFICATION: содержит дескриптор уведомления об изменениях.

Context2

Для вызовов RTM_ENTITY_REGISTERED: содержит указатель на структуру RTM_ENTITY_INFO , на которую ссылается дескриптор в Context1. Если клиент должен сохранить эти сведения, клиент должен скопировать их в структуру, которую он выделил.

Для вызовов RTM_ENTITY_DEREGISTERED: содержит указатель на структуру RTM_ENTITY_INFO , на которую ссылается дескриптор в Context1. Если клиент должен сохранить эти сведения, клиент должен скопировать их в структуру, которую он выделил.

Для RTM_ROUTE_EXPIRED вызовов: содержит указатель на структуру RTM_ROUTE_INFO , на которую ссылается дескриптор в Context1. Если клиент должен сохранить эти сведения, клиент должен скопировать их в структуру, которую он выделил.

Для RTM_CHANGE_NOTIFICATION вызовов: содержит контекст уведомления, который был предоставлен клиенту при предыдущем вызове RtmRegisterForChangeNotification.

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

Если диспетчер таблиц маршрутизации выполняет обратный вызов RTM_ROUTE_EXPIRED и клиент возвращает диспетчеру таблиц маршрутизации значение, ERROR_NOT_SUPPORTED, диспетчер таблиц маршрутизации удалит маршрут из таблицы маршрутизации.

Все остальные ошибки, возвращаемые клиентом, игнорируются.

Комментарии

После регистрации клиента для уведомления об изменениях диспетчер таблиц маршрутизации использует этот обратный вызов для информирования клиента о событиях.

Если клиент получает RTM_EVENT_CALLBACK для событий RTM_ENTITY_REGISTERED или RTM_ENTITY_DEREGISTERED, он не должен выполнять вызовы RtmRegisterEntity, RtmDeregisterEntity или RtmGetRegisteredEntities в контексте этого обратного вызова.

Если клиент получает RTM_EVENT_CALLBACK для события RTM_CHANGE_NOTIFICATION, он не должен вызывать RtmRegisterForChangeNotification в контексте этого обратного вызова.

Требования

Требование Значение
Минимальная версия клиента Ни одна версия не поддерживается
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header rtmv2.h

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

RTM_EVENT_TYPE

RtmRegisterEntity