首页
社区
课程
招聘
[求助]ZwQueryObject死锁
发表于: 2009-2-10 11:37 6841

[求助]ZwQueryObject死锁

2009-2-10 11:37
6841
在用户态下面调用ZwQueryObject的时候会死锁,有人遇到这个问题吗,如何解决的?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 279
活跃值: (33)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
貌似是用线程,设置超时时间
2009-2-10 12:47
0
雪    币: 97
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
调试的时候,始终是枚举某个句柄的时候不通过

如果用线程,还是没办法完成枚举操作

PS:在线程里面调用ZwQueryObject的时候,返回STATU_ACCESS_VIOLATION错误
2009-2-10 14:06
0
雪    币: 279
活跃值: (33)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
下面这段代码是“如何操作被占用文件三法”这篇文章中的,好好看看吧

DWORD WINAPI  GetFileNameThread(PVOID lpParameter)

{
   PNM_INFO         NmInfo = lpParameter;
   IO_STATUS_BLOCK IoStatus;
   int r;

   NtQueryInformationFile(NmInfo->hFile, &IoStatus, &NmInfo->Info,
                        sizeof(NM_INFO) - sizeof(HANDLE), FileNameInformation);

   return 0;
}

void GetFileName(HANDLE hFile, PCHAR TheName)
{
   HANDLE    hThread;
   PNM_INFO Info = HeapAlloc(hHeap, 0, sizeof(NM_INFO));

   Info->hFile = hFile;

   hThread = CreateThread(NULL, 0, GetFileNameThread, Info, 0, NULL);

   if (WaitForSingleObject(hThread, INFINITE) == WAIT_TIMEOUT) TerminateThread(hThread, 0);

   CloseHandle(hThread);

   memset(TheName, 0, MAX_PATH);

   WideCharToMultiByte(CP_ACP, 0, Info->Info.FileName, Info->Info.FileNameLength >> 1, TheName, MAX_PATH, NULL, NULL);

   HeapFree(hHeap, 0, Info);
}
2009-2-10 21:48
0
游客
登录 | 注册 方可回帖
返回
//