Funzione FltOplockFsctrl (fltkernel.h)

FltOplockFsctrl esegue varie operazioni di blocco opportunistico (oplock) per conto di un driver minifilter.

Sintassi

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrl(
  [in] POPLOCK            Oplock,
  [in] PFLT_CALLBACK_DATA CallbackData,
  [in] ULONG              OpenCount
);

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.

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 seguenti. In caso contrario, FltOplockFsctrl restituisce FLT_PREOP_COMPLETE.

Commenti

Un driver minifilter chiama FltOplockFsctrl per eseguire varie operazioni di blocco opportunistiche per un'operazione di I/O di creazione o 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 IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrl può essere usata con i codici FSCTL seguenti:

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
Piattaforma di destinazione Universale
Intestazione fltkernel.h (includere Fltkernel.h)
Libreria FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Vedi anche

FLT_CALLBACK_DATA

FLT_PARAMETERS per IRP_MJ_CREATE

FLT_PARAMETERS per IRP_MJ_FILE_SYSTEM_CONTROL

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplock

FltCurrentBatchOplock

FltInitializeOplock

FltOplockIsFastIoPossible

FltUninitializeOplock

FsRtlOplockFsctrl

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL