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
FltRequestFileInfoOnCreateCompletion-
QUERY_ON_CREATE_EA_INFORMATION