FLT_PARAMETERS für IRP_MJ_DIRECTORY_CONTROL Union
Union-Komponente, die verwendet wird, wenn das Feld MajorFunction der FLT_IO_PARAMETER_BLOCK-Struktur für den Vorgang IRP_MJ_DIRECTORY_CONTROL ist.
Syntax
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;
Member
DirectoryControl: Struktur, die die folgenden Member enthält.
QueryDirectory: Union-Komponente, die für IRP_MN_QUERY_DIRECTORY-Vorgänge verwendet wird.
Länge: Länge des Puffers, auf den das QueryDirectory.DirectoryBuffer-Element verweist, in Bytes.
FileName: Zeiger auf eine UNICODE_STRING Struktur, die den Namen einer Datei im angegebenen Verzeichnis enthält.
FileInformationClass: Gibt einen der unten beschriebenen Werte an.
Wert Bedeutung FileBothDirectoryInformation Gibt eine FILE_BOTH_DIR_INFORMATION-Struktur für jede Datei zurück. FileDirectoryInformation Gibt eine FILE_DIRECTORY_INFORMATION-Struktur für jede Datei zurück. FileFullDirectoryInformation Gibt eine FILE_FULL_DIR_INFORMATION-Struktur für jede Datei zurück. FileIdBothDirectoryInformation Gibt eine FILE_ID_BOTH_DIR_INFORMATION-Struktur für jede Datei zurück. FileIdFullDirectoryInformation Gibt eine FILE_ID_FULL_DIR_INFORMATION-Struktur für jede Datei zurück. FileNamesInformation Gibt eine FILE_NAMES_INFORMATION-Struktur für jede Datei zurück. FileObjectIdInformation Gibt eine FILE_OBJECTID_INFORMATION-Struktur für jede Datei zurück. FileReparsePointInformation Gibt eine einzelne FILE_REPARSE_POINT_INFORMATION-Struktur für das Verzeichnis zurück. FileIndex: Index der Datei, in der die Verzeichnisüberprüfung beginnt. Wird ignoriert, wenn das SL_INDEX_SPECIFIED-Flag nicht festgelegt ist. Dieser Parameter kann in keiner Win32-Funktion oder Kernelmodus-Supportroutine angegeben werden. Derzeit wird es nur vom nt virtual DOS-Computer (NTVDM) verwendet, der nur auf 32-Bit-NT-basierten Betriebssystemen vorhanden ist. Beachten Sie, dass der Dateiindex für Dateisysteme wie NTFS nicht definiert ist, in denen die Position einer Datei im übergeordneten Verzeichnis nicht festgelegt ist und jederzeit geändert werden kann, um die Sortierreihenfolge beizubehalten.
DirectoryBuffer: Zeiger auf einen vom Aufrufer bereitgestellten Ausgabepuffer, der die angeforderten Informationen über den Inhalt des Verzeichnisses empfängt. Dieser Member ist optional und kann NULL sein, wenn eine MDL in QueryDirectory.MdlAddress bereitgestellt wird. Siehe Hinweise.
MdlAddress: Adresse einer Speicherdeskriptorliste (Memory Descriptor List, MDL), die den Puffer beschreibt, auf den das QueryDirectory.DirectoryBuffer-Element verweist. Dieser Member ist optional und kann NULL sein, wenn in QueryDirectory.DirectoryBuffer ein Puffer bereitgestellt wird. Siehe Hinweise.
NotifyDirectory: Union-Komponente, die für IRP_MN_NOTIFY_CHANGE_DIRECTORY-Vorgänge verwendet wird.
Länge: Länge des Puffers, auf den das NotifyDirectory.DirectoryBuffer-Element verweist, in Byte.
CompletionFilter: Bitmaske von Flags, die die Arten von Änderungen an Dateien oder Verzeichnissen angeben, die dazu führen sollen, dass die IRPs in der Benachrichtigungsliste abgeschlossen werden. Die möglichen Flagwerte werden im Folgenden beschrieben.
Flag Bedeutung FILE_NOTIFY_CHANGE_FILE_NAME Eine Datei wurde in diesem Verzeichnis hinzugefügt, gelöscht oder umbenannt. FILE_NOTIFY_CHANGE_DIR_NAME Ein Unterverzeichnis wurde erstellt, entfernt oder umbenannt. FILE_NOTIFY_CHANGE_NAME Der Name dieses Verzeichnisses wurde geändert. FILE_NOTIFY_CHANGE_ATTRIBUTES Der Wert eines Attributs dieser Datei, z. B. zeitpunkt des letzten Zugriffs, hat sich geändert. FILE_NOTIFY_CHANGE_SIZE Die Größe dieser Datei hat sich geändert. FILE_NOTIFY_CHANGE_LAST_WRITE Der Zeitpunkt der letzten Änderung dieser Datei wurde geändert. FILE_NOTIFY_CHANGE_LAST_ACCESS Der Zeitpunkt des letzten Zugriffs dieser Datei wurde geändert. FILE_NOTIFY_CHANGE_CREATION Die Erstellungszeit dieser Datei hat sich geändert. FILE_NOTIFY_CHANGE_EA Die erweiterten Attribute dieser Datei wurden geändert. FILE_NOTIFY_CHANGE_SECURITY Die Sicherheitsinformationen dieser Datei wurden geändert. FILE_NOTIFY_CHANGE_STREAM_NAME In diesem Verzeichnis wurde ein Dateidatenstrom hinzugefügt, gelöscht oder umbenannt. FILE_NOTIFY_CHANGE_STREAM_SIZE Die Größe dieses Dateistreams hat sich geändert. FILE_NOTIFY_CHANGE_STREAM_WRITE Die Daten dieses Dateistreams wurden geändert. Spare1: Derzeit nicht verwendet.
Spare2: Wird derzeit nicht verwendet.
DirectoryBuffer: Zeiger auf einen vom Aufrufer bereitgestellten Ausgabepuffer, der die angeforderten Informationen über den Inhalt des Verzeichnisses empfängt. Dieser Member ist optional und kann NULL sein, wenn eine MDL in NotifyDirectory.MdlAddress bereitgestellt wird. Siehe Hinweise.
MdlAddress: Adresse einer MDL, die den Puffer beschreibt, auf den das NotifyDirectory.DirectoryBuffer-Element verweist. Dieser Member ist optional und kann NULL sein, wenn in NotifyDirectory.DirectoryBuffer ein Puffer bereitgestellt wird. Siehe Hinweise.
Hinweise
Die FLT_PARAMETERS-Struktur für IRP_MJ_DIRECTORY_CONTROL-Vorgänge enthält die Parameter für einen IRP-basierten Verzeichnissteuerungsinformationsvorgang, der durch eine Rückrufdatenstruktur (FLT_CALLBACK_DATA) dargestellt wird. Sie ist in einer FLT_IO_PARAMETER_BLOCK-Struktur enthalten.
Wenn sowohl ein DirectoryBuffer - als auch ein MdlAddress-Puffer bereitgestellt werden, wird empfohlen, dass Minifilter die MDL verwenden. Der Speicher, auf den DirectoryBuffer verweist, ist gültig, wenn es sich um eine Benutzermodusadresse handelt, auf die im Kontext des aufrufenden Prozesses zugegriffen wird, oder wenn es sich um eine Kernelmodusadresse handelt.
Wenn ein Minifilter den Wert von MdlAddress ändert, gibt der Filter-Manager nach dem Rückruf nach dem Vorgang die derzeit in MdlAddress gespeicherte MDL frei und stellt den vorherigen Wert von MdlAddress wieder her.
IRP_MJ_DIRECTORY_CONTROL ist ein IRP-basierter Vorgang.
Anforderungen
Anforderungstyp | Anforderung |
---|---|
Header | Fltkernel.h ( fltkernel.h einschließen) |
Weitere Informationen
FILE_REPARSE_POINT_INFORMATION
FltNotifyFilterChangeDirectory
FsRtlNotifyFilterChangeDirectory