Funzione FltOpenVolume (fltkernel.h)

La routine FltOpenVolume restituisce un handle e un puntatore a oggetti file per il volume del file system a cui è associata un'istanza del driver minifilter specificata.

Sintassi

NTSTATUS FLTAPI FltOpenVolume(
  [in]  PFLT_INSTANCE Instance,
  [out] PHANDLE       VolumeHandle,
  [out] PFILE_OBJECT  *VolumeFileObject
);

Parametri

[in] Instance

Puntatore istanza opaca per l'istanza. Questa istanza deve essere associata a un volume locale.

[out] VolumeHandle

Handle per il volume del file system.

[out] VolumeFileObject

Puntatore a una variabile allocata dal chiamante che riceve un puntatore a oggetti file per la directory radice del volume. Questo parametro è facoltativo e può essere NULL.

Valore restituito

FltOpenVolume restituisce STATUS_SUCCESS o un valore NTSTATUS appropriato, ad esempio quanto segue:

Codice restituito Descrizione
STATUS_FLT_DELETING_OBJECT
L'istanza o il volume viene eliminato. Si tratta di un codice di errore.
STATUS_INVALID_PARAMETER
L'istanza è collegata a un volume di rete. Si tratta di un codice di errore.

Commenti

Quando l'handle restituito nel parametro VolumeHandle non è più necessario, il chiamante deve rilasciarlo chiamando FltClose. Pertanto, ogni chiamata riuscita a FltOpenVolume deve essere corrispondente a una chiamata successiva a FltClose.

Se un puntatore a un oggetto file viene restituito nel parametro VolumeFileObject , il chiamante deve rilasciarlo quando non è più necessario chiamando ObDereferenceObject.

L'istanza specificata dal parametro Instance deve essere associata a un volume locale. Se è collegato a un volume di rete, FltOpenVolume restituisce STATUS_INVALID_PARAMETER.

Per ottenere un puntatore all'oggetto dispositivo per un determinato volume, chiamare FltGetDeviceObject.

Per ottenere informazioni dettagliate sul volume a cui è associata un'istanza specificata, chiamare FltQueryVolumeInformation.

NOTA: non chiamare questa routine con un valore IRP di primo livello diverso da NULL, in quanto può causare un deadlock di sistema. Per determinare se il thread TopLevelIrp è impostato chiama IoGetTopLevelIrp.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Microsoft Windows 2000 Update Rollup 1 for SP4, Windows XP SP3, Windows Server 2003 SP1 e versioni successive del sistema operativo Windows.
Piattaforma di destinazione Universale
Intestazione fltkernel.h (includere Fltkernel.h)
Libreria FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL

Vedi anche

FltClose

FltGetDeviceObject

FltGetFilterFromInstance

FltObjectDereference

FltQueryVolumeInformation

ObDereferenceObject