FS_FILTER_CALLBACK_DATA struttura (ntifs.h)

FS_FILTER_CALLBACK_DATA è la struttura dei dati di callback per un'operazione di FS_FILTER_CALLBACK o FS_FILTER_COMPLETION_CALLBACK di un FS_FILTER_CALLBACKS.

Sintassi

typedef struct _FS_FILTER_CALLBACK_DATA {
  ULONG                 SizeOfFsFilterCallbackData;
  UCHAR                 Operation;
  UCHAR                 Reserved;
  struct _DEVICE_OBJECT *DeviceObject;
  struct _FILE_OBJECT   *FileObject;
  FS_FILTER_PARAMETERS  Parameters;
} FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;

Members

SizeOfFsFilterCallbackData

Dimensioni di questa struttura, in byte. Impostare su sizeof(FS_FILTER_CALLBACK_DATA).

Operation

Operazione di file system per cui viene richiamata la routine di callback. Questa operazione può essere una delle seguenti:

  • FS_FILTER_ACQUIRE_FOR_SECTION_SYNCHRONIZATION
  • FS_FILTER_RELEASE_FOR_SECTION_SYNCHRONIZATION
  • FS_FILTER_ACQUIRE_FOR_MOD_WRITE
  • FS_FILTER_RELEASE_FOR_MOD_WRITE
  • FS_FILTER_ACQUIRE_FOR_CC_FLUSH
  • FS_FILTER_RELEASE_FOR_CC_FLUSH FS_FILTER_QUERY_OPEN

Reserved

Riservato per l'utilizzo nel sistema.

DeviceObject

Oggetto Device per questa operazione.

FileObject

Oggetto file per questa operazione.

Parameters

Unione contenente tutti i parametri specifici dell'operazione. Vedere la sezione Osservazioni.

Commenti

è un membro della struttura FS_FILTER_CALLBACKS , che viene passata a FsRtlRegisterFileSystemFilterCallbacks in una routine DriverEntry di un file system o di filtro.

L'unione Dei parametri è definita come segue:


typedef union _FS_FILTER_PARAMETERS {
    //
    //  AcquireForModifiedPageWriter
    //
    struct {
        PLARGE_INTEGER EndingOffset;
        PERESOURCE *ResourceToRelease;
    } AcquireForModifiedPageWriter;

    //
    //  ReleaseForModifiedPageWriter
    //
    struct {
        PERESOURCE ResourceToRelease;
    } ReleaseForModifiedPageWriter;

    //
    //  AcquireForSectionSynchronization
    //
    struct {
        FS_FILTER_SECTION_SYNC_TYPE SyncType;
        ULONG PageProtection;
        PFS_FILTER_SECTION_SYNC_OUTPUT OutputInformation;
        ULONG Flags;
    } AcquireForSectionSynchronization;

    //
    // QueryOpen
    //
    struct {
        PIRP Irp;
        PVOID FileInformation;
        PULONG Length;
        FILE_INFORMATION_CLASS FileInformationClass;
        NTSTATUS CompletionStatus;
    } QueryOpen;

    //
    //  Other
    //
    struct {
        PVOID Argument1;
        PVOID Argument2;
        PVOID Argument3;
        PVOID Argument4;
        PVOID Argument5;
    } Others;
} FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;

I membri della struttura dell'unione FS_FILTER_PARAMETERS sono descritti di seguito.

  • AcquireForModifiedPageWriter

    • EndingOffset: offset dell'ultimo byte scritto più uno.
    • ResourceToRelease: risorsa da rilasciare. Questo parametro non deve avere un valore NULL .
  • ReleaseForModifiedPageWriter

    • ResourceToRelease: risorsa da rilasciare. Questo parametro non deve avere un valore NULL .
  • AcquireForSectionSynchronization

    • SyncType: tipo di sincronizzazione richiesto per la sezione. Impostare su SyncTypeCreateSection se viene creata una sezione; SyncTypeOther in caso contrario.

    • PageProtection: tipo di protezione pagina richiesta per la sezione. Deve essere zero se SyncType è SyncTypeOther. In caso contrario, uno dei flag seguenti, possibilmente ORed con PAGE_NOCACHE:

      • PAGE_NOACCESS
      • PAGE_READONLY
      • PAGE_READWRITE
      • PAGE_WRITECOPY
      • PAGE_EXECUTE
      • PAGE_EXECUTE_READ
      • PAGE_EXECUTE_READWRITE
      • PAGE_EXECUTE_WRITECOPY
      • PAGE_GUARD
      • PAGE_NOCACHE
      • PAGE_WRITECOMBINE
    • OutputInformation: struttura FS_FILTER_SECTION_SYNC_OUTPUT contenente le informazioni di output estese per la sezione.

    • Flag: quando SyncType è SyncTypeCreateSection, i flag possono essere uno dei valori seguenti:

      • FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_ACCESS (0x00000001): il file system non deve aggiornare l'ultima volta di accesso al file tramite la sezione creata.
      • FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_WRITE (0x00000002): il file system non deve aggiornare l'ultima ora di scrittura per le modifiche al file tramite la sezione che viene creata.
  • QueryOpen

    • Irp: puntatore all'IRP associato a questa operazione.

    • FileInformation: puntatore a un buffer allocato del chiamante in cui la routine scrive le informazioni richieste sull'oggetto file. Il membro FileInformationClass specifica il tipo di informazioni richieste dal chiamante.

    • Lunghezza: dimensioni, in byte, del buffer a cui fa riferimento FileInformation.

    • CompletionStatus: valore NTSTATUS che riceve lo stato di completamento finale e le informazioni sull'operazione. CompletamentoStatus può essere impostato dal callback PostQueryOpen per non riuscire l'operazione, poiché i callback post non hanno alcun valore restituito. Viene usato principalmente in modo che il callback PostQueryOpen possa restituire STATUS_FLT_DISALLOW_FSFILTER_IO per richiedere il fallback al percorso lento. In questo modo, la gestione I/O esegue la richiesta eseguendo una richiesta aperta/query/chiusura del file. Analogamente, il callback PreQueryOpen può restituire STATUS_FLT_DISALLOW_FSFILTER_IO per richiedere il fallback al percorso lento.

    • FileInformationClass: tipo di informazioni da restituire sul file nel buffer a cui punta FileInformation . I driver di dispositivo e intermedio possono specificare uno dei valori di FILE_INFORMATION_CLASS seguenti. Altri valori causano l'esito negativo della chiamata e non devono essere passati alle chiamate PreQueryOpen/PostQueryOpen.

    valore FILE_INFORMATION_CLASS Tipo di informazioni restituite
    FileStatInformation Struttura FILE_STAT_INFORMATION . Questa struttura contiene una maschera di accesso. Per altre informazioni sulle maschere di accesso, vedere ACCESS_MASK.
    FileStatLxInformation Struttura FILE_STAT_LX_INFORMATION . Questa struttura contiene una maschera di accesso. Per altre informazioni sulle maschere di accesso, vedere ACCESS_MASK.
    FileCaseSensitiveInformation Struttura FILE_CASE_SENSITIVE_INFORMATION .
  • Altro

    • Argomento1: riservato per l'uso futuro.
    • Argomento2: riservato per l'uso futuro.
    • Argomento3: riservato per l'uso futuro.
    • Argomento4: riservato per l'uso futuro.
    • Argomento5: riservato per l'uso futuro.

Requisiti

Requisito Valore
Intestazione ntifs.h

Vedi anche

FS_FILTER_CALLBACKS

FsRtlRegisterFileSystemFilterCallbacks