PFLT_NORMALIZE_NAME_COMPONENT 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 als NormalizeNameComponentCallback-Routine des Minifiltertreibers registrieren.
Syntax
PFLT_NORMALIZE_NAME_COMPONENT PfltNormalizeNameComponent;
NTSTATUS PfltNormalizeNameComponent(
[in] PFLT_INSTANCE Instance,
[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] 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 in Bytes gespeicherten übergeordneten Verzeichnisnamens in der Struktur, 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.
[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 als NormalizeNameComponentCallback-Routine des Minifiltertreibers registrieren.
Um diese Rückrufroutine zu registrieren, speichert der Minifiltertreiber die Adresse einer Routine vom Typ PFLT_NORMALIZE_NAME_COMPONENT im NormalizeNameComponentCallback 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
PFLT_NORMALIZE_CONTEXT_CLEANUP