共用方式為


DXGKDDI_DPSBMTRANSMISSION回呼函式 (dispmprt.h)

DXGKDDI_DPSBMTRANSMISSION 回呼可用來透過側帶通道與 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 不支援要求。 針對 Windows 10 版本 2004,以下 < 備註> 一節中所列的 Sideband Message 要求僅受到支援。
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 規格從固定 DPCD 範圍讀取回復(DOWN_REQ和UP_REP),因此沒有位址欄位。

DXGKDDI_DPSBMTRANSMISSION 為「不可部分完成」,因此驅動程式應該在傳回之前等候並接收 SBM 要求的回復。 pArgs->Data 中的 SBM 要求會由呼叫端完全封包,因此驅動程式可以直接將 SBM 封包大小中 DataRequestLength 寫入DOWN_REQ的 DPCD 範圍。 驅動程式應直接接收 SBM 回復封包到 數據,而不需處理/解譯。

驅動程式應該使用SideBand_MSG_Header中的End_Of_Message位來判斷是否已收到完整回復,但應避免進一步處理。 Data 可以保留回復,以位元組為單位 MaxReplyLength,因此驅動程式必須捨棄溢位封包。 驅動程式應該會傳回實際回復的長度,ActualReplyLength

驅動程式不需要特別檢查 NAK 回復,呼叫端會譯碼為另一個 ACK 回復。 若為 NAK 回復,驅動程式應該會傳回STATUS_SUCCESS。

MaxReplyLength 至少為 48 個字節,這是最大 Sideband Message 封包大小。 這可讓原始訊息直接針對單一封包回復複製。 針對具有多個封包的回復,MaxReplyLength 是根據 16 個字節的封包大小和 SBM 標頭中最長的相對地址來計算,以降低緩衝區不足的可能性。

CanUseCachedData 旗標表示驅動程式可以傳回快取的回復數據,但必須以 SBM 封包格式傳回。

要求

要求 價值
最低支援的用戶端 Windows 10 版本 2004
標頭 dispmprt.h

另請參閱

DXGKARG_DPSBMTRANSMISSION