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


Управление дескрипторами

Диспетчер таблиц маршрутизации поддерживает счетчик ссылок для всех сведений, которые он хранит. Это не позволяет диспетчеру таблиц маршрутизации возвращать клиенту все дескрипторы в память, которая была освобождена. Каждый раз, когда дескриптор возвращается вызывающей объекту как явный дескриптор или как часть информационной структуры, например RTM_DEST_INFO, количество ссылок для объекта, соответствующего дескриптору, увеличивается. При освобождении дескриптора или информационной структуры соответствующий счетчик ссылок уменьшается. Когда число ссылок становится нулевым, объект освобождается.

Функции RtmGetDestInfo, RtmGetEntityInfo, RtmGetRouteInfo и RtmGetNextHopInfo возвращают информационные структуры. Эти функции соответствуют функциям RtmReleaseDestInfo, RtmReleaseEntityInfo, RtmReleaseRouteInfo и RtmRelaseNextHopInfo соответственно.

Примечание

Функция RtmReleaseChangedDests должна использоваться для освобождения дескрипторов, возвращенных вызовом RtmGetChangedDests. Не используйте RtmReleaseDests для измененных структур назначения.

 

Если клиент должен сохранить определенный дескриптор в информационной структуре, освобождая остальные, клиент может вызвать RtmReferenceHandles с этим дескриптором, прежде чем освободить структуру информации. Затем дескриптор можно освободить путем вызова функций RtmReleaseDestInfo, RtmReleaseEntityInfo, RtmReleaseRouteInfo и RtmRelaseNextHopInfo .