Пример #1
0
        private static string GetMonitorDisplayName(DisplayConfigPathInfo path)
        {
            var displayConfigTargetDeviceName = new DisplayConfigTargetDeviceName
            {
                header = new DisplayConfigDeviceInfoHeader
                {
                    adapterId = path.targetInfo.adapterId,
                    id        = path.targetInfo.id,
                    size      =
                        Marshal.SizeOf(
                            typeof(DisplayConfigTargetDeviceName)),
                    type = DisplayConfigDeviceInfoType.GetTargetName
                }
            };

            var successStatus = Wrapper.DisplayConfigGetDeviceInfo(ref displayConfigTargetDeviceName);

            if (successStatus != StatusCode.Success)
            {
                throw new Exception($"DisplayConfigGetDeviceInfo() failed. Status: {successStatus}");
            }

            var displayName = displayConfigTargetDeviceName.monitorFriendlyDeviceName;

            return(displayName);
        }
Пример #2
0
        private static DisplayConfigTargetDeviceName[] GetDisplayConfigs()
        {
            var error = NativeMethods.GetDisplayConfigBufferSizes(QueryDeviceConfigFlags.QdcOnlyActivePaths, out var pathInfoElementsCount, out var modeInfoElementsCount);

            if (error != 0)
            {
                throw Log.ErrorAndCreateException <Win32Exception>($"Function {nameof(NativeMethods.GetDisplayConfigBufferSizes)} returns error code '{error}'");
            }

            var displayConfigs = new List <DisplayConfigTargetDeviceName>();

            var displayConfigPathInfos = new DisplayConfigPathInfo[pathInfoElementsCount];
            var displayConfigModeInfos = new DisplayConfigModeInfo[modeInfoElementsCount];

            error = NativeMethods.QueryDisplayConfig(QueryDeviceConfigFlags.QdcOnlyActivePaths, ref pathInfoElementsCount, displayConfigPathInfos, ref modeInfoElementsCount,
                                                     displayConfigModeInfos, IntPtr.Zero);

            if (error != 0)
            {
                throw Log.ErrorAndCreateException <Win32Exception>($"Function {nameof(NativeMethods.QueryDisplayConfig)} returns error code '{error}'");
            }

            foreach (var pathInfo in displayConfigPathInfos)
            {
                var adapterName = new DisplayConfigAdapterName(pathInfo.TargetInfo.AdapterId, DisplayConfig.DeviceInfoType.DisplayConfigDeviceInfoGetAdapterName);

                var targetDeviceName = new DisplayConfigTargetDeviceName()
                {
                    Header = DisplayConfigDeviceInfoHeader.Initialize(pathInfo.TargetInfo.AdapterId,
                                                                      pathInfo.TargetInfo.Id,
                                                                      DisplayConfig.DeviceInfoType.DisplayConfigDeviceInfoGetTargetName,
                                                                      (uint)Marshal.SizeOf <DisplayConfigTargetDeviceName>())
                };

                error = (int)NativeMethods.DisplayConfigGetDeviceInfo(ref targetDeviceName);

                try
                {
                    if (error != 0)
                    {
                        throw Log.ErrorAndCreateException <Win32Exception>($"Function {nameof(NativeMethods.DisplayConfigGetDeviceInfo)} returns error code '{error}'");
                    }

                    displayConfigs.Add(targetDeviceName);
                }
                catch (Win32Exception ex)
                {
                    Log.Error(ex);
                }
            }

            return(displayConfigs.ToArray());
        }
Пример #3
0
        private static StatusCode GetDisplayConfigTargetDeviceName(DisplayConfigModeInfo targetModeInfo, out DisplayConfigTargetDeviceName displayConfigTargetDeviceName)
        {
            displayConfigTargetDeviceName = new DisplayConfigTargetDeviceName
            {
                header = new DisplayConfigDeviceInfoHeader
                {
                    adapterId = targetModeInfo.adapterId,
                    id        = targetModeInfo.id,
                    size      = Marshal.SizeOf(typeof(DisplayConfigTargetDeviceName)),
                    type      = DisplayConfigDeviceInfoType.GetTargetName,
                }
            };

            return(Win32Api.DisplayConfigGetDeviceInfo(ref displayConfigTargetDeviceName));
        }
Пример #4
0
        private static string MonitorFriendlyName(Luid adapterId, uint targetId)
        {
            var deviceName = new DisplayConfigTargetDeviceName {
                Header =
                {
                    Size      = (uint)Marshal.SizeOf(typeof(DisplayConfigTargetDeviceName)),
                    AdapterId = adapterId,
                    Id        = targetId,
                    Type      = DisplayConfigDeviceInfoType.GetTargetName
                }
            };
            var error = DisplayConfigGetDeviceInfo(ref deviceName);

            if (error != ErrorSuccess)
            {
                throw new Win32Exception(error);
            }

            return(deviceName.MonitorFriendlyDeviceName);
        }
 public static extern Win32Status DisplayConfigGetDeviceInfo(ref DisplayConfigTargetDeviceName deviceName);
Пример #6
0
 private static extern int DisplayConfigGetDeviceInfo(ref DisplayConfigTargetDeviceName deviceName);