Condividi tramite


Oggetto File Framework

Avviso

UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2.

Gli esempi di UMDF 1 archiviati sono disponibili nell'aggiornamento degli esempi di driver di Windows 11 versione 22H2 - Maggio 2022.

Per altre informazioni, vedi Introduzione a UMDF.

L'oggetto file framework viene esposto ai driver dall'interfaccia IWDFFile . È la rappresentazione del framework del dispositivo aperto. Quando un'applicazione apre il dispositivo tramite la funzione Microsoft Win32 CreateFile , il framework crea un oggetto file per rappresentare l'istanza del dispositivo aperta. Di conseguenza, l'oggetto file framework è concettualmente equivalente all'handle Win32 restituito dalla chiamata dell'applicazione a CreateFile. Il framework può creare più oggetti file associati a un singolo dispositivo. Ogni oggetto file viene creato per ogni chiamata riuscita a CreateFile. Tutte le operazioni di I/O, ad esempio letture e scritture, sono destinate a un'istanza specifica dell'oggetto file.

Nota Tutte le richieste passate ai driver UMDF sono associate agli oggetti file. Tuttavia, le richieste passate ai driver WDM e KMDF talvolta non sono associate agli oggetti file.

Un driver UMDF può chiamare il metodo IWDFIoRequest::GetFileObject per ottenere l'oggetto file associato a una richiesta.

Quando il driver chiama GetFileObject, il framework incrementa il conteggio dei riferimenti sull'interfaccia. Il driver è responsabile del rilascio del riferimento al termine del puntatore all'interfaccia. A tale scopo, usare un puntatore intelligente che decrementa automaticamente il conteggio dei riferimenti quando l'oggetto esce dal contesto oppure chiamare Release sull'interfaccia al termine dell'operazione. Per un esempio di codice che illustra come usare un puntatore intelligente, vedere GetFileObject.