KMDF驱动 手动安装与卸载

最近要实现一个虚拟游戏手柄驱动,在网上下载了ViGEm的源码进行修改,
虚拟游戏手柄驱动源码https://github.com/ViGEm/ViGEmBus
编译通过后 多种途径尝试安装,均失败
windows大部分驱动安装方法都不一样,网上查了很久都是设备的增删,没有驱动的安装与删除
我分享一下经过大量尝试,找到的安装与卸载的方式

PnP即插即用设备驱动 的 自动化安装 见我的另一篇博客 https://blog.csdn.net/weixin_43956962/article/details/103253059

测试环境:

主机:win10 1903
测试机: win10 1803

KMDF驱动的安装

打开设备管理器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时断到了windbg 在驱动入口添加的 DbgBreakPoint();
在这里插入图片描述
在这里插入图片描述

KMDF驱动的卸载

删除是,在设备管理器中右击设备 选择卸载设备 这里删除的是总线设备 驱动也会卸载掉
在这里插入图片描述

参考

微软官方示例 KmdfHelloWorld
CSDN上看到一位大佬 hustd10 的kmdf教程
我自己写的双机调试环境搭建 WindbgPreview双机内核调试

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
KMDF 驱动中,可以使用 Windows 内核提供的文件系统相关的 API 来写入数据到磁盘的任意位置。以下是一个简单的示例: 1. 首先使用 `ZwCreateFile` 函数打开目标文件,可以指定 `FILE_WRITE_DATA` 访问权限和 `FILE_RANDOM_ACCESS` 标志位,以便进行随机访问。 2. 使用 `ZwWriteFile` 函数将数据写入到文件中。需要指定写入的字节数、写入的偏移量以及要写入的数据缓冲区等参数。 3. 最后使用 `ZwClose` 函数关闭文件句柄。 下面是一个简单的示例代码: ```C NTSTATUS WriteDataToFile(LPCWSTR FilePath, ULONG Offset, PVOID Buffer, ULONG Length) { HANDLE FileHandle; IO_STATUS_BLOCK IoStatusBlock; UNICODE_STRING FileName; OBJECT_ATTRIBUTES ObjectAttributes; LARGE_INTEGER FileOffset; // Convert file path to UNICODE_STRING RtlInitUnicodeString(&FileName, FilePath); // Initialize object attributes InitializeObjectAttributes(&ObjectAttributes, &FileName, OBJ_CASE_INSENSITIVE, NULL, NULL); // Open the file for writing NTSTATUS status = ZwCreateFile(&FileHandle, GENERIC_WRITE, &ObjectAttributes, &IoStatusBlock, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN, FILE_RANDOM_ACCESS, NULL, 0); if (NT_SUCCESS(status)) { // Set the file offset FileOffset.QuadPart = Offset; // Write the data to the file status = ZwWriteFile(FileHandle, NULL, NULL, NULL, &IoStatusBlock, Buffer, Length, &FileOffset, NULL); // Close the file handle ZwClose(FileHandle); } return status; } ``` 在调用 `WriteDataToFile` 函数时,需要指定要写入的文件路径、写入数据的起始偏移量、要写入的数据缓冲区以及要写入的数据长度等参数。例如: ```C WriteDataToFile(L"C:\\test.bin", 0x1000, pData, 0x100); ``` 这将从文件 `C:\test.bin` 的偏移量 `0x1000` 处开始写入长度为 `0x100` 字节的数据缓冲区 `pData`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值