共用方式為


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

另請參閱

DXGKARG_DPSBMTRANSMISSION