2

レジストリには、持っているモニターの数に応じて、1 つ (または複数) のキーがあります。私の場合、これは次のとおりです。

00 ff ff ff ff ff ff 00 4c 2d 6f 03 39 31 59 4d 
07 12 01 03 0e 29 1a 78 2a 80 c5 a6 57 49 9b 23 
12 50 54 bf ef 80 95 00 95 0f 81 80 81 40 71 4f 
01 01 01 01 01 01 9a 29 a0 d0 51 84 22 30 50 98 
36 00 ac ff 10 00 00 1c 00 00 00 fd 00 38 4b 1e 
51 0e 00 0a 20 20 20 20 20 20 00 00 00 fc 00 53 
79 6e 63 4d 61 73 74 65 72 0a 20 20 00 00 00 ff 
00 48 56 44 51 32 30 36 37 37 37 0a 20 20 00 ef 

私の質問は、C または C++ を使用してすべての情報ではなく、モニターのモデル (「SyncMaster」など) のみを読み取るにはどうすればよいですか?

EDID の形式については、http: //en.wikipedia.org/wiki/Extended_display_identification_dataで説明しています。

4

1 に答える 1

4

ここで注目しているのは、54 ~ 71、72 ~ 89、90 ~ 107、および 108 ~ 125 のバイト範囲にある EDID の記述子ブロックです。EDID の 4 つのブロックは次のとおりです。

#1: 9a29 a0d0 5184 2230 5098 3600 acff 1000 00
#2: 0000 00fd 0038 4b1e 510e 000a 2020 2020 20
#3: 0000 00fc 0053 796e 634d 6173 7465 720a 20
#4: 0000 00ff 0048 5644 5132 3036 3737 370a 00

最初の 3 バイトがすべてゼロ (詳細なタイミング記述子ではない) であり、4 番目の 1 バイトFC(タイプを示す) であるため、モニター名を含む記述子を識別できます。5 番目のバイト以降には名前が含まれています。名前は次のとおりです。

5379 6e63 4d61 7374 6572 0a20    SyncMaster..

要するに、オフセット 54、72、90、および 108 でシーケンスを確認し00 00 00 FCます。一致が見つかった場合、モニター名は次の 12 バイトです。

于 2012-04-21T02:58:02.097 に答える