avatar
Articles
188
Tags
78
Categories
17

Theqiqi_blog
Search

Theqiqi_blog

windows驱动开发14.驱动与应用程序异步通信
Created2025-03-13|Drvier|C•Drvier•WindowsDriver
驱动与应用程序异步通信1.驱动与应用异步通信是什么?驱动与应用程序的异步通信是指应用程序向驱动程序发送请求后,驱动程序并不立即返回响应,而是继续执行其他操作,直到请求处理完成,驱动程序才通知应用程序或提供结果。异步通信通常用于需要处理长时间操作或等待外部事件的场景,这样可以避免应用程序在等待时被阻塞。 异步通信的工作原理: 请求发送:应用程序通过调用 DeviceIoControl、ReadFile 或 WriteFile 等函数向驱动程序发送请求。 请求排队:驱动程序收到请求后,不会立即返回,而是将请求添加到请求队列中,继续处理其他任务或者立即返回,表示操作正在进行。 事件通知:当驱动程序完成请求的处理后,它会通过某种机制(如信号量、事件、I/O 完成端口等)通知应用程序,通常是通过回调机制或事件对象。 获取结果:应用程序可以使用等待(如WaitForSingleObject)或轮询的方式等待通知,或者在通知到来时继续执行后续操作。 常见的异步机制: **I/O 完成端口 (IOCP)**:用于处理大量的并发 I/O 请求,特别适用于高性能的网络或 ...
windows驱动开发13.驱动与应用程序通信
Created2025-03-13|Drvier|C•Drvier•WindowsDrive
1. windows应用程序进程间怎么互相通信?方法一:共享内存 方法二:共享内存 方法三:网络通信 方法一:管道通信的完整代码管道通信需要一个服务端与一个客户端。在服务端创建管道,在客户端读取管道。 1.server.c 1234567891011121314151617181920212223// server.c : This file contains the 'main' function. Program execution begins and ends there.#include <stdio.h>#include <windows.h>int main(){ HANDLE hPipe = CreateNamedPipe(TEXT("\\\\.\\pipe\\MyPipe"), PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, 1, 1024, 1024, 0, ...
windows驱动开发12.EProcess结构体与修改进程信息
Created2025-03-13|Drvier|C•Drvier•WindowsDriver
查看eprocess结构体Windows操作系统中的EPROCESS是一个关键的内核数据结构,它是Windows内核用来表示进程的执行体(Executive Process)。 EPROCESS是一个复杂的结构体,包含了与进程相关的所有信息,例如: 进程ID (PID) 父进程ID 进程创建时间 进程安全上下文 进程地址空间信息 进程拥有的对象句柄 线程列表 进程优先级 内存使用统计 各种标志和状态信息 1.windgb中查看eprocess在 WinDbg 中,你可以使用多种命令来查看和分析 EPROCESS 结构体。以下是几种常用方法: 使用 dt命令查看 EPROCESS 结构定义: 1dt nt!_EPROCESS 这会显示整个 EPROCESS 结构的布局和成员。 查看特定进程的 EPROCESS: 1!process [进程地址] 1 或者通过 PID 查看: 1!process [PID] 1 要获取当前进程的 EPROCESS 地址并查看: 12r $procdt nt!_EPROCESS @$proc 查看特定字段: 1dt nt!_EPROCESS ...
windows驱动开发11.驱动中读取内存数据
Created2025-03-13|Drvier|C•Drvier•WindowsDriver
Windows中的内存地址分为几种?Windows11中内存数据分为物理内存与虚拟内存 在Windows 11(以及所有现代Windows版本)中,内存按照以下描述的方式组织: 物理内存 - 这是实际的硬件RAM,由内存条提供的实际存储空间。 虚拟内存 - 这是一个抽象层,被划分为两个主要区域: 低地址空间(用户空间):分配给应用程序使用的虚拟地址。在64位Windows系统中,用户空间通常是从0x0000000000000000到0x00007FFFFFFFFFFF,即低48位地址空间。每个进程都有自己独立的用户空间虚拟地址映射。 高地址空间(内核空间):保留给操作系统内核和驱动程序使用的虚拟地址。在64位Windows系统中,内核空间通常从0xFFFF800000000000开始,即高位地址空间。所有进程共享相同的内核空间映射。 读取物理内存地址数据1. 使用Windbg读取物理内存地址 windbg断点 输入!db命令查询地址 1!db 0x100000 带感叹号的命令读取物理内存地址,不带感叹号读取虚拟内存地址 在WinDbg中读取物理内存的常用命令: ! ...
windows驱动开发10.配置vs2022远程调试驱动环境
Created2025-03-13|Drvier|C•Drvier•WindowsDriver
1.在被调试机器中安装远程工具并运行https://www.cnblogs.com/TechNomad/p/17444008.html 被调试机上也安装上 WDK 环境. 在 WDK 的安装目录下运行该工具 WDK Test Target Setup 默认路径:C:\Program Files (x86)\Windows Kits\10\Remote\x64\WDK Test Target Setup x64-x64_en-us.msi 2.在主机中添加远程机器的信息驱动项目中打开Driver install->Deployment。填入信息。 3. 编译后运行驱动项目选择远程内核调试器。
windows驱动开发9.关于打印函数的几种使用方式
Created2025-03-13|Drvier|C•Drvier•WindowsDriver
1.驱动输出函数1. KdPrint函数1234567891011121314151617#include<ntifs.h>void DriverUnload(PDRIVER_OBJECT DriverObject){ KdPrint("qi:进入卸载例程DriverObject=%p");}NTSTATUS DriverEntry( _In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath){ DriverObject; RegistryPath; KdPrint("qi;进入 DriverEntry入口点DriverObject=%p\n"); return 0;} 2. DbgPrintEx函数123456789101112131415161718#include <ntifs.h>#pragma warning (disable : 4100)NTS ...
windows驱动开发8.HelloWorld驱动程序是如何一步步完整的
Created2025-03-13|Drvier|C•Drvier•WindowsDriver
1.使用vs2022创建KMDF空项目 选择Kernel Mode Driver, Empty(KMDF) 源文件夹添加entry.c entry.c添加驱动入口函数 1234int DriverEntry(){ return 0;} 编译成功,但是没什么用。 如果出现Inf2Cat错误,关闭Inf2Cat或者在Inf2Cat选项中使用本地时间。 如果出现spectre缓解错误,下载缓解库版本SKD或者在项目中关闭spectre缓解。 如果之后的驱动程序加载失败试着在项目属性->Driver Settings中设置Target Platform为Desktop。 2.使用标准入口函数 修改代码 12345678910#include <ntifs.h>NTSTATUSDriverEntry( _In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath){ return 0;} 解决报错 问题: 123Error C2 ...
windows驱动开发7.通过网络配置Windbg远程调试环境
Created2025-03-13|Drvier|C•Drvier•WindowsDriver
1. 在被调试的机器中开启调试模式并在命令行设置远程端口 查看信息 1bcdedit 开启调试模式 12345bcdedit -debug onbcdedit /debug on#在设备管理器中查看busparams的值#Location PCI Slot 160 (PCI bus 3, device 0, function 0)bcdedit /set "{dbgsettings}" busparams 3.0.0 开启网络调试,ip设置为主机地址而非被调试的ip 1bcdedit /dbgsettings net hostip:192.168.1.16 port:50005 key:2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p 显示信息确认 1bcdedit /dbgsettings 重启命令 1shutdown -r -t 0 如果需要windows10打开测试模式 12bcdedit /set nointegritychecks onbcdedit /set t ...
windows驱动开发6.Debuview查看Windows驱动的打印内容
Created2025-03-13|Drvier|C•Drvier•WindowsDriver
Debuview查看Windows驱动的打印内容 下载DebugView.exe DebugView下载链接 运行DriverMonitor.exe。 运行DebugView.exe。 DebugView中选中Cpature Kernel, Enable Verbose Kernel Output, Capture Events。 在DriverMonitor中点击open打开HelloWorld.sys驱动,点击go运行。 在DebugView中观察输出。
windows驱动开发5.怎么在Widows11中加载驱动程序
Created2025-03-13|Drvier|C•Drvier•WindowsDriver•DriverMonitor
怎么在Widows11中加载驱动程序方法一:使用微软提供的DriverMonitor.exe加载 [DriverMonitor下载链接](http ://www.rsdown.cn/down/165643.html) DriverMonitor中点击open加载驱动, 点击go运行驱动 方法二:使用命令行创建服务加载1234#1.创建服务#2.启动驱动#3.关闭驱动#4.卸载驱动 管理员打开cmd加载驱动 1sc create guidehacking type= kernel binpath="D:\Desktop\test\visual\studio\Hacking\Hacking\x64\Release\Hacking.sys" 使用debugView并勾选Caputure kernel 开始运行驱动 1sc start guidedhacking cmd停止驱动 1sc stop guidedhacking 方法三:使用C语言程序调用系统命令加载✅ 使用 popen() 调用 sc 命令并获取输出的完整 C 程序 1234567 ...
1…345…19
avatar
Theqiqi
Articles
188
Tags
78
Categories
17
Follow Me
Announcement
This is my Blog
Recent Post
4.QT使用https协议通信2025-03-23
3.QT使用http协议通信2025-03-23
1.QT使用udp通信2025-03-23
1.QT使用udp通信2025-03-23
windows驱动开发40.用户层与驱动层的其他通信方式2025-03-13
Categories
  • C++Socks4
  • C++Windows+Graphi9
  • C+Socks16
  • C+Sound10
  • C语言在Windows中实现抓包4
  • C语言的万种用法9
  • Debian1
  • Drvier40
Tags
Drvier Http c语言的万种用法 jsp x86汇编程序 GDI ISO Direct3D9 Direct2D IPV4 genisoimage TCP windows driver MySql BSD Sockets Disk C Npcap DriverMonitor ipv6 android Socks5 cmake ipv4 OpenGl first pragram UDP Qt6 Socket termux System UltraISO WindowsDrive Qt MFC Cmake Ipv6 WinSock Graphi rufus
Archives
  • March 202544
  • February 202523
  • September 20242
  • August 202470
  • June 20242
  • March 20245
  • February 20248
  • October 20231
Info
Article :
188
UV :
PV :
Last Update :
©2020 - 2025 By Theqiqi
Framework Hexo|Theme Butterfly
Search
Loading the Database