Freigeben über


__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock-Funktion

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock synchronisiert blockierende E/A-Anforderungen mit derselben Arbeitswarteschlange.

Syntax

NTSTATUS __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock(
  _Inout_ PRX_CONTEXT RxContext,
  _Inout_ PLIST_ENTRY BlockingIoQ,
  _In_    BOOLEAN     DropFcbLock
);

Parameter

RxContext [in, out]
Ein Zeiger auf die RX_CONTEXT des vorgangs, der synchronisiert wird.

BlockingIoQ [in, out]
Ein Zeiger auf die LIST_ENTRY für die Warteschlange.

DropFcbLock [in]
Ein boolescher Wert, der angibt, ob die FCB-Ressource freigegeben werden soll. Wenn dieser Parameter TRUE ist, wird die FCB-Ressource freigegeben.

Rückgabewert

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock 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 wurden abgebrochen.

STATUS_PENDING

Der RxContext wurde für einen asynchronen Vorgang verwendet, und der RxContext wurde der Warteschlange hinzugefügt.

Hinweise

Die __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock Routine synchronisiert blockierende E/A-Anforderungen mit derselben Arbeitswarteschlange. RDBSS verwendet intern __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock , um Named Pipe-Vorgänge zu synchronisieren. Die Arbeitswarteschlange ist die Warteschlange, auf die von der Dateiobjekterweiterung (FILE Object Extension, FOBX) verwiesen wird, die dem pFcb-Member der RX_CONTEXT Struktur zugeordnet ist, auf die RxContext verweist.

Ein Netzwerk-Mini-Redirector kann __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock verwenden, um Vorgänge in einer separaten Warteschlange zu synchronisieren, die vom Netzwerk-Mini-Redirector verwaltet wird.

Wenn RxContext für einen asynchronen Vorgang markiert ist, fügt __RxSynchronizeBlockingOperationsMaybeDroppingFcbLockRxContext der Warteschlange hinzu und gibt STATUS_PENDING zurück. Wenn RxContext für einen synchronen Vorgang markiert ist, wird __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock blockiert, und RxContext wird fortgesetzt, wenn ein Aufruf von RxResumeBlockedOperations_Serially erfolgt.

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

Das SyncEvent-Element der RX_CONTEXT-Struktur, auf die RxContext verweist, muss zurückgesetzt worden sein, bevor __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock aufgerufen wird. Die FCB-Ressource muss gesperrt werden , bevor __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock aufgerufen wird, wenn der DropFcbLock-Parameter auf TRUE festgelegt ist.

Die folgenden beiden Makros sind unter Windows XP und Windows 2000 zum Aufrufen __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock definiert:

RxSynchronizeBlockingOperations ruft auf, wobei der DropFcbLock-Parameter auf FALSE festgelegt ist.

RxSynchronizeBlockingOperationsAndDropFcbLock – ruft auf, wobei der DropFcbLock-Parameter auf TRUE festgelegt ist.

Anforderungen

Zielplattform

Desktop

Version

Die __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock-Routine ist nur unter Windows XP und Windows 2000 verfügbar.

Header

Rxcontx.h (einschließen von Rxcontx.h)

Weitere Informationen

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations