Определение наиболее релевантного/первичного/основного графического процессора ПКC#

Место общения программистов C#
Ответить
Anonymous
 Определение наиболее релевантного/первичного/основного графического процессора ПК

Сообщение Anonymous »

Я использую C#, .net 9.0, против 2022 и систему пакетов Nuget.management .
В основном при чтении и обработке информации оборудования, конечно, можно наткнуться на ПК с несколькими графическими процессорами. Через немного спины и четвертого с лидером проекта мне сказали, что я должен сохранить информацию только для одного графического процессора, поэтому, следовательно, наиболее актуально.public class WinVideoControllerInfo
{
#region Properties

public string Name { get; set; }
public uint AdapterRAM { get; set; }
public string AdapterDACType { get; set; }
public string VideoProcessor { get; set; }

#endregion

public WinVideoControllerInfo()
{
}

// this is for interface purposes don't mind it
public WinVideoControllerInfo Construct(ManagementBaseObject obj)
{
return new WinVideoControllerInfo(obj);
}

// I am aware of the problems with AdapterRAM I got a solution for that
public WinVideoControllerInfo(ManagementBaseObject obj)
{
// this basically just gets the Property Value of a MBO Property with "the same name"
Name = obj.GetPropVal(nameof(Name));
AdapterRAM = obj.GetPropVal(nameof(AdapterRAM));
AdapterDACType = obj.GetPropVal(nameof(AdapterDACType));
VideoProcessor = obj.GetPropVal(nameof(VideoProcessor));
}
}
< /code>
Важный код: < /p>
public static void RetrieveGPUInfo()
{
// Get GPUs (this will have a check if the List is empty)
List winInfos = ReadWinGPUS();

// Filter for the relevant GPU
WinVideoControllerInfo relevantGPU = FilterForRelevantGPU(winInfos);

// Process the data but I got that bit covered and it's not relevant for the question I think
// If you guys want this bit here feel free to tell me
// ...
}

public static List ReadWinGPUS()
{
List winInfos = new();

try
{
// all this does is give me the ManagementObjectCollection for Win32_VideoController
ManagementObjectCollection rawGraphicsInformation = GetSearcherResults(SearchAreas.Graphic);

// Iterate over the active GPUs (this automatically does not include any disabled GPUs)
foreach (ManagementBaseObject baseObject in rawGraphicsInformation)
{
WinVideoControllerInfo winInfo = new WinVideoControllerInfo(baseObject);
winInfos.Add(winInfo);
}
}
catch (Exception e)
{
// todo
}

// return all found GPUs
return winInfos;
}

public static WinVideoControllerInfo FilterForRelevantGPU(List winInfos)
{
WinVideoControllerInfo? relevantGPU = null;

WinVideoControllerInfo[] internalGPUs = winInfos.Where(w => w.AdapterDACType.Contains("Internal")).ToArray();
WinVideoControllerInfo[] nonInternalGPUs = winInfos.Except(internalGPUs).ToArray();

// this filter is very preliminary still
if (nonInternalGPUs.Any())
{
relevantGPU = nonInternalGPUs[0];
}
else
{
relevantGPU = internalGPUs[0];
}

return relevantGPU;
}
< /code>
Теперь, чтобы добраться до мяса вопроса: я начинаю сомневаться в том, разумно ли мои «основные» критерии «не быть внутренним DAC». Документация шаткая, но до сих пор я взял на себя, чтобы понять, что внутренний является показателем того, что это не выделенный графический процессор, а скорее графический процессор, встроенный в процессор. Но я могу ошибаться здесь. Я в основном хочу знать, правильно ли мое мышление, и если не то, что есть лучше, чтобы фильтровать для выделенного графического процессора, если он существует. И если существует несколько, как я мог бы определить его актуальность. Я хотел бы, чтобы я мог, но сейчас я не получаю его. Я знаю, что это довольно расплывчатая задача, но я немного разбивал свой мозг по этому поводу. В то время как моя текущая попытка OFC игнорирует, что может быть несколько выделенных графических процессоров. /> Dactype «внутренний» на самом деле означает то, что я предполагал, это означает? /> < /li>
< /ul>

Подробнее здесь: https://stackoverflow.com/questions/797 ... pu-of-a-pc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»