SetupApi函数
+ -

解析INF文件中支持的设备硬件ID

2021-11-19 265 0

安装Windows驱动,首先得知道INF支持的硬件ID.本人手中有一个测试的inf文件,其内容如下:
设备支持的硬件ID如下:
162620377571
字符串内容如下:
162629625547
编写一个程序,用来解析INF文件。


#include <iostream>
#include <windows.h>
#include <SetupAPI.h>

#pragma comment(lib,"setupapi.lib")

int main()
{

    HINF   hInf = SetupOpenInfFile("d:\\TEST.inf", NULL, INF_STYLE_OLDNT | INF_STYLE_WIN4, NULL);
    if (INVALID_HANDLE_VALUE == hInf)
    {
        return 0;
    }

    const char*   szSection = NULL;
    INFCONTEXT   infContext1, infContext2;
    TCHAR   szSrcFile[MAX_PATH];
    ZeroMemory(szSrcFile, MAX_PATH);


    szSection = "Standard.NTamd64";//这个是节名

    char szValueData[512] = { 0 };
    BOOL bWorking = SetupFindFirstLine(hInf, szSection, NULL, &infContext1);
    while (bWorking)
    {
        //   Get   the  xxx.CopyFile   section 
        if (!SetupGetStringField(&infContext1, 0, szValueData, MAX_PATH, NULL))
        {
            bWorking = SetupFindNextLine(&infContext1, &infContext2);
            infContext1 = infContext2;
            continue;
        }

        int count = SetupGetFieldCount(&infContext1);
        for (int i = 0; i <= count; i++)
        {
            char buff[512] = { 0 };
            ULONG rtn = 0;
            SetupGetStringField(&infContext1, i, buff, 512, &rtn);
            printf("%s\n", buff);
        }


        bWorking = SetupFindNextLine(&infContext1, &infContext2);
        infContext1 = infContext2;
        printf("\n");
    }


    SetupCloseInfFile(hInf);

    return 0;

}

运行结果如下:
162700585274

参考代码如下:http://blog.sina.com.cn/s/blog_5a237c2b0100samh.html

0 篇笔记 写笔记

Windows Inf文件设备GUID分类(设备安装程序类)
Class=SystemClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318}Class=USBClassGuid={36FC9E60-C465-11CF-8056-444553540000}Class=AudioClassGuid={4d36e96c-......
SetupApi关于INF文件处理的函数
INF文件处理功能提供安装功能,包括以下内容:打开和关闭INF文件。检索有关INF文件的信息。检索有关复制操作的源文件和目标目录的信息。执行INF文件节中指定的安装操作。FunctionDescriptionInstallHinfSectionExecutes a spec......
解析INF文件中支持的设备硬件ID
安装Windows驱动,首先得知道INF支持的硬件ID.本人手中有一个测试的inf文件,其内容如下:设备支持的硬件ID如下:字符串内容如下:编写一个程序,用来解析INF文件。#include #include #include......
SetupAPI根据硬件ID获取驱动INF文件和驱动日期版本信息
SetupAPI根据硬件ID获取驱动INF文件和驱动日期版本信息。注释掉的代码是获取该硬件的所有可用驱动信息。代码是逐渐完善的,没想到可以直接从注册表信息中获取到。SetupDiOpenDevRegKey打开的注册表路径示例为:计算机HKEY_LOCAL_MACHINESYSTEM......
Devcon hwids命令源代码实现
Devcon hwids命令显示设备的硬件ID信息。主要的显示包括如下:了解过之前几个命令的同学应该觉地比较简单,因为或多或少有些信息如设备友名,设备实例名路径我们都获取过,而设备的硬件ID和兼容ID其实与是比较简单是,和设备的友名一样,是通过SetupDiGetDeviceRegistryPro......
Windows驱动通过inf文件生成cat文件步骤
编写Windows驱动程序,最后一步就是打包和安装。Windows 7 64位系统以上的版本,如果没有对cat或者sys文件进行数字签名,驱动安装会出现问题,或者驱动使用过程也会出现异常。为了兼容性考虑,我们需要生成cat文件。本人环境win7 x64位,安装了WinDDK。WinDDK提供了 ......
INF文件中HKR
在Windows驱动的注册表中,AddReg用于添加注册表项,其中有一些通用的缩写:HKCR代表HKEY_CLASSES_ROOT;HKCU代表HKEY_CURRENT_USER;HKLM代表HKEY_LOCAL_MACHINEHKU代表HKEY_USERS不过,我们有时会经常见到的是HKR,......
inf文件校验工具InfVerif
InfVerif.exe用于校验INF文件是否正确InfVerif 要求每个组合的路径和文件名必须少于 260 个字符。语法:USAGE: InfVerif.exe [/v] [/u | /universal] [/w] [/k] [/info] [/stampinf] [/l
SWAP APO编译后的主体为swapapo.dll这里参考ComponentizedApoSample.inf文件的部分节选说明。inf文件的方体结构和普通的驱动INF文件一致,其结构如下:这里关于APO的注册关键是注册表Apo_AddReg相关的。这里先将各个UUID之间的关系说明一下:[A......
SYSVAD源代码托管于GITHUB: https://github.com/Microsoft/Windows-driver-samples/tree/main/audio/sysvad/TabletAudioSampleSYSVAD编译后的INF文件包括4个:文件名描述Co......
虚拟了一个虚拟总线设备,从设备管理器中看来是正常的,但从功能上来看是不正常的。在设备管理器中提示如下:这个设备运转正常。Windows 无法识别与该硬件连接的一个次要设备,原因使该设备没有有效的硬件标识号。请与硬件制造商联系取得协助。从上面的提示来看,是因为无一个有效的硬件标识号。什么是硬件标识号......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!