Freigeben über


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
STATUS_FLT_DELETING_OBJECT
Der angegebene Filter- oder Volume- wird heruntergerissen. Dies ist ein Fehlercode.
STATUS_FLT_FILTER_NOT_READY
Der Minifiltertreiber hat nicht mit dem Filtern begonnen. Weitere Informationen finden Sie unter FltStartFiltering. Dies ist ein Fehlercode.
STATUS_FLT_INSTANCE_NAME_COLLISION
Eine Instanz ist bereits mit diesem Namen auf dem angegebenen Volume vorhanden.
STATUS_INSUFFICIENT_RESOURCES
FltAttachVolume ein Poolzuordnungsfehler aufgetreten ist. Dies ist ein Fehlercode.
STATUS_OBJECT_NAME_COLLISION
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

Siehe auch

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference-

FltStartFiltering-

UNICODE_STRING