Funzione IoCreateStreamFileObjectLite (ntifs.h)

La routine IoCreateStreamFileObjectLite crea un nuovo oggetto file di flusso, ma non causa l'invio di una richiesta di IRP_MJ_CLEANUP allo stack di driver del file system.

Sintassi

PFILE_OBJECT IoCreateStreamFileObjectLite(
  [in, optional] PFILE_OBJECT   FileObject,
  [in, optional] PDEVICE_OBJECT DeviceObject
);

Parametri

[in, optional] FileObject

Puntatore all'oggetto file a cui è correlato il nuovo file di flusso. Questo parametro è facoltativo e può essere NULL.

[in, optional] DeviceObject

Puntatore a un oggetto dispositivo per il dispositivo in cui aprire il file di flusso. Se il chiamante specifica un valore non NULL per FileObject, il valore di DeviceObject viene ignorato. In caso contrario, il chiamante deve specificare un valore non NULL per DeviceObject.

Valore restituito

IoCreateStreamFileObjectLite restituisce un puntatore all'oggetto file di flusso appena creato.

Commenti

I file system chiamano IoCreateStreamFileObjectLite per creare un nuovo oggetto file di flusso. Un oggetto file di flusso è identico a un oggetto file normale, ad eccezione del fatto che il flag dell'oggetto file FO_STREAM_FILE è impostato.

Un oggetto file di flusso viene comunemente usato per rappresentare un flusso interno per un volume montato dal file system. Questo file di volume virtuale consente al file system di visualizzare, modificare e memorizzare nella cache la struttura del volume su disco come se fosse un file normale. In questo caso, il parametro DeviceObject nella chiamata a IoCreateStreamFileObjectLite specifica l'oggetto dispositivo del volume (VDO) per il volume.

Un oggetto file di flusso può essere usato anche per rappresentare un flusso di dati alternativo per accedere ai metadati, ad esempio attributi estesi o descrittori di sicurezza, per un file già aperto. In questo caso, il parametro FileObject nella chiamata a IoCreateStreamFileObjectLite specifica un oggetto file esistente per il file. L'oggetto file di flusso appena creato consente al file system di visualizzare, modificare e memorizzare nella cache i metadati del file come se fosse un file normale.

Quando l'oggetto file di flusso non è più necessario, il chiamante deve decrementare il numero di riferimenti chiamando ObDereferenceObject. Quando il numero di riferimenti dell'oggetto file di flusso raggiunge zero, viene inviata una richiesta di IRP_MJ_CLOSE allo stack di driver del file system per il volume.

I writer di filtri del file system devono notare che, a differenza di IoCreateStreamFileObject, IoCreateStreamFileObjectLite non causa l'invio di una richiesta di IRP_MJ_CLEANUP allo stack di driver del file system. Per questo motivo, e poiché i file system spesso creano oggetti file di flusso come effetto collaterale delle operazioni diverse da IRP_MJ_CREATE, è difficile che i driver di filtro rilevino in modo affidabile la creazione di oggetti file di flusso. Pertanto, i driver di filtro dovrebbero ricevere IRP_MJ_CLOSE richieste per gli oggetti file non visualizzati in precedenza.

Se si verifica un errore di allocazione del pool, IoCreateStreamFileObjectLite genera un'eccezione STATUS_INSUFFICIENT_RESOURCES.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Vedi anche

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IoCreateStreamFileObject

IoCreateStreamFileObjectEx

ObDereferenceObject