Condividi tramite


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 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 di IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrl può essere usata 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
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_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplock

FltCurrentBatchOplock

FltInitializeOplock

FltOplockIsFastIoPossible

FltUninitializeOplock

FsRtlOplockFsctrl

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL