Funzione FltOplockFsctrl (fltkernel.h)
FltOplockFsctrl esegue varie operazioni di blocco opportunistico (oplock) per conto di un driver minifiltro.
Sintassi
FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrl(
[in] POPLOCK Oplock,
[in] PFLT_CALLBACK_DATA CallbackData,
[in] ULONG OpenCount
);
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 .
Valore restituito
FltOplockFsctrl restituisce FLT_PREOP_PENDING per alcune operazioni FSCTL. Per altre informazioni, vedere le pagine di riferimento per i codici FSCTL elencati nella sezione Osservazioni seguente. In caso contrario, fltOplockFsctrl restituisce FLT_PREOP_COMPLETE.
Osservazioni
Un driver minifilter chiama FltOplockFsctrl per eseguire varie operazioni di blocco opportunistiche per un'operazione di I/O di controllo di creazione o file system.
La struttura
Se l'operazione è un'operazione di IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrl 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
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 |
---|---|
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