构造CVE-2015-0003 poc的疑惑,与大家探讨???

CVE-2015-0003根据介绍是内核态Win32k.sys的消息处理函数NtUserDispatchMessage在消息类型为WM_SYSTIMER时, 由于检查不严格,导致引到一个空页,我想应该和CVE-2014-4113的那个提权方法一样,可以把shellcode放在0页的某个地方,然后构造参数让内核访问0页内存,导致提权shellcode执行。
但poc构造过程中,我用的是
LRESULT WINAPI DispatchMessage(
  _In_  const MSG *lpmsg
);
typedef struct tagMSG {
  HWND   hwnd;
  UINT   message;
  WPARAM wParam;
  LPARAM lParam;
  DWORD  time;
  POINT  pt;
} MSG, *PMSG, *LPMSG;
可能设置消息类型WM_SYSTIMER,然后调到内核的NtUserDispatchMessage,但是还有一个条件是lparam,也就是消息的回调函数必须是win32k!xxx,
这个函数应该在win32k.sys中,在内核态,用户态的DispatchMessage如何把一个内核态的函数地址传到内核态????????????