首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Windows API中查询驱动器的制造商?

如何在Windows API中查询驱动器的制造商?
EN

Stack Overflow用户
提问于 2020-04-18 21:51:58
回答 1查看 288关注 0票数 0

我感兴趣的是如何以编程方式检测连接到Windows PC的硬盘、SSD等的制造商。如果有什么不同的话,我可能会在Windows10上使用C++。

也许有多个层次,也许是注册表、Windows API、SATA、USB?

我需要一种方法,将工作的外部驱动器通过USB连接。我想我正在寻找一个可以查询硬件的Windows API。

我只能在谷歌中找到从控制台或应用程序中查看这些信息的方法,或者查询有关驱动器的其他信息,但不能查询制造商。

EN

回答 1

Stack Overflow用户

发布于 2020-04-22 10:52:00

例如,您可以在以下注册表项中找到硬件磁盘制造商名称:

HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0\Logical Unit Id 0

有一个名为"Identifier“的值似乎就是你要找的:

以下是使用Registry Functions查询此值的示例

代码语言:javascript
复制
#include <windows.h>
#include <tchar.h>

#define MAX_VALUE_NAME 16383

void QueryKey(HKEY hKey)
{
    DWORD    cValues;   // number of values for key 
    DWORD    retCode;
    TCHAR    pvData[MAX_VALUE_NAME];
    DWORD    cbData = sizeof(TCHAR) * MAX_VALUE_NAME;
    TCHAR    targetValue[] = L"Identifier";

    // Get the value count. 
    retCode = RegQueryInfoKey(
        hKey,           // key handle 
        NULL,           
        NULL,           
        NULL,                    
        NULL,               
        NULL,            
        NULL,            
        &cValues,       // number of values for this key 
        NULL,            
        NULL,         
        NULL,   
        NULL);       

    // Get the key value. 
    if (cValues)
    {
        retCode = RegGetValue(hKey, NULL, targetValue, RRF_RT_REG_SZ, NULL, pvData, &cbData);
        if (retCode != ERROR_SUCCESS)
        {
            _tprintf(TEXT("RegGetValue fails with error: %d\n", retCode));
            return;
        }
        _tprintf(TEXT("%s: %s\n"), targetValue, pvData);
    }
}

void main(void)
{
    HKEY hTestKey;

    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
        TEXT("HARDWARE\\DEVICEMAP\\\Scsi\\Scsi Port 0\\Scsi Bus 0\\Target Id 0\\Logical Unit Id 0"),
        0,
        KEY_READ,
        &hTestKey) == ERROR_SUCCESS
        )
    {
        QueryKey(hTestKey);
    }

    RegCloseKey(hTestKey);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61290249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档