FltSetVolumeContext-Funktion (fltkernel.h)
FltSetVolumeContext legt einen Kontext für ein Volume fest.
Syntax
NTSTATUS FLTAPI FltSetVolumeContext(
[in] PFLT_VOLUME Volume,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out, optional] PFLT_CONTEXT *OldContext
);
Parameter
[in] Volume
Undurchsichtiger Volumezeiger für das Volume.
[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 Volumefestgelegt ist, ersetzt FltSetVolumeContext- ihn durch NewContext->. Andernfalls wird NewContext- in die Liste der Kontexte für das Volume eingefügt. |
FLT_SET_CONTEXT_KEEP_IF_EXISTS | Wenn für dieses Volume bereits ein Kontext festgelegt ist, gibt FltSetVolumeContext- 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 das Volume ein und erhöht die Referenzanzahl. |
[in] NewContext
Zeiger auf den neuen Kontext, der für das Volume festgelegt werden soll. Dieser Parameter ist erforderlich und kann nicht NULL-werden.
[out, optional] OldContext
Zeiger auf eine vom Aufrufer zugewiesene Variable, die die Adresse des vorhandenen Volumekontexts für Volumeempfängt. Dieser Parameter ist optional und kann NULL-werden. Weitere Informationen zu diesem Parameter finden Sie im folgenden Abschnitt "Hinweise".
Rückgabewert
FltSetVolumeContext gibt STATUS_SUCCESS oder einen entsprechenden NTSTATUS-Wert wie einen der folgenden zurück:
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 Kontext bereits an das Volume 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 | Das angegebene Volume- wird heruntergerissen. Dies ist ein Fehlercode. |
STATUS_INVALID_PARAMETER | Ein ungültiger Parameter wurde übergeben. Der parameter NewContext zeigt beispielsweise nicht auf einen gültigen Volumekontext, oder für Operationwurde ein ungültiger Wert angegeben. Dies ist ein Fehlercode. |
Bemerkungen
Weitere Informationen zu Kontexten finden Sie unter Informationen zu Minifilterkontexten.
Ein Minifiltertreiber ruft FltSetVolumeContext- auf, um einen Kontext an ein Volume anzufügen oder einen vorhandenen Volumekontext zu entfernen oder zu ersetzen. Ein Minifiltertreiber kann nur einen Kontext an ein Volume anfügen.
Referenzzählung
Wenn FltSetVolumeContext 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 FltSetVolumeContext 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 Volume zugeordnet ist. Der Filteraufruf FltSetVolumeContext- muss FltReleaseContext- für OldContext- aufrufen, wenn der Kontextzeiger nicht mehr benötigt wird.
Unabhängig vom Erfolg:
- Der Filteraufruf FltSetVolumeContext- 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 FltGetVolumeContext-auf, um einen Volumekontext abzurufen.
Rufen Sie zum Löschen eines Volumekontexts FltDeleteVolumeContext oder FltDeleteContext-auf.
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 |