Te aviso que ademas de los keyloggers que usan ese metodo (todos de modo Usuario) existen los de modo Kernel (un filtro por ejemplo) y los de hardware.
lo se
pero por ahora me encargare de los de modo usuario
pd: no he podido encontrar la declaración de NtUserSetWindowsHookEx
EDIT...........
creo que la encontre
typedef ULONG (NTUSERSETWINDOWSHOOKEX)(
IN HANDLE hmod,
IN PUNICODE_STRING pstrLib OPTIONAL,
IN DWORD idThread,
IN int nFilterType,
IN PVOID pfnFilterProc,
IN DWORD dwFlags
);