функция __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock
__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock синхронизирует блокирующие запросы ввода-вывода в одну и ту же рабочую очередь.
Синтаксис
NTSTATUS __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock(
_Inout_ PRX_CONTEXT RxContext,
_Inout_ PLIST_ENTRY BlockingIoQ,
_In_ BOOLEAN DropFcbLock
);
Параметры
RxContext [in, out]
Указатель на RX_CONTEXT синхронизируемой операции.
BlockingIoQ [in, out]
Указатель на LIST_ENTRY очереди.
DropFcbLock [in]
Логическое значение, указывающее, следует ли освободить ресурс FCB. Если этот параметр имеет значение TRUE, ресурс FCB будет освобожден.
Возвращаемое значение
__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock возвращает STATUS_SUCCESS при успешном выполнении или соответствующее значение NTSTATUS, например одно из следующих значений:
Код возврата | Описание |
---|---|
STATUS_CANCELLED | Запрос ввода-вывода и связанный RX_CONTEXT были отменены. |
STATUS_PENDING | RxContext был для асинхронной операции, и RxContext был добавлен в очередь. |
Комментарии
Подпрограмма __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock синхронизирует блокирующие запросы ввода-вывода в одну и ту же рабочую очередь. RDBSS использует __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock для внутренней синхронизации операций именованного канала. Рабочая очередь — это очередь, на которую ссылается расширение объекта файла (FOBX), связанное с элементом pFcb структуры RX_CONTEXT, на которую указывает RxContext.
Сетевой мини-перенаправление может использовать __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock для синхронизации операций в отдельной очереди, которая поддерживается сетевым мини-перенаправлением.
Если RxContext помечен для асинхронной операции, __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock добавит RxContext в очередь и вернет STATUS_PENDING. Если RxContext помечен для синхронной операции, __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock заблокируется и RxContext возобновляется при вызове RxResumeBlockedOperations_Serially.
Если блокирующий запрос ввода-вывода был отменен, __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock возвращает STATUS_CANCELLED, чтобы указать на ошибку.
Элемент SyncEvent структуры RX_CONTEXT, на который указывает RxContext , должен быть сброшен перед вызовом __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock. Ресурс FCB должен быть заблокирован перед вызовом __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock , если параметр DropFcbLock имеет значение TRUE.
Следующие два макроса определены в Windows XP и Windows 2000 для вызова __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock :
RxSynchronizeBlockingOperations — вызовы с параметром DropFcbLock , равным FALSE.
RxSynchronizeBlockingOperationsAndDropFcbLock — вызовы с параметром DropFcbLock , равным TRUE.
Требования
Целевая платформа |
Персональный компьютер |
Версия |
Подпрограмма __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock доступна только в Windows XP и Windows 2000. |
Заголовок |
Rxcontx.h (включая Rxcontx.h) |
См. также раздел
RxDereferenceAndDeleteRxContext_Real