如何使用c ++实现wmi类的链接?

时间:2018-06-12 12:57:55

标签: c++ wmi

我有一个示例代码,如下所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Text;

namespace WMIIRQ
{
    class Program
    {
        static void Main(string[] args)
        {
            foreach(ManagementObject Memory in new ManagementObjectSearcher(
                "select * from Win32_DeviceMemoryAddress").Get())
            {

                Console.WriteLine("Address=" + Memory["Name"]);
                // associate Memory addresses  with Pnp Devices
                foreach(ManagementObject Pnp in new ManagementObjectSearcher(
                    "ASSOCIATORS OF {Win32_DeviceMemoryAddress.StartingAddress='" + Memory["StartingAddress"] + "'} WHERE RESULTCLASS  = Win32_PnPEntity").Get())
                {
                    Console.WriteLine("  Pnp Device =" + Pnp["Caption"]);

                    // associate Pnp Devices with IRQ
                    foreach(ManagementObject IRQ in new ManagementObjectSearcher(
                        "ASSOCIATORS OF {Win32_PnPEntity.DeviceID='" + Pnp["PNPDeviceID"] + "'} WHERE RESULTCLASS  = Win32_IRQResource").Get())
                    {
                        Console.WriteLine("    IRQ=" + IRQ["Name"]);
                    }
                }

            }
            Console.ReadLine();
        }
    }
}

我不熟悉c#,我从一些链接获得了这个代码,我需要一些c ++方法,以便我可以按照上面提到的代码执行完整的操作。我搜索了很多,但我不能完全满足我的需求。有人可以建议我获得它的方法。在此先感谢。

1 个答案:

答案 0 :(得分:0)

Microsoft提供了非常全面的文档,介绍了如何执行此操作here

您基本上必须使用COM来启动所需的所有对象类型,调用查询,然后在最后明确清理。这很麻烦,但它确实有效。