IOCTL_USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC IOCTL (usbioctl.h)
擷取系統查詢性能計數器 (QPC) 與框架和微框架同步的值。
主要程序代碼
輸入/輸出緩衝區
USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION 結構的指標,其中包含IOCTL_USB_START_TRACKING_FOR_TIME_SYNC要求所擷取的時間追蹤。 在輸入時,呼叫端可以指定要擷取 QPC 值的框架和微框架號碼。
輸出時, CurrentQueryPerformanceCounter 成員會設定為 USB 驅動程式堆疊所預測的值。 值代表以微秒為單位的系統 QPC 值。
輸入/輸出緩衝區長度
USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION 結構的大小。
狀態區塊
Irp->如果要求成功,IoStatus.Status 會設定為 STATUS_SUCCESS。 否則, Status 會以 NTSTATUS 程式代碼表示適當的錯誤狀況。
備註
在輸入時,呼叫端可以選擇性地指定一個框架和微框架,讓呼叫端想要知道相關聯的系統 QPC 值。 這些值必須分別在 USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION的 InputFrameNumber 和 InputMicroFrameNumber 成員中提供。 輸出時,USB 驅動程式堆疊會以 USB 驅動程式堆疊計算的系統 QPC 值填入 QueryPerformanceCounterAtInputFrameOrMicroFrame 成員。
如果呼叫端不感興趣這些值, 則 InputFrameNumber 和 InputMicroFrameNumber 值必須初始化為 0。 在輸出上, QueryPerformanceCounterAtInputFrameOrMicroFrame 設定為 0。
如果 USB 驅動程式堆疊遇到框架界限, PredictedAccuracyInMicroSeconds 值表示 125 微秒單位中的精確度。 如果啟用追蹤之後已經過足夠的時間,它也會納入考慮。
USB 驅動程式堆疊也可以預測系統 QPC 值,這些值會與直接從主機控制器擷取的總線框架和微框架編號同步處理。
為了以精確度預測 QPC 值,USB 驅動程式堆疊可能會輪詢框架和微框架時間來源。 該輪詢作業可能需要引發或降低 IRQL,以避免排程延遲干擾 (在嘗試讀取被動 IRQL 的註冊/QPC 定時器之後,干擾值的正確性) 。 由於此可能的額外 CPU 成本,此介面只能用來取得相關聯的 USB 總線和 QPC 值,而且不能用來取代現有的方法,以便只擷取 USB 總線時間。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 (版本 1709) |
最低支援的伺服器 | Windows Server 2016 |
標頭 | usbioctl.h |
IRQL | <= DISPATCH_LEVEL |
另請參閱
WdfIoTargetSendInternalIoctlOthersSynchronously