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 は "atomic" であるため、ドライバーは SBM 要求の応答を待機し、返す前に受信する必要があります。 pArgs-Data> の SBM 要求は呼び出し元によって完全にパケット化されるため、ドライバーは SBM パケット サイズのデータの RequestLength を、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 |
Header | dispmprt.h |