如何使用 WDTF 簡單 I/O 動作外掛程式來自定義裝置的 I/O

若要充分利用使用 Visual Studio 測試範本撰寫的裝置基本測試和測試,您的裝置應該由簡單 I/O 外掛程式支援。 若要查看您的裝置類型是否受到支援,並判斷是否有特定測試需求,請參閱 提供的 WDTF 簡單 I/O 外掛程式。如果您的裝置不受支援,您可以使用 WDTF 簡易 I/O 動作外掛程式 範本,在 Microsoft Visual Studio 中建立外掛程式。

必要條件

指示

步驟 1:建立 WDTF 簡單 I/O 動作外掛程式的專案

  1. 從 [ 檔案] 功能表中,按兩下 [ 新增 > 專案]。
  2. 從 [ 新增專案 ] 對話框中已安裝的範本清單中,選取 [Visual C++ > Windows 驅動程序 > 測試 > WDTF 簡單 I/O 動作外掛程式]。
  3. 提供簡單 I/O 專案的名稱和位置 (或使用預設值) 。
  4. 項目範本會產生Visual Studio方案。 解決方案包含您為裝置建立簡單 I/O 外掛程式所需的所有檔案。 檔名的格式為 WDTF<專案>SimpleIoAction*。 簡單 I/O 專案的預設名稱是 DeviceType。
  5. 此範本會為您的專案建立 WDTF 簡易 I/O 動作介面。 介面會處理 IWDTFTarget2 介面的實例。
  6. 建置 WDTF 簡易 I/O 外掛程式解決方案,以確認所有必要的檔案都存在。
  7. 實作方法來設定目標,並在實作檔案中新增程序代碼,以實作簡單 I/O Actions (Open、Close 和 RunIO ) 。 檔名的格式為 CWDTF專案SimpleIoActionImpl.cpp檔案。

步驟 2:實作裝置的 SetTarget 方法

  • 開啟項目的實作檔案,例如,CWDTFmyDeviceTypeSimpleIoActionImpl.cpp,然後找出 IAction::SetTarget SetTarget 方法的實例。 這個方法有標示批註和 TODO 的區段:指出您應該在何處實作程式代碼,以檢查裝置的相容性。

    每個實例的 WDTF 會呼叫 SetTarget 方法一次。 它有兩個主要用途:

    • 因此,WDTF 可以判斷物件是否支援裝置目標 pMainTarget
    • 因此,CWDTF<專案>SimpleIoActionImpl 實例可以從目標取得必要的資訊,以完成稍後的 Open () 、Close () 、RunIO () 方法呼叫。

    此方法的實作應該傳回E_NOINTERFACE,以指出不支持目標。 如果支持目標,方法應該傳回S_OK。 如果發生任何其他失敗,方法應該會傳回 HRESULT 來指出錯誤。

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

步驟 3:實作 SimpleIoAction 以開啟介面

接下來,您必須實作提供的 Open () 方法來開啟 ITarget 進行測試。

這個 Open 方法應該嘗試開啟目標裝置。 如果方法無法執行此動作,此方法應該會傳回 HRESULT,指出失敗。 如果 SimpleIO 介面已經開啟, (初始化) ,這個方法應該會失敗。 實作此方法的方式取決於您的 ITarget 類型,以及您情況最有意義的方式。 或許這表示您應該使用 CreateFile () 開啟它的句柄。 或許這表示您初始化內容結構,以便追蹤進行中的測試案例。 如果發生錯誤,方法應該最好使用 COMReportError () ,並提供錯誤的描述,以及任何有助於防止未來發生的資訊或步驟。

注意 如果已開啟ISimpleIO_Action,這個方法應該會失敗。

  • 開啟項目的實作檔案,例如,CWDTFmyDeviceTypeSimpleIoActionImpl.cpp,並找出 Open 方法的實例。 這個方法有標示批註和 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");
       //
    

步驟 4:實作 SimpleIoAction 方法以關閉介面

這個方法應該關閉您先前開啟的測試內容。 即使您必須回報失敗的 HRESULT,您也應該清除內容。 只有少數情況下,當您實際關閉時會發生錯誤。 在此方法中,您應該還原您在Open () 中執行的任何作業。 或許這表示您應該使用 CloseHandle () 關閉先前開啟的句柄。 如果發生錯誤,請提供可採取動作的描述。

注意 如果ISimpleIO_Action已經關閉或從未開啟,這個方法應該會失敗。

  • 開啟項目的實作檔案,例如,CWDTFmyDeviceTypeSimpleIoActionImpl.cpp,並找出 Close 方法的實例。 這個方法有標示批註和 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");
       //
    
       //
    

步驟 5:實作 SimpleIoAction 方法來執行簡單的 I/O 作業

此方法應該會在目標上執行少量的輸入和輸出作業。 然後,方法應該確認 I/O 作業是否已正確完成。 然後,每個測試都可以控制對裝置執行 I/O 的時間長度。 每次呼叫 RunIo () 方法時,應該只會執行少量的 I/O 。 WDTF 會在循環中重複呼叫 RunIo () ,以執行更多 I/O。 一般而言,請嘗試將單一 RunIo () 方法呼叫保留幾秒鐘。

注意 如果目前關閉ISimpleIO_Action,這個方法應該會失敗。

  • 開啟項目的實作檔案,例如,CWDTFmyDeviceTypeSimpleIoActionImpl.cpp,並找出 RunIO 方法的實例。 這個方法有標示批註和 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");
       //
    
       //
    

步驟 6:建置並安裝簡單 I/O 動作外掛程式

如果您尚未這麼做,則必須設定計算機進行測試。 如需詳細資訊,請參閱 布建計算機以進行驅動程式部署和測試 (WDK 8.1) 布建電腦以進行驅動程式部署和測試 (WDK 8)

  1. 建置方案。

    當您建置簡單 I/O 動作外掛程式時,會建立兩個測試。 這些測試會在測試計算機上安裝並卸載外掛程式。 根據預設,[ 測試群組總管] 中的 [簡單 I/O 動作] 外掛程式檔案會出現在測試類別 [我的測試類別] 中

  2. 若要安裝簡單 I/O 動作外掛程式,請在測試電腦上執行名為 Register WDTF<Project>SimpleIOAction.DLL 的測試。 如需選取和執行測試的相關信息,請參閱 如何使用 Visual Studio 在運行時間測試驅動程式

  3. 若要確認已安裝簡單的 I/O 動作外掛程式,請在測試電腦上執行 具有 WDTF 簡單 I/O 外掛程式測試的顯示裝置 。 您的外掛程式和裝置應該會出現在結果中。 如需詳細資訊,請參閱 如何判斷裝置是否需要自定義 WDTF 簡單 I/O 動作外掛程式

  4. 若要卸載簡單 I/O 動作外掛程式,請在測試電腦上執行名為 Un-register WDTF<Project>SimpleIOAction.DLL 的測試。 您可以執行 具有 WDTF 簡單 I/O 外掛程式測試的顯示裝置 ,以確認您已卸載外掛程式。

測試撰寫與執行架構 (TAEF)
如何判斷裝置是否需要自定義 WDTF 簡單 I/O 動作外掛程式
如何使用 Visual Studio 在運行時間測試驅動程式