Freigeben über


__RxSynchronizeBlockingOperations-Funktion (rxcontx.h)

__RxSynchronizeBlockingOperations synchronisiert das Blockieren von E/A-Anforderungen mit derselben Arbeitswarteschlange.

Syntax

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

Parameter

[in, out] RxContext

Ein Zeiger auf die RX_CONTEXT des zu synchronisierenden Vorgangs.

[in] Fcb

Ein Zeiger auf den FCB.

[in, out] BlockingIoQ

Ein Zeiger auf die LIST_ENTRY für die Warteschlange.

[in] DropFcbLock

Ein boolescher Wert, der angibt, ob die FCB-Ressource freigegeben werden soll. Wenn dieser Parameter TRUEist, wird die FCB-Ressource freigegeben.

Rückgabewert

__RxSynchronizeBlockingOperations gibt STATUS_SUCCESS für erfolg oder einen geeigneten NTSTATUS-Wert zurück, z. B. einen der folgenden:

Rückgabecode Beschreibung
STATUS_CANCELLED
Die E/A-Anforderung und die zugeordnete RX_CONTEXT wurde abgebrochen.
STATUS_PENDING
Die RxContext- war für einen asynchronen Vorgang vorgesehen, und die RxContext- wurde der Warteschlange hinzugefügt.

Bemerkungen

Die __RxSynchronizeBlockingOperations Routine synchronisiert das Blockieren von E/A-Anforderungen mit derselben Arbeitswarteschlange. RDBSS verwendet __RxSynchronizeBlockingOperations intern, um benannte Rohrvorgänge zu synchronisieren. Die Arbeitswarteschlange ist die Warteschlange, auf die durch die Dateiobjekterweiterung (FOBX) verwiesen wird, die dem Fcb-zugeordnet ist.

Ein Netzwerkminiumleitungsmodul kann __RxSynchronizeBlockingOperations verwenden, um Vorgänge in einer separaten Warteschlange zu synchronisieren, die vom Netzwerkminiumleitungsmodul verwaltet wird.

Wenn RxContext- für einen asynchronen Vorgang markiert ist, fügt __RxSynchronizeBlockingOperations der Warteschlange die RxContext- hinzu und gibt STATUS_PENDING zurück. Wenn RxContext- für einen synchronen Vorgang markiert ist, wird __RxSynchronizeBlockingOperations blockiert und RxContext- fortgesetzt, wenn ein Aufruf an RxResumeBlockedOperations_Seriallyerfolgt.

Wenn die blockierende E/A-Anforderung abgebrochen wurde, gibt __RxSynchronizeBlockingOperations STATUS_CANCELLED zurück, um den Fehler anzugeben.

Das SyncEvent Mitglied der RX_CONTEXT Struktur, auf die von RxContext- verwiesen wurde, muss zurückgesetzt worden sein, bevor __RxSynchronizeBlockingOperationsaufgerufen wird. Die FCB-Ressource muss gesperrt werden, bevor __RxSynchronizeBlockingOperations aufgerufen wird, wenn der DropFcbLock Parameter auf TRUEfestgelegt ist.

Die folgenden beiden Makros werden unter Windows Server 2003 oder höher zum Aufrufen von __RxSynchronizeBlockingOperationsdefiniert:

RxSynchronizeBlockingOperations- – Aufrufe mit dem DropFcbLock Parameter, der auf FALSEfestgelegt ist.

RxSynchronizeBlockingOperationsAndDropFcbLock - Aufrufe mit dem DropFcbLock Parameter, der auf TRUEfestgelegt ist.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Die __RxSynchronizeBlockingOperations Routine ist nur unter Windows Server 2003 verfügbar.
Zielplattform- Desktop
Header- rxcontx.h (include Rxcontx.h)

Siehe auch

RxCompleteRequest_Real

RxCreateRxContext-

RxDereference-

RxDereferenceAndDeleteRxContext_Real

RxInitializeContext-

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock