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_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]