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


Функция 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

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

MRxFinalizeVNetRoot

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeSrvOpen

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

Структура V_NET_ROOT