DXGKDDI_DPSBMTRANSMISSION回呼函式 (dispmprt.h)
DXGKDDI_DPSBMTRANSMISSION回呼可用來透過側邊通道與 Branch 裝置後方的 DisplayPort (DP) 分支裝置和接收裝置通訊。
語法
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 | 不支援此要求。 For Windows 10 version 2004, only Sideband Message requests listed in the Remarks section below are supported. |
STATUS_BUFFER_TOO_SMALL | 對於 Sideband 訊息回復或其他作業而言,緩衝區太小。 |
STATUS_DEVICE_HARDWARE_ERROR | 發生硬體錯誤。 |
STATUS_DEVICE_POWERED_OFF | 裝置已關閉電源。 |
STATUS_DEVICE_NOT_CONNECTED | 裝置未連線。 |
STATUS_DEVICE_PROTOCOL_ERROR | DP AUX、I2C over AUX 通訊協定層級發生錯誤。 驅動程式可以使用 DPNativeError 來編碼錯誤的詳細數據。 |
備註
針對 Windows 10 版本 2004,驅動程式只需要支援下列側帶訊息 (SBM) 要求的查詢類型:
- 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 為「不可部分完成」,因此驅動程式應該在傳回之前等候並接收 SBM 要求的回復。 pArgs-Data> 中的 SBM 要求完全由呼叫端封包,因此驅動程式可以直接將 SBM 封包大小中的RequestLength 寫入 DPCD 範圍,以便DOWN_REQ。 驅動程式應該會直接接收 SBM 回復封包到 數據 中,而不需處理/解譯。
驅動程式應該使用SideBand_MSG_Header中的 End_Of_Message 位來決定是否已收到完整回復,但應該避免進一步處理。 數據 可以保留最多以位元組為單位的 MaxReplyLength 回復,因此驅動程序必須捨棄溢位封包。 驅動程序應該會在 ActualReplyLength 中傳回回復的實際長度。
驅動程式不需要特別檢查 NAK 回復,呼叫端會譯碼為另一個 ACK 回復。 針對 NAK 回復,驅動程式應該傳回STATUS_SUCCESS。
MaxReplyLength 至少為 48 個字節,這是最大 Sideband 訊息封包大小。 這可讓原始訊息直接複製給單一封包回復。 對於具有多個封包的回復, MaxReplyLength 會根據SBM標頭中的封包大小為16位元組和最長的相對地址來計算,以降低緩衝區不足的可能性。
CanUseCachedData 旗標表示驅動程式可以傳回快取的回復數據,但必須是 SBM 封包格式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 (版本 2004) |
標頭 | dispmprt.h |