FltSetInstanceContext-Funktion (fltkernel.h)
FltSetInstanceContext legt einen Kontext für eine Minifiltertreiberinstanz fest.
Syntax
NTSTATUS FLTAPI FltSetInstanceContext(
[in] PFLT_INSTANCE Instance,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out] PFLT_CONTEXT *OldContext
);
Parameter
[in] Instance
Undurchsichtiger Instanzzeiger für die Instanz.
[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 die Instanz festgelegt ist, auf die der parameter Instance verweist, ersetzt FltSetInstanceContext- diesen Kontext durch den in NewContextangegebenen Kontext. Andernfalls wird NewContext- als Kontext für Instancefestgelegt. |
FLT_SET_CONTEXT_KEEP_IF_EXISTS | Wenn für diesen Instancebereits ein Kontext festgelegt ist, gibt FltSetInstanceContext STATUS_FLT_CONTEXT_ALREADY_DEFINED zurück und ersetzt nicht den vorhandenen Kontext oder erhöht die Verweisanzahl. Wenn ein Kontext noch nicht festgelegt ist, wird die Routine NewContext- als Kontext für Instanz- festgelegt und die Verweisanzahl erhöht. |
[in] NewContext
Zeiger auf den neuen Kontext, der für die Instanz festgelegt werden soll. Dieser Parameter ist erforderlich und kann nicht NULL-werden.
[out] OldContext
Zeigen Sie auf eine vom Aufrufer zugewiesene Variable, die die Adresse des vorhandenen Instanzkontexts 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
FltSetInstanceContext 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 Instanz angefügt ist. An eine Instanz kann nur ein Kontext angefügt werden. |
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. |
Bemerkungen
Weitere Informationen zu Kontexten finden Sie unter Informationen zu Minifilterkontexten.
Ein Minifiltertreiber ruft FltSetInstanceContext auf, um einen Instanzkontext an eine instanzeigene Minifiltertreiberinstanz anzufügen oder einen vorhandenen Instanzkontext zu entfernen oder zu ersetzen. Ein Minifiltertreiber kann nur einen Kontext an eine Instanz anfügen.
Referenzzählung
Wenn FltSetInstanceContext erfolgreich ist:
- Die Verweisanzahl für NewContext- erhöht wird. Wenn der Kontext von NewContext- nicht mehr benötigt wird, muss der Minifilter FltReleaseContext- aufrufen, um die Referenzanzahl zu verringern.
Else if FltSetInstanceContext fails:
- Die Verweisanzahl für NewContext- bleibt unverändert.
- Wenn OldContext- nicht NULL- ist und nicht auf NULL_CONTEXT zeigt, ist OldContext- ein Verweis auf den Kontext, der derzeit der Instanz zugeordnet ist. Der Filteraufruf FltSetInstanceContext- muss schließlich FltReleaseContext- für OldContext- aufrufen, wenn der Kontextzeiger nicht mehr benötigt wird.
Unabhängig vom Erfolg:
- Der Filteraufruf FltSetInstanceContext- 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 Instanzkontexts FltGetInstanceContextauf.
Rufen Sie zum Löschen eines Instanzkontexts FltDeleteInstanceContext oder FltDeleteContext-auf.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar und unterstützt in Microsoft Windows 2000 UpdateRollup 1 für SP4, Windows XP SP2, Windows Server 2003 SP1 und höheren Versionen des Betriebssystems. |
Zielplattform- | Universal |
Header- | fltkernel.h (include Fltkernel.h) |
Library | FltMgr.lib |
DLL- | Fltmgr.sys |
IRQL- | <= APC_LEVEL |