Share via


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
STATUS_FLT_DELETING_OBJECT
Der angegebene Filter oder das angegebene Volume wird abgerissen. Dies ist ein Fehlercode.
STATUS_FLT_FILTER_NOT_READY
Der Minifiltertreiber hat die Filterung nicht gestartet. Weitere Informationen finden Sie unter FltStartFiltering. Dies ist ein Fehlercode.
STATUS_FLT_INSTANCE_NAME_COLLISION
Auf dem angegebenen Volume ist bereits ein instance mit diesem Namen vorhanden.
STATUS_INSUFFICIENT_RESOURCES
Bei FltAttachVolume ist ein Poolzuordnungsfehler aufgetreten. Dies ist ein Fehlercode.
STATUS_OBJECT_NAME_COLLISION
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

Weitere Informationen

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING