Anpassen der E/A für Ihr Gerät mithilfe des WDTF-Plug-Ins für einfache E/A-Aktionen

Um die Gerätegrundlagentests und -tests, die Sie möglicherweise mithilfe der Visual Studio-Testvorlagen geschrieben haben, optimal nutzen zu können, sollte Ihr Gerät von einem einfachen E/A-Plug-In unterstützt werden. Informationen dazu, ob Ihr Gerätetyp unterstützt wird und ob bestimmte Anforderungen für Tests bestehen, finden Sie unter Bereitgestellte WDTF Simple E/A-Plug-Ins. Wenn Ihr Gerät nicht unterstützt wird, können Sie ein Plug-In in Microsoft Visual Studio erstellen, indem Sie die WDTF-Plug-In-Vorlage für einfache E/A-Aktionen verwenden.

Voraussetzungen

  • Das getestete Gerät ist auf dem Testcomputer installiert.
  • Treiberpaket, das testsigniert und auf dem Testcomputer installiert ist. Informationen zum Überprüfen, ob Ihr Treiber ordnungsgemäß installiert ist, finden Sie unter Testen eines Treiberpakets.
  • Testcomputer, die für die Bereitstellung konfiguriert und bereitgestellt werden. Weitere Informationen finden Sie unter Testen eines Treibers zur Laufzeit mit Visual Studio.

Anweisungen

Schritt 1: Erstellen eines Projekts für ein WDTF Simple E/O Action-Plug-In

  1. Klicken Sie im Menü Datei auf Neues > Projekt.
  2. Wählen Sie in der Liste der installierten Vorlagen im Dialogfeld Neues Projektdie Option Visual C++ > Windows Driver > Tests > WDTF Simple I/O Action Plug-In aus.
  3. Geben Sie einen Namen für Ihr einfaches E/A-Projekt und einen Speicherort an (oder verwenden Sie die Standardwerte).
  4. Die Projektvorlage generiert eine Visual Studio-Projektmappe. Die Lösung enthält alle Dateien, die Sie zum Erstellen eines einfachen E/A-Plug-Ins für Ihr Gerät benötigen. Die Namen der Dateien haben das FormatWDTF-Projekt<>SimpleIoAction*. Der Standardname für das einfache E/A-Projekt ist DeviceType.
  5. Die Vorlage erstellt eine WDTF-Schnittstelle für einfache E/A-Aktionen für Ihr Projekt. Die Schnittstelle wirkt auf eine instance der IWDTFTarget2-Schnittstelle.
  6. Erstellen Sie Ihre WDTF Simple E/A-Plug-In-Lösung, um zu überprüfen, ob alle erforderlichen Dateien vorhanden sind.
  7. Implementieren Sie eine Methode zum Festlegen des Ziels und implementieren Sie die einfachen E/A-Aktionen (Öffnen, Schließen und Ausführen), indem Sie Code in der Implementierungsdatei hinzufügen. Der Name der Datei hat das Format CWDTF-Projekt SimpleIoActionImpl.cpp Datei.

Schritt 2: Implementieren der SetTarget-Methode für Ihr Gerät

  • Öffnen Sie die Implementierungsdatei für Ihr Projekt, z. B. CWDTFmyDeviceTypeSimpleIoActionImpl.cpp, und suchen Sie die instance der IAction::SetTarget SetTarget-Methode. Diese Methode verfügt über einen Abschnitt, der mit Kommentaren und TODO gekennzeichnet ist, der angibt, wo Sie Code implementieren sollten, der die Kompatibilität mit Ihrem Gerät überprüft.

    Die SetTarget-Methode wird einmal von WDTF für jede instance aufgerufen. Es hat zwei Standard Zwecke:

    • Damit WDTF ermitteln kann, ob das Objekt das Geräteziel pMainTarget unterstützt
    • Damit das CWDTF-Projekt<>SimpleIoActionImpl instance die erforderlichen Informationen vom Ziel abrufen kann, um die späteren Open() - , Close() - und RunIO()-Methodenaufrufe zu erreichen.

    Die Implementierung dieser Methode sollte E_NOINTERFACE zurückgeben, um anzugeben, dass das Ziel nicht unterstützt wird. Die -Methode sollte S_OK zurückgeben, wenn das Ziel unterstützt wird. Wenn ein anderer Fehler auftritt, sollte die Methode HRESULT zurückgeben, um den Fehler anzugeben.

    
        ////
        // 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.
    

Schritt 3: Implementieren von SimpleIoAction zum Öffnen der Schnittstelle

Als Nächstes müssen Sie ITarget zu Testzwecken öffnen, indem Sie die bereitgestellte Open()-Methode implementieren.

Diese Open-Methode sollte versuchen, das Zielgerät zu öffnen. Wenn die Methode dazu nicht in der Lage ist, sollte die Methode ein HRESULT zurückgeben, das den Fehler angibt. Diese Methode sollte fehlschlagen, wenn die SimpleIO-Schnittstelle bereits geöffnet (initialisiert) ist. Wie Sie diese Methode implementieren, hängt von Ihrem ITarget-Typ ab und davon, was in Ihrer Situation am sinnvollsten ist. Vielleicht bedeutet dies, dass Sie mit CreateFile() ein Handle dafür öffnen sollten. Vielleicht bedeutet dies, dass Sie eine Kontextstruktur initialisieren, damit Sie einen laufenden Testfall nachverfolgen können. Im Falle eines Fehlers sollte die -Methode im Idealfall COMReportError () verwenden und eine Beschreibung des Fehlers sowie alle Informationen oder Schritte bereitstellen, die dazu beitragen könnten, zukünftige Vorkommen zu verhindern.

Hinweis Diese Methode sollte fehlschlagen, wenn ISimpleIO_Action bereits geöffnet ist.

  • Öffnen Sie die Implementierungsdatei für Ihr Projekt, z. B. CWDTFmyDeviceTypeSimpleIoActionImpl.cpp, und suchen Sie den instance der Open-Methode. Diese Methode verfügt über einen Abschnitt, der mit Kommentaren und TODO gekennzeichnet ist:

    //
       //   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");
       //
    

Schritt 4: Implementieren der SimpleIoAction-Methode zum Schließen der Schnittstelle

Diese Methode sollte den zuvor geöffneten Testkontext schließen. Sie sollten Ihren Kontext auch dann löschen, wenn Sie ein fehlerhaftes HRESULT melden müssen. Es gibt nur wenige Fälle, in denen ein Fehler, der beim Schließen auftritt, tatsächlich sinnvoll ist. Bei dieser Methode sollten Sie den Vorgang rückgängig machen, den Sie in Open() ausgeführt haben. Dies bedeutet möglicherweise, dass Sie Ihr zuvor geöffnetes Handle mit CloseHandle() schließen sollten. Geben Sie im Falle eines Fehlers eine umsetzbare Beschreibung dafür an.

Hinweis Diese Methode sollte fehlschlagen, wenn die ISimpleIO_Action bereits geschlossen ist oder nie geöffnet wurde.

  • Öffnen Sie die Implementierungsdatei für Ihr Projekt, z. B. CWDTFmyDeviceTypeSimpleIoActionImpl.cpp, und suchen Sie den instance der Close-Methode. Diese Methode verfügt über einen Abschnitt, der mit Kommentaren und TODO gekennzeichnet ist:

    //
       //  //
       //   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");
       //
    
       //
    

Schritt 5: Implementieren der SimpleIoAction-Methode zum Ausführen einfacher E/A-Vorgänge

Diese Methode sollte eine kleine Anzahl von Eingabe- und Ausgabevorgängen für das Ziel ausführen. Die -Methode sollte dann überprüfen, ob die E/A-Vorgänge ordnungsgemäß abgeschlossen wurden. Anschließend kann jeder Test steuern, wie lange er E/A für ein Gerät ausführt. Jeder Aufruf der RunIo()-Methode sollte nur einen kleinen E/A-Wert ausführen. WDTF ruft RunIo() wiederholt in einer Schleife auf, um weitere E/A-Vorgänge auszuführen. Versuchen Sie im Allgemeinen, einen einzelnen RunIo()-Methodenaufruf auf einige Sekunden beizubehalten.

Hinweis Diese Methode sollte fehlschlagen, wenn ISimpleIO_Action derzeit geschlossen ist.

  • Öffnen Sie die Implementierungsdatei für Ihr Projekt, z. B. CWDTFmyDeviceTypeSimpleIoActionImpl.cpp, und suchen Sie den instance der RunIO-Methode. Diese Methode verfügt über einen Abschnitt, der mit Kommentaren und TODO gekennzeichnet ist:

    //
       //  //
       //   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");
       //
    
       //
    

Schritt 6: Erstellen und Installieren des Plug-Ins für einfache E/A-Aktionen

Wenn Sie dies noch nicht getan haben, müssen Sie einen Computer zum Testen konfigurieren. Weitere Informationen finden Sie unter Bereitstellen eines Computers für die Treiberbereitstellung und -tests (WDK 8.1) oder Bereitstellen eines Computers für die Treiberbereitstellung und -tests (WDK 8).

  1. Erstellen Sie die Projektmappe.

    Wenn Sie das Plug-In "Einfache E/A-Aktion" erstellen, werden zwei Tests erstellt. Mit diesen Tests wird das Plug-In auf dem Testcomputer installiert und deinstalliert. Standardmäßig werden die Plug-Indateien für einfache E/A-Aktionen in der Testgruppe Explorer in der Testkategorie Meine Testkategorie angezeigt.

  2. Führen Sie zum Installieren des Plug-Ins für einfache E/A-Aktionen den Test mit dem Namen WDTF-Projekt<> registrierenSimpleIOAction.DLL auf dem Testcomputer aus. Informationen zum Auswählen und Ausführen von Tests finden Sie unter Testen eines Treibers zur Laufzeit mit Visual Studio.

  3. Um zu überprüfen, ob Das Plug-In für einfache E/A-Aktionen installiert ist, führen Sie den Test Anzeigen von Geräten mit WDTF Simple E/O-Plug-Ins auf dem Testcomputer aus. Ihr Plug-In und Ihr Gerät sollten in den Ergebnissen angezeigt werden. Weitere Informationen finden Sie unter How to Ermitteln, ob ein benutzerdefiniertes WDTF Simple I/O Action-Plug-In für Ihr Gerät erforderlich ist.

  4. Führen Sie zum Deinstallieren des Plug-Ins für einfache E/A-Aktionen den Test mit dem Namen WdTF-Projekt<>SimpleIOAction.DLL auf dem Testcomputer aus. Sie können überprüfen, ob Sie das Plug-In deinstalliert haben, indem Sie den Test Anzeigen von Geräten ausführen, auf denen WDTF Simple E/A-Plug-Ins getestet wurden .

Test Authoring and Execution Framework (TAEF)
Gewusst wie: Ermitteln, ob ein benutzerdefiniertes WDTF Simple I/O Action-Plug-In für Ihr Gerät erforderlich ist
Gewusst wie: Testen eines Treibers zur Laufzeit mit Visual Studio