Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы получить наибольшую пользу от основных тестов устройств и тестов, которые вы могли написать с помощью шаблонов тестов Visual Studio, ваше устройство должно поддерживаться плагином простого ввода-вывода. Чтобы проверить, поддерживается ли ваш тип устройства и существуют ли специальные требования для тестирования, обратитесь к предоставленным подключаемым модулям простого ввода-вывода WDTF. Если ваше устройство не поддерживается, вы можете создать подключаемый модуль в Microsoft Visual Studio, используя шаблон WDTF Simple I/O Action Plug-in.
Необходимые условия
- Устройство, на котором выполняется тестирование, устанавливается на тестовом компьютере.
- Пакет драйвера, подписанный и установленный на тестовом компьютере. Чтобы проверить правильность установки драйвера, см. тестирование драйвера.
- Компьютеры, которые настроены и подготовлены для развертывания, тестируйте, см. как протестировать драйвер во время выполнения с помощью Visual Studio.
Инструкции
Шаг 1: Создайте проект для плагина действия простого ввода-вывода WDTF
- В меню Файл щелкните Создать > Проект.
- В списке установленных шаблонов в диалоговом окне Новый проект выберите Visual C++ > Драйвер Windows > Тесты > WDTF Simple I/O Action Plug-in.
- Укажите имя простого проекта ввода-вывода и расположения (или используйте значения по умолчанию).
- Шаблон проекта создает решение Visual Studio. Решение содержит все файлы, необходимые для создания простого подключаемого модуля ввода-вывода для устройства. Имена файлов принимают форму WDTF<project>SimpleIoAction*. Имя по умолчанию для простого проекта ввода-вывода — DeviceType.
- Шаблон создает интерфейс простого действия ввода-вывода WDTF для вашего проекта. Интерфейс взаимодействует с экземпляром интерфейса IWDTFTarget2.
- Создайте решение плагина простого ввода-вывода WDTF, чтобы убедиться, что все необходимые файлы присутствуют.
- Реализуйте метод для задания целевого объекта и реализации простых действий ввода-вывода (Open, Close и RunIO), добавив код в файл реализации. Имя файла имеет вид CWDTFпроектSimpleIoActionImpl.cpp файл.
шаг 2. Реализация метода SetTarget для устройства
Откройте файл реализации проекта, например CWDTFmyDeviceTypeSimpleIoActionImpl.cpp, и найдите экземпляр метода IAction::SetTarget SetTarget. Этот метод содержит раздел, помеченный комментариями и TODO: указывает, где следует реализовать код, который проверяет совместимость с устройством.
Метод SetTarget вызывается WDTF один раз для каждого экземпляра. Она имеет две основные цели:
- Чтобы WDTF мог определить, поддерживает ли объект цель устройства, pMainTarget
- Чтобы экземпляр SimpleIoActionImpl проекта CWDTF<>мог получить необходимые сведения из целевого объекта для выполнения последующих вызовов метода 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 для открытия интерфейса
Затем необходимо открыть ITarget для тестирования, реализуя предоставленный метод Open().
Этот метод 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 для выполнения простых операций ввода-вывода
Этот метод должен выполнять небольшое количество операций ввода и вывода в целевом объекте. Затем метод должен проверить правильность выполнения операций ввода-вывода. Затем каждый тест может контролировать время выполнения операций ввода-вывода на устройство. Каждый вызов метода RunIo() должен выполнять только небольшое количество операций ввода-вывода. WDTF неоднократно вызывает RunIo() в цикле, чтобы выполнять больше операций ввода-вывода. Как правило, попробуйте сохранить один вызов метода 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).
Создайте решение.
При создании подключаемого модуля "Простое действие ввода-вывода" создаются два теста. Эти тесты устанавливают и удаляют плагин на тестовом компьютере. По умолчанию файлы подключаемого модуля "Простое действие ввода-вывода" отображаются в обозревателе групп тестирования, в тестовой категории "Моя категория теста".
Чтобы установить плагин простого ввода-вывода, выполните тест с именем Register WDTF<Project>SimpleIOAction.DLL на тестовом компьютере. Сведения о выборе и выполнении тестов см. в статье Как протестировать драйвер во время выполнения с помощью Visual Studio.
Чтобы убедиться, что ваш подключаемый модуль Simple I/O установлен, выполните тест Показать устройства с подключаемыми модулями WDTF Simple I/O на тестовом компьютере. В результатах должны отображаться ваш плагин и устройство. Для получения дополнительной информации смотрите Как определить, требуется ли пользовательский подключаемый модуль действий WDTF Simple I/O для вашего устройства.
Чтобы удалить плагин действия простого ввода-вывода, выполните тест под названием Unregister WDTF<Project>SimpleIOAction.DLL на тестовом компьютере. Вы можете убедиться, что удалили подключаемый модуль, запустив тест Отображение устройств с подключаемыми модулями WDTF Simple I/O.
Связанные разделы
Платформа создания и выполнения тестов (TAEF)
Как определить, требуется ли пользовательский подключаемый модуль действий ввода-вывода WDTF Simple I/O для вашего устройства
Как протестировать драйвер во время выполнения с помощью Visual Studio