Я в настоящее время анализирую AMD ADL SDK и нашел очень интересную функцию
int FindTController(const int iAdapter)
{
for (int i = 0; ; i++)
{
ADLThermalControllerInfo tcinfo;
tcinfo.iSize = sizeof(tcinfo);
if (ADL_OK == ADL_Overdrive5_ThermalDevices_Enum(iAdapter, i, &tcinfo))
{
if (tcinfo.iThermalDomain) // if GPU domain
return i;
//tcinfo.iDomainIndex;
//tcinfo.iFlags;
}
}
return 0;
}
Я понимаю, что эта функция ищет адаптивное тепловое устройство AMD GPU, но зачем она нужна в таких функциях?
void SetDefaultFanSpeed(const int iAdapter, const int iTController)
{
if (ADL_OK != ADL_Overdrive5_FanSpeedToDefault_Set(iAdapter, iTController))
{
fprintf(stderr, "Error: cannot set Fan Speed to default.\n");
}
}
int ADL_Overdrive5_FanSpeedToDefault_Set(int iAdapterIndex, int iThermalControllerIndex)
{
return Error = ((int (*)(int,int)) (mProcAddress[E_ADL_Overdrive5_FanSpeedToDefault_Set]))
(iAdapterIndex, iThermalControllerIndex);
}
Почти все функции ADD ADL используют эту функцию FindTController, это действительно важно или просто змеиное масло?
Не зная внутренности оборудования, трудно сказать. Но что заставляет вас думать, что это будет змеиное масло?
Скорость вентилятора не изменяется при вызове SetDefaultFanSpeed? Интерфейс кажется вполне разумным. Вы должны указать, для какой карты GFX и для какого вентилятора установить скорость. Без аргумента iTController, как бы вы по-другому установили скорость для двух вентиляторов на карте?
Других решений пока нет …