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