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 パケット サイズの Data の 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 |
ヘッダー | dispmprt.h |