Condividi tramite


FLT_PARAMETERS per l'unione IRP_MJ_DIRECTORY_CONTROL

Componente unione usato quando il campo MajorFunction della struttura di FLT_IO_PARAMETER_BLOCK per l'operazione è IRP_MJ_DIRECTORY_CONTROL.

Sintassi

typedef union _FLT_PARAMETERS {
  ...   ;
  union {
    struct {
      ULONG                   Length;
      PUNICODE_STRING         FileName;
      FILE_INFORMATION_CLASS  FileInformationClass;
      ULONG POINTER_ALIGNMENT FileIndex;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } QueryDirectory;
    struct {
      ULONG                   Length;
      ULONG POINTER_ALIGNMENT CompletionFilter;
      ULONG                   Spare1;
      ULONG POINTER_ALIGNMENT Spare2;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } NotifyDirectory;
  } DirectoryControl;
  ...   ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

Members

  • DirectoryControl: struttura contenente i membri seguenti.

  • QueryDirectory: componente unionale usato per le operazioni di IRP_MN_QUERY_DIRECTORY.

  • Lunghezza: lunghezza, in byte, del buffer a cui punta il membro QueryDirectory.DirectoryBuffer .

  • FileName: puntatore a una struttura UNICODE_STRING contenente il nome di un file all'interno della directory specificata.

  • FileInformationClass: specifica uno dei valori descritti di seguito.

    Valore Significato
    FileBothDirectoryInformation Restituisce una struttura FILE_BOTH_DIR_INFORMATION per ogni file.
    FileDirectoryInformation Restituisce una struttura FILE_DIRECTORY_INFORMATION per ogni file.
    FileFullDirectoryInformation Restituisce una struttura FILE_FULL_DIR_INFORMATION per ogni file.
    FileIdBothDirectoryInformation Restituire una struttura FILE_ID_BOTH_DIR_INFORMATION per ogni file.
    FileIdFullDirectoryInformation Restituisce una struttura FILE_ID_FULL_DIR_INFORMATION per ogni file.
    FileNamesInformation Restituisce una struttura FILE_NAMES_INFORMATION per ogni file.
    FileObjectIdInformation Restituisce una struttura FILE_OBJECTID_INFORMATION per ogni file.
    FileReparsePointInformation Restituisce una singola struttura FILE_REPARSE_POINT_INFORMATION per la directory.
  • FileIndex: indice del file in cui inizia l'analisi della directory. Ignorato se il flag di SL_INDEX_SPECIFIED non è impostato. Questo parametro non può essere specificato in qualsiasi routine di supporto in modalità kernel o win32. Attualmente viene usato solo dalla macchina DOS virtuale NT (NTVDM), che esiste solo su sistemi operativi basati su NT a 32 bit. Si noti che l'indice di file non è definito per i file system, ad esempio NTFS, in cui la posizione di un file all'interno della directory padre non è fissa e può essere modificata in qualsiasi momento per mantenere l'ordine di ordinamento.

  • DirectoryBuffer: puntatore a un buffer di output fornito dal chiamante che riceve le informazioni richieste sul contenuto della directory. Questo membro è facoltativo e può essere NULL se viene fornito un MDL in QueryDirectory.MdlAddress. Vedere Osservazioni.

  • MdlAddress: indirizzo di un elenco di descrittori di memoria (MDL) che descrive il buffer a cui punta il membro QueryDirectory.DirectoryBuffer . Questo membro è facoltativo e può essere NULL se viene fornito un buffer in QueryDirectory.DirectoryBuffer. Vedere Osservazioni.

  • NotifyDirectory: componente unionale usato per le operazioni di IRP_MN_NOTIFY_CHANGE_DIRECTORY.

  • Lunghezza: lunghezza, in byte, del buffer a cui punta il membro NotifyDirectory.DirectoryBuffer .

  • CompleteFilter: maschera di bit di flag che specificano i tipi di modifiche ai file o alle directory che devono causare il completamento dell'elenco di notifiche. I valori di flag possibili sono descritti di seguito.

    Contrassegno Significato
    FILE_NOTIFY_CHANGE_FILE_NAME Un file è stato aggiunto, eliminato o rinominato in questa directory.
    FILE_NOTIFY_CHANGE_DIR_NAME È stata creata, rimossa o rinominata una sottodirectory.
    FILE_NOTIFY_CHANGE_NAME Il nome della directory è cambiato.
    FILE_NOTIFY_CHANGE_ATTRIBUTES Il valore di un attributo di questo file, ad esempio l'ultima volta di accesso, è stato modificato.
    FILE_NOTIFY_CHANGE_SIZE Le dimensioni del file sono state modificate.
    FILE_NOTIFY_CHANGE_LAST_WRITE L'ultima modifica del file è stata modificata.
    FILE_NOTIFY_CHANGE_LAST_ACCESS L'ultima volta di accesso al file è stata modificata.
    FILE_NOTIFY_CHANGE_CREATION Il tempo di creazione del file è cambiato.
    FILE_NOTIFY_CHANGE_EA Sono stati modificati gli attributi estesi del file.
    FILE_NOTIFY_CHANGE_SECURITY Le informazioni di sicurezza del file sono state modificate.
    FILE_NOTIFY_CHANGE_STREAM_NAME Un flusso di file è stato aggiunto, eliminato o rinominato in questa directory.
    FILE_NOTIFY_CHANGE_STREAM_SIZE Le dimensioni del flusso di file sono state modificate.
    FILE_NOTIFY_CHANGE_STREAM_WRITE I dati del flusso di file sono stati modificati.
  • Spare1: non attualmente usato.

  • Spare2: non attualmente usato.

  • DirectoryBuffer: puntatore a un buffer di output fornito dal chiamante che riceve le informazioni richieste sul contenuto della directory. Questo membro è facoltativo e può essere NULL se viene fornito un MDL in NotifyDirectory.MdlAddress. Vedere Osservazioni.

  • MdlAddress: indirizzo di un MDL che descrive il buffer a cui punta il membro NotifyDirectory.DirectoryBuffer . Questo membro è facoltativo e può essere NULL se viene fornito un buffer in NotifyDirectory.DirectoryBuffer. Vedere Osservazioni.

Commenti

La struttura FLT_PARAMETERS per le operazioni IRP_MJ_DIRECTORY_CONTROL contiene i parametri per un'operazione di controllo della directory basata su IRP rappresentata da una struttura di callback (FLT_CALLBACK_DATA). È contenuta in una struttura di FLT_IO_PARAMETER_BLOCK.

Se vengono forniti sia un buffer DirectoryBuffer che MdlAddress , è consigliabile usare minifiltri. La memoria a cui DirectoryBuffer punta è valida quando si tratta di un indirizzo in modalità utente a cui si accede nel contesto del processo chiamante o se si tratta di un indirizzo in modalità kernel.

Se un minifiltro modifica il valore di MdlAddress, dopo il callback dell'operazione successiva, Filter Manager libera l'MDL attualmente archiviato in MdlAddress e ripristina il valore precedente di MdlAddress.

IRP_MJ_DIRECTORY_CONTROL è un'operazione basata su IRP.

Requisiti

Tipo di requisito Requisito
Intestazione Fltkernel.h (include Fltkernel.h)

Vedi anche

FILE_BOTH_DIR_INFORMATION

FILE_DIRECTORY_INFORMATION

FILE_FULL_DIR_INFORMATION

FILE_ID_BOTH_DIR_INFORMATION

FILE_ID_FULL_DIR_INFORMATION

FILE_NAMES_INFORMATION

FILE_OBJECTID_INFORMATION

FILE_REPARSE_POINT_INFORMATION

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS

FltNotifyFilterChangeDirectory

FsRtlNotifyFilterChangeDirectory

FsRtlNotifyFilterReportChange

FsRtlNotifyFullChangeDirectory

FsRtlNotifyFullReportChange

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile