Funzione FltOplockFsctrlEx (fltkernel.h)
La routine FltOplockFsctrlEx esegue varie operazioni di blocco opportunistico (oplock) per conto di un driver minifiltro.
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 oplock 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 oplock di livello 2, R o RH indica che sono presenti blocchi di intervallo di byte nel file. Per informazioni sui tipi di oplock, vedere Panoramica di Oplock .
[in] Flags
Maschera di bit per le operazioni di oplock associate. Un driver minifiltro imposta i bit per specificare il comportamento di FltOplockFsctrlEx. Il parametro flag
Valore | Significato |
---|---|
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) | Il file system ha verificato che tutte le chiavi oplock su qualsiasi handle attualmente aperto corrispondano. Specificando questo flag, si consente al pacchetto oplock di concedere un oplock di livello RW o RWH quando sono presenti più handle aperti per il file. Per altre informazioni sui tipi oplock, vedere Panoramica di Oplock. |
Valore restituito
FltOplockFsctrlEx restituisce FLT_PREOP_PENDING per alcune operazioni MDFTL. Per altre informazioni, vedere le pagine di riferimento per i codici FSCTL elencati nella sezione Osservazioni seguente. In caso contrario, FltOplockFsctrlEx restituisce FLT_PREOP_COMPLETE.
Osservazioni
Un driver minifilter chiama FltOplockFsctrlEx per eseguire varie operazioni di blocco opportunistiche per un'operazione di creazione o un'operazione di I/O del controllo del file system.
La struttura
Se l'operazione è un'operazione IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrlEx può essere utilizzata 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 viene impostato nel membro
Per altre informazioni sui blocchi opportunistici, vedere la documentazione di Microsoft Windows SDK.
Se l'operazione è una richiesta di IRP_MJ_CREATE, è possibile usare fltOplockFsctrl per richiedere un blocco opportunistico del filtro in sospeso se sono soddisfatte tutte le condizioni seguenti:
- 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 viene 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 viene impostato nel membro ShareAccess della struttura 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 di sincronizzazione oplock.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Questa routine è disponibile a partire da Windows 8. |
piattaforma di destinazione | Universale |
intestazione |
fltkernel.h (include Fltkernel.h) |
libreria |
FltMgr.lib |
dll | Fltmgr.sys |
IRQL | <= APC_LEVEL |
Vedere anche
FLT_PARAMETERS per IRP_MJ_CREATE
FLT_PARAMETERS per IRP_MJ_FILE_SYSTEM_CONTROL
FSCTL_OPBATCH_ACK_CLOSE_PENDING