通过memcpy将数据从用户应用程序复制到内核驱动程序

问题描述 投票:0回答:1

好吧,我只是简单地说,我怎样才能使用共享内存从我的用户模式应用程序发送和接收数据到我的内核驱动程序。使用实际的互斥锁来指示我的请求是否已完成。如何在不将其添加到Major_irp函数的情况下调用读取内存函数,因为我不想添加任何IOCTL代码

c kernel memcpy irp
1个回答
0
投票

以下假设是* nix样式的内核,但相同的概念也转换为Windows。但是,其他操作系统内核可能采用不同的概念:

在代码中实现mmap系统调用,将内核端分配的内存映射到用户空间。或者直接从/向用户空间内存实现readwrite系统调用。

特别是对Linux:如果要异步访问用户空间内存,请使用带有标志vmspliceSPLICE_F_GIFT。同步原语(如互斥或信号量)通常不会跨越用户空间/内核空间边界,如果要异步操作,则必须执行poll文件操作,以便在“文件”操作完成时向用户空间发送信号。

© www.soinside.com 2019 - 2024. All rights reserved.