Windows驱动程序使用哪种编程接口来切换活动显示

我有一个VGA端口和HDMI端口的笔记本电脑。 所以我可以在三个显示器之间切换, 2同时显示激活。

我试图find一种使用Windows API或.NET框架以编程方式切换活动显示的方法。 但是这似乎是不可能的。 根据WWW中的其他论坛post,这只能通过使用属于graphics卡的库(例如“AMD显示库”(ADL)或用于nVidia设备的NVAPI)来实现。

但是我不知道Windows能够如何在系统设置中提供切换显示器的设置,虽然没有编程接口。 Windows是否也使用ADL / NVAPI?

编辑

正如Deanna在评论中指出的那样,可能没有用于切换活动显示的文档化API。 显示驱动程序开发人员如何能够知道如何开发驱动程序? 不公开这些东西的原因是什么?

您应该可以使用EnumDisplayDevicesChangeDisplaySettingsEx传递CDS_SET_PRIMARY来选择要使用的显示器。 这是否提供了我不知道的最好的界面。 否则,您需要深入了解这里列出的多个监视器上的WDDM文档,以及由D3D公开的IViewHelper COM文档或用户模式显示配置API 。

但是我不知道Windows能够如何在系统设置中提供切换显示器的设置,虽然没有编程接口

需要注意的是,在Windows下,显示驱动程序需要暴露某些功能,为Windows内核实现一个低级别的API,使内核可以轻松完成这些任务。

显示驱动程序开发人员如何能够知道如何开发驱动程序? 不公开这些东西的原因是什么?

他们将有专门的DDK可用*(这里[ XDDM | WDDM ]是写在显示驱动程序的MSDN文档)。 在监视器输出端容易交换的API可能不是公开的,因为很少有人会需要它,所以他们宁愿把时间和金钱花费在通常使用的部分中的固定的错误上。

*我认为,虽然公众DDK有3dlabs的一些古老的样本来实现显示驱动,而且在线文档非常全面,但是编写一个完整的显示驱动是一个主要任务,很可能需要MS的直接支持,这可能需要您成为MS ISV或硬件合作伙伴。