从User32
到
Win32k
实现过程简直就像是天书。
User32.NtUserMoveWindow->Win32k.NtUserMoveWindow ->xxxMoveWindow ->xxxSetWindowPos
继续调用了下面2个处理
DeferWindowPos
xxxEndDeferWindowPosEx -<主要实现在这里面
然后继续向下
zzzBitValidBits //取出位置
GreBitBlt //位置传输 不过我怎么都没找到,真是郁闷
GreSelectVisRgn 函数3个参数
GreSelectVisRgn(pdce->hdc, hrgn, SVR_DELETEOLD);
---------------------------
bf82138e 6a01 push 1
bf821390 56 push esi
bf821391 ff75f4 push dword ptr [ebp-0Ch]
bf821394 e800a4ffff call win32k!GreSelectVisRgn (bf81b799)
------------------
bf81b7a1 53 push ebx
bf81b7a2 57 push edi
bf81b7a3 ff7508 push dword ptr [ebp+8]
--
而GreGetBounds 也是3参
bf821399 56 push esi
bf82139a 56 push esi
bf82139b ff75f4 push dword ptr [ebp-0Ch]
bf82139e e8e7a7ffff call win32k!GreGetBounds (bf81bb8a)
GreGetBounds(pdce->hdc, NULL, GGB_ENABLE_WINMGR);