DXGKDDI_DPSBMTRANSMISSION 콜백 함수(dispmprt.h)
DXGKDDI_DPSBMTRANSMISSION 콜백은 사이드밴드 채널을 통해 DP(DisplayPort) 분기 디바이스와 통신하고 분기 디바이스 뒤에 있는 디바이스를 싱크하는 데 사용됩니다.
통사론
DXGKDDI_DPSBMTRANSMISSION DxgkddiDpsbmtransmission;
NTSTATUS DxgkddiDpsbmtransmission(
HANDLE Context,
PDXGKARG_DPSBMTRANSMISSION pArgs
)
{...}
매개 변수
Context
인터페이스를 쿼리할 때 제공되는 컨텍스트 포인터입니다.
pArgs
DXGKARG_DPSBMTRANSMISSION 구조체에 대한 포인터입니다.
반환 값
DXGKDDI_DPSBMTRANSMISSION 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 다음 중 하나와 같은 오류 코드를 반환합니다.
오류 코드 | 의미 |
---|---|
STATUS_DRIVER_INTERNAL_ERROR | 내부 소프트웨어 오류가 발생했습니다. |
STATUS_ACCESS_DENIED | 요청이 지원되지 않습니다. Windows 10 버전 2004의 경우 아래 설명 섹션에 나열된 사이드밴드 메시지 요청만 지원됩니다. |
STATUS_BUFFER_TOO_SMALL | 버퍼가 너무 작아서 사이드밴드 메시지 회신 또는 기타 작업에는 너무 작습니다. |
STATUS_DEVICE_HARDWARE_ERROR | 하드웨어 오류가 발생했습니다. |
STATUS_DEVICE_POWERED_OFF | 디바이스 전원이 꺼져 있습니다. |
STATUS_DEVICE_NOT_CONNECTED | 디바이스가 연결되어 있지 않습니다. |
STATUS_DEVICE_PROTOCOL_ERROR | AUX 프로토콜 수준에서 DP AUX, I2C에서 오류가 발생했습니다. 드라이버는 DPNativeError 사용하여 오류에 대한 자세한 내용을 인코딩할 수 있습니다. |
발언
Windows 10 버전 2004의 경우 드라이버는 다음 쿼리 형식의 SBM(Sideband Message) 요청을 지원하는 데만 필요합니다.
- GET_MESSAGE_TRANSACTION_VERSION
- LINK_ADDRESS
- QUERY_PAYLOAD
- REMOTE_DPCD_READ
- REMOTE_I2C_READ
- QUERY_STREAM_ENCRYPTION_STATUS
표시 커널 런타임은 다른 SBM 요청을 차단합니다.
SBM 트랜잭션의 경우 요청이 작성되고 DP 사양(DOWN_REQ 및 UP_REP)에 따라 고정 DPCD 범위에서 회신을 읽으므로 주소 필드가 없습니다.
DXGKDDI_DPSBMTRANSMISSION "atomic"이므로 드라이버는 반환하기 전에 SBM 요청의 회신을 기다렸다가 받아야 합니다. pArgs->Data SBM 요청은 호출자가 완전히 패킷화하므로 드라이버는 SBM 패킷 크기로 DataRequestLength 순차적으로 DOWN_REQ 위해 DPCD 범위에 직접 쓸 수 있습니다. 드라이버는 처리/해석 없이 Data 직접 SBM 회신 패킷을 수신해야 합니다.
드라이버는 SideBand_MSG_Header End_Of_Message 비트를 사용하여 전체 회신이 수신되었는지 여부를 결정해야 하지만 추가 처리를 피해야 합니다. 데이터 최대 MaxReplyLength 바이트까지 회신을 저장할 수 있으므로 드라이버가 오버플로 패킷을 삭제해야 합니다. 드라이버는 ActualReplyLength회신의 실제 길이를 반환해야 합니다.
드라이버는 다른 ACK 회신과 마찬가지로 호출자가 디코딩하는 NAK 회신을 구체적으로 확인할 필요가 없습니다. NAK 회신의 경우 드라이버는 STATUS_SUCCESS 반환해야 합니다.
MaxReplyLength 최대 사이드밴드 메시지 패킷 크기인 48바이트 이상입니다. 이렇게 하면 단일 패킷 회신에 대해 원시 메시지를 직접 복사할 수 있습니다. 여러 패킷이 있는 회신의 경우 MaxReplyLength 버퍼 부족 가능성을 낮추기 위해 SBM 헤더의 패킷 크기 16바이트 및 가장 긴 상대 주소를 기준으로 계산됩니다.
CanUseCachedData 플래그는 드라이버가 캐시된 회신 데이터를 반환할 수 있지만 SBM 패킷 형식이어야 했음을 나타냅니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 버전 2004 |
헤더 | dispmprt.h |