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


функция __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)

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

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations