首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NvAPI_GPU_GetAllDisplayIds函数未按预期工作

NvAPI_GPU_GetAllDisplayIds函数未按预期工作
EN

Stack Overflow用户
提问于 2018-01-06 22:07:41
回答 1查看 398关注 0票数 0

我正在使用C++中的NVAPI来修改我的程序中的NVIDIA显示设置。

我无法成功使用NvAPI_GPU_GetAllDisplayIds函数。调用它返回的状态为NVAPI_INCOMPATIBLE_STRUCT_VERSION

下面是我的代码:

代码语言:javascript
复制
int main() {
    NvAPI_Status status;

    NvPhysicalGpuHandle nvGPUHandle[64];
    NvU32 gpuCount;
    status = NvAPI_EnumPhysicalGPUs(nvGPUHandle, &gpuCount);
    if (NVAPI_OK != status) {
        cerr << "Failed to run function: NvAPI_EnumPhysicalGPUs\nStatus: " << status << endl;
        return 1;
    }
    if (gpuCount <= 0) {
        cerr << "No GPU's found" << endl;
        return 1;
    }

    for (unsigned i = 0; i < gpuCount; ++i) {
        const NvPhysicalGpuHandle& hPhysicalGpu = nvGPUHandle[i];

        NvU32 displayIdCount = 0;
        status = NvAPI_GPU_GetAllDisplayIds(hPhysicalGpu, nullptr, &displayIdCount);
        if (NVAPI_OK != status) {
            cerr << "Failed to run function: NvAPI_GPU_GetAllDisplayIds\nStatus: " << status << endl;
            return 1;
        }
        if (displayIdCount <= 0) {
            cerr << "No display's found" << endl;
            return 1;
        }

        NV_GPU_DISPLAYIDS* displayIds = static_cast<NV_GPU_DISPLAYIDS*>(malloc(sizeof(NV_GPU_DISPLAYIDS) * displayIdCount));
        status = NvAPI_GPU_GetAllDisplayIds(hPhysicalGpu, displayIds, &displayIdCount);
        if (NVAPI_OK != status) {
            // status is NVAPI_INCOMPATIBLE_STRUCT_VERSION (-9)
            cerr << "Failed to run function: NvAPI_GPU_GetAllDisplayIds\nStatus: " << status << endl;
            return 1;
        }
    }

    return 0;
}

我是不是不正确地使用了malloc?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-08 20:53:04

这并没有直接记录在该函数的NVAPI文档页面中,但是在将其传递给NvAPI_GPU_GetAllDisplayIds之前,您需要在您的恶意锁定的displayIds结构上设置版本。在调用之前添加下面这一行:

代码语言:javascript
复制
displayIds->version = NV_GPU_DISPLAYIDS_VER;

对于其他函数调用,这似乎在整个NVAPI中都是相当标准的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48128154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档