Routine MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]

La routine MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK] viene chiamata da RDBSS per richiedere che un mini redirector di rete apra un blocco esclusivo su un oggetto file.

Sintassi

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK];

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

Parametri

RxContext [in, out]
Puntatore alla struttura RX_CONTEXT. Questo parametro contiene l'IRP che richiede l'operazione.

Valore restituito

MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK] restituisce STATUS_SUCCESS in caso di esito positivo o di un valore NTSTATUS appropriato, ad esempio uno dei seguenti:

Codice restituito Descrizione
STATUS_CONNECTION_DISCONNECTED

La connessione è stata disconnessa.

STATUS_INSUFFICIENT_RESOURCES

Risorse insufficienti per completare la richiesta.

STATUS_INVALID_NETWORK_RESPONSE

È stata ricevuta una risposta non valida dal server remoto.

STATUS_INVALID_PARAMETER

È stato specificato un parametro non valido in RxContext.

STATUS_LINK_FAILED

Tentativo di riconnessione a un server remoto per completare la richiesta non riuscita.

STATUS_NOT_IMPLEMENTED

Questa routine non è implementata.

STATUS_SHARING_VIOLATION

Si è verificata una violazione di condivisione.

STATUS_UNSUCCESSFUL

La chiamata non è riuscita.

Commenti

RDBSS chiama MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK] in risposta alla ricezione di una richiesta di IRP_MJ_LOCK_CONTROL con un codice secondario di IRP_MN_LOCK se IrpSp-Flags> ha il SL_EXCLUSIVE_LOCK bit impostato.

Prima di chiamare MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK], RDBSS modifica i membri seguenti nella struttura RX_CONTEXT a cui punta il parametro RxContext :

Il membro LowIoContext.Operation è impostato su LOWIO_OP_EXCLUSIVELOCK.

Il membro LowIoContext.ResourceThreadId è impostato sul thread del processo che ha avviato l'operazione in RDBSS.

Il membro LowIoContext.ParamsFor.Locks.ByteOffset è impostato sul valore di IrpSp-Parameters.LockControl.ByteOffset.QuadPart>.

Il membro LowIoContext.ParamsFor.Locks.Key è impostato sul valore di IrpSp-Parameters.LockControl.Key>.

Il membro LowIoContext.ParamsFor.Locks.Flags è impostato sul valore di IrpSp-Flags>.

Il membro LowIoContext.ParamsFor.Locks.Length è impostato sul valore di IrpSp-Parameters.LockControl.Length.QuadPart>.

Il membro LowIoContext.Operation della struttura RX_CONTEXT specifica l'operazione di I/O bassa da eseguire. È possibile che diverse routine di I/O basse puntino alla stessa routine in un mini redirector di rete perché questo membro LowIoContext.Operation può essere usato per distinguere l'operazione di I/O bassa richiesta. Ad esempio, tutte le chiamate di I/O correlate ai blocchi di file possono chiamare la stessa routine di I/O bassa nel mini-redirector di rete e tale routine potrebbe usare il membro LowIoContext.Operation per distinguere tra l'operazione di blocco e sblocco richiesta.

Se la routine MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK] può richiedere molto tempo, il driver del mini-reindirizzamento di rete deve rilasciare la struttura FCB prima di avviare la comunicazione di rete. La struttura FCB può essere rilasciata chiamando RxReleaseFcbResourceForThreadInMRx. Durante l'elaborazione della routine MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK] , il membro LowIoContext.ResourceThreadId di RX_CONTEXT indica il thread del processo che ha avviato l'operazione in RDBSS.

Il membro LowIoContext.ResourceThreadId di RX_CONTEXT può essere usato per rilasciare la struttura FCB per conto di un altro thread. Al termine di una routine asincrona, è possibile rilasciare la struttura FCB acquisita dal thread iniziale.

Requisiti

Piattaforma di destinazione

Desktop

Intestazione

Mrx.h (include Mrx.h)

Vedi anche

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]

MRxLowIOSubmit[LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx