IRP_MJ_LOCK_CONTROL (fs e driver di filtro)
Data di invio
I/O Manager, altri componenti del sistema operativo e altri driver in modalità kernel inviano richieste di IRP_MJ_LOCK_CONTROL.
Operazione: driver del file system
Il driver del file system deve estrarre e decodificare l'oggetto file per determinare se l'oggetto dispositivo di destinazione è l'oggetto dispositivo di controllo del file system. In tal caso, il driver del file system deve completare l'IRP in base alle esigenze senza elaborare la richiesta di blocco.
In caso contrario, se la richiesta è stata eseguita su un handle che rappresenta un file utente aperto, il driver del file system deve eseguire l'operazione indicata dal codice della funzione secondaria e completare l'IRP. In caso contrario, il driver deve avere esito negativo sull'IRP.
Di seguito sono riportati i codici di funzione secondaria validi:
Codice | Descrizione |
---|---|
IRP_MN_LOCK | Indica una richiesta di blocco di intervallo di byte, possibilmente per conto di un'applicazione in modalità utente che ha chiamato la funzione LockFile Win32. |
IRP_MN_UNLOCK_ALL | Indica una richiesta di rilasciare tutti i blocchi di intervallo di byte per un file, in genere perché l'ultimo handle in sospeso per un oggetto file viene chiuso. |
IRP_MN_UNLOCK_ALL_BY_KEY | Indica una richiesta di rilasciare tutti i blocchi di intervallo di byte con un valore di chiave specificato. |
IRP_MN_UNLOCK_SINGLE | Indica una richiesta di rilascio di un singolo blocco di intervallo di byte, possibilmente per conto di un'applicazione in modalità utente che ha chiamato la funzione UnlockFile Win32. |
Operazione: driver di filtro del file system legacy
I driver di filtro del file system devono passare l'IRP al driver inferiore successivo nello stack dopo aver eseguito qualsiasi elaborazione necessaria.
Parametri
Un file system o un driver di filtro chiama IoGetCurrentIrpStackLocation con l'IRP specificato per ottenere un puntatore alla propria posizione dello stack nell'IRP, illustrato nell'elenco seguente come IrpSp. L'IRP viene visualizzato come Irp. Il driver può usare le informazioni impostate nei membri seguenti dell'IRP e del percorso dello stack IRP nell'elaborazione di una richiesta di controllo di blocco:
DeviceObject è un puntatore all'oggetto dispositivo di destinazione.
Irp->IoStatus punta a una struttura IO_STATUS_BLOCK che riceve lo stato di completamento finale e le informazioni sull'operazione richiesta.
IrpSp->FileObject punta all'oggetto file associato a DeviceObject.
Il parametro IrpSp-FileObject> contiene un puntatore al campo RelatedFileObject, che è anche una struttura FILE_OBJECT. Il campo RelatedFileObject della struttura FILE_OBJECT non è valido durante l'elaborazione di IRP_MJ_LOCK_CONTROL e non deve essere usato.
IrpSp->I flag possono essere uno o più dei valori seguenti:
Contrassegno | Significato |
---|---|
SL_EXCLUSIVE_LOCK | Se questo flag è impostato, viene richiesto un blocco di intervallo di byte esclusivo. In caso contrario, viene richiesto un blocco condiviso. |
SL_FAIL_IMMEDIATELY | Se questo flag è impostato, la richiesta di blocco deve avere esito negativo se non può essere concessa immediatamente. |
IrpSp->MajorFunction è impostato su IRP_MJ_LOCK_CONTROL.
IrpSp->MinorFunction è impostato su uno dei valori seguenti:
- IRP_MN_LOCK
- IRP_MN_UNLOCK_ALL
- IRP_MN_UNLOCK_ALL_BY_KEY
- IRP_MN_UNLOCK_SINGLE
IrpSp->Parameters.LockControl.ByteOffset è l'offset di byte iniziale all'interno del file dell'intervallo di byte da bloccare o sbloccare.
IrpSp->Parameters.LockControl.Key è la chiave per il blocco dell'intervallo di byte.
IrpSp->Parameters.LockControl.Length è la lunghezza, espressa in byte, dell'intervallo di byte da bloccare o sbloccare.
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per