Отладка драйвера смарт-карт

Примечание

Проверенные сборки были доступны в более ранних версиях Windows до Windows 10 версии 1803. Используйте такие средства, как средство проверки драйверов и GFlags, для проверка кода драйвера в более поздних версиях Windows.

Библиотеки драйверов интеллектуального карта поддерживают несколько функций отладки. Каждая функция отладки представлена одной из следующих констант, которые определены в файле заголовка Smclib.h :

DEBUG_IOCTL
DEBUG_ATR
DEBUG_PROTOCOL
DEBUG_DRIVER
DEBUG_TRACE
DEBUG_ERROR
DEBUG_BREAK
DEBUG_ALL

Объединенный набор включенных функций отладки представлен значением, называемым уровнем отладки. Это значение можно вычислить, взяв побитовое ЗНАЧЕНИЕ ИЛИ констант, которые соответствуют функциям, которые вы хотите включить.

Задать уровень отладки можно двумя способами. Во-первых, вы можете использовать программу тестирования драйвера smart карта Scdrvtst, которая поставляется вместе с комплектом драйверов Windows (WDK). Второй — использовать smartcardSetDebugLevel библиотеки драйверов карта smartcardSetDebugLevel.

В обоих случаях необходимо передать значение нужного уровня отладки в программу или подпрограмму, задающую уровень отладки. Например, чтобы задать уровень отладки из драйвера с помощью подпрограммы библиотеки смарт-карта, выполните следующий вызов:

SmartcardSetDebugLevel(DebugLevel);

Чтобы записать отладочные сообщения из драйвера чтения, драйвер должен вызвать следующую подпрограмму:

SmartcardDebug(
 ULONG DebugLevel,
 PCHAR Message
);

Важно!

Чтобы получать отладочные сообщения, необходимо установить проверенную версию операционной системы и проверенную версию драйвера.

Эту подпрограмму также можно использовать для записи сообщений в удаленный отладчик следующими способами.

  • Для записи сообщений об ошибках используйте константу DEBUG_ERROR для DebugLevel.

  • Для записи стандартных сообщений драйвера используйте константу DEBUG_DRIVER.

  • Чтобы написать сообщения трассировки, указывающие, когда драйвер чтения входит в подпрограмму или выходит из нее, используйте DEBUG_TRACE в качестве DebugLevel.

При разработке драйвера используйте проверенную версию библиотеки драйверов смарт-карта и установите максимальный уровень отладки с помощью smartcardSetDebugLevel(DEBUG_ALL) в подпрограмме DriverEntry.

Сведения о настройке сеанса удаленной отладки см. в разделе Отладка Windows.