Funzione FltOplockFsctrlEx (fltkernel.h)
La routine FltOplockFsctrlEx esegue varie operazioni di blocco opportunistico (oplock) per conto di un driver minifilter.
Sintassi
FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrlEx(
[in] POPLOCK Oplock,
[in] PFLT_CALLBACK_DATA CallbackData,
[in] ULONG OpenCount,
[in] ULONG Flags
);
Parametri
[in] Oplock
Puntatore opaco per il file. Questo puntatore deve essere stato inizializzato da una chiamata precedente a FltInitializeOplock.
[in] CallbackData
Puntatore alla struttura FLT_CALLBACK_DATA per l'operazione di I/O. Questo parametro è obbligatorio e non può essere NULL.
[in] OpenCount
Numero di handle utente per il file, se viene richiesto un oplock esclusivo. L'impostazione di un valore diverso da zero per una richiesta di 2, R o RH oplock indica che nel file sono presenti blocchi di intervallo di byte. Per informazioni sui tipi di oplock, vedere Panoramica di Oplock.
[in] Flags
Maschera di bit per le operazioni di oplock associate. Un driver minifilter imposta bit per specificare il comportamento di FltOplockFsctrlEx. Il parametro Flags include le opzioni seguenti:
Valore | Significato |
---|---|
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) | Il file system ha verificato che tutte le chiavi di oplock in qualsiasi handle attualmente aperto corrispondano. Specificando questo flag, è possibile concedere al pacchetto oplock un blocco di livello RW o RWH quando esiste più di un handle aperto al file. Per altre informazioni sui tipi di oplock, vedere Panoramica di Oplock. |
Valore restituito
FltOplockFsctrlEx restituisce FLT_PREOP_PENDING per alcune operazioni FSCTL. Per altre informazioni, vedere le pagine di riferimento per i codici FSCTL elencati nella sezione Osservazioni seguenti. In caso contrario, FltOplockFsctrlEx restituisce FLT_PREOP_COMPLETE.
Commenti
Un driver minifilter chiama FltOplockFsctrlEx per eseguire varie operazioni di blocco opportunistiche per un'operazione di creazione o di controllo I/O del file system.
La struttura FLT_CALLBACK_DATA puntata dal parametro CallbackData deve rappresentare un'operazione di IRP_MJ_FILE_SYSTEM_CONTROL o IRP_MJ_CREATE basata su IRP.
Se l'operazione è un'operazione di IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrlEx può essere usata con i codici FSCTL seguenti:
- FSCTL_OPBATCH_ACK_CLOSE_PENDING
- FSCTL_OPLOCK_BREAK_ACK_NO_2
- FSCTL_OPLOCK_BREAK_ACKNOWLEDGE
- FSCTL_OPLOCK_BREAK_NOTIFY
- FSCTL_REQUEST_BATCH_OPLOCK
- FSCTL_REQUEST_FILTER_OPLOCK
- FSCTL_REQUEST_OPLOCK_LEVEL_1
- FSCTL_REQUEST_OPLOCK_LEVEL_2
- FSCTL_REQUEST_OPLOCK
Il codice FSCTL è impostato nel membro FsControlCode della struttura di FLT_PARAMETERS per l'operazione. Per altre informazioni su FsControlCode e altri parametri di IRP_MJ_FILE_SYSTEM_CONTROL, vedere FLT_PARAMETERS per IRP_MJ_FILE_SYSTEM_CONTROL.
Per altre informazioni sui blocchi opportunistici, vedere la documentazione di Microsoft Windows SDK.
Se l'operazione è una richiesta IRP_MJ_CREATE , FltOplockFsctrl può essere usata per richiedere un blocco opportunistico del filtro in sospeso se tutte le condizioni seguenti sono vere:
- Il valore del parametro OpenCount deve essere 1.
- Il valore del parametro DesiredAccess per la richiesta di IRP_MJ_CREATE è FILE_READ_ATTRIBUTES. Questo parametro è impostato nel membro SecurityContext della struttura FLT_PARAMETERS per l'operazione. Per altre informazioni, vedere FLT_PARAMETERS per IRP_MJ_CREATE.
- Il valore del parametro ShareAccess per l'operazione di IRP_MJ_CREATE è FILE_SHARE_READ, FILE_SHARE_WRITE o FILE_SHARE_DELETE. Questo parametro è impostato nel membro ShareAccess della struttura di FLT_PARAMETERS per l'operazione. Per altre informazioni, vedere FLT_PARAMETERS per IRP_MJ_CREATE.
I filtri e i file system che chiamano questa funzione devono sincronizzare le chiamate nel pacchetto oplock fornito dal sistema. Per altre informazioni, vedere Sincronizzazione di Oplock .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Questa routine è disponibile a partire da Windows 8. |
Piattaforma di destinazione | Universale |
Intestazione | fltkernel.h (includere Fltkernel.h) |
Libreria | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |
Vedi anche
FLT_PARAMETERS per IRP_MJ_CREATE
FLT_PARAMETERS per IRP_MJ_FILE_SYSTEM_CONTROL
FSCTL_OPBATCH_ACK_CLOSE_PENDING