Jak dostosować wejścia/wyjścia dla urządzenia za pomocą wtyczki WDTF Simple I/O Action Plug-in
Aby uzyskać największe korzyści z testów podstawowych urządzeń oraz testów napisanych przy użyciu szablonów testowych programu Visual Studio, urządzenie powinno być obsługiwane przez prostą wtyczkę I/O. Aby sprawdzić, czy typ urządzenia jest obsługiwany i czy istnieją określone wymagania dotyczące testowania, zapoznaj się z artykułem Provided WDTF Simple I/O plug-ins. Jeśli urządzenie nie jest obsługiwane, możesz utworzyć wtyczkę w programie Microsoft Visual Studio przy użyciu szablonu WDTF Simple I/O Action Plug-in.
Warunki wstępne
- Urządzenie w ramach testu jest instalowane na komputerze testowym.
- Pakiet sterowników, który jest testowo podpisany i zainstalowany na komputerze testowym. Aby sprawdzić, czy sterownik jest poprawnie zainstalowany, zobacz Testowanie sterownika.
- Testuj komputery, które są skonfigurowane i przygotowane do wdrożenia, zobacz jak przetestować sterownik podczas pracy przy użyciu programu Visual Studio.
Instrukcje
Krok 1. Tworzenie projektu dla wtyczki WDTF Simple I/O Action
- W menu Plik kliknij pozycję Nowy > Projekt.
- Z listy zainstalowanych szablonów w oknie dialogowym New Project wybierz Visual C++ > Windows Driver > Tests > WDTF Simple I/O Action Plug-in.
- Podaj nazwę prostego projektu we/wy i lokalizację (lub użyj wartości domyślnych).
- Szablon projektu generuje rozwiązanie programu Visual Studio. Rozwiązanie zawiera wszystkie pliki potrzebne do utworzenia prostej wtyczki we/wy dla urządzenia. Nazwy plików mają postać WDTF<projektu>SimpleIoAction*. Domyślną nazwą prostego projektu I/O jest DeviceType.
- Szablon tworzy interfejs WDTF Simple I/O Action dla twojego projektu. Interfejs działa na instancji interfejsu IWDTFTarget2.
- Skompiluj rozwiązanie wtyczki WDTF Simple I/O, aby sprawdzić, czy istnieją wszystkie wymagane pliki.
- Zaimplementuj metodę ustawiania obiektu docelowego i implementowania prostych akcji we/wy (Open, Close i RunIO), dodając kod w pliku implementacji. Nazwa pliku ma postać CWDTFprojektuplik SimpleIoActionImpl.cpp.
Krok 2. Implementowanie metody SetTarget dla urządzenia
Otwórz plik implementacyjny swojego projektu, na przykład CWDTFmyDeviceTypeSimpleIoActionImpl.cpp, i znajdź wystąpienie metody SetTarget, oznaczonej jako IAction::SetTarget. Ta metoda zawiera sekcję oznaczoną komentarzami i TODO: wskazuje, gdzie należy zaimplementować kod sprawdzający zgodność z urządzeniem.
Metoda SetTarget jest wywoływana raz przez WDTF dla każdego wystąpienia. Ma dwa główne cele:
- Aby program WDTF mógł określić, czy obiekt jest zgodny z docelowym urządzeniem, pMainTarget
- Dzięki temu projektowi CWDTF<>, wystąpienie SimpleIoActionImpl może uzyskać niezbędne informacje od celu, aby wykonać późniejsze wywołania metod Open(), Close(), RunIO().
Implementacja tej metody powinna zwrócić E_NOINTERFACE, aby wskazać, że interfejs docelowy nie jest obsługiwany. Metoda powinna zwrócić S_OK, jeśli obiekt docelowy jest obsługiwany. Jeśli wystąpi inny błąd, metoda powinna zwrócić wartość HRESULT, aby wskazać błąd.
//// // 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.
Krok 3. Implementowanie funkcji SimpleIoAction w celu otwarcia interfejsu
Następnie należy otworzyć element ITarget do testowania, implementując udostępnioną metodę Open().
Ta metoda Open powinna spróbować otworzyć urządzenie docelowe. Jeśli metoda nie może tego zrobić, metoda powinna zwrócić wartość HRESULT wskazującą błąd. Ta metoda powinna zakończyć się niepowodzeniem, jeśli interfejs SimpleIO jest już otwarty (zainicjowany). Sposób implementacji tej metody zależy od typu ITarget i tego, co ma największe znaczenie w twojej sytuacji. Być może oznacza to, że należy otworzyć do niego uchwyt za pomocą metody CreateFile(). Być może oznacza to, że zainicjujesz strukturę kontekstu, aby można było śledzić bieżący przypadek testowy. W przypadku błędu metoda powinna w idealnym przypadku używać błędu COMReportError () i powinna podać opis błędu oraz wszelkie informacje lub kroki, które mogą pomóc w zapobieganiu przyszłym wystąpieniom.
Uwaga Ta metoda powinna zakończyć się niepowodzeniem, jeśli ISimpleIO_Action jest już otwarta.
Otwórz plik implementacji projektu, na przykład CWDTFmyDeviceTypeSimpleIoActionImpl.cpp i znajdź wystąpienie metody Open. Ta metoda zawiera sekcję oznaczoną komentarzami i czynnościami DO WYKONANIA:
// // 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"); //
Krok 4. Implementowanie metody SimpleIoAction w celu zamknięcia interfejsu
Ta metoda powinna zamknąć wcześniej otwarty kontekst testu. Należy wyczyścić kontekst, nawet jeśli musisz zgłosić błąd HRESULT. Istnieje tylko kilka przypadków, w których błąd, który występuje podczas zamykania, rzeczywiście ma sens. W tej metodzie należy przywrócić dowolną operację wykonaną w metodzie Open(). Być może oznacza to, że należy zamknąć wcześniej otwarty uchwyt z CloseHandle(). W przypadku błędu podaj opis umożliwiający podjęcie dalszych działań.
Uwaga Ta metoda powinna zakończyć się niepowodzeniem, jeśli ISimpleIO_Action jest już zamknięta lub nigdy nie została otwarta.
Otwórz plik implementacji dla projektu, na przykład CWDTFmyDeviceTypeSimpleIoActionImpl.cpp i znajdź wystąpienie metody Close. Ta metoda zawiera sekcję oznaczoną komentarzami i czynnościami DO WYKONANIA:
// // // // 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"); // //
Krok 5. Implementowanie metody SimpleIoAction w celu wykonywania prostych operacji we/wy
Ta metoda powinna wykonywać niewielką liczbę operacji wejściowych i wyjściowych na obiekcie docelowym. Następnie metoda powinna sprawdzić, czy operacje we/wy zostały wykonane poprawnie. Następnie każdy test może kontrolować, jak długo wykonuje operacje wejścia/wyjścia na urządzeniu. Każde wywołanie metody RunIo() powinno wykonywać tylko niewielką ilość operacji we/wy. WDTF wielokrotnie wywołuje funkcję RunIo() w pętli, aby wykonać dodatkowe operacje we/wy. Ogólnie rzecz biorąc, spróbuj zachować pojedyncze wywołanie metody RunIo() do kilku sekund.
Uwaga Ta metoda powinna zakończyć się niepowodzeniem, jeśli ISimpleIO_Action jest obecnie zamknięta.
Otwórz plik implementacji projektu, na przykład CWDTFmyDeviceTypeSimpleIoActionImpl.cpp i znajdź wystąpienie metody RunIO. Ta metoda zawiera sekcję oznaczoną komentarzami i czynnościami DO WYKONANIA:
// // // // 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"); // //
Krok 6: Skompiluj i zainstaluj wtyczkę akcji Prosty I/O
Jeśli jeszcze tego nie zrobiono, należy skonfigurować komputer do testowania. Aby uzyskać więcej informacji, zobacz Skonfiguruj komputer do wdrażania i testowania sterowników (WDK 8.1) lub Skonfiguruj komputer do wdrażania i testowania sterowników (WDK 8).
Skompiluj rozwiązanie.
Podczas tworzenia wtyczki Simple I/O Action (Prosta akcja wejścia/wyjścia) tworzone są dwa testy. Te testy instalują i odinstalowują wtyczkę na komputerze testowym. Domyślnie pliki wtyczki Simple I/O Action są wyświetlane w Eksploratorze grupy testowej , w kategorii testowej Moja kategoria testowa.
Aby zainstalować wtyczkę Simple I/O Action, uruchom test o nazwie Register WDTF<Project>SimpleIOAction.DLL na komputerze testowym. Aby uzyskać informacje na temat wybierania i uruchamiania testów, zobacz Jak przetestować sterownik w czasie wykonywania przy użyciu programu Visual Studio.
Aby sprawdzić, czy wtyczka Akcji Prostej We/Wy jest zainstalowana, uruchom Wyświetlanie urządzeń, które mają wtyczki WDTF Prostej We/Wy na komputerze testowym. Wtyczka i urządzenie powinny pojawić się w wynikach. Aby uzyskać więcej informacji, zobacz Jak ustalić, czy dla twojego urządzenia jest wymagane niestandardowe wtyczkowe działanie WDTF Simple I/O.
Aby odinstalować wtyczkę Simple I/O Action, uruchom test o nazwie Un-register WDTF<Project>SimpleIOAction.DLL na komputerze testowym. Możesz sprawdzić, czy wtyczka została odinstalowana, uruchamiając test Wyświetl urządzenia z wtyczkami WDTF Simple I/O.
Tematy pokrewne
Framework Tworzenia i Wykonywania Testów (TAEF)
Jak określić, czy dla urządzenia jest wymagana niestandardowa wtyczka do prostej akcji wejścia/wyjścia WDTF
Jak przetestować sterownik w czasie działania przy użyciu programu Visual Studio