IOCTL_USB_START_TRACKING_FOR_TIME_SYNC IOCTL (usbioctl.h)
Этот запрос регистрирует вызывающий объект с помощью стека драйвера USB для служб синхронизации времени.
Основной код
Буфер входных и выходных данных
Указатель на структуру USB_START_TRACKING_FOR_TIME_SYNC_INFORMATION . При входе вызывающий объект должен задать для элемента TimeTrackingHandle значение NULL. На выходных данных стек usb-драйвера задает элемент TimeTrackingHandle для дескриптора, который отслеживает операции служб синхронизации.
Длина входного/выходного буфера
Размер структуры USB_START_TRACKING_FOR_TIME_SYNC_INFORMATION .
Блок состояния
Irp->IoStatus.Status имеет значение STATUS_SUCCESS, если запрос выполнен успешно. В противном случае состояние указывает на соответствующее условие ошибки в виде кода NTSTATUS .
Комментарии
Когда этот запрос IOCTL завершается, стек драйвера USB включает определенные прерывания от хост-контроллера для отслеживания ближайшей границы кадра или микрофрейма, чтобы с точностью предсказать значение QPC системы. Включение аппаратных прерываний увеличивает затраты на потребление энергии, так как ЦП пробуждает каждые 2,048 секунды при работе в состоянии питания D0. Поэтому мы рекомендуем регистрировать вызывающий объект для служб синхронизации времени только при необходимости.
Стек драйверов отключает эти прерывания при получении и выполнении запроса IOCTL_USB_STOP_TRACKING_FOR_TIME_SYNC .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 версии 1709 |
Минимальная версия сервера | Windows Server 2016 |
Верхняя часть | usbioctl.h |
IRQL | <= DISPATCH_LEVEL |
См. также раздел
Создание запросов IOCTL в драйверах
WdfIoTargetSendInternalIoctlOthersSynchronously