Funzione FltSetInstanceContext (fltkernel.h)

FltSetInstanceContext imposta un contesto per un'istanza del driver minifilter.

Sintassi

NTSTATUS FLTAPI FltSetInstanceContext(
  [in]  PFLT_INSTANCE             Instance,
  [in]  FLT_SET_CONTEXT_OPERATION Operation,
  [in]  PFLT_CONTEXT              NewContext,
  [out] PFLT_CONTEXT              *OldContext
);

Parametri

[in] Instance

Puntatore dell'istanza opaca per l'istanza.

[in] Operation

Flag che specifica i dettagli dell'operazione da eseguire. Questo parametro deve essere uno dei seguenti:

Contrassegno Significato
FLT_SET_CONTEXT_REPLACE_IF_EXISTS Se un contesto è già impostato per l'istanza a cui punta il parametro Instance , FltSetInstanceContext sostituirà tale contesto con il contesto specificato in NewContext. In caso contrario, verrà impostato NewContext come contesto per Istanza.
FLT_SET_CONTEXT_KEEP_IF_EXISTS Se un contesto è già impostato per questa istanza, FltSetInstanceContext restituisce STATUS_FLT_CONTEXT_ALREADY_DEFINED e non sostituisce il contesto esistente o incrementa il conteggio dei riferimenti. Se un contesto non è già impostato, la routine imposterà NewContext come contesto per Instance e incrementerà il conteggio dei riferimenti.

[in] NewContext

Puntatore al nuovo contesto da impostare per l'istanza. Questo parametro è obbligatorio e non può essere NULL.

[out] OldContext

Puntatore a una variabile allocata dal chiamante che riceve l'indirizzo del contesto dell'istanza esistente, se ne è già impostato uno. Questo parametro è facoltativo e può essere NULL. Per altre informazioni su questo parametro, vedere la sezione Osservazioni seguente.

Valore restituito

FltSetInstanceContext restituisce STATUS_SUCCESS o un valore NTSTATUS appropriato, ad esempio uno dei seguenti:

Codice restituito Descrizione
STATUS_FLT_CONTEXT_ALREADY_DEFINED Se FLT_SET_CONTEXT_KEEP_IF_EXISTS è stato specificato per il parametro Operation , questo codice di errore indica che un contesto è già collegato all'istanza di . È possibile collegare un solo contesto a un'istanza di .
STATUS_FLT_CONTEXT_ALREADY_LINKED Il contesto a cui punta il parametro NewContext è già collegato a un oggetto . In altre parole, questo codice di errore indica che NewContext è già in uso a causa di una chiamata precedente di una routine FltSetXxxContext .
STATUS_FLT_DELETING_OBJECT L'istanza specificata nel parametro Instance viene distrutta. Si tratta di un codice di errore.
STATUS_INVALID_PARAMETER È stato passato un parametro non valido. Ad esempio, il parametro NewContext non punta a un contesto di file valido oppure per il parametro Operation è stato specificato un valore non valido. Si tratta di un codice di errore.

Commenti

Per altre informazioni sui contesti, vedere Informazioni sui contesti minifilter.

Un driver minifilter chiama FltSetInstanceContext per collegare un contesto di istanza a un'istanza del driver minifilter di proprietà del chiamante o per rimuovere o sostituire un contesto di istanza esistente. Un driver minifilter può collegare un solo contesto a un'istanza di .

Conteggio riferimenti

Se FltSetInstanceContext ha esito positivo:

  • Il conteggio dei riferimenti in NewContext viene incrementato. Quando il contesto a cui punta NewContext non è più necessario, il minifilter deve chiamare FltReleaseContext per decrementare il conteggio dei riferimenti.

In caso contrario, fltSetInstanceContext ha esito negativo:

  • Il conteggio dei riferimenti in NewContext rimane invariato.
  • Se OldContext non è NULL e non punta a NULL_CONTEXT , OldContext è un puntatore a cui si fa riferimento al contesto attualmente associato all'istanza. Il filtro che chiama FltSetInstanceContext deve chiamare infine FltReleaseContext per OldContext, anche quando il puntatore di contesto non è più necessario.

Indipendentemente dal successo:

  • Il filtro che chiama FltSetInstanceContext deve chiamare FltReleaseContext per decrementare il conteggio dei riferimenti sull'oggetto NewContext incrementato da FltAllocateContext.

Per altre informazioni, vedere Riferimenti ai contesti.

Altre operazioni di contesto

Per altre informazioni, vedere Impostazione di contesti e rilascio di contesti:

Requisiti

Requisito Valore
Client minimo supportato Disponibile e supportato in Microsoft Windows 2000 Update Rollup 1 per SP4, Windows XP SP2, Windows Server 2003 SP1 e versioni successive del sistema operativo.
Piattaforma di destinazione Universale
Intestazione fltkernel.h (include Fltkernel.h)
Libreria FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Vedi anche

FltAllocateContext

FltDeleteContext

FltDeleteInstanceContext

FltGetInstanceContext

FltReleaseContext