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

IRP_MJ_DEVICE_CONTROL

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

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously