IOCTL_USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC IOCTL (usbioctl.h)

Récupère la valeur du compteur de performances de requête système (QPC) synchronisée avec le frame et le microframe.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d’entrée/sortie

Pointeur vers une structure de USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION qui contient le suivi du temps géré par la requête IOCTL_USB_START_TRACKING_FOR_TIME_SYNC . Lors de l’entrée, l’appelant peut spécifier un frame et un numéro de microframe pour lesquels récupérer la valeur QPC.

À la sortie, le membre CurrentQueryPerformanceCounter est défini sur une valeur prédite par la pile de pilotes USB. La valeur représente la valeur QPC système en microsecondes.

Longueur de la mémoire tampon d’entrée/sortie

Taille de la structure USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION .

Bloc d’état

Irp->IoStatus.Status est défini sur STATUS_SUCCESS si la demande réussit. Sinon, Status indique une condition d’erreur appropriée en tant que code NTSTATUS .

Remarques

Lors de l’entrée, l’appelant peut éventuellement spécifier une image et un microframe pour lesquels l’appelant souhaite connaître la valeur QPC système associée. Ces valeurs doivent être fournies dans les membres InputFrameNumber et InputMicroFrameNumber de USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION, respectivement. À la sortie, la pile de pilotes USB remplit le membre QueryPerformanceCounterAtInputFrameOrMicroFrame avec une valeur QPC système calculée par la pile de pilotes USB.

Si l’appelant n’est pas intéressé par ces valeurs, les valeurs InputFrameNumber et InputMicroFrameNumber doivent être initialisées sur 0. En sortie, QueryPerformanceCounterAtInputFrameOrMicroFrame est défini sur 0.

Si la pile de pilotes USB a rencontré une limite d’image, la valeur PredictedAccuracyInMicroSeconds indique la précision en unité de 125 microsecondes. Il prend également en compte si un délai suffisant s’est écoulé depuis que le suivi est activé.

La pile de pilotes USB peut également prédire la valeur QPC système qui est synchronisée avec les numéros de trame de bus et de microframe récupérés directement à partir du contrôleur hôte.

Pour prédire les valeurs QPC avec précision, la pile de pilotes USB peut interroger les sources de temps de trame et de microframe. Cette opération d’interrogation peut nécessiter une augmentation ou une diminution de l’IRQL pour éliminer les retards de planification qui interfèrent avec l’exactitude de la valeur (après avoir tenté de lire le minuteur de registre/QPC à partir de l’IRQL passif pour un nombre donné d’essais). Compte tenu de ce coût supplémentaire possible du processeur, cette interface doit uniquement être utilisée pour obtenir les valeurs de bus USB et QPC associées et ne doit pas être utilisée en remplacement des méthodes existantes pour récupérer uniquement le temps de bus USB.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1709
Serveur minimal pris en charge Windows Server 2016
En-tête usbioctl.h
IRQL <= DISPATCH_LEVEL

Voir aussi

Création de requêtes IOCTL dans les pilotes

WdfIoTargetSendInternalIoctlOthersSynchronously

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously