【发布时间】:2011-12-23 13:30:37
【问题描述】:
首先,是否可以在 C# 中使用 C、C++ 或汇编 DLL?
如果是,我是简单地添加对此 DLL 的引用,还是必须 P/Invoke 它?
现在,进入主要问题。
我注意到,当使用带有 C# 的 WMI 来检索信息时,在某些体系结构和处理器上,信息要么完全不准确,要么根本不存在。我想知道如果上述问题可能,使用 C、C++ 或 Assembly 是否会产生更好的结果。
如果可以,我需要写什么,我需要怎么写,如果使用汇编,我将如何将它编译成 DLL?感谢您的任何回答。
WMI 不提供“CurrentVoltage”或“VoltageCaps” http://i.imgur.com/nNc8C.jpg
【问题讨论】:
-
您可以通过多种方式调用 C/C++ 代码,例如使用 COM 接口、托管 C++ (C++/CLI) DLL 或使用 P/Invoke。
-
当使用带有 C# 的 WMI 检索信息时,在某些架构和处理器上,信息要么完全不准确,要么根本不存在。 嗯,这可能是一个问题WMI 提供程序,而不是您用来查询它的语言。您能否详细说明缺失或不准确的信息?
-
当使用带有 WMI 的 C# 并在处理器中查询“CurrentVoltage”时,我注意到在 Sandybridge 和 Yorkfield 架构上,电压显示为 null 或 0。在另一个使用 Penryn 架构的处理器上,电压以 3.3v 出现。
-
有一个有趣的讨论关于here
-
@JPBlanc,啊,那是个骗子。不错的收获:)