Partager via


Routine MRxLowIOSubmit[LOWIO_OP_WRITE]

La routine MRxLowIOSubmit[LOWIO_OP_WRITE] est appelée par RDBSS pour émettre une demande d’écriture au mini-redirecteur réseau.

Syntaxe

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_WRITE];

NTSTATUS MRxLowIOSubmit[LOWIO_OP_WRITE](
  _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_WRITE] retourne STATUS_SUCCESS sur la réussite ou une valeur NTSTATUS appropriée, telle que l’une des suivantes :

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 terminer 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_WRITE] en réponse à la réception d’une demande de IRP_MJ_WRITE .

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

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

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 de IrpSp-Parameters.Read.Key>.

Le membre ParamsFor.ReadWrite.Flags a le LOWIO_READWRITEFLAG_PAGING_IO bit est défini sur 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 IoWriteAccess.

Le membre LowIoContext.ParamsFor.ReadWrite.ByteCount est défini sur la valeur de IrpSp-Parameters.Write.Length>.

Une demande d’écriture 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 d’écriture 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 gérer les annulations initiées localement.

Pendant le traitement de la routine MRxLowIOSubmit[LOWIO_OP_WRITE], 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 qui a été 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_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

RxReleaseFcbResourceForThreadInMRx