IOCTL_USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC IOCTL (usbioctl.h)

Recupera il valore del contatore delle prestazioni delle query di sistema sincronizzato con il frame e il microframe.

Codice principale

IRP_MJ_DEVICE_CONTROL

Input/Buffer di output

Puntatore a una struttura USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION che contiene il rilevamento del tempo gestito dalla richiesta di IOCTL_USB_START_TRACKING_FOR_TIME_SYNC . In input, il chiamante può specificare un numero frame e microframe per cui recuperare il valore QPC.

In output, il membro CurrentQueryPerformanceCounter è impostato su un valore stimato dallo stack di driver USB. Il valore rappresenta il valore QPC di sistema in microsecondi.

Lunghezza del buffer di input/output

Dimensione della struttura USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION .

Blocco dello stato

Irp->IoStatus.Status è impostato su STATUS_SUCCESS se la richiesta ha esito positivo. In caso contrario, stato indica una condizione di errore appropriata come codice NTSTATUS .

Commenti

In input, il chiamante può facoltativamente specificare un frame e un microframe per cui il chiamante è interessato a conoscere il valore QPC del sistema associato. Questi valori devono essere forniti rispettivamente nei membri InputFrameNumber e InputMicroFrameNumber di USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION. In output, lo stack di driver USB riempie il membro QueryPerformanceCounterAtInputFrameOrMicroFrame con un valore QPC di sistema calcolato dallo stack di driver USB.

Se il chiamante non è interessato a tali valori, i valori InputFrameNumber e InputMicroFrameNumber devono essere inizializzati su 0. Nell'output , QueryPerformanceCounterAtInputFrameOrMicroFrame è impostato su 0.

Se lo stack di driver USB ha rilevato un limite di frame, il valore PredictedAccuracyInMicroSeconds indica l'accuratezza nell'unità 125-microsecondi. Prende inoltre in considerazione se è trascorso tempo sufficiente poiché il rilevamento è abilitato.

Lo stack di driver USB può anche stimare il valore QPC di sistema sincronizzato con la cornice del bus e i numeri di microframe recuperati direttamente dal controller host.

Per stimare i valori QPC con accuratezza, lo stack di driver USB potrebbe eseguire il polling delle origini temporali del frame e del microframe. L'operazione di polling potrebbe richiedere l'aumento o l'abbassamento di IRQL per eliminare i ritardi di pianificazione che interferino con l'accuratezza del valore (dopo aver tentato di leggere il timer di registrazione/QPC da IRQL passivo per un determinato numero di tentativi). Dato questo possibile costo aggiuntivo della CPU, questa interfaccia deve essere usata solo per ottenere valori USB e QPC associati e non deve essere usata come sostituzione dei metodi esistenti per recuperare solo l'ora del bus USB.

Requisiti

Requisito Valore
Client minimo supportato Windows 10, versione 1709
Server minimo supportato Windows Server 2016
Intestazione usbioctl.h
IRQL <= DISPATCH_LEVEL

Vedi anche

Creazione di richieste IOCTL nei driver

WdfIoTargetSendInternalIoctlOthersSynchronously

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously