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


Функция RxFinalizeSrvOpen (fcb.h)

RxFinalizeSrvOpen завершает указанную структуру SRV_OPEN. Вызывающий объект должен иметь монопольную блокировку fcb, связанную с SRV_OPEN и общую или монопольную блокировку блокировки таблицы NET_ROOT, связанной с FCB.

Синтаксис

BOOLEAN RxFinalizeSrvOpen(
  [out] OUT PSRV_OPEN ThisSrvOpen,
  [in]  IN BOOLEAN    RecursiveFinalize,
  [in]  IN BOOLEAN    ForceFinalize
);

Параметры

[out] ThisSrvOpen

Указатель на структуру SRV_OPEN для завершения.

[in] RecursiveFinalize

Значение, указывающее, следует ли выполнять завершение рекурсивно.

[in] ForceFinalize

Значение, указывающее, следует ли принудительно завершать, независимо от количества ссылок.

Если параметр ForceFinalize имеет значение FALSE, то для завершения SRV_OPEN элемент NodeReferenceCount структуры SRV_OPEN, на которую указывает ThisSrvOpen , должен быть равен 0.

Возвращаемое значение

RxFinalizeSrvOpen возвращает значение TRUE при успешном выполнении или FALSE , если завершение не произошло:

Комментарии

Подпрограмма RxFinalizeSrvOpen обычно не вызывается драйверами мини-перенаправления сети напрямую. RDBSS вызывает эту подпрограмму внутри системы, когда количество ссылок на SRV_OPEN уменьшается до 1. RDBSS также вызывает RxFinalizeSrvOpen , когда вызывается подпрограмма RxFinalizeNetFcb с параметром RecursiveFinalize , равным TRUE. RDBSS вызывает RxFinalizeNetFcb при получении пакета запроса ввода-вывода для IRP_MJ_CLOSE. Обычно этот IRP получается RDBSS в ответ на запрос приложения в пользовательском режиме, запрашивающего операцию закрытия файла. Такой IRP также может выдать другой драйвер ядра.

Перед вызовом RxFinalizeSrvOpen вызывающий объект должен получить монопольную блокировку fcb, связанную с SRV_OPEN, и получить общую или монопольную блокировку блокировки таблицы NET_ROOT, связанной с FCB.

Если параметр RecursiveFinalize имеет значение TRUE, то RxFinalizeSrvOpen завершит работу с любыми структурами FOBX, связанными с этим SRV_OPEN путем вызова RxFinalizeNetFobx с параметром RecursiveFinalize , равным TRUE , и forceFinalize .

Если член FcbState связанного FCB не имеет флага FCB_STATE_ORPHANED, RxFinalizeSrvCall вызовет подпрограмму MRxForceClosed , предоставляемую мини-перенаправлением сети, для завершения SRV_CALL. Если структура SRV_CALL изначально не была выделена в рамках создания FCB, память для SRV_CALL структуры также будет освобождена.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть fcb.h (включая Mrxfcb.h, Fcb.h)
IRQL <= APC_LEVEL

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

MRxForceClosed

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeVNetRoot

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

Структура SRV_OPEN