Funzione FsRtlRemovePerStreamContext (ntifs.h)

FsRtlRemovePerStreamContext rimuove una struttura di contesto per flusso dall'elenco di contesti per flusso associati a un flusso di file.

Sintassi

PFSRTL_PER_STREAM_CONTEXT FsRtlRemovePerStreamContext(
  [in]           PFSRTL_ADVANCED_FCB_HEADER StreamContext,
  [in, optional] PVOID                      OwnerId,
  [in, optional] PVOID                      InstanceId
);

Parametri

[in] StreamContext

Puntatore alla struttura FSRTL_ADVANCED_FCB_HEADER per il flusso di file. Per ottenere questo puntatore da un oggetto file, utilizzare la macro FsRtlGetPerStreamContextPointer .

[in, optional] OwnerId

Usato per identificare le informazioni di contesto come appartenenti a un determinato driver di filtro.

[in, optional] InstanceId

Usato per cercare una particolare istanza di un contesto per flusso. Se non specificato, uno dei contesti di proprietà del driver di filtro viene rimosso e restituito.

Se non viene specificato né OwnerIdInstanceId , tutti i contesti associati per flusso verranno rimossi e restituiti.

Valore restituito

FsRtlRemovePerStreamContext restituisce un puntatore al contesto per flusso rimosso. Se non viene trovata alcuna corrispondenza o se il file system non supporta i contesti di filtro, FsRtlRemovePerStreamContext restituisce NULL.

Commenti

Un driver di filtro del file system chiama FsRtlRemovePerStreamContext per rimuovere la propria struttura di contesto per flusso dall'elenco di contesti per flusso associati a un flusso di file.

FsRtlRemovePerStreamContext rimuove solo la prima struttura di contesto corrispondente per flusso trovata. Se sono presenti altri contesti corrispondenti per flusso, il driver di filtro deve chiamare FsRtlRemovePerStreamContext quante volte necessario per rimuoverli tutti.

Questa routine deve essere utilizzata solo quando un driver di filtro deve eliminare le informazioni di contesto associate a un flusso di file mentre il flusso è ancora aperto. Ad esempio, un driver di filtro potrebbe chiamare FsRtlRemovePerStreamContext nei casi seguenti:

  • Quando riceve una richiesta da un'applicazione in modalità utente per interrompere la registrazione delle richieste di I/O in un determinato volume.

  • Quando rileva che un file o una directory è stato rinominato.

Quando un flusso di file viene chiuso, il file system è responsabile di garantire che tutti i contesti per flusso associati a tale flusso vengano rimossi e liberati. A tale scopo, il file system deve chiamare FsRtlTeardownPerStreamContexts nel blocco di controllo file (FCB) o un altro oggetto contesto di flusso per il flusso di file. FsRtlTeardownPerStreamContexts illustra l'elenco FilterContexts , rimuovendo ogni voce e chiamando la routine FreeCallback .

Pertanto, un driver di filtro del file system non deve chiamare FsRtlRemovePerStreamContext da una routine di invio IRP_MJ_CLOSE o IRP_MJ_PNP. Non solo una chiamata di questo tipo non è necessaria, ma potrebbe anche interferire con la chiamata del file system a FsRtlTeardownPerStreamContexts.

Un driver di filtro del file system non deve chiamare FsRtlRemovePerStreamContext dall'interno della routine FreeCallback di una struttura di contesto per flusso. Ciò è dovuto al fatto che il file system sottostante chiama la routine FreeCallback dopo che la struttura di contesto è già stata rimossa dall'elenco FilterContexts.

Per inizializzare una struttura di contesto per flusso, usare la macro FsRtlInitPerStreamContext .

Per associare una struttura di contesto per flusso inizializzata a un flusso di file, chiamare FsRtlInsertPerStreamContext.

Per recuperare una struttura di contesto per flusso associata a un flusso di file, chiamare FsRtlLookupPerStreamContext.

FsRtlRemovePerStreamContext può essere usato solo nei file system che supportano contesti di filtro.

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 Aggiornamento cumulativo di Windows 2000 SP4; Windows XP
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Vedi anche

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInitPerStreamContext

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts

IRP_MJ_CLOSE

IRP_MJ_PNP