IOCTL_USB_GET_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC IOCTL(usbioctl.h)

프레임 및 마이크로프레임과 동기화된 QPC(시스템 쿼리 성능 카운터) 값을 검색합니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력/출력 버퍼

IOCTL_USB_START_TRACKING_FOR_TIME_SYNC 요청에 의해 검색된 시간 추적을 포함하는 USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION 구조체에 대한 포인터입니다. 입력 시 호출자는 QPC 값을 검색할 프레임 및 마이크로프레임 번호를 지정할 수 있습니다.

출력에서 CurrentQueryPerformanceCounter 멤버는 USB 드라이버 스택에서 예측하는 값으로 설정됩니다. 값은 시스템 QPC 값을 마이크로초로 나타냅니다.

입력/출력 버퍼 길이

USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION 구조체의 크기입니다.

상태 블록

Irp->요청이 성공하면 IoStatus.Status 가 STATUS_SUCCESS 설정됩니다. 그렇지 않으면 상태가NTSTATUS 코드로 적절한 오류 조건을 나타냅니다.

설명

입력 시 호출자는 필요에 따라 호출자가 연결된 시스템 QPC 값을 알고자 하는 프레임 및 마이크로프레임을 지정할 수 있습니다. 이러한 값은 각각 USB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATIONInputFrameNumberInputMicroFrameNumber 멤버에 제공되어야 합니다. 출력 시 USB 드라이버 스택은 QueryPerformanceCounterAtInputFrameOrMicroFrame 멤버를 USB 드라이버 스택에서 계산한 시스템 QPC 값으로 채웁니다.

호출자가 해당 값에 관심이 없는 경우 InputFrameNumberInputMicroFrameNumber 값을 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

추가 정보

드라이버에서 IOCTL 요청 만들기

WdfIoTargetSendInternalIoctlOthersSynchronously

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously