Routine MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]
La routine MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] viene chiamata da RDBSS per richiedere che il mini redirector di rete rimuovono più blocchi contenuti in un oggetto file.
Sintassi
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE](
_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_UNLOCK_MULTIPLE] 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_UNLOCK_MULTIPLE] in risposta alla ricezione di una richiesta di IRP_MJ_LOCK_CONTROL con un codice secondario di IRP_MN_UNLOCK_ALL o IRP_MN_UNLOCK_ALL_BY_KEY.
Prima di chiamare MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE], RDBSS modifica i membri seguenti nella struttura RX_CONTEXT a cui punta il parametro RxContext :
Il membro LowIoContext.Operation è impostato su LOWIO_OP_UNLOCK_MULTIPLE.
Il membro LowIoContext.ResourceThreadId è impostato sul thread del processo che ha avviato l'operazione in RDBSS.
Il membro LowIoContext.ParamsFor.Locks.LockList è impostato su un elenco di elementi LOWIO_LOCK_LIST. Ogni elemento specifica un intervallo da sbloccare.
Gli intervalli di byte da sbloccare vengono specificati nel membro LowIoContext.ParamsFor.Locks.LockList della struttura RX_CONTEXT. La struttura LOWIO_LOCK_LIST è la seguente:
typedef struct _LOWIO_LOCK_LIST {
struct _LOWIO_LOCK_LIST *Next;
ULONG LockNumber;
RXVBO ByteOffset;
LONGLONG Length;
ULONG Key;
BOOLEAN ExclusiveLock;
} LOWIO_LOCK_LIST, *PLOWIO_LOCK_LIST;
Il membro LowIoContext.Operation di 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é il 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 questa routine potrebbe usare il membro LowIoContext.Operation per distinguere tra l'operazione di blocco e sblocco richiesta.
Se il completamento della routine MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] 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_UNLOCK_MULTIPLE] , è garantito che il membro LowIoContext.ResourceThreadId di RX_CONTEXT indichi 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_EXCLUSIVELOCK]
MRxLowIOSubmit[LOWIO_OP_FSCTL]
MRxLowIOSubmit[LOWIO_OP_IOCTL]
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]