Routine MRxLowIOSubmit[LOWIO_OP_READ]
La routine MRxLowIOSubmit[LOWIO_OP_READ] est appelée par RDBSS pour émettre une demande de lecture au mini-redirecteur réseau.
Syntaxe
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_READ];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_READ](
_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_READ] retourne STATUS_SUCCESS sur la réussite ou une valeur NTSTATUS appropriée, par exemple :
Code de retour | Description |
---|---|
STATUS_FILE_CLOSED | La structure FCB a été acquise, mais la structure SRV_OPEN associée a été fermée. |
STATUS_INSUFFICIENT_RESOURCES | Les ressources étaient insuffisantes pour effectuer la demande. |
STATUS_INVALID_DEVICE_REQUEST | Une demande d’appareil non valide a été spécifiée. |
STATUS_INVALID_PARAMETER | Un paramètre non valide a été spécifié dans RxContext. |
STATUS_NOT_IMPLEMENTED | Cette routine n’est pas implémentée. |
STATUS_NOT_SUPPORTED | La requête spécifiée n’est pas prise en charge par le mini-redirecteur réseau. |
Remarques
RDBSS appelle MRxLowIOSubmit[LOWIO_OP_READ] en réponse à la réception d’une demande de IRP_MJ_READ .
Avant d’appeler MRxLowIOSubmit[LOWIO_OP_READ], 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_READ.
Le membre LowIoContext.ResourceThreadId est défini sur le thread du processus qui a lancé l’opération dans RDBSS.
Le membre LowIoContext.ParamsFor.ReadWrite.Key est défini sur la valeur IrpSp-Parameters.Read.Key>.
Le membre ParamsFor.ReadWrite.Flags a le LOWIO_READWRITEFLAG_PAGING_IO bit est défini si Irp-Flags> a le IRP_PAGING_IO bit activé.
Le membre ParamsFor.ReadWrite.Buffer est défini sur la mémoire tampon utilisateur verrouillée pour IoReadAccess.
Le membre LowIoContext.ParamsFor.ReadWrite.ByteCount a la valeur IrpSp-Parameters.Read.Length>.
Une demande de lecture est normalement implémentée par un mini-redirecteur réseau en tant qu’opération asynchrone, car elle peut prendre beaucoup de temps. L’opération consiste généralement à envoyer une requête réseau au serveur distant. La réponse est obtenue lorsque la demande de lecture est terminée sur le serveur. Il s’agit d’un exemple d’opération pour laquelle le mini-redirecteur réseau peut avoir besoin d’inscrire un contexte pour la gestion des annulations initiées localement.
Pendant le traitement de la routine MRxLowIOSubmit[LOWIO_OP_READ], 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 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. La structure FCB peut être libérée en appelant RxReleaseFcbResourceForThreadInMRx.
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]
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