2012-04-21 36 views
1

レジストリには、REG_BINARYキーであるHKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Enum¥DISPLAY¥DEL404C(いくつかの一意のID)¥Device Parameters¥EDIDを持つモニターの数に応じて1つ(またはそれ以上)のキーがあります。私の場合では、これは次のとおりです。EDIDからモニターのモデルを読み取る方法は?

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

+0

ここでの質問は、EDIDを取得する方法だけでなく、基本的にEDIDを解析する方法です。 – duskwuff

+1

あなたは全体の仕様を持っています。 Mfg ID、モデルID、およびテキスト記述のオフセットを含む。他に何か要りますか??? – paulsm4

+0

私はC++でそれを行う方法を知る必要があります – Andrey

答えて

2

はあなたがここに興味を持っていることは記述子バイトで発見されたEDIDのブロック、54-71、72-89、90から107の範囲であります、および108-125。最初の3つのバイトはすべてゼロである(それは、詳細なタイミング記述子ではありません)ので

#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 

あなたはモニター名を含む記述子を識別することができ、そして4つ目のバイトFC:ここにあなたのEDIDにおけるこれら4つのブロックです(タイプを示す)。

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

だから、要するに:5バイト目以降はここにある名前、含まれているオフセット54、72、90でチェックし、シーケンス00 00 00 FCのための108を、一致するものが見つかると、モニター名は次の12バイトになります。