Routine MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]
La routine MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK] est appelée par RDBSS pour demander à un mini-redirecteur réseau d’ouvrir un verrou exclusif sur un objet fichier.
Syntaxe
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK](
_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_EXCLUSIVELOCK] retourne STATUS_SUCCESS sur la réussite ou une valeur NTSTATUS appropriée, telle que l’une des suivantes :
Code de retour | Description |
---|---|
STATUS_CONNECTION_DISCONNECTED | La connexion a été déconnectée. |
STATUS_INSUFFICIENT_RESOURCES | Les ressources étaient insuffisantes pour terminer 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 | Échec de la tentative de reconnexion à un serveur distant pour terminer la demande. |
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_EXCLUSIVELOCK] en réponse à la réception d’une demande IRP_MJ_LOCK_CONTROL avec un code mineur de IRP_MN_LOCK si IrpSp-Flags> a le SL_EXCLUSIVE_LOCK défini.
Avant d’appeler MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK], RDBSS modifie les membres suivants dans la structure RX_CONTEXT vers laquelle pointe le paramètre RxContext :
Le membre LowIoContext.Operation est défini sur LOWIO_OP_EXCLUSIVELOCK.
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 est défini sur la valeur de IrpSp-Parameters.LockControl.ByteOffset.QuadPart>.
Le membre LowIoContext.ParamsFor.Locks.Key est défini sur la valeur de IrpSp-Parameters.LockControl.Key>.
Le membre LowIoContext.ParamsFor.Locks.Flags est défini sur la valeur de IrpSp-Flags>.
Le membre LowIoContext.ParamsFor.Locks.Length est défini sur la valeur de IrpSp-Parameters.LockControl.Length.QuadPart>.
Le membre LowIoContext.Operation de la structure RX_CONTEXT spécifie l’opération d’E/S faible à effectuer. Il est possible que plusieurs routines d’E/S faibles pointent 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 fichier 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 faire la différence entre l’opération de verrouillage et de déverrouillage demandée.
Si la routine MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK] 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_EXCLUSIVELOCK], 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 qui a été 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_FSCTL]
MRxLowIOSubmit[LOWIO_OP_IOCTL]
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour