如何在Nvidia GPU上调用此方法:
NVAPI_INTERFACE NvAPI_GPU_SetEDID (
NvPhysicalGpuHandle hPhysicalGpu,
NvU32 displayOutputId,
NV_EDID * pEDID
)
我需要执行上面的命令来删除新Quadro图形卡上所有DisplayOutput上设置的所有EDID。基于API文档,我尝试搜索 NvPhysicalGpuHandle 并遇到了这个项目/库:
https://github.com/openhardwaremonitor/openhardwaremonitor/blob/master/Hardware/Nvidia/NVAPI.cs
这没有我需要的方法NvAPI_GPU_SetEDID
我不是硬件程序员,我只需要能够调用这一个命令。有任何想法吗?是否可以使用nvapi.dll/nvapi64.dll
通过pinvoke
或其他方式实现这一目标?
答案 0 :(得分:1)
我个人没有对此进行测试,但您可以尝试使用该库,看看它是否可以毫无问题地设置EDID信息,如果失败,请打开一个问题。
https://github.com/falahati/NvAPIWrapper
这是你应该怎么做的,
DisplayDevice
或GPUOutput
。有多种方法可以做到这一点。
PhysicalGPU
静态方法获取系统中所有NvAPIWrapper.GPU.PhysicalGPU.GetPhysicalGPUs()
的列表,然后根据您的逻辑选择所需的PhysicalGPU
。找到正确的PhysicalGPU
后,使用NvAPIWrapper.GPU.PhysicalGPU.GetDisplayDevices()
方法获取该GPU的所有已连接DisplayDevice
的列表,并将正确的一个存储在变量中。DisplayDevice
,而不是搜索已连接的GPUOutput
。与以前一样,您首先需要找到正确的PhysicalGPU
,然后您可以使用GPUOutput
属性获取所有NvAPIWrapper.GPU.PhysicalGPU.ActiveOutputs
的列表,并将右GPUOutput
存储在变量DisplayDevice
的另一种方法是查找所有Displays
的列表。为此,您需要使用NvAPIWrapper.Display.Display.GetDisplays()
静态方法。这将返回Display
s的数组。然后使用NvAPIWrapper.Display.Display.DisplayDevice
属性,您可以获得DisplayDevice
的相应Display
。DisplayDevice
或GPUOutput
后,您应该使用NvAPIWrapper.GPU.PhysicalGPU.WriteEDIDData()
方法。此方法允许您将存储在字节数组中的EDID数据写入之前选择的DisplayDevice
或GPUOutput
。注意:确保捕获NVIDIAApiException
并检查NVIDIAApiException.Status
属性,以防出现问题。