【旧文章搬运】关于NtUserBuildHwndList的一点记录~
原文发表于百度空间,2011-04-07
==========================================================================
该函数与ring3的枚举窗口函数有关,原型如下:
NTSTATUS APIENTRY NtUserBuildHwndList( HDESK hDesktop, HWND hwndParent, BOOLEAN bChildren, ULONG dwThreadId, ULONG lParam, HWND* pWnd, ULONG* pBufSize);
要在驱动中调用此函数的童鞋们要注意下:
(1)不能在System进程和smss进程中调用(比如DriverEntry啥的),Attach到别的进程也不行,原因与Session Space有关,否则你将会得到一个BSOD~~
(2)最后两个参数必须是ring3地址,否则你将得到一个0xC0000008错误~~
(3)在没有GUI的进程中也可以调用此函数,只要该进程属于某个Session就行(还记得访问win32k.sys的进程限制吗?)~~
其它的Shadow服务函数可能也有类似情况,如果使用时出现了错误,不妨往以上方面想想~~~