Come personalizzare I/O per il dispositivo usando il plug-in di I/O semplice WDTF

Per ottenere il vantaggio più utile dai test e dai test fondamentali del dispositivo, è possibile che sia stato scritto usando i modelli di test di Visual Studio, il dispositivo deve essere supportato da un plug-in I/O semplice. Per verificare se il tipo di dispositivo è supportato e per determinare se sono presenti requisiti specifici per i test, fare riferimento ai plug-in WDTF Semplici I/O forniti. Se il dispositivo non è supportato, è possibile creare un plug-in In Microsoft Visual Studio usando il modello Plug-in I/O semplice WDTF .

Prerequisiti

Istruzioni

Passaggio 1: Creare un progetto per un plug-in di I/O semplice WDTF

  1. Dal menu File fare clic su Nuovo > progetto.
  2. Nell'elenco dei modelli installati nella finestra di dialogo Nuovo progetto selezionare Test driver >> Windows C++ > WDTF Simple I/O Action Plug-in.
  3. Specificare un nome per il progetto di I/O semplice e una posizione (o usare le impostazioni predefinite).
  4. Il modello di progetto genera una soluzione di Visual Studio. La soluzione contiene tutti i file necessari per creare un semplice plug-in I/O per il dispositivo. I nomi dei file accettano il formatodel progetto>WDTF<SimpleIoAction*. Il nome predefinito per il progetto di I/O semplice è DeviceType.
  5. Il modello crea un'interfaccia di azione di I/O semplice WDTF per il progetto. L'interfaccia agisce su un'istanza dell'interfaccia IWDTFTarget2.
  6. Creare la soluzione plug-in I/O semplice WDTF per verificare che siano presenti tutti i file necessari.
  7. Implementare un metodo per impostare la destinazione e implementare le azioni di I/O semplici (Open, Close e RunIO), aggiungendo codice nel file di implementazione. Il nome del file accetta il formato delprogettoCWDTF SimpleIoActionImpl.cpp file.

Passaggio 2: Implementare il metodo SetTarget per il dispositivo

  • Aprire il file di implementazione per il progetto, ad esempio CWDTFmyDeviceTypeSimpleIoActionImpl.cpp e individuare l'istanza del metodo IAction::SetTarget SetTarget . Questo metodo ha una sezione contrassegnata con commenti e TODO: che indica dove implementare il codice che verifica la compatibilità con il dispositivo.

    Il metodo SetTarget viene chiamato una volta da WDTF per ogni istanza. Ha due scopi principali:

    • In modo che WDTF possa determinare se l'oggetto supporta la destinazione del dispositivo, pMainTarget
    • In modo che l'istanza simpleIoActionImpl delprogetto>CWDTF<possa ottenere le informazioni necessarie dalla destinazione per eseguire le chiamate del metodo Open() , Close() , RunIO().

    L'implementazione di questo metodo deve restituire E_NOINTERFACE per indicare che la destinazione non è supportata. Il metodo deve restituire S_OK se la destinazione è supportata. Se si verifica un altro errore, il metodo deve restituire HRESULT per indicare l'errore.

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

Passaggio 3: Implementare SimpleIoAction per aprire l'interfaccia

È quindi necessario aprire ITarget per il test implementando il metodo Open() fornito.

Questo metodo Open deve tentare di aprire il dispositivo di destinazione. Se il metodo non è in grado di eseguire questa operazione, il metodo deve restituire un valore HRESULT che indica l'errore. Questo metodo deve avere esito negativo se l'interfaccia SimpleIO è già aperta (inizializzata). Il modo in cui si implementa questo metodo dipende dal tipo ITarget e ciò che rende la situazione più appropriata. Questo significa che è necessario aprire un handle con CreateFile(). Forse significa che inizializzare una struttura di contesto in modo che sia possibile tenere traccia di un test case in corso. In caso di errore, il metodo deve usare idealmente COMReportError () e deve fornire una descrizione dell'errore e di eventuali informazioni o passaggi che potrebbero aiutare a prevenire occorrenze future.

Nota Questo metodo deve avere esito negativo se ISimpleIO_Action è già aperto.

  • Aprire il file di implementazione per il progetto, ad esempio CWDTFmyDeviceTypeSimpleIoActionImpl.cpp e individuare l'istanza del metodo Open . Questo metodo ha una sezione contrassegnata con commenti e 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");
       //
    

Passaggio 4: Implementare il metodo SimpleIoAction per chiudere l'interfaccia

Questo metodo deve chiudere il contesto di test aperto in precedenza. È necessario cancellare il contesto anche se è necessario segnalare un errore HRESULT. Esistono solo alcuni casi in cui si verifica un errore quando si chiude effettivamente ha senso. In questo metodo è necessario ripristinare qualsiasi operazione eseguita in Open(). Questo significa che è necessario chiudere l'handle aperto in precedenza con CloseHandle(). In caso di errore, specificare una descrizione utilizzabile.

Nota Questo metodo deve non riuscire se il ISimpleIO_Action è già chiuso o non è mai stato aperto.

  • Aprire il file di implementazione per il progetto, ad esempio CWDTFmyDeviceTypeSimpleIoActionImpl.cpp e individuare l'istanza del metodo Close . Questo metodo ha una sezione contrassegnata con commenti e 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");
       //
    
       //
    

Passaggio 5: Implementare il metodo SimpleIoAction per eseguire operazioni di I/O semplici

Questo metodo deve eseguire un numero ridotto di operazioni di input e output sulla destinazione. Il metodo deve quindi verificare che le operazioni di I/O siano completate correttamente. Ogni test può quindi controllare il tempo di esecuzione dell'I/O in un dispositivo. Ogni chiamata al metodo RunIo() deve eseguire solo una piccola quantità di I/O . WDTF chiamerà ripetutamente RunIo() in un ciclo per eseguire più I/O. In generale, provare a mantenere una singola chiamata al metodo RunIo() a pochi secondi.

Nota Questo metodo deve avere esito negativo se ISimpleIO_Action è attualmente chiuso.

  • Aprire il file di implementazione per il progetto, ad esempio CWDTFmyDeviceTypeSimpleIoActionImpl.cpp e individuare l'istanza del metodo RunIO. Questo metodo ha una sezione contrassegnata con commenti e 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");
       //
    
       //
    

Passaggio 6: Compilare e installare il plug-in azione di I/O semplice

Se non è già stato fatto, sarà necessario configurare un computer per i test. Per altre informazioni, vedere Effettuare il provisioning di un computer per la distribuzione e il test dei driver (WDK 8.1) o Effettuare il provisioning di un computer per la distribuzione e il test dei driver (WDK 8).

  1. Compilare la soluzione.

    Quando si compila il plug-in Semplice azione di I/O, vengono creati due test. Questi test installano e disinstallano il plug-in nel computer di test. Per impostazione predefinita, i file plug-in I/O semplici vengono visualizzati in Esplora gruppi di test nella categoria di test Categoria test.

  2. Per installare il plug-in Azione di I/O semplice, eseguire il test denominato Register WDTF<Project>SimpleIOAction.DLL nel computer di test. Per informazioni sulla selezione e l'esecuzione di test, vedere Come testare un driver in fase di esecuzione usando Visual Studio.

  3. Per verificare che sia installato il plug-in di I/O semplice, eseguire i dispositivi Display con plug-in WDTF Simple I/O nel computer di test. Il plug-in e il dispositivo devono essere visualizzati nei risultati. Per altre informazioni, vedere How to determine if a custom WDTF Simple I/O Action Plug-in è necessario per il dispositivo.

  4. Per disinstallare il plug-in Azione di I/O semplice, eseguire il test denominato Un-register WDTF<Project>SimpleIOAction.DLL nel computer di test. È possibile verificare che il plug-in sia stato disinstallato eseguendo i dispositivi Display con plug-in WDTF Simple I/O .

TAEF (Test Authoring and Execution Framework)
Come determinare se è necessario un plug-in di I/O semplice WDTF personalizzato per il dispositivo
Come testare un driver in fase di esecuzione con Visual Studio