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_REPARSE_POINT_INFORMATION
FltNotifyFilterChangeDirectory
FsRtlNotifyFilterChangeDirectory