Partager via


__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock fonction

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock synchronise les demandes d’E/S bloquantes dans la même file d’attente de travail.

Syntaxe

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

Paramètres

RxContext [in, out]
Pointeur vers le RX_CONTEXT de l’opération en cours de synchronisation.

BlockingIoQ [in, out]
Pointeur vers le LIST_ENTRY de la file d’attente.

DropFcbLock [in]
Valeur booléenne qui indique si la ressource FCB doit être libérée. Si ce paramètre a la valeur TRUE, la ressource FCB est libérée.

Valeur retournée

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock retourne STATUS_SUCCESS sur la réussite ou une valeur NTSTATUS appropriée, telle que l’une des suivantes :

Code de retour Description
STATUS_CANCELLED

La demande d’E/S et le RX_CONTEXT associé ont été annulés.

STATUS_PENDING

Le RxContext était destiné à une opération asynchrone et le RxContext a été ajouté à la file d’attente.

Remarques

La routine __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock synchronise les demandes d’E/S bloquantes dans la même file d’attente de travail. RDBSS utilise __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock en interne pour synchroniser les opérations de canal nommé. La file d’attente de travail est la file d’attente référencée par l’extension d’objet de fichier (FOBX) associée au membre pFcb de la structure RX_CONTEXT pointée par RxContext.

Un mini-redirecteur réseau peut utiliser __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock pour synchroniser les opérations sur une file d’attente distincte gérée par le mini-redirecteur réseau.

Si RxContext est marqué pour une opération asynchrone, __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock ajoutera rxContext à la file d’attente et retournera STATUS_PENDING. Si RxContext est marqué pour une opération synchrone, __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock se bloque et RxContext reprend lorsqu’un appel est effectué pour RxResumeBlockedOperations_Serially.

Si la demande d’E/S bloquante a été annulée, __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock retourne STATUS_CANCELLED pour indiquer l’erreur.

Le membre SyncEvent de la structure RX_CONTEXT pointée par RxContext doit avoir été réinitialisé avant d’appeler __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock. La ressource FCB doit être verrouillée avant d’appeler __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock si le paramètre DropFcbLock a la valeur TRUE.

Les deux macros suivantes sont définies sur Windows XP et Windows 2000 pour appeler __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock :

RxSynchronizeBlockingOperations : appelle avec le paramètre DropFcbLock défini sur FALSE.

RxSynchronizeBlockingOperationsAndDropFcbLock : appelle avec le paramètre DropFcbLock défini sur TRUE.

Configuration requise

Plateforme cible

Desktop (Expérience utilisateur)

Version

La routine __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock est disponible uniquement sur Windows XP et Windows 2000.

En-tête

Rxcontx.h (inclure Rxcontx.h)

Voir aussi

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxInitializeContext

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations