【发布时间】:2014-07-25 20:34:35
【问题描述】:
我接到这样的电话:
while(EnumDisplayDevices(NULL, index, &displayDevice, 0)) {
// do stuff
}
我的理解是,这应该将所有图形设备报告为 displayDevice,但它只报告一个,多次。我有一张 Intel 卡作为我的主要适配器,而 NVidia 卡作为次要适配器——我希望不仅能够获取两张卡的名称和信息,而且还能够确定运行哪个应用程序(即应用程序默认为 Intel 但我可以在 NVidia 控制面板中更改默认值,甚至可以使用 Windows 资源管理器中的上下文菜单)。但是,呼叫总是报告三个设备......并且所有三个都是英特尔。它将 Intel 报告为 \.\DISPLAY1、\.\DISPLAY2 和 \.\DISPLAY3。
我可以通过查看我的代码使用的 DLL 来确认我的代码使用正确的显卡运行。 (确实,我需要连接第二台显示器才能让它完全使用 NVidia 卡 - 否则,无论我选择什么卡,该应用程序都会在 Intel 上启动。无论哪种方式,Intel 卡始终 em> 以 DISPLAY_DEVICE_ACTIVE 的形式返回。
【问题讨论】:
-
您是否尝试过来自 Windows 8.x SDK 或旧版 DirectX SDK 的 DxCapsViewer? EnumDisplayDevices 是一个老式 API,因此使用 DXGI(Windows Vista 或更高版本)或 Direct3D 9(Windows XP)可能会更好。
-
我希望不是这样。但听到它是一个刚刚被允许过时的旧 API,我并不感到惊讶。