Freigeben über


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;

Elemente

  • 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 Byte.

  • 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 der Verzeichnisscan beginnt. Wird ignoriert, wenn das SL_INDEX_SPECIFIED-Flag nicht festgelegt ist. Dieser Parameter kann nicht in einer Win32-Funktions- oder Kernelmodusunterstützungsroutine angegeben werden. Derzeit wird sie nur vom virtuellen NT DOS-Computer (NTVDM) verwendet, der nur auf 32-Bit-NT-basierten Betriebssystemen vorhanden ist. Beachten Sie, dass der Dateiindex für Dateisysteme, z. B. NTFS, nicht definiert ist, in dem die Position einer Datei innerhalb des übergeordneten Verzeichnisses nicht behoben 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. Dieses Element ist optional und kann NULL sein, wenn eine MDL in QueryDirectory.MdlAddress bereitgestellt wird. Siehe Anmerkungen.

  • MdlAddress: Adresse einer Speicherdeskriptorliste (MDL), die den Puffer beschreibt, auf den das QueryDirectory.DirectoryBuffer-Element verweist. Dieses Element ist optional und kann NULL sein, wenn ein Puffer in QueryDirectory.DirectoryBuffer bereitgestellt wird. Siehe Anmerkungen.

  • 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 Typen 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 wie folgt beschrieben.

    Flagge 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. der Zeitpunkt des letzten Zugriffs, wurde geändert.
    FILE_NOTIFY_CHANGE_SIZE Die Größe dieser Datei wurde geändert.
    FILE_NOTIFY_CHANGE_LAST_WRITE Die Uhrzeit der letzten Änderung dieser Datei wurde geändert.
    FILE_NOTIFY_CHANGE_LAST_ACCESS Die Uhrzeit des letzten Zugriffs dieser Datei wurde geändert.
    FILE_NOTIFY_CHANGE_CREATION Die Erstellungszeit dieser Datei wurde 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 Dateidatenstroms wurde geändert.
    FILE_NOTIFY_CHANGE_STREAM_WRITE Die Daten dieses Dateidatenstroms wurden geändert.
  • Spare1: Zurzeit nicht verwendet.

  • Spare2: Zurzeit nicht verwendet.

  • DirectoryBuffer: Zeiger auf einen vom Aufrufer bereitgestellten Ausgabepuffer, der die angeforderten Informationen über den Inhalt des Verzeichnisses empfängt. Dieses Element ist optional und kann NULL sein, wenn eine MDL in NotifyDirectory.MdlAddress bereitgestellt wird. Siehe Anmerkungen.

  • MdlAddress: Adresse einer MDL, die den Puffer beschreibt, auf den das NotifyDirectory.DirectoryBuffer-Mitglied verweist. Dieses Element ist optional und kann NULL sein, wenn ein Puffer in NotifyDirectory.DirectoryBuffer bereitgestellt wird. Siehe Anmerkungen.

Bemerkungen

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 Aufrufvorgangs 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 MDL frei, die derzeit in MdlAddress gespeichert ist, und stellt den vorherigen Wert von MdlAddress wieder her.

IRP_MJ_DIRECTORY_CONTROL ist ein IRP-basierter Vorgang.

Anforderungen

Anforderungstyp Anforderung
Kopfzeile Fltkernel.h (include Fltkernel.h)

Siehe auch

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-