次の方法で共有


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 では、以下の「解説」セクションに記載されているサイドバンド メッセージ要求のみがサポートされています。
STATUS_BUFFER_TOO_SMALL バッファーが小さすぎて、サイドバンド メッセージの応答やその他の操作ができません。
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 の場合、ドライバーは、次の種類の Sideband Message (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 パケット サイズの DataRequestLength を、DOWN_REQの DPCD 範囲に順番に書き込むことができます。 ドライバーは、処理/解釈せずに、データ に直接 SBM 応答パケットを受信する必要があります。

ドライバーは、完全な応答が受信されたかどうかを判断するために、SideBand_MSG_HeaderのEnd_Of_Message ビットを使用する必要がありますが、それ以上の処理を避ける必要があります。 データ は、最大 MaxReplyLength までの応答をバイト単位で保持できるため、ドライバーはオーバーフローパケットを破棄する必要があります。 ドライバーは、ActualReplyLength で応答の実際長さを返す必要があります。

ドライバーは、別の ACK 応答と同じように呼び出し元によってデコードされる、NAK 応答を特にチェックする必要はありません。 NAK 応答の場合、ドライバーはSTATUS_SUCCESS返す必要があります。

MaxReplyLength は少なくとも 48 バイトです。これは、サイドバンド メッセージの最大パケット サイズです。 これにより、1 つのパケット応答に対して生メッセージを直接コピーできます。 複数のパケットを含む応答の場合、MaxReplyLength は、パケット サイズが 16 バイトで、SBM ヘッダー内で最も長い相対アドレスに基づいて計算され、バッファーが不足する可能性が低くなります。

CanUseCachedData フラグは、ドライバーがキャッシュされた応答データを返すことができるが、SBM パケット形式である必要があることを示します。

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 2004
ヘッダー dispmprt.h

関連項目

DXGKARG_DPSBMTRANSMISSION