Condividi tramite


Funzione FltAttachVolume (fltkernel.h)

FltAttachVolume crea una nuova istanza del driver minifilter e la collega al volume specificato.

Sintassi

NTSTATUS FLTAPI FltAttachVolume(
  [in, out]      PFLT_FILTER      Filter,
  [in, out]      PFLT_VOLUME      Volume,
  [in, optional] PCUNICODE_STRING InstanceName,
  [out]          PFLT_INSTANCE    *RetInstance
);

Parametri

[in, out] Filter

Puntatore di filtro opaco per il chiamante. Questo parametro è obbligatorio e non può essere NULL.

[in, out] Volume

Puntatore al volume opaco per il volume a cui deve essere associata l'istanza del driver minifilter. Questo parametro è obbligatorio e non può essere NULL.

[in, optional] InstanceName

Puntatore a una struttura UNICODE_STRING contenente il nome dell'istanza per la nuova istanza. Questo parametro è facoltativo e può essere NULL. Se è NULL, FltAttachVolume tenta di leggere il nome predefinito del driver minifilter dal Registro di sistema. Per altre informazioni su questo parametro, vedere la sezione Osservazioni seguenti.

[out] RetInstance

Puntatore a una variabile allocata dal chiamante che riceve un puntatore istanza opaca per l'istanza appena creata. Questo parametro è facoltativo e può essere NULL.

Valore restituito

FltAttachVolume restituisce STATUS_SUCCESS o un valore NTSTATUS appropriato, ad esempio uno dei seguenti:

Codice restituito Descrizione
STATUS_FLT_DELETING_OBJECT
Il filtro o il volume specificato viene eliminato. Si tratta di un codice di errore.
STATUS_FLT_FILTER_NOT_READY
Il driver minifilter non ha avviato il filtro. Per altre informazioni, vedere FltStartFiltering. Si tratta di un codice di errore.
STATUS_FLT_INSTANCE_NAME_COLLISION
Esiste già un'istanza con questo nome nel volume specificato.
STATUS_INSUFFICIENT_RESOURCES
FltAttachVolume ha rilevato un errore di allocazione del pool. Si tratta di un codice di errore.
STATUS_OBJECT_NAME_COLLISION
Un'altra istanza è già stata collegata all'altitudine specificata negli attributi dell'istanza letti dal Registro di sistema. Si tratta di un codice di errore.

Commenti

Se il chiamante specifica un valore non NULL per InstanceName, FltAttachVolume legge qualsiasi attributo di istanza specificato dal driver minifilter archiviato nel Registro di sistema in HKLM\CurrentControlSet\Services\ServiceName\Instance\InstanceName, dove ServiceName è il nome del servizio del driver minifilter. Questo nome del servizio viene specificato nella direttiva AddService nella sezione DefaultInstall.Services del file INF del driver minifilter. Per altre informazioni sui file INF del driver di filtro, vedere Installazione di un driver di filtro file system.

Se il chiamante non specifica un valore per InstanceName, FltAttachVolume usa il nome archiviato nel Registro di sistema in HKLM\CurrentControlSet\Services\ServiceName\Instance\DefaultInstance per la parte InstanceName del percorso del Registro di sistema.

Il nome dell'istanza specificato nel parametro InstanceName deve essere univoco nel sistema.

FltAttachVolume restituisce un puntatore di istanza opaco per la nuova istanza in *RetInstance. Questo valore del puntatore identifica in modo univoco l'istanza del driver minifilter e rimane costante finché l'istanza è associata al volume.

FltAttachVolume aggiunge un riferimento di rundown al puntatore dell'istanza opaca restituito in *RetInstance. Quando questo puntatore non è più necessario, il chiamante deve rilasciarlo chiamando FltObjectDereference. Pertanto, ogni chiamata riuscita a FltAttachVolume deve essere corrispondente a una chiamata successiva a FltObjectDereference.

Per collegare un'istanza del driver minifilter a un volume a una determinata altitudine, chiamare FltAttachVolumeAtAltitude.

Per confrontare le altitudini di due istanze del driver minifilter associate allo stesso volume, chiamare FltCompareInstanceAltitudes.

Per scollegare un'istanza del driver minifilter da un volume, chiamare FltDetachVolume.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione fltkernel.h (includere Fltkernel.h)
Libreria FltMgr.lib
IRQL PASSIVE_LEVEL

Vedi anche

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING