C#读取设备属性

时间:2018-02-11 12:01:34

标签: c# properties device

我一直试图通过 WMI 从设备属性中提取一些信息。 但它没有在任何地方列出,或者至少我无法找到它。

root\\CIMV2SELECT * FROM Win32_VideoController是我正在看的地方。

有人能指出我正确的方向吗?

Propertie searching for

1 个答案:

答案 0 :(得分:0)

无法通过WMI获取该信息。您必须使用Setup API。由于这是一个C / C ++ API,您必须自己在C#中导入和定义某些类型。

P / Invoke定义

var dpk = new DEVPROPKEY();
dpk.fmtid = new Guid("60b193cb-5276-4d0f-96fc-f173abad3ec6");
dpk.pid = 2;

var displayDevClass = new Guid(DisplayAdapter.ToString());
var hDevInfo = SetupDiGetClassDevs(ref displayDevClass, null, IntPtr.Zero, DiGetClassFlags.DIGCF_PRESENT | DiGetClassFlags.DIGCF_DEVICEINTERFACE);

if (hDevInfo != INVALID_HANDLE_VALUE)
{
    uint i = 0;
    while (true)
    {
        var did = new SP_DEVINFO_DATA();
        did.cbSize = (uint)Marshal.SizeOf(did);
        if (!SetupDiEnumDeviceInfo(hDevInfo, i, ref did)) break;

        uint required = 0;
        DEVPROPTYPE dpt = 0;
        var temp = new byte[0];
        SetupDiGetDeviceProperty(hDevInfo, ref did, ref dpk, ref dpt, temp, 0, ref required);
        if (required > 0)
        {
            var data = new byte[required];
            if (SetupDiGetDeviceProperty(hDevInfo, ref did, ref dpk, ref dpt, data, required, ref required))
            {
                Console.WriteLine(BitConverter.ToString(data));
            }
        }
    }
}

<强>用法

root /var/www/html/stackoverflow;

location / {
    try_files $uri $uri/ /index.php?$args;
}

location ~* ^/img/(.*)$ {
    try_files $uri /48725060/images/$1;
}

location ~* \.(jpe?g|gif|png) {
    expires 1h;
}