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


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

См. также

MRxFinalizeVNetRoot

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeSrvOpen

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

структура V_NET_ROOT