FltSetTransactionContext-Funktion (fltkernel.h)
Die FltSetTransactionContext-Routine legt einen Kontext für eine Transaktion fest.
Syntax
NTSTATUS FLTAPI FltSetTransactionContext(
[in] PFLT_INSTANCE Instance,
[in] PKTRANSACTION Transaction,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out, optional] PFLT_CONTEXT *OldContext
);
Parameter
[in] Instance
Undurchsichtiger instance Zeiger für den Aufrufer.
[in] Transaction
Undurchsichtiger Transaktionszeiger für die Transaktion, für die der Kontext festgelegt wird.
[in] Operation
Flag, das die Details des auszuführenden Vorgangs angibt. Dieser Parameter muss einer der folgenden Sein:
Flag | Bedeutung |
---|---|
FLT_SET_CONTEXT_REPLACE_IF_EXISTS | Wenn bereits ein Kontext für die Transaktion festgelegt ist, auf die der Transaction-Parameter verweist, ersetzt FltSetTransactionContext ihn durch den Kontext, auf den der NewContext-Parameter verweist. Andernfalls wird der Kontext festgelegt, auf den der NewContext-Parameter verweist, als Kontext für die Transaktion, auf die der Transaction-Parameter verweist. |
FLT_SET_CONTEXT_KEEP_IF_EXISTS | Wenn bereits ein Kontext für die Transaktion festgelegt ist, auf die der Transaction-Parameter verweist, gibt FltSetTransactionContext STATUS_FLT_CONTEXT_ALREADY_DEFINED zurück und ersetzt nicht den vorhandenen Kontext oder erhöht die Verweisanzahl. Wenn noch kein Kontext festgelegt wurde, legt diese Routine den Kontext fest, auf den der NewContext-Parameter verweist, als Kontext für die Transaktion, auf die der Transaction-Parameter verweist, und erhöht die Verweisanzahl. |
[in] NewContext
Zeiger auf den neuen Kontext, der für die Transaktion festgelegt werden soll. Dieser Parameter ist erforderlich und darf nicht NULL sein.
[out, optional] OldContext
Zeiger auf eine vom Aufrufer zugewiesene Variable, die die Adresse des vorhandenen Transaktionskontexts empfängt, sofern bereits festgelegt. Dieser Parameter ist optional und kann NULL sein. Weitere Informationen zu diesem Parameter finden Sie im abschnitt Hinweise.
Rückgabewert
FltSetTransactionContext gibt STATUS_SUCCESS oder einen entsprechenden 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 der Transaktion bereits ein Kontext angefügt ist. Für einen bestimmten Minifiltertreiber kann nur ein Kontext an eine Transaktion 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 einer FltSetXxxContext-Routine bereits verwendet wird. |
STATUS_FLT_DELETING_OBJECT | |
Die im Parameter Instance angegebene instance wird abgerissen. Dies ist ein Fehlercode. | |
STATUS_INVALID_PARAMETER | Es wurde ein ungültiger Parameter übergeben. Beispielsweise verweist der NewContext-Parameter nicht auf einen gültigen Transaktionskontext, oder für den Operation-Parameter wurde ein ungültiger Wert angegeben. Dies ist ein Fehlercode. |
Hinweise
Weitere Informationen zu Kontexten finden Sie unter Informationen zu Minifilterkontexten.
Ein Minifiltertreiber ruft FltSetTransactionContext auf, um einen Kontext an eine Transaktion anzufügen oder einen vorhandenen Transaktionskontext zu entfernen oder zu ersetzen. Ein Minifiltertreiber kann nur einen Kontext an eine bestimmte Transaktion anfügen.
Verweisanzahl
Wenn FltSetTransactionContext erfolgreich ist:
- Die Verweisanzahl für NewContext wird erhöht. Wenn NewContext nicht mehr benötigt wird, muss der Minifilter FltReleaseContext aufrufen, um die Verweisanzahl zu verringern.
Andernfalls, wenn FltSetTransactionContext fehlschlägt :
- 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 Transaktion zugeordnet ist. Der Filter, der FltSetTransactionContext aufruft , muss auch FltReleaseContext für OldContext aufrufen, wenn der Kontextzeiger nicht mehr benötigt wird.
Unabhängig vom Erfolg:
- Der Filter, der FltSetTransactionContext aufruft , muss FltReleaseContext aufrufen, um die Verweisanzahl für das NewContext-Objekt zu verringern, das von FltAllocateContext inkrementiert wurde.
Weitere Informationen finden Sie unter Verweisen auf Kontexte.
Andere Kontextvorgänge
Weitere Informationen finden Sie unter Festlegen von Kontexten und Freigeben von Kontexten:
- Um einen neuen Kontext zuzuordnen, rufen Sie FltAllocateContext auf.
Um einen Transaktionskontext abzurufen, rufen Sie FltGetTransactionContext auf.
- Um einen Transaktionskontext zu löschen, rufen Sie FltDeleteTransactionContext oder FltDeleteContext auf.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar und unterstützt unter Windows Vista und höheren Betriebssystemen. |
Zielplattform | Universell |
Header | fltkernel.h (include Fltkernel.h) |
Bibliothek | FltMgr.lib |
DLL | FltMgr.sys |
IRQL | <= APC_LEVEL. |