FltAttachVolume-Funktion (fltkernel.h)
FltAttachVolume erstellt einen neuen Minifiltertreiber instance und fügt ihn 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 darf nicht NULL sein.
[in, out] Volume
Undurchsichtiger Volumezeiger für das Volume, an das der Minifiltertreiber instance soll. Dieser Parameter ist erforderlich und darf nicht NULL sein.
[in, optional] InstanceName
Zeiger auf eine UNICODE_STRING-Struktur, die den instance Namen für die neue instance enthält. Dieser Parameter ist optional und kann NULL sein. Wenn es NULL ist, versucht FltAttachVolume, den Standardnamen des Minifiltertreibers instance 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 instance-Zeiger für die neu erstellte instance empfängt. Dieser Parameter ist optional und kann NULL sein.
Rückgabewert
FltAttachVolume gibt STATUS_SUCCESS oder einen entsprechenden NTSTATUS-Wert zurück, z. B. einen der folgenden:
Rückgabecode | Beschreibung |
---|---|
|
Der angegebene Filter oder das angegebene Volume wird abgerissen. Dies ist ein Fehlercode. |
|
Der Minifiltertreiber hat die Filterung nicht gestartet. Weitere Informationen finden Sie unter FltStartFiltering. Dies ist ein Fehlercode. |
|
Auf dem angegebenen Volume ist bereits ein instance mit diesem Namen vorhanden. |
|
Bei FltAttachVolume ist ein Poolzuordnungsfehler aufgetreten. Dies ist ein Fehlercode. |
|
Eine weitere instance wurde bereits in der Höhe angefügt, die in der instance Attributen angegeben ist, die aus der Registrierung gelesen wurden. Dies ist ein Fehlercode. |
Hinweise
Wenn der Aufrufer einen Wert ohne NULL für InstanceName angibt, liest FltAttachVolume alle vom Minifiltertreiber angegebenen instance Attribute aus, die in der Registrierung unter HKLM\CurrentControlSet\Services\ServiceName\Instances\InstanceName gespeichert sind, 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 Filtertreiber-INF-Dateien finden Sie unter Installieren eines Dateisystemfiltertreibers.)
Wenn der Aufrufer keinen Wert für InstanceName angibt, verwendet FltAttachVolume den in der Registrierung unter HKLM\CurrentControlSet\Services\ServiceName\Instances\DefaultInstance gespeicherten Namen für den Teil InstanceName des Registrierungspfads.
Der im Parameter InstanceName angegebene instance Name muss systemweit eindeutig sein.
FltAttachVolume gibt einen undurchsichtigen instance-Zeiger für die neue instance in *RetInstance zurück. Dieser Zeigerwert identifiziert eindeutig den Minifiltertreiber instance und bleibt konstant, solange der instance an das Volume angefügt ist.
FltAttachVolume fügt einen Rundownverweis zum undurchsichtigen instance-Zeiger hinzu, der in *RetInstance zurückgegeben wird. Wenn dieser Zeiger nicht mehr benötigt wird, muss der Aufrufer ihn freigeben, indem er FltObjectDereference aufruft. Daher muss jeder erfolgreiche Aufruf von FltAttachVolume durch einen nachfolgenden Aufruf von FltObjectDereference abgeglichen werden.
Um einen Minifiltertreiber instance an ein Volume in einer bestimmten Höhe anzufügen, rufen Sie FltAttachVolumeAtAltitude auf.
Um die Höhen von zwei Minifiltertreiberinstanzen zu vergleichen, die an dasselbe Volume angefügt sind, rufen Sie FltCompareInstanceAltitudes auf.
Um einen Minifiltertreiber instance von einem Volume zu trennen, rufen Sie FltDetachVolume auf.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | fltkernel.h (include Fltkernel.h) |
Bibliothek | FltMgr.lib |
IRQL | PASSIVE_LEVEL |