FltAttachVolume-Funktion (fltkernel.h)
FltAttachVolume erstellt eine neue Minifiltertreiberinstanz und fügt sie an das angegebene Volume an.
Syntax
NTSTATUS FLTAPI FltAttachVolume(
[in, out] PFLT_FILTER Filter,
[in, out] PFLT_VOLUME Volume,
[in, optional] PCUNICODE_STRING InstanceName,
[out] PFLT_INSTANCE *RetInstance
);
Parameter
[in, out] Filter
Undurchsichtiger Filterzeiger für den Aufrufer. Dieser Parameter ist erforderlich und kann nicht NULL-werden.
[in, out] Volume
Undurchsichtiger Volumezeiger für das Volume, an das die Minifiltertreiberinstanz angefügt werden soll. Dieser Parameter ist erforderlich und kann nicht NULL-werden.
[in, optional] InstanceName
Zeigen Sie auf eine UNICODE_STRING Struktur, die den Instanznamen für die neue Instanz enthält. Dieser Parameter ist optional und kann NULL-werden. Wenn es NULL-ist, FltAttachVolume versucht, den Standardinstanznamen des Minifiltertreibers aus der Registrierung zu lesen. (Weitere Informationen zu diesem Parameter finden Sie im folgenden Abschnitt "Hinweise".)
[out] RetInstance
Zeiger auf eine vom Aufrufer zugewiesene Variable, die einen undurchsichtigen Instanzzeiger für die neu erstellte Instanz empfängt. Dieser Parameter ist optional und kann NULL-werden.
Rückgabewert
FltAttachVolume gibt STATUS_SUCCESS oder einen geeigneten NTSTATUS-Wert zurück, z. B. einen der folgenden:
Rückgabecode | Beschreibung |
---|---|
|
Der angegebene Filter- oder Volume- wird heruntergerissen. Dies ist ein Fehlercode. |
|
Der Minifiltertreiber hat nicht mit dem Filtern begonnen. Weitere Informationen finden Sie unter FltStartFiltering. Dies ist ein Fehlercode. |
|
Eine Instanz ist bereits mit diesem Namen auf dem angegebenen Volume vorhanden. |
|
FltAttachVolume ein Poolzuordnungsfehler aufgetreten ist. Dies ist ein Fehlercode. |
|
Eine andere Instanz wurde bereits auf der höhe angefügt, die in den Instanzattributen angegeben wurde, die aus der Registrierung gelesen wurden. Dies ist ein Fehlercode. |
Bemerkungen
Wenn der Aufrufer einen Nicht-NULL- Wert für InstanceNameangibt, liest FltAttachVolume instanzattribute, die durch den Minifiltertreiber angegeben werden, der in der Registrierung unter HKLM\CurrentControlSet\Services\ServiceName\InstanceName gespeichert ist, wobei ServiceName- der Dienstname des Minifiltertreibers ist. Dieser Dienstname wird in der AddService-Direktive im Abschnitt DefaultInstall.Services der INF-Datei des Minifiltertreibers angegeben. (Weitere Informationen zu INF-Dateien des Filtertreibers finden Sie unter Installieren eines Dateisystemfiltertreibers.)
Wenn der Aufrufer keinen Wert für InstanceNameangibt, verwendet FltAttachVolume den in der Registrierung gespeicherten Namen unter HKLM\CurrentControlSet\Services\ServiceName\Instances\DefaultInstance für den InstanceName Teil des Registrierungspfads.
Der im InstanceName Parameter angegebene Instanzname muss im gesamten System eindeutig sein.
FltAttachVolume gibt einen undurchsichtigen Instanzzeiger für die neue Instanz in *RetInstancezurück. Dieser Zeigerwert identifiziert die Minifiltertreiberinstanz eindeutig und bleibt konstant, solange die Instanz an das Volume angefügt ist.
FltAttachVolume fügt einen Rundown-Verweis auf den undurchsichtigen Instanzzeiger hinzu, der in *RetInstancezurückgegeben wird. Wenn dieser Zeiger nicht mehr benötigt wird, muss der Aufrufer ihn freigeben, indem FltObjectDereferenceaufgerufen wird. Daher muss jeder erfolgreiche Aufruf von FltAttachVolume mit einem nachfolgenden Aufruf von FltObjectDereferenceabgeglichen werden.
Rufen Sie FltAttachVolumeAtAltitudeauf, um eine Minifiltertreiberinstanz an ein Volume in einer bestimmten Höhe anzufügen.
Rufen Sie FltCompareInstanceAltitudesauf, um die Höhe von zwei Minifiltertreiberinstanzen zu vergleichen, die mit demselben Volume verbunden sind.
Rufen Sie FltDetachVolumeauf, um eine Minifiltertreiberinstanz von einem Volume zu trennen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | fltkernel.h (include Fltkernel.h) |
Library | FltMgr.lib |
IRQL- | PASSIVE_LEVEL |