Share via


IOCTL_USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC IOCTL (usbioctl.h)

Recupera el valor del contador de rendimiento de consultas del sistema (QPC) sincronizado con el marco y el microframe.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada y salida

Puntero a una estructura de USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION que contiene el seguimiento de tiempo controlado por la solicitud de IOCTL_USB_START_TRACKING_FOR_TIME_SYNC . En la entrada, el autor de la llamada puede especificar un fotograma y un número de microframe para el que se va a recuperar el valor de QPC.

En la salida, el miembro CurrentQueryPerformanceCounter se establece en un valor predicho por la pila de controladores USB. El valor representa el valor QPC del sistema en microsegundos.

Longitud del búfer de entrada y salida

Tamaño de la estructura USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION .

Bloque de estado

Irp->IoStatus.Status se establece en STATUS_SUCCESS si la solicitud se realiza correctamente. De lo contrario, Status indica una condición de error adecuada como código NTSTATUS .

Comentarios

En la entrada, el autor de la llamada puede especificar opcionalmente un marco y un microframe para los que el autor de la llamada está interesado en conocer el valor de QPC del sistema asociado. Estos valores deben proporcionarse en los miembros InputFrameNumber y InputMicroFrameNumber de USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION, respectivamente. En la salida, la pila del controlador USB rellena el miembro QueryPerformanceCounterAtInputFrameOrMicroFrame con un valor QPC del sistema calculado por la pila del controlador USB.

Si el autor de la llamada no está interesado en esos valores, los valores InputFrameNumber y InputMicroFrameNumber deben inicializarse en 0. En la salida, QueryPerformanceCounterAtInputFrameOrMicroFrame se establece en 0.

Si la pila del controlador USB encontró un límite de marco, el valor PredictedAccuracyInMicroSeconds indica la precisión en la unidad de 125 microsegundos. También se tiene en cuenta si ha transcurrido un tiempo suficiente, ya que el seguimiento está habilitado.

La pila de controladores USB también puede predecir el valor QPC del sistema que se sincroniza con el marco de bus y los números de microframe recuperados directamente del controlador host.

Para predecir los valores de QPC con precisión, la pila del controlador USB podría sondear los orígenes de tiempo de fotograma y microframe. Esa operación de sondeo podría requerir aumentar o reducir IRQL para eliminar retrasos de programación que interfieren con la precisión del valor (después de intentar leer el temporizador de registro o QPC de IRQL pasivo para un número determinado de intentos). Dado este posible costo adicional de CPU, esta interfaz solo se debe usar para obtener los valores de bus USB y QPC asociados y no debe usarse como reemplazo de los métodos existentes para recuperar solo el tiempo del bus USB.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1709
Servidor mínimo compatible Windows Server 2016
Encabezado usbioctl.h
IRQL <= DISPATCH_LEVEL

Consulte también

Creación de solicitudes IOCTL en controladores

WdfIoTargetSendInternalIoctlOthersSynchronously

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously