Condividi tramite


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 include le opzioni seguenti:

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 FLT_CALLBACK_DATA a cui punta il 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, FltOplockFsctrlEx può essere utilizzata con i codici FSCTL seguenti:

Il codice FSCTL viene impostato nel membro FsControlCode della struttura 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 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_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