Как я могу вызвать методы управления ACPI из С++ или С# в Windows?

Я устал ждать, пока HP установит переключаемый графический драйвер для моего ноутбука, но я думаю, что сам могу переключить GPU, вызвав методы ACPI. Переключение работает с использованием vga_switcheroo в Linux, который является открытым исходным кодом, поэтому я знаю, какие методы мне нужно вызывать, но не как их называть.

Два метода, которые мне нужно вызвать, находятся в пространстве имен SSDT, если это имеет значение, и мне также нужно передать целые аргументы.

Ответ 1

Некоторые ссылки на подобные проблемы (Например) говорят, что это возможно только из драйвера режима ядра под Windows. Для этого я могу думать только о следующих вариантах:

  • Написание всего видеодрайвера самостоятельно - я сомневаюсь, что вы пойдете способ...

  • Поиск документации или реверсивного существующего видеодрайвера для вашего GPU и выдачи необходимых команд через IOCTLs, используя function DeviceIoControl (MSDN). Также не очень надежны - существующий драйвер может не содержать необходимых функций /IOCTL - но я думаю, это будет намного проще, чем первый вариант.