IOCTL_USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC IOCTL (usbioctl.h)

Извлекает значение счетчика производительности системных запросов (QPC), синхронизированное с кадром и микрофреймом.

Основной код

IRP_MJ_DEVICE_CONTROL

Буфер входных и выходных данных

Указатель на структуру USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION , содержащую отслеживание времени, полученное запросом IOCTL_USB_START_TRACKING_FOR_TIME_SYNC . При входе вызывающий объект может указать номер кадра и микрофрейма, для которых требуется получить значение QPC.

В выходных данных члену CurrentQueryPerformanceCounter присваивается значение, прогнозируемое стеком usb-драйверов. Значение представляет системное значение QPC в микросекундах.

Длина входного/выходного буфера

Размер структуры USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION .

Блок состояния

Irp->IoStatus.Status имеет значение STATUS_SUCCESS, если запрос выполнен успешно. В противном случае состояние указывает на соответствующее условие ошибки в виде кода NTSTATUS .

Комментарии

При входе вызывающий объект может дополнительно указать кадр и микрофрейм, для которых вызывающий объект заинтересован в том, чтобы узнать соответствующее системное значение QPC. Эти значения должны быть указаны в элементах InputFrameNumber и InputMicroFrameNumberUSB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION соответственно. В выходных данных стек usb-драйвера заполняет элемент QueryPerformanceCounterAtInputFrameOrMicroFrame системным значением QPC, вычисляемым стеком usb-драйверов.

Если вызывающий объект не заинтересован в этих значениях, значения InputFrameNumber и InputMicroFrameNumber должны быть инициализированы значением 0. В выходных данных Параметр QueryPerformanceCounterAtInputFrameOrMicroFrame имеет значение 0.

Если стек USB-драйвера обнаружил границу кадра, значение PredictedAccuracyInMicroSeconds указывает на точность в единице 125 микросекунд. Он также учитывает, прошло ли достаточное время с момента включения отслеживания.

Стек USB-драйвера также может прогнозировать системное значение QPC, которое синхронизировано с номерами кадров шины и микрофреймов, полученных непосредственно с хост-контроллера.

Чтобы с точностью прогнозировать значения QPC, стек драйверов USB может опрашивать источники кадров и микрофреймов времени. Эта операция опроса может потребовать повышения или понижения IRQL для устранения задержек планирования, мешающих точности значения (после попытки считывания таймера регистра или QPC из пассивного IRQL для заданного количества попыток). Учитывая возможные дополнительные затраты на ЦП, этот интерфейс должен использоваться только для получения связанных значений шины USB и QPC и не должен использоваться в качестве замены существующих методов извлечения только времени шины USB.

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1709
Минимальная версия сервера Windows Server 2016
Верхняя часть usbioctl.h
IRQL <= DISPATCH_LEVEL

См. также раздел

Создание запросов IOCTL в драйверах

WdfIoTargetSendInternalIoctlOthersSynchronously

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously