好吧,我只是让事情变得简单,如何使用共享内存从用户模式应用程序向内核驱动程序发送和接收数据。与实际的互斥锁来指示我的请求是否完成。以及如何在不将其添加到Major_irp函数的情况下调用读取存储功能,因为我不想添加任何IOCTL代码
答案 0 :(得分:0)
以下内容假定为* nix样式的内核,但是相同的概念也可以转换为Windows。其他OS内核可能会采用不同的概念,
在您的代码中实施mmap
syscall都可以将内核侧分配的内存映射到用户空间。或仅实现read
和write
系统调用直接从用户空间内存读取/写入。
特定于Linux:如果要异步访问用户空间内存,请使用带有标志vmsplice
的{{1}}。诸如互斥体或信号量之类的同步原语通常不会越过用户空间/内核空间边界,如果要异步操作,则必须实现SPLICE_F_GIFT
文件操作,以在“文件”操作时向用户空间发出信号完成。