FltSetFileContext-Funktion (fltkernel.h)
Die FltSetFileContext Routine legt einen Kontext für eine Datei fest.
Syntax
NTSTATUS FLTAPI FltSetFileContext(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out] PFLT_CONTEXT *OldContext
);
Parameter
[in] Instance
Ein undurchsichtiger Zeiger auf eine Minifiltertreiberinstanz für den Aufrufer. Dieser Parameter ist erforderlich und kann nicht NULL-werden.
[in] FileObject
Zeigen Sie auf ein Dateiobjekt, für die Datei. Dieser Parameter ist erforderlich und kann nicht NULL-werden.
[in] Operation
Ein Flag, das den Typ des Auszuführenden Vorgangs für FltSetFileContext- angibt. Dieser Parameter muss eines der folgenden Flags sein:
Flagge | Bedeutung |
---|---|
FLT_SET_CONTEXT_REPLACE_IF_EXISTS | Wenn bereits ein Kontext für die Datei festgelegt ist, auf die der FileObject Parameter verweist, ersetzt FltSetFileContext diesen Kontext durch den in NewContextangegebenen Kontext. Andernfalls wird NewContext- in die Liste der Kontexte für die Datei eingefügt. |
FLT_SET_CONTEXT_KEEP_IF_EXISTS | Wenn bereits ein Kontext für die Datei festgelegt ist, auf die FileObject- verweist, gibt FltSetFileContext- STATUS_FLT_CONTEXT_ALREADY_DEFINED zurück und ersetzt nicht den vorhandenen Kontext oder erhöht die Verweisanzahl. Wenn noch kein Kontext festgelegt wurde, fügt die Routine den in NewContext- angegebenen Kontext in die Liste der Kontexte für die Datei ein und erhöht die Verweisanzahl. |
[in] NewContext
Ein Zeiger auf den neuen Kontext, der für die Datei festgelegt werden soll. Dieser Parameter ist erforderlich und kann nicht NULL-werden.
[out] OldContext
Ein Zeiger auf eine vom Aufrufer zugewiesene Variable, die die Adresse des vorhandenen Dateikontexts für die Instanz empfängt, auf die vom parameter Instance verwiesen wird, sofern bereits eine festgelegt ist. Dieser Parameter ist optional und kann NULL-werden. Weitere Informationen zu diesem Parameter finden Sie im folgenden Abschnitt "Hinweise".
Rückgabewert
Die FltSetFileContext Routine gibt STATUS_SUCCESS oder einen geeigneten NTSTATUS-Wert zurück, z. B. einen der folgenden:
Rückgabecode | Beschreibung |
---|---|
STATUS_FLT_CONTEXT_ALREADY_DEFINED | Wenn FLT_SET_CONTEXT_KEEP_IF_EXISTS für den Parameter Operation angegeben wurde, gibt dieser Fehlercode an, dass ein Kontext bereits an die Datei angefügt ist. |
STATUS_FLT_CONTEXT_ALREADY_LINKED | Der kontext, auf den der NewContext Parameter verweist, ist bereits mit einem Objekt verknüpft. Mit anderen Worten: Dieser Fehlercode gibt an, dass NewContext- aufgrund eines erfolgreichen vorherigen Aufrufs eines FltSetXxxContext Routine bereits verwendet wird. |
STATUS_FLT_DELETING_OBJECT | Die im Instance Parameter angegebene Instanz wird heruntergerissen. Dies ist ein Fehlercode. |
STATUS_INVALID_PARAMETER | Ein ungültiger Parameter wurde übergeben. Beispielsweise verweist der NewContext Parameter nicht auf einen gültigen Dateikontext, oder für den Parameter Operation wurde ein ungültiger Wert angegeben. Dies ist ein Fehlercode. |
STATUS_NOT_SUPPORTED | Dateikontexte werden für diese Datei nicht unterstützt. Dies ist ein Fehlercode. |
Bemerkungen
Weitere Informationen zu Kontexten finden Sie unter Informationen zu Minifilterkontexten.
Ein Minifiltertreiber ruft FltSetFileContext- auf, um seinen eigenen Dateikontext für eine Datei festzulegen oder zu ersetzen. Ein Minifiltertreiber kann nur einen Kontext pro Minifiltertreiberinstanz an die Datei anfügen.
FltSetFileContext- kann nicht für ein ungeöffnetes FileObject-aufgerufen werden. Daher kann FltSetFileContext- nicht aus einem vorab erstellten Rückruf für eine Datei aufgerufen werden, da die Datei zu diesem Zeitpunkt nicht geöffnet wurde. Ein Minifiltertreiber kann den Dateikontext jedoch im Voraberstellungsrückruf zuordnen und einrichten, ihn mithilfe des Abschlusskontextparameters an den Post-Create-Rückruf übergeben und den Dateikontext für die Datei festlegen, die diesem Datenstrom im nach dem Erstellen eines Rückrufs entspricht.
Referenzzählung
Wenn FltSetFileContext erfolgreich ist:
- Die Verweisanzahl für NewContext- erhöht wird. Wenn NewContext- nicht mehr benötigt wird, muss der Minifilter FltReleaseContext- aufrufen, um die Referenzanzahl zu verringern.
Else if FltSetFileContext fails:
- Die Verweisanzahl für NewContext- bleibt unverändert.
- Wenn OldContext- nicht NULL- ist und nicht auf NULL_CONTEXT verweist, ist OldContext- ein Verweis auf den Kontext, der derzeit der Datei zugeordnet ist. Der Filteraufruf FltSetFileContext- muss schließlich FltReleaseContext- für OldContext- aufrufen, wenn der Kontextzeiger nicht mehr benötigt wird.
Unabhängig vom Erfolg:
- Der Filteraufruf FltSetFileContext- muss FltReleaseContext- aufrufen, um die Verweisanzahl für das NewContext--Objekt zu erhöhen, das von FltAllocateContexterhöht wurde.
Weitere Informationen finden Sie unter Verweisen auf Kontexte.
Andere Kontextvorgänge
Weitere Informationen finden Sie unter Festlegen von Kontextenund Freigeben von Kontexten:
Rufen Sie FltAllocateContextauf, um einen neuen Kontext zuzuweisen.
Rufen Sie zum Abrufen eines Dateikontexts FltGetFileContextauf.
Rufen Sie zum Löschen eines Dateikontexts FltDeleteFileContext oder FltDeleteContext-auf.
Um festzustellen, ob Dateikontexte für eine bestimmte Datei unterstützt werden, rufen Sie FltSupportsFileContexts oder FltSupportsFileContextsExauf.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar und unterstützt ab Windows Vista. |
Zielplattform- | Universal |
Header- | fltkernel.h (include Fltkernel.h) |
Library | Fltmgr.lib |
DLL- | Fltmgr.sys |
IRQL- | <= APC_LEVEL |