[讨论]ObQueryNameString在NT5系统上与众不同的套路
大家都知道,ObQueryNameString这个函数非常糟糕,动辄返回失败,甚至导致蓝屏。在今年年初,我还发过一个帖子:《在XP上使用ObQueryNameString查询文件对象发现的大坑》。先来一段常见的查询对象的代码,在VISTA之后系统可以成功,但是在XP/03上失败:ULONG length = 0;
POBJECT_NAME_INFORMATION buffer = NULL;
NTSTATUS status = ObQueryNameString(pQueryObject,NULL,length,&length);
if(length)
{
buffer = ExAllocatePool(PagedPool, length);
if(buffer)
{
RtlZeroMemory(buffer,length);
status = ObQueryNameString(pQueryObject,buffer,length,&length);
if(NT_SUCCESS(status))
DbgPrint("%wZ\n",(PUNICODE_STRING)buffer);
else
DbgPrint("ObQueryNameString-failed: 0x%x\n", status);
ExFreePool(buffer);
}
}
else
{
DbgPrint("ObQueryNameString-return-zero-length: 0x%x\n", status);
}
这是因为,在NT5系统上使用这个函数,需要与众不同的套路。**** Hidden Message ***** 沙发 伪前排,让我来看看这个套路是什么,谢谢楼主分享 板凳? 学习一下. 自古套路得人心 不用这个函数很多年了 看看套路 似乎跟缓冲区长度有关? 谢谢楼主分享 谢谢分享 学习学习 来学习咯 学习一下. 看看是啥套路 看看 学习一下。 学习一下 学习一下 看看 学习一下 学习下新的对象名查找套路.
页:
[1]