Creare un driver client di notifica hardware
Questa sezione fornisce indicazioni generali sullo sviluppo di un driver client di notifica hardware che utilizza l'estensione della classe KMDF fornita da Microsoft.
Creare un file per l'implementazione del driver client che collega A Mshwnclxstub.lib e include le intestazioni hwn.h e hwnclx.h.
Definire le istanze delle funzioni di callback della classe di notifica hardware e kmDF necessarie. In particolare, è necessario implementare e registrare queste funzioni di callback, come illustrato nel codice di esempio seguente.
DRIVER_INITIALIZE DriverEntry; EVT_WDF_DRIVER_DEVICE_ADD HwnClientEvtDeviceAdd; HWN_CLIENT_INITIALIZE_DEVICE HwnClientInitializeDevice; HWN_CLIENT_UNINITIALIZE_DEVICE HwnClientUnInitializeDevice; HWN_CLIENT_QUERY_DEVICE_INFORMATION HwnClientQueryDeviceInformation; HWN_CLIENT_START_DEVICE HwnClientStartDevice; HWN_CLIENT_STOP_DEVICE HwnClientStopDevice; HWN_CLIENT_SET_STATE HwnClientSetState; HWN_CLIENT_GET_STATE HwnClientGetState;
Implementare la routine DriverEntry , ovvero il punto di ingresso del driver client e responsabile dell'inizializzazione. Per il driver client di notifica hardware, questa funzione deve gestire quanto segue:
Chiamata WDF_DRIVER_CONFIG_INIT per inizializzare la struttura WDF_DRIVER_CONFIG del driver.
Chiamata di WdfDriverCrea per creare un oggetto driver framework per il driver client.
Definizione del contenuto della HWN_CLIENT_REGISTRATION_PACKET, inclusi i puntatori alle funzioni di callback da usare dall'estensione della classe. Per altre informazioni sulle funzioni di callback necessarie, vedere Informazioni di riferimento sulle notifiche hardware.
Chiamata di HwNRegisterClient per registrare il driver client con l'estensione della classe.
Implementare la funzione EVT_WDF_DRIVER_DEVICE_ADD , responsabile dell'esecuzione di operazioni di inizializzazione del dispositivo quando il gestore PnP segnala l'esistenza di un dispositivo. Per il driver client di notifica hardware, questa funzione deve gestire quanto segue:
Chiamata di HwNProcessAddDevicePreDeviceCreate, che fornisce i callback di preparazione/rilascio e uscita del dispositivo necessari dal servizio di gestione delle chiavi per eseguire la transizione del dispositivo in stati diversi.
Chiamata di WdfDeviceCrea per creare un oggetto dispositivo framework.
Chiamata di HwNProcessAddDevicePostDeviceCreare per creare code di I/O.
Implementare la funzione HWN_CLIENT_INITIALIZE_DEVICE definita, chiamata dall'estensione della classe per preparare il controller di notifica hardware per l'uso.
Implementare la funzione di HWN_CLIENT_UNINITIALIZE_DEVICE definita, chiamata dall'estensione della classe per annullare l'inizializzazione del controller di notifica hardware.
Implementare la funzione HWN_CLIENT_QUERY_DEVICE_INFORMATION definita, chiamata dall'estensione della classe. Questa funzione è responsabile del recupero degli attributi di un componente di notifica hardware.
Implementare la funzione HWN_CLIENT_START_DEVICE definita, chiamata dall'estensione della classe. Questa funzione è responsabile dell'avvio del controller di notifica hardware e dell'allocazione delle risorse ACPI per il driver client.
Implementare la funzione HWN_CLIENT_STOP_DEVICE definita, chiamata dall'estensione della classe. Questa funzione è responsabile dell'arresto del controller di notifica hardware e del rilascio delle risorse ACPI usate dal driver client.
Implementare la HWN_CLIENT_SET_STATE definita, chiamata dall'estensione della classe. Questa funzione è responsabile dell'impostazione degli stati del componente di notifica hardware.
Implementare la HWN_CLIENT_GET_STATE definita, chiamata dall'estensione della classe. Questa funzione è responsabile del recupero dei valori correnti dei componenti di notifica hardware. Quando il buffer di input è NULL, ovvero l'utente non ha specificato lo stato di notifica hardware specifico, questa funzione deve restituire le informazioni sullo stato per tutti i componenti di notifica hardware.