・2023/01/06
Windowsで HDMIの EDID情報をダンプする方法
(How to Dump EDID info direct from Monitor)
Tags: [パソコン周辺機器], [通信販売]
● Windowsで HDMIの EDID情報をダンプする方法
Reading Monitor Physical Dimensions, or: Getting the EDID, the Right Way
のソースコードの改行が崩れているので修正しました。
(元の 29行目)
Visual Studio 2017でビルドして Windows 10 64bitで実行できる事を確認済み。
#include <iostream>
#include <iomanip>
#include <atlstr.h>
#include <SetupApi.h>
#pragma comment(lib, "setupapi.lib")
#define NAME_SIZE 128
const GUID GUID_CLASS_MONITOR = { 0x4d36e96e, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 };
bool GetMonitorSizeFromEDID(const HKEY hDevRegKey, short& WidthMm, short& HeightMm)
{
DWORD dwType, AcutalValueNameLength = NAME_SIZE;
TCHAR valueName[NAME_SIZE];
BYTE EDIDdata[1024];
DWORD edidsize = sizeof(EDIDdata);
for (LONG i = 0, retValue = ERROR_SUCCESS; retValue != ERROR_NO_MORE_ITEMS; ++i)
{
retValue = RegEnumValue(hDevRegKey, i, &valueName[0],
&AcutalValueNameLength, NULL, &dwType,
EDIDdata, // buffer
&edidsize); // buffer size
if (retValue != ERROR_SUCCESS || 0 != _tcscmp(valueName, _T("EDID")))
continue;
for (int i = 0; i < edidsize; ++i)
{
if (i % 16 == 0) std::cout << "\n";
BYTE dat = EDIDdata[i];
std::cout << std::setw(2) << std::setfill('0') << std::hex << (int)dat;
std::cout << " ";
}
std::cout << "\n";
WidthMm = ((EDIDdata[68] & 0xF0) << 4) + EDIDdata[66];
HeightMm = ((EDIDdata[68] & 0x0F) << 8) + EDIDdata[67];
return true; // valid EDID found
}
return false; // EDID not found
}
bool GetSizeForDevID(const CString& TargetDevID, short& WidthMm, short& HeightMm)
{
HDEVINFO devInfo = SetupDiGetClassDevsEx(
&GUID_CLASS_MONITOR, //class GUID
NULL, //enumerator
NULL, //HWND
DIGCF_PRESENT, // Flags //DIGCF_ALLCLASSES|
NULL, // device info, create a new one.
NULL, // machine name, local machine
NULL);// reserved
if (NULL == devInfo) return false;
bool bRes = false;
for (ULONG i=0; ERROR_NO_MORE_ITEMS != GetLastError(); ++i)
{
SP_DEVINFO_DATA devInfoData;
memset(&devInfoData,0,sizeof(devInfoData));
devInfoData.cbSize = sizeof(devInfoData);
if (SetupDiEnumDeviceInfo(devInfo,i,&devInfoData))
{
HKEY hDevRegKey = SetupDiOpenDevRegKey(devInfo,&devInfoData,
DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ);
if(!hDevRegKey || (hDevRegKey == INVALID_HANDLE_VALUE))
continue;
bRes = GetMonitorSizeFromEDID(hDevRegKey, WidthMm, HeightMm);
RegCloseKey(hDevRegKey);
}
}
SetupDiDestroyDeviceInfoList(devInfo);
return bRes;
}
int _tmain()
{
short WidthMm, HeightMm;
DISPLAY_DEVICE dd;
dd.cb = sizeof(dd);
DWORD dev = 0; // device index
int id = 1; // monitor number, as used by Display Properties > Settings
CString DeviceID;
bool bFoundDevice = false;
while (EnumDisplayDevices(0, dev, &dd, 0) && !bFoundDevice)
{
DISPLAY_DEVICE ddMon;
ZeroMemory(&ddMon, sizeof(ddMon));
ddMon.cb = sizeof(ddMon);
DWORD devMon = 0;
while (EnumDisplayDevices(dd.DeviceName, devMon, &ddMon, 0) && !bFoundDevice)
{
if (ddMon.StateFlags & DISPLAY_DEVICE_ACTIVE &&
!(ddMon.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER))
{
DeviceID.Format(L"%s", ddMon.DeviceID);
DeviceID = DeviceID.Mid(8, DeviceID.Find(L"\\", 9) - 8);
bFoundDevice = GetSizeForDevID(DeviceID, WidthMm, HeightMm);
std::cout << DeviceID;
std::cout << "\n";
std::cout << WidthMm;
std::cout << "\n";
std::cout << HeightMm;
std::cout << "\n";
}
devMon++;
ZeroMemory(&ddMon, sizeof(ddMon));
ddMon.cb = sizeof(ddMon);
}
ZeroMemory(&dd, sizeof(dd));
dd.cb = sizeof(dd);
dev++;
}
return 0;
}
●これも Visual Studio 2017でビルドして Windows 10 64bitで実行できる事を確認済み
A little program to dump display EDIDs in hex. Gets extension blocks. edid_dump.cs
System.Managementを「参照」に追加する。
●レジストリから取得
ビルドはできたが動かなかった。
how to read monitor's EDID information?
● MonitorInfoView
Export EDID To Binary Fileで可能。
MonitorInfoView v1.22 - View Monitor Information (EDID)
● DumpEDID
DumpEDID v1.07
DumpEDID v1.07
Copyright (c) 2006 - 2018 Nir Sofer
Web site: http://www.nirsoft.net
*****************************************************************
Active : Yes
Registry Key : DISPLAY\xxxx\4&xxxx&0&xxxx
Monitor Name : xxxx
Manufacture Week : 32 / 2008
ManufacturerID : xxxxx (0xxxxx)
ProductID : xxxxx (0xxxxx)
Serial Number (Numeric) : 1 (0x00000001)
EDID Version : 1.3
Display Gamma : 2.20
Vertical Frequency : 23 - 120 Hz
Horizontal Frequency : 15 - 126 KHz
Image Size : 70.8 X 39.8 cm (32.0 Inch)
Maximum Image Size : 82 X 46 cm (37.0 Inch)
Maximum Resolution : 1920 X 1080
Support Standby Mode : No
Support Suspend Mode : No
Support Low-Power Mode : No
Support Default GTF : No
Digital : Yes
Supported Display Modes :
640 X 480 60 Hz
800 X 600 60 Hz
1024 X 768 60 Hz
1280 X 1024 75 Hz
1920 X 1080 60 Hz
*****************************************************************
●その他の EDIDツール
Monitor Asset Manager 2.9
Monitor Asset Manager
Version: 2.9
Released: 28 June 2017
File size: 715 Kb
Using Monitor Asset Manager Version 2.6 to Read Extended Display Identification Data (EDID) Information
● Windowsの .infファイルで EDID情報を上書きする方法
Manufacturer override of monitor EDIDs
Overriding an EDID with an INF
● NVIDIAのツール
NVIDIA How do I capture the EDID of my display?
Tags: [パソコン周辺機器], [通信販売]
●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)
【激安】EDID保持機能付き 4K対応 6入力 2出力 マトリックス切り替え HDMIセレクター、PIP機能付きで最強
AGPteK HDMI True Matrix マトリックス切り替えで液晶画面 2台に接続でき更に EDID保持と POP機能付き HDMI切り換え機
【取扱注意】Windowsや Raspberry Pi等の HDMI端子に差した状態で EDID情報を書き込む方法
How to Update HDMI Monitor EDID info via Windows or Raspberry Pi HDMI connector
HDMIの仮想ディスプレイアダプタを改造して自分好みの解像度の EDIDエミュレータを作成する方法
HDMIダミーアダプタ内の I2Cメモリの EDID情報を書き換えて好きな解像度に改造する方法
HDMIディスプレイが接続されていると騙す HDMIアダプタを購入、EDID保持で画面解像度も固定で認識、NVIDIAのマイニング制限を解除
HDMI切り換え器で画面を切り替えると解像度の認識が変になるので EDID保持機能のダミーの HDMIアダプタを購入
NVIDIAのマイニング制限を EDID保持機能のダミーの HDMIアダプタで解除
HDMIディスプレイが接続されていると騙す HDMIアダプタで NVIDIAのマイニング制限を解除
LEICKE KanaaN 1入力 2出力の HDMIスプリッターを買ってみた、HDMI映像分配器
HDCP有りのゲーム機等の映像を HDCP非対応モニタに映す方法
4K対応の 3入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利
HDMI 1.4b仕様 4K入力対応の 3入力 1出力 HDMI切り換え機 AZHW381 Aoeyoo AY05V14
4K対応の 5入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利
HDMI 1.4b仕様 4K入力対応の 5入力 1出力 HDMI切り換え機 Aoeyoo AYS-51V14
PIP機能付きの 4K対応の 4入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利
ピクチャ イン ピクチャ機能付き 4K入力対応の 4入力 1出力 HDMI切り換え機 Kasos AYS-41V14PIP
PIP機能付きの 4K対応の 4入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利
ピクチャ イン ピクチャ機能付き 4K入力対応の 4入力 1出力 HDMI切り換え機 HDSFX0401P
マトリックス切り替えと PIP機能付きの 4K対応の 6入力 2出力の HDMIセレクター、液晶画面 2台と使用で最強
マトリックス切り替えで液晶画面 2台に接続できて更にピクチャ イン ピクチャ機能付き HDMI切り換え機
EDID保持機能付きの 4K対応の 4入力 2出力の マトリックス切り替え HDMIセレクター、液晶画面 2台と使用で最強
TESmart HMA0402A30 マトリックス切り替えで液晶画面 2台に接続できて更に EDID保持の便利機能付き HDMI切り換え機
USBタイプのパソコンが増えてきたので USB切り替え機 KVMスイッチを購入
USB切り替えタイプのパソコン切り替え機、KVM-21UA、KVM-401UK
4ポートの USB切り替え機 KVM-401UKの切り換えスイッチを延長する改造をしてみた
USB切り替え機が遠い所に在り、切り替えスイッチを押すのが大変なので切り換えスイッチを延長した
[HOME]
|
[BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c)
2023 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/hardware/windows_dump_hdmi_edid_info/