Freigeben über


FltSetStreamContext-Funktion (fltkernel.h)

Die FltSetStreamContext Routine legt einen Kontext für einen Dateidatenstrom fest.

Syntax

NTSTATUS FLTAPI FltSetStreamContext(
  [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 Instanzzeiger für die Minifiltertreiberinstanz, deren Kontext in die Liste der kontextgebundenen Kontexte eingefügt, entfernt oder ersetzt werden soll.

[in] FileObject

Ein Zeiger auf ein Dateiobjekt für den Dateidatenstrom.

[in] Operation

Flag, das Details des auszuführenden Vorgangs angibt. Dieser Parameter muss eine der folgenden Sein:

Flagge Bedeutung
FLT_SET_CONTEXT_REPLACE_IF_EXISTS Wenn bereits ein Kontext für Instancefestgelegt ist, ersetzt FltSetStreamContext sie durch den in NewContextangegebenen Kontext. Andernfalls wird NewContext- in die Liste der Kontexte für den Dateidatenstrom eingefügt.
FLT_SET_CONTEXT_KEEP_IF_EXISTS Wenn für diesen Instancebereits ein Kontext festgelegt ist, gibt FltSetStreamContext- 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 NewContext- in die Liste der Kontexte für den Dateidatenstrom ein und erhöht die Verweisanzahl.

[in] NewContext

Ein Zeiger auf den neuen Kontext, der für den Dateidatenstrom 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 Datenstromkontexts für den parameter Instance empfängt, 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 FltSetStreamContext- 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 Operationangegeben wurde, gibt dieser Fehlercode an, dass ein Streamkontext bereits an den Dateidatenstrom 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 Datenstromkontext, oder für den Parameter Operation wurde ein ungültiger Wert angegeben. Dies ist ein Fehlercode.
STATUS_NOT_SUPPORTED Das Dateisystem unterstützt keine Datenstromkontexte für diesen Dateidatenstrom. Dies ist ein Fehlercode.

Bemerkungen

Weitere Informationen zu Kontexten finden Sie unter Informationen zu Minifilterkontexten.

Ein Minifiltertreiber ruft FltSetStreamContext- auf, um einen Datenstromkontext an einen Dateidatenstrom anzufügen oder einen vorhandenen Datenstromkontext zu entfernen oder zu ersetzen. Ein Minifiltertreiber kann einen Kontext pro Minifiltertreiberinstanz an den Dateidatenstrom anfügen.

FltSetStreamContext- kann nicht für ein ungeöffnetes FileObject-aufgerufen werden. Daher kann es nicht aus einem vorab erstellten Rückruf für einen Datenstrom aufgerufen werden, da der Datenstrom zu diesem Zeitpunkt nicht geöffnet wurde. Ein Minifiltertreiber kann den Datenstromkontext jedoch im Voraberstellungsrückruf zuordnen und einrichten, ihn mithilfe des Abschlusskontextparameters an den Post-Create-Rückruf übergeben und den Datenstromkontext im Datenstrom nach dem Erstellen eines Rückrufs festlegen.

Referenzzählung

Wenn FltSetStreamContext 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 FltSetStreamContext 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 dem Datenstrom zugeordnet ist. Der Filteraufruf FltSetStreamContext- muss FltReleaseContext- für OldContext- aufrufen, wenn der Kontextzeiger nicht mehr benötigt wird.

Unabhängig vom Erfolg:

Weitere Informationen finden Sie unter Verweisen auf Kontexte.

Andere Kontextvorgänge

Weitere Informationen finden Sie unter Festlegen von Kontextenund Freigeben von Kontexten:

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar und unterstützt in Microsoft Windows 2000 Update Rollup 1 für SP4, Windows XP SP2, Windows Server 2003 SP1 und höher.
Zielplattform- Universal
Header- fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
DLL- Fltmgr.sys
IRQL- <= APC_LEVEL

Siehe auch

FltAllocateContext-

FltDeleteContext-

FltDeleteStreamContext-

FltGetStreamContext-

FltReleaseContext-