Condividi tramite


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:

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_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

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplockEx

FltInitializeOplock

FsRtlOplockFsctrlEx

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL