如何让指针的深层副本将内部结构发送到内核?
How to have deep copy of pointers send inside structure to kernel?
我在用户空间中有这种结构:
struct foo {
int* a;
int aSize;
int* b;
int bSize;
};
我通过为指针分配内存来初始化指针。
在Windows内核中,我在IOCTL中取消引用此结构,IRP_DEVICE_CONTROL:
PVOID inBuf, outBuf; // pointer to struct
inBuf = pIoStackLocation->Parameters.DeviceIoControl.Type3InputBuffer;
inBufLength = pIoStackLocation->Parameters.DeviceIoControl.InputBufferLength;
然后锁定该内存,以便我可以从内核访问。问题是,如何用指针指向内存来深度复制结构,至于现在,如果我只发送带有指针的结构,指针指向的内存不会发送到内核,所以我无法锁定它们。我希望能够在结构内部动态分配指针,然后让内核使用它们。
必须使用提供给设备驱动程序的指针地址(从内核模式 - 然后可以将数据复制到内核模式缓冲区(访问用户模式进程的内存,或在结构中存储实际整数值,而不是为其使用指针。
或者,如果您从内核模式附加到用户模式进程,则可以使用结构字段中的指针地址(直接(读取/写入它们指向的数据。还有NtReadVirtualMemory(如果你做了一些工作来通过KeServiceDescriptorTable或内存扫描来查找地址(。
相关文章:
- C++ 结构内部的unordered_map会导致内存泄漏问题吗?
- 在C++中更改结构内部元素的方法?
- 结构内部结构的联合 - 混合 C 和 C++
- 如果在结构内部使用condition_variable,则它不起作用
- 尝试将数据添加到结构内部的矢量时出错
- 如何使结构内部的可变参数模板可以在外部访问?
- 结构内部的结构:"对非静态成员的非法引用"错误
- C 是什么是在结构内部洗牌的最有效方法
- C :结构内部的Armadillo矩阵
- 使用包含该结构内部结构的 using 定义
- 初始化指向另一个结构内部结构的指针
- 更改结构C 内部阵列的大小
- 如何与CUDA中的结构内部结构一起工作
- 如何在C++中访问数组结构内部的数组结构
- 另一个结构内部的结构数组的成员变量没有通过引用传递
- 结构内部的C++数组,如何处理它们
- 从构造函数中本地声明的device_vector使用device_vector::data()方法初始化结构内部的指针是
- 使用constexpr方法在结构内部进行模板参数化
- 访问结构内部的矢量size_type
- CPP 结构内部重载 () 运算符