Partager via


Comment personnaliser les E/S pour votre appareil à l’aide du plug-in d’action d’E/S simple WDTF

Pour tirer le meilleur parti des tests et tests fondamentaux de l’appareil que vous avez peut-être écrits à l’aide des modèles de test Visual Studio, votre appareil doit être pris en charge par un plug-in d’E/S simple. Pour voir si votre type d’appareil est pris en charge et déterminer s’il existe des exigences spécifiques pour le test, consultez Plug-ins d’E/S simples WDTF fournis. Si votre appareil n’est pas pris en charge, vous pouvez créer un plug-in Microsoft Visual Studio à l’aide du modèle de plug-in d’action d’E/S simple WDTF .

Prérequis

Instructions

Étape 1 : Créer un projet pour un plug-in d’action d’E/S simple WDTF

  1. Dans le menu Fichier , cliquez sur Nouveau > projet.
  2. Dans la liste des modèles installés dans la boîte de dialogue Nouveau projet , sélectionnez Visual C++ > Windows Driver > Tests > WDTF Simple I/O Action Plug-in.
  3. Indiquez un nom pour votre projet d’E/S simple et un emplacement (ou utilisez les valeurs par défaut).
  4. Le modèle de projet génère une solution Visual Studio. La solution contient tous les fichiers dont vous avez besoin pour créer un plug-in d’E/S simple pour votre appareil. Les noms des fichiers prennent la forme duprojet>WDTF<SimpleIoAction*. Le nom par défaut du projet d’E/S simple est DeviceType.
  5. Le modèle crée une interface d’action d’E/S simple WDTF pour votre projet. L’interface agit sur une instance de l’interface IWDTFTarget2.
  6. Créez votre solution de plug-in d’E/S simple WDTF pour vérifier que tous les fichiers requis sont présents.
  7. Implémentez une méthode pour définir la cible et implémentez les actions d’E/S simples (Open, Close et RunIO ) en ajoutant du code dans le fichier d’implémentation. Le nom du fichier prend la forme duprojetCWDTF SimpleIoActionImpl.cpp fichier.

Étape 2 : Implémenter la méthode SetTarget pour votre appareil

  • Ouvrez le fichier d’implémentation de votre projet, par exemple, CWDTFmyDeviceTypeSimpleIoActionImpl.cpp, puis recherchez le instance de la méthode IAction ::SetTarget SetTarget. Cette méthode a une section marquée avec des commentaires et TODO : qui indique où vous devez implémenter le code qui vérifie la compatibilité avec votre appareil.

    La méthode SetTarget est appelée une seule fois par WDTF pour chaque instance. Il a deux objectifs main :

    • Afin que WDTF puisse déterminer si l’objet prend en charge la cible de l’appareil, pMainTarget
    • Afin que leprojet>CWDTF<SimpleIoActionImpl instance puisse obtenir les informations nécessaires de la cible pour accomplir les appels de méthode Open() , Close() et RunIO() ultérieurs.

    L’implémentation de cette méthode doit retourner E_NOINTERFACE pour indiquer que la cible n’est pas prise en charge. La méthode doit retourner S_OK si la cible est prise en charge. Si un autre échec se produit, la méthode doit retourner HRESULT pour indiquer l’erreur.

    
        ////
        // TODO: 1)  Perform your checks to see if your implementation is compatible with the target.
        //       Use the ITarget::GetValue() & ITarget::Eval() method to get the necessary data , info 
        //       to determine that. 
        //       2)  Also get the necessary info and save it in a member variable 
        //       to accomplish the later Open() method call.
    

Étape 3 : Implémenter SimpleIoAction pour ouvrir l’interface

Ensuite, vous devez ouvrir ITarget pour le test en implémentant la méthode Open() fournie.

Cette méthode Open doit tenter d’ouvrir l’appareil cible. Si la méthode ne parvient pas à effectuer cette opération, la méthode doit retourner un HRESULT indiquant l’échec. Cette méthode doit échouer si l’interface SimpleIO est déjà ouverte (initialisée). La façon dont vous implémentez cette méthode dépend de votre type ITarget et de ce qui est le plus logique dans votre situation. Cela signifie peut-être que vous devez ouvrir un handle avec CreateFile(). Cela signifie peut-être que vous initialisez une structure de contexte afin de pouvoir suivre un cas de test en cours. En cas d’erreur, la méthode doit idéalement utiliser COMReportError () et doit fournir une description de l’erreur ainsi que toutes les informations ou étapes susceptibles d’empêcher les occurrences ultérieures.

Note Cette méthode doit échouer si ISimpleIO_Action est déjà ouvert.

  • Ouvrez le fichier d’implémentation de votre projet, par exemple, CWDTFmyDeviceTypeSimpleIoActionImpl.cpp, puis recherchez le instance de la méthode Open. Cette méthode comporte une section marquée avec des commentaires et TODO :

    //
       //   TODO: Add code for your implementation of Open() here.
       //
       //
       //  To return failure use COMReportError(,,,).  For example the following 
       //  will return E_FAIL as the error code and "My Device error String"  as
       //  the error string.
       //
       //  COMReportError(WDTF, E_FAIL, "My Device error String");
       //
    

Étape 4 : Implémenter la méthode SimpleIoAction pour fermer l’interface

Cette méthode doit fermer votre contexte de test précédemment ouvert. Vous devez effacer votre contexte même si vous devez signaler un HRESULT défaillant. Il n’y a que quelques cas où une erreur qui se produit lorsque vous fermez a du sens. Dans cette méthode, vous devez rétablir toutes les opérations que vous avez effectuées dans Open(). Cela signifie peut-être que vous devez fermer votre handle précédemment ouvert avec CloseHandle(). En cas d’erreur, fournissez une description exploitable pour celle-ci.

Note Cette méthode doit échouer si le ISimpleIO_Action est déjà fermé ou n’a jamais été ouvert.

  • Ouvrez le fichier d’implémentation de votre projet, par exemple, CWDTFmyDeviceTypeSimpleIoActionImpl.cpp, puis recherchez le instance de la méthode Close. Cette méthode comporte une section marquée avec des commentaires et TODO :

    //
       //  //
       //   TODO: Add code for your implementation of Close() here.
       //
       // 
       //
       //  To return failure use COMReportError(,,,).  For example the following 
       //  will return E_FAIL as the error code and "My Device error String"  as
       //  the error string.
       //
       //  COMReportError(WDTF, E_FAIL, "My Device error String");
       //
    
       //
    

Étape 5 : Implémenter la méthode SimpleIoAction pour effectuer des opérations d’E/S simples

Cette méthode doit effectuer un petit nombre d’opérations d’entrée et de sortie sur la cible. La méthode doit ensuite vérifier que les opérations d’E/S se sont terminées correctement. Ensuite, chaque test peut contrôler la durée pendant laquelle il effectue des E/S sur un appareil. Chaque appel à la méthode RunIo() ne doit effectuer qu’une petite quantité d’E/S . WDTF appelle RunIo() à plusieurs reprises dans une boucle pour effectuer plus d’E/S. En général, essayez de conserver un seul appel de méthode RunIo() pendant quelques secondes.

Note Cette méthode doit échouer si ISimpleIO_Action est actuellement fermé.

  • Ouvrez le fichier d’implémentation de votre projet, par exemple, CWDTFmyDeviceTypeSimpleIoActionImpl.cpp, puis recherchez le instance de la méthode RunIO. Cette méthode comporte une section marquée avec des commentaires et TODO :

    //
       //  //
       //   TODO: Add code for your implmentaiton of RunIO() here.
       //
       // 
       //
       //  To return failure use COMReportError(,,,).  For example the following 
       //  will return E_FAIL as the error code and "My Device error String"  as
       //  the error string.
       //
       //  COMReportError(WDTF, E_FAIL, "My Device error String");
       //
    
       //
    

Étape 6 : Générer et installer le plug-in Simple I/O Action

Si ce n’est déjà fait, vous devez configurer un ordinateur pour le test. Pour plus d’informations, consultez Provisionner un ordinateur pour le déploiement et le test de pilotes (WDK 8.1) ou Provisionner un ordinateur pour le déploiement et le test de pilotes (WDK 8).

  1. Générez la solution.

    Lorsque vous générez le plug-in Simple E/S Action, deux tests sont créés. Ces tests installent et désinstallent le plug-in sur l’ordinateur de test. Par défaut, les fichiers de plug-in Simple I/O Action s’affichent dans le groupe de tests Explorer, dans la catégorie de test Ma catégorie de test.

  2. Pour installer le plug-in d’action d’E/S simple, exécutez le test nommé Inscrire leprojet> WDTF<SimpleIOAction.DLL sur l’ordinateur de test. Pour plus d’informations sur la sélection et l’exécution de tests, consultez Guide pratique pour tester un pilote au moment de l’exécution à l’aide de Visual Studio.

  3. Pour vérifier que votre plug-in d’action d’E/S simple est installé, exécutez les périphériques d’affichage qui ont des plug-ins d’E/S simples WDTF sur l’ordinateur de test. Votre plug-in et votre appareil doivent apparaître dans les résultats. Pour plus d’informations, consultez Guide pratique pour déterminer si un plug-in d’action d’E/S simple WDTF personnalisé est nécessaire pour votre appareil.

  4. Pour désinstaller le plug-in d’action d’E/S simple, exécutez le test nommé Annuler l’inscription du projet> WDTF<SimpleIOAction.DLL sur l’ordinateur de test. Vous pouvez vérifier que vous avez désinstallé le plug-in en exécutant le test display devices qui ont des plug-ins WDTF Simple E/S .

Test Authoring and Execution Framework (TAEF)
Guide pratique pour déterminer si un plug-in d’action d’E/S simple WDTF personnalisé est nécessaire pour votre appareil
Guide pratique pour tester un pilote au moment de l’exécution à l’aide de Visual Studio