UNICODE_STRING tem_uIpAddress={0};//IP地址
//tem_uIpAddress.Buffer=(PWSTR)ExAllocatePool(PagedPool,BUFFER_SIZE);第二句不注释掉的话,会有'UNICODE_STRING' : illegal use of this type 错误,搜不到解决办法
//tem_uIpAddress.Buffer=(PWSTR)ExAllocatePool(PagedPool,BUFFER_SIZE);第二句不注释掉的话,会有'UNICODE_STRING' : illegal use of this type 错误,搜不到解决办法
解决方案 »
- VC6.0关于成员运算符和作用域运算符后面有时候不出现提示的问题?
- 在窗口回调函数的WM_DESTROY消息中,还能够进行哪些处理?
- VC6里实现html文件的编辑,不需要很多功能,急!谢谢
- sdk里面的例子 怎么运行?
- 线程问题!用过.NET的请进!
- 如何 快速 删除listctrl中的大量数据?
- 请问:在主线程中调用accept(sock)后,能否启动一新线程,在该线程中处理sock的FD_READ/FD_WRITE等消息
- 请问各位大虾怎样在一个几百M的二进制文件中查找某个数据段?
- 为什么建立的文件被抹杀?
- 高中文凭,在北京能找到VC程序员的工作吗?
- 如何获取移动硬盘的盘符并修改之
- mfc 资源DLL问题
memmove(&output[0],&a,4);
while (1)
{
KeDelayExecutionThread(KernelMode,0,&li);
memmove(&a,&output[0],4);
if (!a)
{
break;
}
}这种方式与应用层通信,应用层开了两个线程,缓冲区分别分配了两个数组,不会跟这个有关吧?
驱动中有一个RtlInitUnicodeString函数,LZ为什么要这样初始化呢?
用这一系列的函数要注意内存的使用与泄露
一般来说不用自己分配的(局部变量除外,是在栈里的)
LZ多查一些资料,应该可以解决问题.
先用这个函数沟通一下,Ring3和Ring0共享一块内存
然后用Event来传递信号
最后,不推荐你看PRMonitor的代码,这个代码写的很随意
没有一点编程规范,很难阅读
case 1002:
{
buff = (UCHAR *)Irp->AssociatedIrp.SystemBuffer;
memmove(&a,&buff[4],4);
output=(char*)MmMapIoSpace(MmGetPhysicalAddress((void*)a),256,0);
KdPrint(("加载驱动"));
break;
}
刚学驱动,很多都不懂,编译的那个问题感觉好纠结,如果不加上面的两句,则: i=to->sin_addr.S_un.S_un_b.s_b4;
RtlIntegerToUnicodeString(i,10,&tem_uIpAddress);
RtlAppendUnicodeStringToString(&uIpAddress,&tem_uIpAddress);
RtlUnicodeStringToAnsiString(&aIpAddress,&uIpAddress,TRUE);
strcpy(aIpAddr,aIpAddress.Buffer);aIpAddr得到的是空的PS:怎么嵌入C代码?好看一点
ObReferenceObjectByHandle( hEvent, GENERIC_ALL, NULL,KernelMode,(PVOID *)&kEvent,NULL);hEvent就是Ring3传递过来的Event句柄了,转换之后得到的kEvent即为Ring0所用了这样Ring3和Ring0就都可以操作同一个事件,都可以进行SetEvent(KeSetEvent)等操作了。