Аппаратные адреса и IRQ WMI - PullRequest
1 голос
/ 20 марта 2012

Может ли кто-нибудь помочь мне найти метод WMI для получения аппаратных адресов и IRQ?

Классы, на которые я смотрел до сих пор, кажутся немного пустыми, чтобы сообщить вам, какое устройство на самом деле использует ресурс - но это должно быть возможно, если он доступен в средстве Windows 'System Information'.

В конечном итоге я хочу создать адресную карту и карту IRQ в своем приложении C #.

Я кратко рассмотрел следующие классы:

  • Win32_DeviceMemoryAddress
  • Win32_IRQResource

и я только что эту секунду видел другого, но я действительно не смотрел на это:

  • Win32_AllocatedResource

Может быть, сопряжение с Win32_PnPEntity?

1 Ответ

4 голосов
/ 21 марта 2012

Чтобы получить эту информацию, вы должны использовать предложение ASSOCIATORS OF WQL для создания ссылки между Win32_DeviceMemoryAddress -> Win32_PnPEntity -> Win32_IRQResource классов.

Проверьте этот пример приложения

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();
        }
    }
}
...