Функция RxFinalizeVNetRoot (fcb.h)
RxFinalizeVNetRoot завершает указанную структуру V_NET_ROOT. Вызывающий объект должен иметь монопольную блокировку в таблице netname, связанной с объектом устройства.
Синтаксис
BOOLEAN RxFinalizeVNetRoot(
[out] OUT PV_NET_ROOT ThisVNetRoot,
[in] IN BOOLEAN RecursiveFinalize,
[in] IN BOOLEAN ForceFinalize
);
Параметры
[out] ThisVNetRoot
Указатель на структуру V_NET_ROOT для завершения.
[in] RecursiveFinalize
Значение, указывающее, следует ли выполнять рекурсивное завершение. Этот параметр в не используется в настоящее время.
[in] ForceFinalize
Значение, указывающее, следует ли принудительно завершать, независимо от количества ссылок.
Если параметр ForceFinalize имеет значение FALSE, то элемент NodeReferenceCount структуры V_NET_ROOT, на который указывает ThisVNetRoot , должен иметь значение 1 для завершения V_NET_ROOT.
Возвращаемое значение
RxFinalizeVNetRoot возвращает значение TRUE при успешном выполнении или FALSE , если завершение не произошло:
Комментарии
Подпрограмма RxFinalizeVNetRoot обычно не вызывается драйверами мини-перенаправления сети напрямую. RDBSS вызывает эту подпрограмму внутренне, когда количество ссылок на V_NET_ROOT уменьшается до 1.
RxFinalizeVNetRoot также вызывается подпрограммой RxFinalizeConnection , если для параметра Levelдля RxFinalizeConnection задано значение TRUE. RxFinalizeConnection обычно вызывается драйвером сетевого мини-перенаправления в ответ на получение пользовательского запроса IOCTL из пользовательского режима. Например, пользователь может выполнить из командной строки "NET USE x: /d", чтобы удалить общую папку. Этот запрос будет сопоставлен с помощью библиотеки DLL поставщика сети, предоставленной мини-перенаправлением сети, с пользовательским запросом IOCTL, отправленным драйверу ядра сетевого мини-перенаправления, который вызовет подпрограмму RxFinalizeConnection для удаления подключения и всех связанных структур V_NET_ROOT.
RxFinalizeVNetRoot также вызывается подпрограммой RxForceFinalizeAllVNetRoots для завершения каждой V_NET_ROOT, связанной со структурой NET_ROOT.
Перед вызовом RxFinalizeVNetRoot необходимо получить блокировку таблицы netname, связанной с объектом устройства, в монопольном режиме.
Если элемент UpperFinalization V_NET_ROOT равен 0, RxFinalizeVNetRoot выполнит итерацию по всем fcb, принадлежащим NET_ROOT, связанному с этим V_NET_ROOT, и приведет к потере всех SRV_OPEN структур, связанных с V_NET_ROOT.
RxFinalizeVNetRoot вызовет подпрограмму MRxFinalizeVNetRoot , предоставляемую мини-перенаправителем сети, для завершения V_NET_ROOT до освобождения памяти для структуры V_NET_ROOT.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | fcb.h (включая Mrxfcb.h, Fcb.h) |
IRQL | <= APC_LEVEL |