Condividi tramite


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

Consente di 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 fornito né il OwnerId né il InstanceId , qualsiasi contesto associato per flusso verrà rimosso e restituito.

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.

Osservazioni

Un driver di filtro del file system chiama FsRtlRemovePerStreamContext 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 del filtro deve chiamare FsRtlRemovePerStreamContext quante volte necessario per rimuoverle tutte.

Questa routine deve essere usata solo quando un driver di filtro deve rimuovere 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 sul blocco di controllo file (FCB) o su un altro oggetto contesto di flusso per il flusso di file. FsRtlTeardownPerStreamContexts illustra l'elenco FilterContexts, rimuovendo ogni voce e chiamando la relativa routine FreeCallback.

Pertanto, un driver di filtro del file system non deve chiamare FsRtlRemovePerStreamContext dall'interno di 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 di una struttura di contesto per flusso routine FreeCallback. Questo perché il file system sottostante chiama la routine FreeCallback dopo aver già rimosso la struttura di contesto dall'elenco FilterContexts.

Per inizializzare una struttura di contesto per flusso, utilizzare 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 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.

Fabbisogno

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

Vedere anche

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInitPerStreamContext

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts

IRP_MJ_CLOSE

IRP_MJ_PNP