我是靠谱客的博主 害羞母鸡,最近开发中收集的这篇文章主要介绍使用SETUPAPI函数解析INF中的硬件ID,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原文最开始由本人发表于:http://www.pnpon.com/article/detail-242.html

安装Windows驱动,首先得知道INF支持的硬件ID.本人手中有一个测试的inf文件,其内容如下:
设备支持的硬件ID如下:
在这里插入图片描述
字符串内容如下:
在这里插入图片描述

编写一个程序,用来解析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("%sn", buff);
		}


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


	SetupCloseInfFile(hInf);
	
	return 0;

}

运行结果如下:
在这里插入图片描述

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

USB中文网,学习USB的好去处 http://www.usbzh.com

最后

以上就是害羞母鸡为你收集整理的使用SETUPAPI函数解析INF中的硬件ID的全部内容,希望文章能够帮你解决使用SETUPAPI函数解析INF中的硬件ID所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部