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é OwnerId né InstanceId , 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
FsRtlGetPerStreamContextPointer
FsRtlSupportsPerStreamContexts