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
FltRequestFileInfoOnCreateCompletion
QUERY_ON_CREATE_EA_INFORMATION
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für