IOCTL_USB_START_TRACKING_FOR_TIME_SYNC IOCTL (usbioctl.h)
This request registers the caller with USB driver stack for time sync services.
Major code
Input / Output buffer
A pointer to a USB_START_TRACKING_FOR_TIME_SYNC_INFORMATION structure. On input, the caller must set the TimeTrackingHandle member to NULL. On output, the USB driver stack sets the TimeTrackingHandle member to a handle that tracks the sync services operation.
Input / Output buffer length
The size of the USB_START_TRACKING_FOR_TIME_SYNC_INFORMATION structure.
Status block
Irp->IoStatus.Status is set to STATUS_SUCCESS if the request is successful. Otherwise, Status indicates an appropriate error condition as a NTSTATUS code.
Remarks
When this IOCTL request completes, the USB driver stack enables certain interrupts from the host controller to keep track of closest frame/microframe boundary in order to predict the system QPC value with accuracy. Enabling the hardware interrupts adds an overhead to the power consumption because the CPU wakes up every 2.048 seconds when working in the D0 power state. Therefore we recommend that the caller should register for time sync services only when needed.
The driver stack disables those interrupts when it receives and completes the IOCTL_USB_STOP_TRACKING_FOR_TIME_SYNC request.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 10, version 1709 |
Minimum supported server | Windows Server 2016 |
Header | usbioctl.h |
IRQL | <= DISPATCH_LEVEL |
See also
Creating IOCTL Requests in Drivers
WdfIoTargetSendInternalIoctlOthersSynchronously