Функция 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
Значение, указывающее, следует ли принудительно выполнить завершение, независимо от количества ссылок.
Если ForceFinalizeFALSE, то элемент NodeReferenceCount структуры V_NET_ROOT, на который указывает ThisVNetRoot, должен иметь значение 1 для завершения V_NET_ROOT.
Возвращаемое значение
RxFinalizeVNetRoot возвращает TRUE при успешном выполнении или false, если завершение не произошло:
Замечания
Подпрограмма RxFinalizeVNetRoot обычно не вызывается драйверами мини-перенаправления сети напрямую. RDBSS вызывает эту подпрограмму внутренне, когда количество ссылок на V_NET_ROOT уменьшается до 1.
RxFinalizeVNetRoot также вызывается подпрограммой RxFinalizeConnection, если параметр уровня для 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 будет выполнять итерацию всех NET_ROOT, связанных с этим V_NET_ROOT NET_ROOT, и все структуры SRV_OPEN, связанные с V_NET_ROOT.
RxFinalizeVNetRoot вызовет подпрограмму MRxFinalizeVNetRoot, предоставляемую мини-перенаправлением сети, чтобы завершить V_NET_ROOT перед выпуском памяти для структуры V_NET_ROOT.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | fcb.h (включая Mrxfcb.h, Fcb.h) |
IRQL | <= APC_LEVEL |