Partager via


Routine MRxLowIOSubmit[LOWIO_OP_UNLOCK]

La routine MRxLowIOSubmit[LOWIO_OP_UNLOCK] est appelée par RDBSS pour demander qu’un mini-redirecteur réseau supprime un verrou unique sur un objet de fichier.

Syntaxe

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_UNLOCK];

NTSTATUS MRxLowIOSubmit[LOWIO_OP_UNLOCK](
  _Inout_ PRX_CONTEXT RxContext
)
{ ... }

Paramètres

RxContext [in, out]
Pointeur vers la structure RX_CONTEXT. Ce paramètre contient l’IRP qui demande l’opération.

Valeur retournée

MRxLowIOSubmit[LOWIO_OP_UNLOCK] retourne STATUS_SUCCESS sur la réussite ou une valeur NTSTATUS appropriée, par exemple :

Code de retour Description
STATUS_CONNECTION_DISCONNECTED

La connexion a été déconnectée.

STATUS_INSUFFICIENT_RESOURCES

Les ressources étaient insuffisantes pour effectuer la demande.

STATUS_INVALID_NETWORK_RESPONSE

Une réponse non valide a été reçue du serveur distant.

STATUS_INVALID_PARAMETER

Un paramètre non valide a été spécifié dans RxContext.

STATUS_LINK_FAILED

La tentative de connexion à un serveur distant pour terminer la demande a échoué.

STATUS_NOT_IMPLEMENTED

Cette routine n’est pas implémentée.

STATUS_SHARING_VIOLATION

Une violation de partage s’est produite.

STATUS_UNSUCCESSFUL

L’appel a échoué.

Remarques

RDBSS appelle MRxLowIOSubmit[LOWIO_OP_UNLOCK] en réponse à la réception d’une demande de IRP_MJ_LOCK_CONTROL avec un code mineur de IRP_MN_UNLOCK_SINGLE.

Avant d’appeler MRxLowIOSubmit[LOWIO_OP_UNLOCK], RDBSS modifie les membres suivants dans la structure RX_CONTEXT pointée vers le paramètre RxContext :

Le membre LowIoContext.Operation est défini sur LOWIO_OP_UNLOCK.

Le membre LowIoContext.ResourceThreadId est défini sur le thread du processus qui a lancé l’opération dans RDBSS.

Le membre LowIoContext.ParamsFor.Locks.ByteOffset a la valeur IrpSp-Parameters.LockControl.ByteOffset.QuadPart>.

Le membre LowIoContext.ParamsFor.Locks.Key est défini sur la valeur IrpSp-Parameters.LockControl.Key>.

Le membre LowIoContext.ParamsFor.Locks.Length a la valeur IrpSp-Parameters.LockControl.Length.QuadPart>.

Le membre LowIoContext.Operation de la structure RX_CONTEXT spécifie l’opération d’E/S faible à effectuer. Plusieurs des routines d’E/S à faible niveau peuvent pointer vers la même routine dans un mini-redirecteur réseau, car ce membre LowIoContext.Operation peut être utilisé pour différencier l’opération d’E/S faible demandée. Par exemple, tous les appels d’E/S liés aux verrous de fichiers peuvent appeler la même routine d’E/S faible dans le mini-redirecteur réseau et cette routine peut utiliser le membre LowIoContext.Operation pour différencier l’opération de verrouillage et de déverrouillage demandée.

Si la routine MRxLowIOSubmit[LOWIO_OP_UNLOCK] peut prendre beaucoup de temps, le pilote de mini-redirecteur réseau doit libérer la structure FCB avant de lancer la communication réseau. La structure FCB peut être libérée en appelant RxReleaseFcbResourceForThreadInMRx. Pendant le traitement de la routine MRxLowIOSubmit[LOWIO_OP_UNLOCK], le membre LowIoContext.ResourceThreadId de RX_CONTEXT est garanti pour indiquer le thread du processus qui a lancé l’opération dans RDBSS.

Le membre LowIoContext.ResourceThreadId de RX_CONTEXT peut être utilisé pour libérer la structure FCB pour le compte d’un autre thread. Lorsqu’une routine asynchrone se termine, la structure FCB acquise à partir du thread initial peut être libérée.

Configuration requise

Plateforme cible

Desktop (Expérience utilisateur)

En-tête

Mrx.h (inclure Mrx.h)

Voir aussi

MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]

MRxLowIOSubmit[LOWIO_OP_FSCTL]

MRxLowIOSubmit[LOWIO_OP_IOCTL]

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxLowIOSubmit[LOWIO_OP_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

MRxLowIOSubmit[LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx