функция __RxSynchronizeBlockingOperations (rxcontx.h)

__RxSynchronizeBlockingOperations синхронизирует блокирующие запросы ввода-вывода с той же рабочей очередью.

Синтаксис

NTSTATUS __RxSynchronizeBlockingOperations(
  [in, out] IN OUT PRX_CONTEXT RxContext,
  [in]      IN PFCB            Fcb,
  [in, out] IN OUT PLIST_ENTRY BlockingIoQ,
  [in]      IN BOOLEAN         DropFcbLock
);

Параметры

[in, out] RxContext

Указатель на RX_CONTEXT синхронизируемой операции.

[in] Fcb

Указатель на FCB.

[in, out] BlockingIoQ

Указатель на LIST_ENTRY очереди.

[in] DropFcbLock

Логическое значение, указывающее, следует ли освободить ресурс FCB. Если этот параметр имеет значение TRUE, ресурс FCB будет освобожден.

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

__RxSynchronizeBlockingOperations возвращает STATUS_SUCCESS об успешном выполнении или соответствующее значение NTSTATUS, например одно из следующих значений:

Код возврата Описание
STATUS_CANCELLED
Запрос ввода-вывода и связанный RX_CONTEXT были отменены.
STATUS_PENDING
RxContext был для асинхронной операции, и RxContext был добавлен в очередь.

Комментарии

Подпрограмма __RxSynchronizeBlockingOperations синхронизирует блокирующие запросы ввода-вывода с той же рабочей очередью. RDBSS использует __RxSynchronizeBlockingOperations для внутренней синхронизации операций именованного канала. Рабочая очередь — это очередь, на которую ссылается расширение объекта файла (FOBX), связанное с fcb.

Сетевой мини-перенаправитель может использовать __RxSynchronizeBlockingOperations для синхронизации операций в отдельной очереди, поддерживаемой мини-перенаправлением сети.

Если RxContext помечен для асинхронной операции, __RxSynchronizeBlockingOperations добавит RxContext в очередь и вернет STATUS_PENDING. Если RxContext помечен для синхронной операции, __RxSynchronizeBlockingOperations заблокируется, а RxContext возобновляется при вызове RxResumeBlockedOperations_Serially.

Если запрос блокирующего ввода-вывода был отменен, __RxSynchronizeBlockingOperations возвращает STATUS_CANCELLED, чтобы указать на ошибку.

Элемент SyncEvent структуры RX_CONTEXT, на которую указывает RxContext , должен быть сброшен перед вызовом __RxSynchronizeBlockingOperations. Ресурс FCB должен быть заблокирован перед вызовом __RxSynchronizeBlockingOperations , если для параметра DropFcbLock задано значение TRUE.

Следующие два макроса определены в Windows Server 2003 или более поздней версии для вызова __RxSynchronizeBlockingOperations:

RxSynchronizeBlockingOperations — вызовы с параметром DropFcbLock , равным FALSE.

RxSynchronizeBlockingOperationsAndDropFcbLock — вызовы с параметром DropFcbLock , равным TRUE.

Требования

Требование Значение
Минимальная версия клиента Подпрограмма __RxSynchronizeBlockingOperations доступна только в Windows Server 2003.
Целевая платформа Персональный компьютер
Верхняя часть rxcontx.h (включая Rxcontx.h)

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

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock