HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2023/01/06

Windowsで HDMIの EDID情報をダンプする方法 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機能付きで最強
【激安】EDID保持機能付き 4K対応 6入力 2出力 マトリックス切り替え HDMIセレクター、PIP機能付きで最強

  AGPteK HDMI True Matrix マトリックス切り替えで液晶画面 2台に接続でき更に EDID保持と POP機能付き HDMI切り換え機

【取扱注意】Windowsや Raspberry Pi等の HDMI端子に差した状態で EDID情報を書き込む方法
【取扱注意】Windowsや Raspberry Pi等の HDMI端子に差した状態で EDID情報を書き込む方法

  How to Update HDMI Monitor EDID info via Windows or Raspberry Pi HDMI connector

HDMIの仮想ディスプレイアダプタを改造して自分好みの解像度の EDIDエミュレータを作成する方法
HDMIの仮想ディスプレイアダプタを改造して自分好みの解像度の EDIDエミュレータを作成する方法

  HDMIダミーアダプタ内の I2Cメモリの EDID情報を書き換えて好きな解像度に改造する方法

HDMIディスプレイが接続されていると騙す HDMIアダプタを購入、EDID保持で画面解像度も固定で認識、NVIDIAのマイニング制限を解除
HDMIディスプレイが接続されていると騙す HDMIアダプタを購入、EDID保持で画面解像度も固定で認識、NVIDIAのマイニング制限を解除

  HDMI切り換え器で画面を切り替えると解像度の認識が変になるので EDID保持機能のダミーの HDMIアダプタを購入

NVIDIAのマイニング制限を EDID保持機能のダミーの HDMIアダプタで解除
NVIDIAのマイニング制限を EDID保持機能のダミーの HDMIアダプタで解除

  HDMIディスプレイが接続されていると騙す HDMIアダプタで NVIDIAのマイニング制限を解除

LEICKE KanaaN 1入力 2出力の HDMIスプリッターを買ってみた、HDMI映像分配器
LEICKE KanaaN 1入力 2出力の HDMIスプリッターを買ってみた、HDMI映像分配器

  HDCP有りのゲーム機等の映像を HDCP非対応モニタに映す方法

4K対応の 3入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利
4K対応の 3入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利

  HDMI 1.4b仕様 4K入力対応の 3入力 1出力 HDMI切り換え機 AZHW381 Aoeyoo AY05V14

4K対応の 5入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利
4K対応の 5入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利

  HDMI 1.4b仕様 4K入力対応の 5入力 1出力 HDMI切り換え機 Aoeyoo AYS-51V14

PIP機能付きの 4K対応の 4入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利
PIP機能付きの 4K対応の 4入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利

  ピクチャ イン ピクチャ機能付き 4K入力対応の 4入力 1出力 HDMI切り換え機 Kasos AYS-41V14PIP

PIP機能付きの 4K対応の 4入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利
PIP機能付きの 4K対応の 4入力 1出力の HDMIセレクターを買ってみた、HDMI機器が複数有る場合に便利

  ピクチャ イン ピクチャ機能付き 4K入力対応の 4入力 1出力 HDMI切り換え機 HDSFX0401P

マトリックス切り替えと PIP機能付きの 4K対応の 6入力 2出力の HDMIセレクター、液晶画面 2台と使用で最強
マトリックス切り替えと PIP機能付きの 4K対応の 6入力 2出力の HDMIセレクター、液晶画面 2台と使用で最強

  マトリックス切り替えで液晶画面 2台に接続できて更にピクチャ イン ピクチャ機能付き HDMI切り換え機

EDID保持機能付きの 4K対応の 4入力 2出力の マトリックス切り替え HDMIセレクター、液晶画面 2台と使用で最強
EDID保持機能付きの 4K対応の 4入力 2出力の マトリックス切り替え HDMIセレクター、液晶画面 2台と使用で最強

  TESmart HMA0402A30 マトリックス切り替えで液晶画面 2台に接続できて更に EDID保持の便利機能付き HDMI切り換え機

USBタイプのパソコンが増えてきたので USB切り替え機 KVMスイッチを購入
USBタイプのパソコンが増えてきたので USB切り替え機 KVMスイッチを購入

  USB切り替えタイプのパソコン切り替え機、KVM-21UA、KVM-401UK

4ポートの USB切り替え機 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/