Macro FsRtlInitPerStreamContext (ntifs.h)

La macro FsRtlInitPerStreamContext inizializza una struttura del contesto del driver di filtro.

Sintassi

void FsRtlInitPerStreamContext(
   _fc,
   _owner,
   _inst,
   _cb
);

Parametri

_fc

Puntatore a una struttura FSRTL_PER_STREAM_CONTEXT allocata dal chiamante da usare per mantenere le informazioni di contesto per un flusso di file. Questa struttura può essere usata come è o incorporata in una struttura di contesto per flusso definita dal driver. Entrambi i tipi di struttura vengono comunemente allocati chiamando ExAllocatePoolWithTag.

_owner

Puntatore a una variabile allocata dal chiamante che identifica in modo univoco il proprietario della struttura del contesto per flusso. Il formato di questa variabile è il driver di filtro - specifico. I writer di filtri devono scegliere un valore significativo e pratico, ad esempio l'indirizzo di un oggetto driver o di un oggetto dispositivo. I chiamanti devono specificare un valore non NULL per questo parametro.

_inst

Puntatore a un driver di filtro - variabile allocata che può essere usata per distinguere tra le strutture di contesto per flusso create dallo stesso driver di filtro. Il formato di questa variabile è il driver di filtro - specifico. I writer di filtri devono scegliere un valore significativo e pratico, ad esempio l'indirizzo dell'oggetto contesto di flusso per il flusso di file. Per ottenere questo indirizzo da un oggetto file, utilizzare la macro FsRtlGetPerStreamContextPointer . Questo parametro è facoltativo e può essere NULL.

_cb

Puntatore a una routine di callback che libera la struttura del contesto per flusso. I chiamanti devono specificare un valore non NULL per questo parametro. Questa routine e i relativi parametri sono definiti come segue:

typedef
VOID (*PFREE_FUNCTION) (
          IN PVOID Buffer
          );

Buffer

Puntatore alla struttura del contesto per flusso da liberare. La routine FreeCallback esegue in genere il cast di questo puntatore al tipo di puntatore di struttura appropriato e lo libera chiamando ExFreePool.

Valore restituito

nessuno

Osservazioni

Un driver di filtro del file system usa la macro FsRtlInitPerStreamContext per inizializzare una struttura di contesto per flusso appena allocata prima di associarla a un flusso di file. La struttura del contesto inizializzata può essere passata come parametro a FsRtlInsertPerStreamContext.

FsRtlInitPerStreamContext archivia l'indirizzo della routine FreeCallback nel membro FreeCallback della struttura FSRTL_PER_STREAM_CONTEXT.

La routine FreeCallback viene chiamata in IRQL <= APC_LEVEL. In genere, viene chiamato in IRQL PASSIVE_LEVEL.

Nota La routine FreeCallback non può chiamare in modo ricorsivo nel file system o acquisire risorse del file system. Inoltre, questa routine deve presupporre che l'oggetto file per il flusso di file sia già stato liberato.
 
Per associare una struttura di contesto per flusso inizializzata a un flusso di file, chiamare FsRtlInsertPerStreamContext.

Dopo che la struttura di contesto è stata associata a un flusso di file, può essere recuperata chiamando FsRtlLookupPerStreamContext o rimossa chiamando FsRtlRemovePerStreamContext.

Per altre informazioni, vedere Tracking Per-Stream Context in a Legacy File System Filter Driver.For more information, see Tracking Per-Stream Context in a Legacy File System Filter Driver.

Requisiti

Requisito Valore
Client minimo supportato Windows XP; Aggiornamento cumulativo per Windows 2000 Service Pack 4 (SP4)
Piattaforma di destinazione Desktop
Intestazione ntifs.h (include Ntifs.h)
IRQL Qualsiasi livello

Vedi anche

ExAllocatePoolWithTag

ExFreePool

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts