Partager via


PMRX_CHANGE_BUFFERING_STATE_CALLDOWN fonction de rappel (mrx.h)

La routineMRxCompleteBufferingStateChangeRequest est appelée par RDBSS pour informer le mini-redirecteur réseau qu’une demande de modification d’état de mise en mémoire tampon a été effectuée.

Syntaxe

PMRX_CHANGE_BUFFERING_STATE_CALLDOWN PmrxChangeBufferingStateCalldown;

NTSTATUS PmrxChangeBufferingStateCalldown(
  [in, out] IN OUT PRX_CONTEXT RxContext,
  [in, out] IN OUT PMRX_SRV_OPEN SrvOpen,
  [in]      IN PVOID MRxContext
)
{...}

Paramètres

[in, out] RxContext

Pointeur vers la structure RX_CONTEXT. Ce paramètre contient l’IRP qui demande l’opération.

[in, out] SrvOpen

Pointeur vers un paramètre de contexte à utiliser par la routine de rappel du mini-redirecteur réseau.

[in] MRxContext

Pointeur vers la structure SRV_OPEN et la structure FCB associée à modifier.

Valeur retournée

MRxCompleteBufferingStateChangeRequest retourne STATUS_SUCCESS sur la réussite ou une valeur NTSTATUS appropriée, par exemple :

Code de retour Description
STATUS_NOT_SUPPORTED Une option dans la modification de la demande de mise en mémoire tampon n’est pas prise en charge.

Remarques

Avant d’appeler MRxCompleteBufferingStateChangeRequest, RDBSS :

  • Acquiert un verrou exclusif sur la structure FCB.

  • Définit le membre FcbState de SrvOpen-Fcb> sur FCB_STATE_BUFFERSTATE_CHANGING.

  • Modifie les membres suivants dans la structure RX_CONTEXT pointée vers le paramètre RxContext :

    • pRelevantSrvOpen est défini sur la structure SRV_OPEN.
    • pFcb est défini sur la structure FCB.
    • pFobx est défini sur la structure FOBX.

Si la mise en mémoire tampon des verrous est activée, MRxCompleteBufferingStateChangeRequest doit vider les verrous de plage d’octets sur le serveur. La liste des régions verrouillées est transmise au mini-redirecteur réseau dans le membre LowIoContext.ParamsFor.Locks.Locks.LockList de la structure RX_CONTEXT.

Le redirecteur SMB (Server Message Block) utilise MRxCompleteBufferingStateChangeRequest pour envoyer une réponse d’arrêt oplock ou pour fermer le handle lors d’un arrêt d’opération si le fichier n’est plus utilisé. Les verrous de plage d’octets qui doivent être vidés du serveur sont passés au mini-redirecteur réseau dans le membre LowIoContext.ParamsFor.Locks.LockList de la structure RX_CONTEXT. Le nouveau niveau oplock est passé dans le paramètre MrxContext .

RDBSS ignore la valeur de retour de MRxCompleteBufferingStateChangeRequest.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête mrx.h (inclure Mrx.h)

Voir aussi

MRxComputeNewBufferingState

MRxGetConnectionId