Créer un pilote client de notification matérielle

Cette section fournit des conseils généraux sur le développement d’un pilote client de notification matérielle qui utilise l’extension de classe KMDF fournie par Microsoft.

  1. Créez un fichier pour votre implémentation de pilote client qui établit un lien vers Mshwnclxstub.lib et inclut les en-têtes hwn.h et hwnclx.h.

  2. Définissez les instances des fonctions de rappel d’extension KMDF et de classe de notification matérielle requises. Plus précisément, vous devez implémenter et inscrire ces fonctions de rappel, comme indiqué dans l’exemple de code suivant.

    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;
    
  3. Implémentez la routine DriverEntry , qui est le point d’entrée du pilote client et responsable de l’initialisation. Pour le pilote client de notification matérielle, cette fonction doit gérer les éléments suivants :

  4. Implémentez la fonction EVT_WDF_DRIVER_DEVICE_ADD , qui est chargée d’effectuer des opérations d’initialisation d’appareil lorsque le gestionnaire PnP signale l’existence d’un appareil. Pour le pilote client de notification matérielle, cette fonction doit gérer les éléments suivants :

  5. Implémentez la fonction HWN_CLIENT_INITIALIZE_DEVICE définie, appelée par l’extension de classe pour préparer le contrôleur de notification matérielle pour l’utilisation.

  6. Implémentez la fonction HWN_CLIENT_UNINITIALIZE_DEVICE définie, appelée par l’extension de classe pour annuler l’initialisation du contrôleur de notification matérielle.

  7. Implémentez la fonction HWN_CLIENT_QUERY_DEVICE_INFORMATION définie, appelée par l’extension de classe. Cette fonction est chargée de récupérer les attributs d’un composant de notification matérielle.

  8. Implémentez la fonction HWN_CLIENT_START_DEVICE définie, appelée par l’extension de classe. Cette fonction est responsable du démarrage du contrôleur de notification matérielle et de l’allocation des ressources ACPI pour le pilote client.

  9. Implémentez la fonction HWN_CLIENT_STOP_DEVICE définie, appelée par l’extension de classe. Cette fonction est responsable de l’arrêt du contrôleur de notification matérielle et de la libération des ressources ACPI utilisées par le pilote client.

  10. Implémentez le HWN_CLIENT_SET_STATE défini, appelé par l’extension de classe. Cette fonction est chargée de définir les états des composants de notification matérielle.

  11. Implémentez le HWN_CLIENT_GET_STATE défini, appelé par l’extension de classe. Cette fonction est responsable de l’obtention des valeurs actuelles des composants de notification matérielle. Lorsque la mémoire tampon d’entrée est NULL, ce qui signifie que l’utilisateur n’a pas spécifié l’état de notification matérielle spécifique, cette fonction doit retourner des informations d’état pour tous les composants de notification matérielle.

Notifications matérielles