Re: BAD_POOL_CALLER

Windows内核调试

BAD_POOL_CALLER


yushang 2009-08-22, 12:43 下午

最近写一个驱动,在响应IRP_MN_QUERY_ID时,按如下方式返回ID:

Irp->IoStatus.Information = (ULONG_PTR)L"TEST\\HardwareID"

就会导致如题的错误,但是如果我是ExAlloate*的该指针好像就不会有问题:

PUCHR p;

...

p = ExAllocate*;

Irp->IoStatus.Information = (ULONG_PTR)p;

这是怎么回事呢?

Re: BAD_POOL_CALLER


王宇 2009-08-22, 12:56 下午
啥意思? 没看懂

为什么要给一长度赋成一地址?

Re: BAD_POOL_CALLER


yushang 2009-08-22, 15:10 下午
给长度赋值?没有啊,返回的是一个字符串地址,只不过前者是常量,后者是动态分配的

Re: BAD_POOL_CALLER


格蠹老雷 2009-08-24, 12:52 下午
从错误码来看,是在释放内存时发现这不是一个合法的指针,因为指向的是个常量。应该是个约定,驱动要从内核池分内存, IO系统会释放这个内存。

Re: BAD_POOL_CALLER


yushang 2009-08-27, 15:53 下午

我也是这么猜的,只是想到这里确认一下,谢谢 :)

Powered by Community Server Powered by CnForums.Net