DXGKDDI_GETDISPLAYSTATEINTRUSIVE 콜백 함수(dispmprt.h)
OS(운영 체제)는 디스플레이 미니포트 드라이버의 DxgkDdiGetDisplayStateNonIntrusive 루틴을 호출하여 드라이버에서 표시 상태 정보를 수집합니다.
통사론
DXGKDDI_GETDISPLAYSTATEINTRUSIVE DxgkddiGetdisplaystateintrusive;
NTSTATUS DxgkddiGetdisplaystateintrusive(
[in] HANDLE Context,
[in/out] PDXGKARG_GETDISPLAYSTATEINTRUSIVE pArgs
)
{...}
매개 변수
[in] Context
DxgkDdiQueryInterface반환된 프라이빗 컨텍스트에 대한 포인터입니다.
[in/out] pArgs
DXGKARG_GETDISPLAYSTATEINTRUSIVE 구조체에 대한 포인터입니다.
반환 값
DxgkDdiGetDisplayStateIntrusive 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 다음 중 하나와 같은 오류 코드를 반환합니다.
오류 코드 | 의미 |
---|---|
STATUS_DRIVER_INTERNAL_ERROR | 드라이버 내에서 일반 소프트웨어 오류가 발생했습니다. |
STATUS_ACCESS_DENIED | 하드웨어는 현재 다른 스레드에서 사용되고 있으며 이 DDI는 해당 하드웨어에 액세스할 수 없습니다. |
STATUS_DEVICE_HARDWARE_ERROR | 일반 HW 오류가 발생했습니다. |
STATUS_DEVICE_POWERED_OFF | 디바이스 전원이 꺼져 있습니다. |
발언
OS는 DxgkDdiGetDisplayStateIntrusive 호출하여 사용자가 이미 잘못된 상태일 때 드라이버에서 표시 상태 정보를 수집합니다. DxgkDdiGetDisplayStateNonIntrusive달리 드라이버의 DxgkDdiGetDisplayStateIntrusive 루틴은 사용자에게 부작용이 보이는 더 많은 침입 작업을 수행할 수 있습니다. 침입 작업은 다음과 같이 정의됩니다(비입입 작업은 이러한 속성을 포함하지 않음).
이로 인해 사용자에게 표시되는 부작용(결함)이 발생합니다(예: 일시적으로 검사 중지 및 파괴적인 모니터 연결 검사).
속도가 느리고, 자주 호출되는 경우 시스템 또는 디스플레이 성능에 영향을 줍니다(1초에 여러 번).
표시 하위 시스템(또는 다른 하위 시스템)의 상태를 직접 또는 간접적으로 변경합니다.
드라이버는 데이터를 수집할 때 의도적으로 시스템의 상태를 변경해서는 안 됩니다.
OS는 DxgkDdiGetDisplayStateNonIntrusive대한 호출에 비해 이 루틴을 훨씬 덜 자주 호출합니다. 대부분의 오류 시나리오에서 OS는 먼저 DxgkDdiGetDisplayStateNonIntrusive 호출한 다음, DxgkDdiGetDisplayStateIntrusive 호출하여 침입적 호출의 의도하지 않은 효과가 비 침입 데이터 수집에 영향을 주지 않도록 합니다.
DXGKRNL은 NumOfTargets OS가 해당 VidPnTargetId 연결된 모니터가 있다고 보고하는 대상 수로 설정하여 이 루틴을 호출합니다. 드라이버가 지정된 대상에 연결된 모니터가 없다고 생각되면 해당 대상이 DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED ReturnSubStatus 설정해야 합니다.
메모
드라이버가 정보를 수집하는 동안 지정된 vidpntarget에서 오류가 발생하면 ReturnSubStatus 사용하여 오류 상태를 설정하고 다음 vidpntarget으로 진행하며 모든 경로가 실패하지 않는 한 전체 호출에 실패하지 않아야 합니다. 드라이버는 OS가 블랙 박스 정보를 수집하기 위해 DxgkDdiCollectDiagnosticInfo 호출할 때 IHV 디버그를 돕기 위해 내부 로그 컬렉션의 일부로 캡처되도록 일부 내부 오류 로그에서 이 호출 중에 발생한 오류를 기록하는 것이 좋습니다.
OS에는 DxgkDdiGetDisplayStateIntrusive 완료하기에 충분한 시간 제한(약 5초)이 있으므로 드라이버가 모든 관련 상태를 수집하는 데 더 많은 시간을 할애할 수 있습니다. 시간이 초과되면 OS가 머신을 버그 검사하고 드라이버가 이 호출에 중단된 경우 덤프를 수집할 수 있으므로 미니포트는 항상 시간 프레임 내에 이 호출을 완료해야 합니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 버전 2004 |
헤더 | dispmprt.h |
참고 항목
DXGKARG_GETDISPLAYSTATEINTRUSIVE