Creazione di oggetti dispositivo in un driver di funzione
Ogni driver di funzione crea un oggetto dispositivo framework per ognuno dei dispositivi supportati presenti nel sistema. Poiché questi oggetti dispositivo vengono creati dai driver di funzione, vengono chiamati oggetti dispositivo funzionale (FDO). Ogni fdO è una rappresentazione del driver di funzione di un dispositivo.
Un driver di funzione deve creare un oggetto dispositivo framework ogni volta che il framework chiama la funzione di callback EvtDriverDeviceAdd del driver. Il framework chiama questa funzione di callback per informare il driver che uno dei dispositivi supportati esiste nel sistema.
La funzione di callback EvtDriverDeviceAdd del driver riceve un puntatore a una struttura WDFDEVICE_INIT . Il driver può chiamare un set di metodi di inizializzazione dell'oggetto dispositivo framework, che archivia le informazioni nella struttura WDFDEVICE_INIT. Inoltre, i driver di funzione possono chiamare i metodi di inizializzazione fdO del framework.
La creazione di un oggetto dispositivo framework in un driver di funzione include in genere i passaggi seguenti:
Registrazione delle funzioni di callback di PnP, alimentazione e power policy.
La maggior parte dei driver di funzione chiama WdfDeviceInitSetPnpPowerEventCallbacks per registrare le funzioni di callback di alimentazione e PnP. Per altre informazioni su queste funzioni di callback, vedere Supporto di PnP e risparmio energia nei driver di funzione.
Se il dispositivo supporta l'inattività a basso consumo o dispone di funzionalità di riattivazione, il driver di funzione chiama in genere anche WdfDeviceInitSetPowerPolicyEventCallbacks per registrare le funzioni di callback dei criteri di alimentazione. Per altre informazioni su queste funzioni di callback, vedere Proprietà di Power Policy.
Registrazione di funzioni specifiche del driver di callback.
Alcuni driver di funzione chiamano WdfFdoInitSetEventCallbacks, se devono partecipare specificando le risorse hardware di sistema richieste da un dispositivo. Per altre informazioni sulle risorse hardware, vedere Risorse hardware per i driver Framework-Based.
Registrazione delle funzioni di callback degli eventi di file.
Se il driver deve rispondere quando un'applicazione apre o chiude un file in un dispositivo, il driver deve chiamare WdfDeviceInitSetFileObjectConfig per registrare le funzioni di callback per l'oggetto file framework. Per altre informazioni, vedere Uso di oggetti file framework.
Impostazione degli attributi della richiesta di I/O.
Se il driver riceverà richieste di I/O da oggetti coda del framework, il driver può chiamare WdfDeviceInitSetRequestAttributes per configurare la memoria del contesto che il framework assegnerà agli oggetti richiesta di un dispositivo. Per altre informazioni, vedere Utilizzo del contesto dell'oggetto richiesta.
Impostazione delle caratteristiche del dispositivo.
In genere, un driver di funzione chiama alcuni dei metodi seguenti per specificare le caratteristiche di un dispositivo:
- WdfDeviceInitSetDeviceType, per identificare il tipo di hardware supportato dal driver.
- WdfDeviceInitSetIoType, per identificare un metodo per l'accesso ai buffer di dati, se il driver gestisce le richieste di I/O dalle applicazioni.
- WdfDeviceInitSetCharacteristics, per impostare le caratteristiche del dispositivo, ad esempio se il dispositivo è di sola lettura o supporta supporti rimovibili.
- WdfDeviceInitSetExclusive, se il dispositivo richiede l'accesso esclusivo da un'applicazione alla volta.
- WdfDeviceInitSetPowerInrush, se il dispositivo richiede un inrush di corrente quando passa da uno stato a basso consumo allo stato funzionante (D0).
- WdfDeviceInitSetPowerPageable o WdfDeviceInitSetPowerNotPageable, per indicare se il driver deve accedere ai dati impaginabili mentre il sistema sta passando tra uno stato di sospensione e lo stato funzionante (S0).
- WdfDeviceInitAssignName, per assegnare un nome all'oggetto dispositivo.
- WdfDeviceInitAssignSDDLString, per assegnare un descrittore di sicurezza all'oggetto dispositivo.
- WdfDeviceInitSetDeviceClass, per identificare la classe di installazione del dispositivo.
Recupero delle proprietà del dispositivo.
A volte i driver di funzione devono ottenere informazioni sulle proprietà del dispositivo impostate dal driver per il bus del dispositivo o da altri driver di livello inferiore. Il driver può chiamare WdfFdoInitQueryProperty o WdfFdoInitAllocAndQueryProperty per ottenere queste informazioni. I nuovi driver destinati Windows 8.1 e versioni successive possono chiamare WdfFdoInitQueryPropertyEx e WdfFdoInitAllocAndQueryPropertyEx.
Accesso alla chiave del Registro di sistema del dispositivo.
Alcuni driver di funzione devono ottenere informazioni sul dispositivo o sul driver che un altro driver, un utente o un pacchetto di installazione ha inserito nel Registro di sistema. Il driver può chiamare WdfFdoInitOpenRegistryKey per aprire la chiave del Registro di sistema del dispositivo o del driver. Per altre informazioni, vedere Uso del Registro di sistema nei driver Framework-Based.
Creazione di una configurazione predefinita dell'elenco figlio da usare per l'enumerazione dinamica.
Se si scrive un driver di funzione per un bus e se il driver eseguirà l'enumerazione dinamica dei dispositivi figlio connessi al bus, il driver deve chiamare WdfFdoInitSetDefaultChildListConfig. Per altre informazioni, vedere Enumerazione dei dispositivi in un bus.
Creazione dell'oggetto dispositivo.
Il passaggio finale della creazione di un oggetto dispositivo consiste nel chiamare WdfDeviceCreate.