FLT_OPERATION_REGISTRATION struttura (fltkernel.h)

La struttura FLT_OPERATION_REGISTRATION viene usata per registrare le routine di callback delle operazioni.

Sintassi

typedef struct _FLT_OPERATION_REGISTRATION {
  UCHAR                            MajorFunction;
  FLT_OPERATION_REGISTRATION_FLAGS Flags;
  PFLT_PRE_OPERATION_CALLBACK      PreOperation;
  PFLT_POST_OPERATION_CALLBACK     PostOperation;
  PVOID                            Reserved1;
} FLT_OPERATION_REGISTRATION, *PFLT_OPERATION_REGISTRATION;

Members

MajorFunction

Codice della funzione principale che specifica il tipo di operazione di I/O. Questo membro è obbligatorio e non può essere NULL. Per altre informazioni sulle operazioni aggiuntive, vedere FLT_PARAMETERS.

Flags

Maschera di bit dei flag che specificano quando chiamare la preoperazione (PFLT_PRE_OPERATION_CALLBACK) e la postoperazione (PFLT_POST_OPERATION_CALLBACK) routine di callback per le operazioni di I/O memorizzate nella cache o paging di I/O. Questo membro è facoltativo e può essere zero.

Flag Descrizione
FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO (0x00000001) Un minifilter imposta questo flag per le operazioni di lettura o scrittura per specificare che le routine di callback di preoperazione e postoperazione non devono essere chiamate per le operazioni di I/O di paging. Questo flag si applica solo alle operazioni di I/O basate su IRP. Viene ignorato per le operazioni di I/O non basate su IRP.
FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO (0x00000002) Un minifilter imposta questo flag per operazioni di lettura o scrittura per specificare che le routine di callback di preoperazione e postoperazione non devono essere chiamate per le operazioni di I/O memorizzate nella cache. Questo flag si applica a operazioni di I/O veloci e letture basate su IRP e scritture perché tutte le operazioni di I/O veloci vengono memorizzate nella cache.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO (0x00000004) Un minifilter imposta questo flag in modo che tutte le operazioni rilasciate in un handle di volume non DASD vengano ignorate. Si noti che il callback del minifilter per questa operazione verrà ignorato.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_CACHED_NON_PAGING_IO (0x00000008) Un minifilter imposta questo flag in modo che le operazioni di lettura o scrittura non memorizzate nella cache né il paging vengano ignorate. Si noti che il callback del minifilter per questa operazione verrà ignorato. Questo flag è rilevante solo per le richieste di IRP_MJ_READ e IRP_MJ_WRITE.

PreOperation

Puntatore a una routine PFLT_PRE_OPERATION_CALLBACK tipizzata da registrare come routine di callback di preoperazione per questo tipo di operazione di I/O. Questo membro è facoltativo e può essere NULL.

PostOperation

Puntatore a una routine PFLT_POST_OPERATION_CALLBACK tipizzata da registrare come routine di callback di postperazione per questo tipo di operazione di I/O. Questo membro è facoltativo e può essere NULL.

Reserved1

Riservato per l'utilizzo nel sistema. I minifilter devono impostare questo membro su NULL.

Commenti

Quando un minifiltro chiama FltRegisterFilter dalla routine DriverEntry , può registrare una routine di callback di preoperazione (PFLT_PRE_OPERATION_CALLBACK) e una routine di callback postoperazione (PFLT_POST_OPERATION_CALLBACK) per ogni tipo di operazione di I/O che deve gestire.

Per registrare queste routine di callback, il minifilter crea una matrice a lunghezza variabile di strutture FLT_OPERATION_REGISTRATION e archivia un puntatore alla matrice nel membro OperationRegistration della struttura FLT_REGISTRATION che il minifilter passa come parametro Di registrazione di FltRegisterFilter. L'ultimo elemento di questa matrice deve essere {IRP_MJ_OPERATION_END}.

Il minifilter deve creare una struttura di FLT_OPERATION_REGISTRATION separata per ogni tipo di operazione di I/O gestita. In questa struttura il minifilter specifica i punti di ingresso delle routine di callback nei membri PreOperation e PostOperation della struttura.

Un minifilter può registrare una routine di callback di preoperazione per un determinato tipo di operazione di I/O senza registrare un callback postoperatorio e viceversa.

I file system non ricevono richieste di IRP_MJ_POWER o di IRP_MJ_DEVICE_CHANGE. I minifilter non possono registrare routine di callback preoperazione o postoperazione per queste operazioni.

Un minifilter non può registrare una routine di callback postoperazione per IRP_MJ_SHUTDOWN.

Una singola routine di callback di preoperazione o postoperazione può essere usata per elaborare più di un tipo di operazione di I/O. Tuttavia, la routine di callback deve essere registrata separatamente per ogni tipo di operazione di I/O.

Requisiti

Requisito Valore
Intestazione fltkernel.h (includere Fltkernel.h)

Vedi anche

FLT_REGISTRATION

FltRegisterFilter

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK