MSDN里面好像没有找到相应的API
哪位大虾知道的指点一下
谢谢

解决方案 »

  1.   

    ///MSDN里有,可我没有找到VDD_GET_DISPLAY_CONFIG或VDD_GetDisplayInfo 
    Reading the EDID for the Current Monitor 
    Your display driver or mini-VDD can use the EDID structure returned to the VDD at boot time by retrieving this structure from the registry. This can be done once your display driver (or mini-VDD) has called VDD_GET_DISPLAY_CONFIG (or VDD_GetDisplayInfo if your mini-VDD is issuing the call from ring 0). To retrieve the EDID for the current monitor: 
    1. Get and save the diMonitorDevNodeHandle member of the DISPLAYINFO structure. 
    2. Call CONFIGMG_Read_Registry_Value. Make sure that you have CONFIGMG.INC in your include directory. The parameters for the call should be as follows: 
    Parameter 
     Value 
     
    dnDevNode 
     diMonitorDevNodeHandle retrieved from the DISPLAYINFO 
     
    pszSubKey 
     NULL (no subkey needed) 
     
    pszValueName 
     A pointer to the ASCIIz string "EDID" 
     
    ulExpectedType 
     REG_BINARY 
     
    Buffer 
     A pointer to a 128 byte buffer (the EDID plus the null terminator) which will receive the EDID data back 
     
    pulLength 
     Size of Buffer (129 bytes or longer) 
     
    ulFlags 
     CM_REGISTRY_HARDWARE 
    ----------- ---------------------------------------------
    不过你可以从注册表里读
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\Default_Monitor\5&3a7255c5&0&11223344&01&00\Device Parameters
    如果你的系统可得显示器的EDID,就有EDID项,否则有BAD_EDID项If CONFIGMG_Read_Registry_Value returns CR_SUCCESS, the EDID structure for the current monitor will be in your Buffer, available for use by your driver or mini-VDD to determine appropriate timings from it. If the call fails, then there is no EDID structure for the monitor present in the registry. In this case your driver should use an alternate means for setting monitor timings. 
      

  2.   

    REGS r;
        r.ah=0x4f;
        r.al=1;
        int86(0x10,&r,&r);
        p=(void*)FR_MK(_ES,r.x.di);
      

  3.   

    谢谢
    似乎只有显示驱动才能直接读到EDID
    从注册表里读是个好办法