使用NVAPI时,我遇到了 NvAPI_DISP_GetDisplayConfig 问题。我在第二次调用 NvAPI_DISP_GetDisplayConfig 时收到 AppCrash。似乎无法弄清楚为什么。
NvU32 count = 0;
status = NvAPI_DISP_GetDisplayConfig(&count, NULL);
if (status != NVAPI_OK)
PrintError(status);
printf("Configs: %i\n", count);
NV_DISPLAYCONFIG_PATH_INFO *configinfos = new NV_DISPLAYCONFIG_PATH_INFO[count];
configinfos[0].version = NV_DISPLAYCONFIG_PATH_INFO_VER;
status = NvAPI_DISP_GetDisplayConfig(&count, configinfos);
if (status != NVAPI_OK)
PrintError(status);
在我的系统上,第一次通话后 count = 2。NvAPI_DISP_GetDisplayConfig 上的注释说:
NVAPI_INTERFACE NvAPI_DISP_GetDisplayConfig(
__inout NvU32 * pathInfoCount,
__out_ecount_full_opt *pathInfoCount NV_DISPLAYCONFIG_PATH_INFO * pathInfo
)描述:此 API 允许调用者检索当前的全局显示
配置。
用法:调用者可能必须调用此函数 3 次以获取所有必需的
配置详细信息,如下所示:
第一遍:调用者应调用 NvAPI_DISP_GetDisplayConfig() 并将 pathInfo 设置
为 NULL 以获取 pathInfoCount。 第二遍:根据要获取的 pathInfoCount(from First Pass)
的数量为 pathInfo 分配内存//!
//! 目标信息计数。如果
需要 sourceModeInfo 分配内存,或者可以将其初始化为 NULL。
第三遍(可选,仅在需要目标信息时才需要):
根据数量为 targetInfo 分配内存
targetInfoCount(来自第二遍)。支持的操作系统:Windows Vista 及更高版本
谢谢。
编辑:我也尝试将 configinfos[0].sourceModeInfo = NULL 设置为无济于事。我还尝试遍历数组以将所有 .version 和 .sourceModeInfo 设置为无济于事(文档中的一个示例我只看到数组中第一项的设置版本)