PFLT_NORMALIZE_NAME_COMPONENT_EX Rückruffunktion (fltkernel.h)
Ein Minifiltertreiber, der Dateinamen für den Namenscache des Filter-Managers bereitstellt, kann eine Routine vom Typ PFLT_NORMALIZE_NAME_COMPONENT_EX als die NormalizeNameComponentExCallback Rückrufroutine des Minifiltertreibers registrieren.
Syntax
PFLT_NORMALIZE_NAME_COMPONENT_EX PfltNormalizeNameComponentEx;
NTSTATUS PfltNormalizeNameComponentEx(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject,
[in] PCUNICODE_STRING ParentDirectory,
[in] USHORT VolumeNameLength,
[in] PCUNICODE_STRING Component,
[out] PFILE_NAMES_INFORMATION ExpandComponentName,
[in] ULONG ExpandComponentNameLength,
[in] FLT_NORMALIZE_NAME_FLAGS Flags,
[in, out] PVOID *NormalizationContext
)
{...}
Parameter
[in] Instance
Undurchsichtiger Instanzzeiger für die Minifiltertreiberinstanz, für die diese Rückrufroutine registriert ist.
[in] FileObject
Zeigen Sie auf das Dateiobjekt für die Datei, deren Name angefordert wird, oder die Datei, die das Ziel des vorgangs IRP_MJ_SET_INFORMATION ist, wenn das FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME Flag festgelegt ist. Weitere Informationen finden Sie im folgenden parameter Flags.
[in] ParentDirectory
Zeigen Sie auf eine UNICODE_STRING Struktur, die den Namen des übergeordneten Verzeichnisses für diese Namenskomponente enthält.
[in] VolumeNameLength
Länge des übergeordneten Verzeichnisnamens, der in der Struktur gespeichert ist, auf die der ParentDirectory Parameter verweist.
[in] Component
Zeigen Sie auf eine UNICODE_STRING Struktur, die die zu erweiternde Namenskomponente enthält.
[out] ExpandComponentName
Zeigen Sie auf eine FILE_NAMES_INFORMATION Struktur, die die erweiterten (normalisierten) Dateinameninformationen für die Namenskomponente empfängt.
[in] ExpandComponentNameLength
Länge des Puffers, auf den der ExpandComponentName Parameter verweist.
[in] Flags
Namensnormalisierungskennzeichnungen. FLTFL_NORMALIZE_NAME_CASE_SENSITIVE gibt an, dass bei dem zu normalisierenden Namen die Groß-/Kleinschreibung beachtet wird. FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME gibt an, dass die Rückrufroutine aufgerufen wurde, um einen FltGetDestinationFileNameInformation Routineaufruf zu verarbeiten. Wenn das FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME Flag festgelegt ist, stellt FileObject- die Datei/das Verzeichnis dar, die das Ziel des IRP_MJ_SET_INFORMATION-Vorgangs ist. Wenn das FLTFL_NORMALIZE_NAME_DESTINATION_FILE_NAME Flag nicht festgelegt ist, stellt FileObject die Datei/das Verzeichnis dar, dessen Name angefordert wird.
[in, out] NormalizationContext
Zeiger auf vom Minifilter treiber bereitgestellte Kontextinformationen, die in nachfolgenden Aufrufen dieser Rückrufroutine übergeben werden sollen, die ausgeführt werden, um die verbleibenden Komponenten im selben Dateinamenpfad zu normalisieren.
Rückgabewert
Diese Rückrufroutine gibt STATUS_SUCCESS oder einen entsprechenden NTSTATUS-Wert zurück. Wenn die Namenskomponente, die der parameter Component angibt, nicht im übergeordneten Verzeichnis vorhanden ist, das der parameter ParentDirectory angibt, sollte diese Rückrufroutine STATUS_NO_SUCH_FILE zurückgeben. Wenn diese Rückrufroutine eine IRP_MN_QUERY_DIRECTORY-Anforderung (FileNamesInformation) an das übergeordnete Verzeichnis ausgibt, gibt das Dateisystem den richtigen Statuscode zurück. In diesem Fall kann dieser Rückruf einfach den Statuscode zurückgeben, den das Dateisystem zurückgibt.
Bemerkungen
Ein Minifiltertreiber, der Dateinamen für den Namenscache des Filter-Managers bereitstellt, kann eine Routine vom Typ PFLT_NORMALIZE_NAME_COMPONENT_EX als die NormalizeNameComponentExCallback Rückrufroutine des Minifiltertreibers registrieren.
Der Hauptunterschied zwischen der NormalizeNameComponentExCallback Rückrufroutine und der NormalizeNameComponentCallback Rückrufroutine (vom Typ PFLT_NORMALIZE_NAME_COMPONENT) ist, dass die NormalizeNameComponentExCallback Callbackroutine den zusätzlichen FileObject Parameter unterstützt. Das Dateiobjekt (FileObject) kann vom Minifiltertreiber verwendet werden, um die TXN_PARAMETER_BLOCK Struktur für den Vorgang abzurufen, an dem die Datei/das Verzeichnis beteiligt ist, indem die IoGetTransactionParameterBlock Routine aufgerufen wird. Die TXN_PARAMETER_BLOCK Struktur kann vom Minifiltertreiber verwendet werden, um eigene Erstellungsanforderungen im Kontext der Transaktion auszugeben, an der dieses Dateiobjekt teilnimmt.
Um diese Rückrufroutine zu registrieren, speichert der Minifiltertreiber die Adresse einer Routine vom Typ PFLT_NORMALIZE_NAME_COMPONENT_EX im NormalizeNameComponentExCallback Member der FLT_REGISTRATION Struktur, die der Minifiltertreiber als Parameter an FltRegisterFilterübergibt.
Der Filter-Manager ruft diese Rückrufroutine auf, um den Minifiltertreiber nach den normalisierten Namen für Komponenten im Dateinamenpfad abzufragen, deren Namen der Minifiltertreiber geändert wurde. Wenn der Dateinamepfad mehr als eine solche Komponente enthält, kann der Filter-Manager diese Rückrufroutine mehrmals im Prozess der Normalisierung aller Komponenten im Pfad aufrufen. Der Minifiltertreiber kann den NormalizationContext Parameter verwenden, um Kontextinformationen an nachfolgende Aufrufe dieser Rückrufroutine zu übergeben.
Wenn der Minifiltertreiber den NormalizationContext Parameter verwendet, sollte er auch eine Normalisierungskontextbereinigungsroutine registrieren. Weitere Informationen finden Sie im Referenzeintrag für PFLT_NORMALIZE_CONTEXT_CLEANUP.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | fltkernel.h (include Fltkernel.h) |
IRQL- | PASSIVE_LEVEL |
Siehe auch
FltGetDestinationFileNameInformation
IoGetTransactionParameterBlock-