Freigeben über


FltRetrieveFileInfoOnCreateCompletionEx-Funktion (fltkernel.h)

FltRetrieveFileInfoOnCreateCompletionEx Abfragen der angegebenen Dateiinformationen nach Abschluss der Dateierstellung.

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. Sie wird von FltRegisterFilterzurückgegeben und bleibt konstant, solange der Minifiltertreiber geladen wird.

[in] Data

Zeigen Sie 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. Dies kann einer der folgenden Werte sein:

Flagge 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.
QoCFileUsnInformation (0x00000008) Das Dateisystem gibt USN-Informationen in einer QUERY_ON_CREATE_USN_INFORMATION Struktur zurück.
QoCFileSecurityInformation (0x00000010) Das Dateisystem gibt Dateisicherheitsinformationen in einer QUERY_ON_CREATE_SECURITY_INFORMATION Struktur zurück.

[out] RetInfoSize

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

[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 verarbeitete die Anforderung, aber die angeforderten Informationen waren nicht in der Datei vorhanden, oder das Dateisystem erkennt die Informationsanforderung in InfoClassnicht. 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 das Anfordern der Informationen erneut zu versuchen.
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, das schlägt jedoch wahrscheinlich fehl.

Bemerkungen

FltRequestFileInfoOnCreateCompletion und FltRetrieveFileInfoOnCreateCompletionEx es einem Minifilter ermöglichen, Während der Dateierstellung Informationen zu einer Datei abzurufen, wodurch die Leistungskosten einer späteren Abfrage vermieden werden, die ein Stapel-Traversal erfordern würde.

  • Im Voraus erstellt der Minifilter einen Aufruf an FltRequestFileInfoOnCreateCompletion mit einer Kombination aus Eingaben InfoClassFlags, die die angeforderten Informationen identifizieren.
  • Das Dateisystem weist die entsprechende Struktur(n) zu und füllt die angeforderten Informationen, sofern unterstützt, während die Erstellung verarbeitet wird.
  • Nach der Erstellung ruft der Minifilter FltRetrieveFileInfoOnCreateCompletionEx auf, um die im Voraberstellungsaufruf angeforderten Informationen abzurufen. Wenn der Minifilter mehrere Informationstypen angefordert hat, muss er FltRetrieveFileInfoOnCreateCompletionEx einmal für jeden Informationstyp aufrufen. Zum Beispiel:

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

// 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;
QUERY_ON_CREATE_USN_INFORMATION* fileUsnInfo;
QUERY_ON_CREATE_SECURITY_INFORMATION* fileSecurityInfo;

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

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10, Version 1809
Header- fltkernel.h

Siehe auch

ECP_LIST

FLT_CALLBACK_DATA

FltRequestFileInfoOnCreateCompletion-

QUERY_ON_CREATE_EA_INFORMATION

QUERY_ON_CREATE_FILE_STAT_INFORMATION

QUERY_ON_CREATE_FILE_LX_INFORMATION