FltRetrieveFileInfoOnCreateCompletionEx-Funktion (fltkernel.h)

FltRetrieveFileInfoOnCreateCompletionEx fragt die angegebenen Dateiinformationen nach Abschluss der Dateierstellung ab.

Syntax

NTSTATUS FLTAPI FltRetrieveFileInfoOnCreateCompletionEx(
  [in]  PFLT_FILTER        Filter,
  [in]  PFLT_CALLBACK_DATA Data,
  [in]  ULONG              InfoClass,
  [out] PULONG             RetInfoSize,
  [out] PVOID              *RetInfoBuffer
);

Parameter

[in] Filter

Undurchsichtiger Filterzeiger, der den Minifiltertreiber eindeutig identifiziert. Er wird von FltRegisterFilter zurückgegeben und bleibt konstant, solange der Minifiltertreiber geladen wird.

[in] Data

Zeiger auf die FLT_CALLBACK_DATA Rückrufdaten, die den E/A-Vorgang darstellen.

[in] InfoClass

Flag, das den Typ der zurückzugebenden Dateiinformationen angibt. Beachten Sie, dass Flags nicht kombiniert werden können. Folgenden Werte sind möglich:

Flag Bedeutung
QoCFileStatInformation (0x00000001) Das Dateisystem gibt Dateistatinformationen in einer QUERY_ON_CREATE_FILE_STAT_INFORMATION-Struktur zurück.
QoCFileLxInformation (0x00000002) Das Dateisystem gibt erweiterte Linux-ähnliche Informationen in einer QUERY_ON_CREATE_FILE_LX_INFORMATION-Struktur zurück.
QoCFileEaInformation (0x00000004) Das Dateisystem gibt erweiterte Attribute (EA) in einer QUERY_ON_CREATE_EA_INFORMATION-Struktur zurück.

[out] RetInfoSize

Zeiger auf eine ULONG, die die Größe des Puffers in Bytes empfängt, auf den RetInfoBuffer zeigt.

[out] RetInfoBuffer

Empfängt einen Zeiger auf die angeforderte InfoClass-Struktur . Wenn das Dateisystem die Anforderung verarbeiten kann, aber die angeforderten Dateiinformationen nicht finden kann, wird dieser Parameter auf NULL festgelegt.

Rückgabewert

Rückgabecode Beschreibung
STATUS_SUCCESS Das Dateisystem hat die angeforderten Dateiinformationen erfolgreich zurückgegeben.
STATUS_NOT_FOUND Das Dateisystem hat die Anforderung verarbeitet, aber die angeforderten Informationen waren in der Datei nicht vorhanden, oder das Dateisystem erkennt die Informationsanforderung in InfoClass nicht. Der Aufrufer sollte keine herkömmlichen Dateisystem-APIs verwenden, um die Informationen anzufordern.
STATUS_NOT_SUPPORTED Das Dateisystem konnte die angeforderten Informationen nicht abrufen. Dieser Fehler tritt auf, wenn das Dateisystem die Informationsanforderung oder das zugehörige ECP nicht unterstützt oder weil FltRequestFileInfoOnCreateCompletion während der Dateivorerstellung nicht aufgerufen wurde. Der Aufrufer sollte stattdessen herkömmliche Dateisystem-APIs verwenden, um die Informationen erneut anzufordern.
STATUS_UNSUCCESSFUL Das Dateisystem hat beim Versuch, die angeforderten Informationen abzurufen, einen Fehler erhalten. Der Aufrufer kann versuchen, die Informationen über normale Dateisystem-APIs anzufordern, aber dies schlägt wahrscheinlich fehl.

Hinweise

FltRequestFileInfoOnCreateCompletion und FltRetrieveFileInfoOnCreateCompletionEx ermöglichen einem Minifilter das Abrufen von Informationen zu einer Datei während der Dateierstellung, wodurch die Leistungskosten einer späteren Abfrage vermieden werden, die einen Stapeldurchlauf erfordern würde.

  • Bei der Voraberstellung führt der Minifilter einen Aufruf von FltRequestFileInfoOnCreateCompletion mit einer Kombination aus Eingabe infoClassFlags aus, die die angeforderten Informationen identifizieren.
  • Das Dateisystem ordnet die entsprechenden Strukturen zu und füllt die angeforderten Informationen ein, sofern unterstützt, während die Erstellung verarbeitet wird.
  • Nach der Erstellung ruft der Minifilter FltRetrieveFileInfoOnCreateCompletionEx auf, um die Informationen abzurufen, die im Voraberstellungsaufruf angefordert wurden. Wenn der Minifilter mehr als einen Informationstyp angefordert hat, muss fltRetrieveFileInfoOnCreateCompletionEx für jeden Informationstyp einmal aufgerufen werden. Beispiel:

// Pre-create:
NTSTATUS status;
status = FltRequestFileInfoOnCreateCompletion( Filter,
                                               CallbackData,
                                               QoCFileStatInformation | QoCFileLxInformation | QoCFileEaInformation );

// Post-create:
NTSTATUS status;
ULONG fileStatSize, fileLxSize, fileEaSize;
QUERY_ON_CREATE_FILE_STAT_INFORMATION* fileStatInfo;
QUERY_ON_CREATE_FILE_LX_INFORMATION* fileLxInfo;
QUERY_ON_CREATE_EA_INFORMATION* fileEaInfo;

status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileStatInformation,
                                                  &fileStatSize,
                                                  &fileStatInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileLxInformation,
                                                  &fileLxSize,
                                                  &fileLxInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileEaInformation, 
                                                  &fileEaSize, 
                                                  &fileEaInfo );

Sobald FltRetrieveFileInfoOnCreateCompletionEx zurückgegeben wird, kann ein Minifilter in den Puffer schreiben, auf den RetInfoBuffer zeigt. Alle Filter oberhalb dieses Minifilters sehen die Änderungen, wenn sie FltRetrieveFileInfoOnCreateCompletionEx für den geänderten Informationstyp aufrufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1809
Kopfzeile fltkernel.h

Weitere Informationen

ECP_LIST

FLT_CALLBACK_DATA

FltRequestFileInfoOnCreateCompletion

QUERY_ON_CREATE_EA_INFORMATION

QUERY_ON_CREATE_FILE_STAT_INFORMATION

QUERY_ON_CREATE_FILE_LX_INFORMATION