Condividi tramite


struttura PREFETCH_OPEN_ECP_CONTEXT (ntifs.h)

La struttura PREFETCH_OPEN_ECP_CONTEXT comunica se il prefetcher esegue una determinata richiesta aperta in un file.

Sintassi

typedef struct _PREFETCH_OPEN_ECP_CONTEXT {
  PVOID Context;
} PREFETCH_OPEN_ECP_CONTEXT, *PPREFETCH_OPEN_ECP_CONTEXT;

Membri

Context

Puntatore a un contesto opaco associato alla richiesta aperta.

Osservazioni

Il prefetcher è un componente del sistema operativo strettamente integrato con gestione cache e gestione memoria per rendere più efficiente l'accesso al disco e quindi migliorare le prestazioni. Se altri componenti interferiscono con il prelettura, le prestazioni del sistema diminuiscono e potrebbero causare un deadlock. Pertanto, il prefetcher allega la struttura PREFETCH_OPEN_ECP_CONTEXT a un file per comunicare che il prefetcher ha eseguito una richiesta aperta su tale file. Il prefetcher usa il GUID GUID_ECP_PREFETCH_OPEN in una chiamata al FltCreateFileEx2 o routine IoCreateFileEx per collegare la struttura PREFETCH_OPEN_ECP_CONTEXT. Un driver di filtro del file system (filtro) può chiamare FltFindExtraCreateParameter per determinare se PREFETCH_OPEN_ECP_CONTEXT è collegato al file e quindi intraprendere l'azione appropriata. Il filtro deve chiamare la routine fltIsEcpFromUserMode per determinare se la struttura del contesto PREFETCH_OPEN_ECP_CONTEXT ha avuto origine dalla modalità kernel. Per evitare che le applicazioni dannose eseguono lo spoofing del prelettura, il filtro non deve accettare PREFETCH_OPEN_ECP_CONTEXT se ha avuto origine dalla modalità utente.

Dopo che la prelettura allega la struttura PREFETCH_OPEN_ECP_CONTEXT a un file, tutte le attività di prelettura aggiuntive per il file comportano l'oggetto file che ha PREFETCH_OPEN_ECP_CONTEXT allegato. Se un filtro deve identificare le richieste del file system di prelettura diverse dalle richieste di creazione, il filtro deve mantenere il proprio stato( ad esempio, i contesti di gestione filtri). Il filtro mantiene il proprio stato per determinare se un oggetto file specifico è un oggetto file di prelettura.

Gestione memoria può memorizzare nella cache l'oggetto file di prelettura. Gestione memoria può quindi usare l'oggetto file di prelettura per altre applicazioni che eseguono il mapping di I/O o I/O memorizzato nella cache usando gestione cache. Di conseguenza, l'oggetto file prefetcher può essere usato per il paging di I/O prima o dopo che il prefetcher chiude il relativo handle. Questo I/O di paging può includere scritture di paging, anche se il prefetcher non scrive mai dati. Le scritture di paging vengono generate da altre applicazioni. Gestione memoria scrive i dati dalle applicazioni usando il relativo oggetto file di prelettura memorizzato nella cache. Pertanto, il filtro esegue operazioni attivate dalle scritture di paging, il filtro deve comunque eseguire tale operazione, anche se le scritture di paging vengono eseguite su un oggetto file di prelettura.

Quando un filtro determina che si è verificata un'operazione di pulizia in un oggetto file di prelettura, il filtro non deve più considerare l'oggetto file da prelettura aperto.

Di seguito sono riportate le operazioni comuni eseguite dal prefetcher( tuttavia, in queste operazioni, il prefetcher non modifica mai il contenuto del file):

  • Volume aperto e chiuso
  • File aperto e chiuso
  • Informazioni sui file di query
  • Impostare le informazioni sui file (solo per indicare al file system di non aggiornare l'ora dell'ultimo accesso per l'apertura)
  • Sezione Creare immagini e dati
  • Eseguire il paging asincrono di I/O

Per evitare di indurre una possibile situazione di deadlock, un filtro deve:

  • Non bloccare mai alcuna operazione di prelettura.
  • Passare le operazioni di prelettura senza inviare altre richieste di file system.

Per consentire a qualsiasi applicazione o driver di accedere a uno qualsiasi dei dati prelettura, deve aprire il proprio handle al file o creare una sezione o entrambe.

Per informazioni su come usare gli ECP per associare informazioni aggiuntive a un'operazione di IRP_MJ_CREATE in un file, vedere Using Extra Create Parameters with an IRP_MJ_CREATE Operation.For information about how to use ECP to associate a an IRP_MJ_CREATE operation on a file, see Using Extra Create Parameters with an IRP_MJ_CREATE Operation.

La struttura PREFETCH_OPEN_ECP_CONTEXT è di sola lettura. È consigliabile usarlo per recuperare informazioni su un prefetcher aperto solo ECP. Per altre informazioni su questo problema, vedere System-Defined ECP.

Fabbisogno

Requisito Valore
client minimo supportato Windows Vista
intestazione ntifs.h (include Ntifs.h)

Vedere anche

FltCreateFileEx2

FltIsEcpFromUserMode

IoCreateFileEx