WIKI
+ -

Windows驱动通过inf文件生成cat文件步骤

2022-08-26 607 0

编写Windows驱动程序,最后一步就是打包和安装。Windows 7 64位系统以上的版本,如果没有对cat或者sys文件进行数字签名,驱动安装会出现问题,或者驱动使用过程也会出现异常。为了兼容性考虑,我们需要生成cat文件。

本人环境win7 x64位,安装了WinDDK。WinDDK提供了 Inf2Cat.exe 工具,该工具在 C:\WinDDK\7600.16385.1\bin\selfsign 目录下。

首先打开cmd命令行工具,接着执行cd命令进入到 C:\WinDDK\7600.16385.1\bin\selfsign 目录下。最后执行如下命令即可生成cat文件:

   Inf2Cat.exe /driver:c:\driver /os:2000,XP_X86,XP_X64,Server2003_X86,Server2003_X64,Vista_X86,Vista_X64,7_X86,7_X64

我这边的inf以及sys文件是存放在 c:\driver目录下,执行该命令时需要修改为各自的inf和sys文件目录。

生成cat文件后,对相关的文件进行数字签名,包括cat文件,即可在Win7 64,Win8 64,Win10 64等系统上正常安装和使用驱动

0 篇笔记 写笔记

使用IOCTL_DISK_GET_LENGTH_INFO获取硬盘大小
使用IOCTL_DISK_GET_LENGTH_INFO获取硬盘大小char buff[512]; sprintf(buff,"\.\PhysicalDrive%d",nId); HANDLE hDevice = CreateFile(buff,GENE......
Windows Inf文件设备GUID分类(设备安装程序类)
Class=SystemClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318}Class=USBClassGuid={36FC9E60-C465-11CF-8056-444553540000}Class=AudioClassGuid={4d36e96c-......
IoCopyCurrentIrpStackLocationToNext和IoSkipCurrentIrpStackLocation操作的IO_STACK_LOCATION有什么区别
在Windows驱动中,传递IPR一般有两种操作:一种是调用IoSkipCurrentIrpStackLocation,表示跳过本层驱动的操作,直接转发至下层: IoSkipCurrentIrpStackLocation(Irp); return IoCallDriver(FDODeviceEx......
Windows内核内存申请和释放
内存泄漏是C语言中一个臭名昭著的问题。但是作为内核开发者,读者将有必要自己来面对它。在传统的C语言中,分配内存常常使用的函数是malloc。这个函数的使用非常简单,传入长度参数就得到内存空间。在驱动中使用内存分配,这个函数不再有效。驱动中分配内存,最常用的是调用ExAllocatePoolWithT......
IRP完成与IO_STACK_LOCATION
IRP与IO_STACK_LOCATION的关系IPR完成时,有时为了获取数据,我们经常要这样干 IoCopyCurrentIrpStackLocationToNext(Irp); IoSetCompletionRoutine( Irp, Comple......
使用ZwQuerySystemInformation函数枚举进程
使用ZwQuerySystemInformation函数枚举Windows系统进程typedef struct _SYSTEM_PROCESSES { ULONG NextEntryDelta; //构成结构序列的偏移量; ULONG......
inf简介
INF是Device Information的缩写,是用于设备驱动安装时的信息配置文件。它包含了设备安装时的一些配置信息,系统通过这些配置信息,将驱动程序与物理的硬件设备进行关联。INF文件安装后,系统会为其它生一个同名的PNT文件。PNF文件叫做Precompiled INF文件,即预编译安装......
SetupApi关于INF文件处理的函数
INF文件处理功能提供安装功能,包括以下内容:打开和关闭INF文件。检索有关INF文件的信息。检索有关复制操作的源文件和目标目录的信息。执行INF文件节中指定的安装操作。FunctionDescriptionInstallHinfSectionExecutes a spec......
解析INF文件中支持的设备硬件ID
安装Windows驱动,首先得知道INF支持的硬件ID.本人手中有一个测试的inf文件,其内容如下:设备支持的硬件ID如下:字符串内容如下:编写一个程序,用来解析INF文件。#include #include #include......
Windows驱动中注册系统关闭重启回调函数IoRegisterShutdownNotification
方法1:自己创建设备处理IRP_MJ_SHUTDOWN irp回调 ,还需要调用IoRegisterShutdownNotification函数来关联设备.就可以成功的注册关机通知了.#include "LoadFirst.h"VOID DriverUnload(IN PDR......
SetupAPI根据硬件ID获取驱动INF文件和驱动日期版本信息
SetupAPI根据硬件ID获取驱动INF文件和驱动日期版本信息。注释掉的代码是获取该硬件的所有可用驱动信息。代码是逐渐完善的,没想到可以直接从注册表信息中获取到。SetupDiOpenDevRegKey打开的注册表路径示例为:计算机HKEY_LOCAL_MACHINESYSTEM......
Devcon Rescan命令代码实现
在Windows的设备管理器工具栏有一个小电脑的图标,点击后,系统会强制设备管理器树进行更新并重新枚举卸载掉(devcon的remove用法)的设备并安装驱动程序。这个功能在devcon.exe的源代码中有,其对应的devcon命令为devcon.exe resan函数原型:CM_Locate......
DevCon ListClass命令
DevCon ListClass用于列出指定设备设置类中的所有设备。 在本地和远程计算机上有效。命令格式devcon [/m:\computer] listclass class [class...]参数如果要在指定的远程机器上运行,使用/m参数,并且目标计算机的路径使用反斜杠””来标识。......
DevCon DriverNodes命令代码实现
DevCon DriverNodes命令的代码实现几乎和Devcon hwids命令源代码实现几乎一致,惟一的不同就是回调要显示的参数不同和DriverNodes不支持在远程机器上运行却不支持/m命令。int cmdDriverNodes(_In_ LPCTSTR BaseName, _In_o......
ASIO 创建数据缓冲区create_asio_buffers及通道依赖获取
在获取了基本的ASIO通道参数后,是需要创建数据缓冲区的,数据缓冲区由ASIO驱动创建,并由DriverInfo的成员bufferInfos导出,这样可以实现数据无拷贝操作,实现低延迟。注意,这里是输入与输出缓冲区同时创建。当然,另一部分是实现回调函数的引入,这样当ASIO驱动需要反馈某些信......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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