Available screen resolutions in Windows 10 IoT Core and 4K

Alxndr 1 Reputation point
2021-04-12T08:26:59.937+00:00

To properly display the download process of the Window 10 IoT Core operating system on Raspberry Pi, you must be known to be acceptable for frame rate and screen resolution of monitor. They come from somewhere and most likely when you get an EDID of connected monitor. From different types of platforms in Windows 10 IoT Core can be used as a Remote Machine and installed UWP applications in Visual Studio 2019.

Most commonly used for a single monitor

DisplayInformation displayInfo = DisplayInformation.GetForCurrentView();

As a result, it is possible to obtain such an introduction

CurrentOrientation Landscape Windows.Graphics.Display.DisplayOrientations
DiagonalSizeInInches null double?
LogicalDpi 96 float
NativeOrientation Landscape Windows.Graphics.Display.DisplayOrientations
RawDpiX 0 float
RawDpiY 0 float
RawPixelsPerViewPixel 1 double
ResolutionScale Scale100Percent Windows.Graphics.Display.ResolutionScale
ScreenHeightInRawPixels 768 uint
ScreenWidthInRawPixels 1360 uint
StereoEnabled false bool
Static members
AutoRotationPreferences None Windows.Graphics.Display.DisplayOrientations..

ScreenWidthInRawPixels, ScreenHeightInRawPixels are most likely used for established video mode. In more detail about the monitor in the Raspberry Pi 3 and Windows 10 IoT Core monitor is presented as "Generic Non-PnP Monitor", and EDID is not read on I2C. Magic MSMonitorClass is outside of UWP application platform of Windows 10 IoT Core.

MSMonitorClass is very useful for desktops ( Win32, C#, C++ )

https://learn.microsoft.com/en-us/windows/win32/wmicoreprov/wmigetmonitorraweedidv1block-wmimonitordescriptormethods

Examples
The following code example retrieves the EDID blocks of any display as raw 128 bit arrays.

CSharp

Copy
static void Main(string[] args)
{
ManagementClass mc = new ManagementClass(string.Format(@"\{0}\root\wmi:WmiMonitorDescriptorMethods", Environment.MachineName));

foreach (ManagementObject mo in mc.GetInstances()) //Do this for each connected monitor  
{                
    for (int i = 0; i < 256; i++)  
    {  
        ManagementBaseObject inParams = mo.GetMethodParameters("WmiGetMonitorRawEEdidV1Block");  
        inParams["BlockId"] = i;   

        ManagementBaseObject outParams = null;  
        try  
        {  
            outParams = mo.InvokeMethod("WmiGetMonitorRawEEdidV1Block", inParams, null);  
            Console.Out.WriteLine("Returned a block of type {0}, having a content of type {1} ",  
                              outParams["BlockType"], outParams["BlockContent"].GetType());  
        }  
        catch { break; } //No more EDID blocks  
    }  
}  

}

Another way to get monitor and multiple monitor info in Windows 10 and in Windows 10 IoT Core

String monitorSelector = DisplayMonitor.GetDeviceSelector();  

IAsyncOperation < DeviceInformationCollection> deviceSelection;  

deviceSelection = DeviceInformation.FindAllAsync(monitorSelector);  

AsyncStatus stat = deviceSelection.Status;  

// Canceled, Error
if ( stat == AsyncStatus.Completed )
{
}
else
if ( stat == AsyncStatus.Started )
{
while ( (stat = deviceSelection.Status) != AsyncStatus.Completed )
{
}
}

DeviceInformationCollection deviceCollection = deviceSelection.GetResults();  

foreach ( DeviceInformation device in deviceCollection )  
{  
    String id = device.Id;  

    IAsyncOperation<Windows.Devices.Display.DisplayMonitor> display;  

    display = DisplayMonitor.FromInterfaceIdAsync(id);  

    /*AsyncStatus*/ stat = display.Status;  

// Canceled, Error
if ( stat == AsyncStatus.Completed)
{
}
else
if ( stat == AsyncStatus.Started )
{
while ((stat = display.Status) != AsyncStatus.Completed)
{
}
}

    DisplayMonitor monitor = display.GetResults();  

    float x = monitor.RawDpiX;  
    float y = monitor.RawDpiY;  
}  

Properties from monitor EDID - "DisplayName", "PhysicalSizeInInches", "RawDpiX", "RawDpiY" are not real in Windows 10 IoT Core and
Raspberry Pi 3B but screen properties "NativeResolutionInRawPixels", "Height", "Width" are here correct

  • monitor {Windows.Devices.Display.DisplayMonitor} Windows.Devices.Display.DisplayMonitor
  • BluePrimary {0,0005;0,0005} Windows.Foundation.Point
    ConnectionKind Wired Windows.Devices.Display.DisplayMonitorConnectionKind
    DeviceId "\\?\DISPLAY#Default_Monitor#1&8713bca&0&UID0#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}" string
    DisplayAdapterDeviceId "\\?\ROOT#BasicDisplay#0000#{5b45201d-f2f2-4f3b-85bb-30ff1f953599}" string
  • DisplayAdapterId {Windows.Graphics.DisplayAdapterId} Windows.Graphics.DisplayAdapterId
    HighPart 0 int
    LowPart 16506 uint
    DisplayAdapterTargetId 0 uint
    DisplayName "" string
  • GreenPrimary {0,0005;0,0005} Windows.Foundation.Point
  • IsDolbyVisionSupportedInHdrMode 'monitor.IsDolbyVisionSupportedInHdrMode' threw an exception of type 'System.InvalidCastException' bool {System.InvalidCastException}
    MaxAverageFullFrameLuminanceInNits 0 float
    MaxLuminanceInNits 0 float
    MinLuminanceInNits 0 float
  • NativeResolutionInRawPixels {Windows.Graphics.SizeInt32} Windows.Graphics.SizeInt32
    Height 1024 int
    Width 1280 int
    PhysicalConnector Unknown Windows.Devices.Display.DisplayMonitorPhysicalConnectorKind
    PhysicalSizeInInches null Windows.Foundation.Size?
    RawDpiX 0 float
    RawDpiY 0 float
  • RedPrimary {0,0005;0,0005} Windows.Foundation.Point
    UsageKind Standard Windows.Devices.Display.DisplayMonitorUsageKind
  • WhitePoint {0,0005;0,0005} Windows.Foundation.Point
    Native View To inspect the native object, enable native code debugging.

With same microcomputer and monitor Raspberry Pi OS command "tvservice" gives data from monitor EDID and dumps full EDID.

Windows 10 IoT Core for Intel SoC's ( MinnowBoard/MAX (x64)) gives correct results as in desktops.

Also "Windows Device Portal"

"Devices" "Device Manager"

ARM - "Generic Non-PnP Monitor"

>Microsoft Basic Display Driver  
(ID:ROOT\BASICDISPLAY\0000, Class:System, Manufacturer:(Standard display types), StatusCode:1098907659)  
    >Generic Non-PnP Monitor  
    (ID:DISPLAY\DEFAULT_MONITOR\1&8713BCA&0&UID0, Class:Monitor, Manufacturer:(Standard monitor types), StatusCode:25190410)  

x64 - "Generic PnP Monitor"

 >Microsoft Basic Display Adapter  
 (ID:PCI\VEN_8086&DEV_5A84&SUBSYS_72708086&REV_0B\3&11583659&0&10, Class:Display, Manufacturer:(Standard display types), StatusCode:25174026)  
    >Generic PnP Monitor  
    (ID:DISPLAY\NCP0000\4&21AF0E9D&0&UID0, Class:Monitor, Manufacturer:(Standard monitor types), StatusCode:25174026)  

Relative 4K

https://raspberrypi.stackexchange.com/questions/44089/can-raspberry-pi-3-do-4k-video

https://www.raspberrypi.org/forums/viewtopic.php?f=38&t=79330

.NET Internet of things
.NET Internet of things
.NET: Microsoft Technologies based on the .NET software framework.Internet of things: A concept that aims to extend the benefits of the regular internet, including constant connectivity, remote control ability, and data sharing, to goods in the physical world.
27 questions
0 comments No comments
{count} votes