13#define INVALID_THREAD_ID ((ULONG)-1)
14#define INVALID_HOTKEY ((UINT)-1)
15#define MOD_KEYS (MOD_CONTROL | MOD_SHIFT | MOD_ALT | MOD_WIN)
16#define MOD_LEFT_RIGHT (MOD_LEFT | MOD_RIGHT)
18#define LANGID_CHINESE_SIMPLIFIED MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED)
19#define LANGID_JAPANESE MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT)
20#define LANGID_KOREAN MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN)
21#define LANGID_CHINESE_TRADITIONAL MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL)
22#define LANGID_NEUTRAL MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL)
26#define VK_DBE_ALPHANUMERIC 0xF0
27#define VK_DBE_KATAKANA 0xF1
28#define VK_DBE_HIRAGANA 0xF2
29#define VK_DBE_SBCSCHAR 0xF3
30#define VK_DBE_DBCSCHAR 0xF4
31#define VK_DBE_ROMAN 0xF5
32#define VK_DBE_NOROMAN 0xF6
33#define VK_DBE_ENTERWORDREGISTERMODE 0xF7
34#define VK_DBE_ENTERCONFIGMODE 0xF8
35#define VK_DBE_FLUSHSTRING 0xF9
36#define VK_DBE_CODEINPUT 0xFA
37#define VK_DBE_NOCODEINPUT 0xFB
38#define VK_DBE_DETERINESTRING 0xFC
39#define VK_DBE_ENTERDLGCONVERSIONMODE 0xFD
115#define IME_CHOTKEY 0x10
116#define IME_JHOTKEY 0x30
117#define IME_KHOTKEY 0x50
118#define IME_THOTKEY 0x70
119#define IME_XHOTKEY 0x90
120 static const LANGID s_array[] =
149 for (pNode = *ppList; pNode; pNode = pNode->
pNext)
153 pNode->
pNext = pHotKey;
163 for (pNode =
pList; pNode; pNode = pNode->
pNext)
180 for (pNode =
pList; pNode; pNode = pNode->
pNext)
208 if (*ppList == pHotKey)
210 *ppList = pHotKey->
pNext;
215 for (pNode = *ppList; pNode; pNode = pNode->
pNext)
217 if (pNode->
pNext == pHotKey)
235 UINT nScore, nMaxScore = 0;
237 for (pNode =
pList; pNode; pNode = pNode->
pNext)
278 if (nMaxScore < nScore)
295 static UINT s_uKeyUpVKey = 0;
414 ERR(
"0x%lX\n", dwAction);
529 if (pOldKL && pOldKL->
hkl != hOldKL)
551 DWORD dwRealCount = 0;
557 if (dwRealCount < dwCount)
569 if (dwRealCount < dwCount)
608 pKL = pWnd->
head.pti->KeyboardLayout;
653 if ((
lParam & 0x80000000) &&
712 ERR(
"!IS_IMM_MODE()\n");
744 if (dwCount < dwRealCount)
760 BOOL bAlphaNumeric, bKatakana, bHiragana, bFullShape, bRoman, bCharCode;
824 ERR(
"!IS_IMM_MODE()\n");
832 pti = pwnd->
head.pti;
874 ERR(
"!IS_IMM_MODE()\n");
883 ppi = ptiCurrent->
ppi;
910 if (!pti || pti->
ppi != ptiCurrent->
ppi)
946 ERR(
"!IS_IMM_MODE()\n");
952 if (pWnd->
head.pti->ppi == pti->
ppi)
979 if (pInfoEx->hkl == pkl->
hkl)
983 ERR(
"!pkl->piiex at %p\n", pkl->
hkl);
987 *pInfoEx = *pkl->
piiex;
992 }
while (pkl != pklHead);
1002 *pInfoEx = *pkl->
piiex;
1007 }
while (pkl != pklHead);
1011 ERR(
"SearchType: %d\n", SearchType);
1031 ERR(
"!IS_IMM_MODE()\n");
1038 ImeInfoEx = *pImeInfoEx;
1053 *pImeInfoEx = ImeInfoEx;
1078 ERR(
"!IS_IMM_MODE()\n");
1088 if (pWnd->
head.pti->ppi == pti->
ppi)
1111 if (pkl->
hkl != pImeInfoEx->hkl)
1119 ERR(
"!pkl->piiex at %p\n", pkl->
hkl);
1124 *pkl->
piiex = *pImeInfoEx;
1127 }
while (pkl != pklHead);
1144 ERR(
"!IS_IMM_MODE()\n");
1151 ImeInfoEx = *pImeInfoEx;
1171 PWND pwndNode, pwndNextOwner, pwndParent, pwndSibling;
1178 for (pwndNode = pwndOwner; ; pwndNode = pwndNextOwner)
1181 if (!pwndNextOwner || pwndNextOwner->
head.pti != pti)
1189 pwndNode = pwndOwner;
1193 if (!pwndParent || pwndOwner != pwndNode)
1199 for (pwndSibling = pwndParent->
spwndChild; pwndSibling; pwndSibling = pwndSibling->
spwndNext)
1201 if (pwndNode->
head.pti != pwndSibling->
head.pti)
1210 if (pwndNode == pwndSibling || (pwndSibling->
style &
WS_CHILD))
1216 pwndNode = pwndSibling;
1228 PWND pwndNode, pwndOwner, pwndLastTopMost =
NULL;
1244 for (pwndOwner = pwndNode; pwndOwner; pwndOwner = pwndOwner->
spwndOwner)
1246 if (pImeWnd == pwndOwner)
1255 pwndLastTopMost = pwndNode;
1258 return pwndLastTopMost;
1265 PWND pwndParent, pwndChild, pwndNode, pwndNext, pwndInsertAfter =
NULL;
1266 PWND pwndInsertAfterSave;
1278 if (pwndInsertBefore)
1280 for (pwndNode = pwndInsertAfter; pwndNode; pwndNode = pwndNode->
spwndNext)
1282 if (pwndNode->
spwndNext == pwndInsertBefore)
1285 if (pwndNode == pImeWnd)
1292 pwndInsertAfter = pwndNode;
1298 for (pwndNode = pwndInsertAfter; pwndNode; pwndNode = pwndNode->
spwndNext)
1304 pwndInsertAfter = pwndNode;
1309 pwndInsertAfterSave = pwndInsertAfter;
1317 pwndChild->
head.pti == pImeWnd->
head.pti)
1320 for (pwndNode = pwndChild; pwndNode; pwndNode = pwndNode->
spwndOwner)
1322 if (pwndNode != pImeWnd)
1331 pwndChild->
ExStyle &= ~WS_EX_TOPMOST;
1333 if (!pwndInsertAfter)
1339 pwndInsertAfter = pwndChild;
1345 pwndChild = pwndNext;
1346 if (pwndChild && pwndChild == pwndInsertAfterSave && pwndInsertAfter)
1362 pwndInsertBefore = pwndOwner;
1372 PWND pImeWnd, pwndFocus, pwndTopLevel, pwndNode, pwndActive;
1379 ERR(
"!IS_IMM_MODE()\n");
1395 for (pwndNode = pwndTopLevel; pwndNode; pwndNode = pwndNode->
spwndOwner)
1399 pwndTopLevel =
NULL;
1409 ptiIme = pImeWnd->
head.pti;
1412 if (!pwndActive || pwndActive != pImeWnd->
spwndOwner)
1454 ObjHead->
pSelf = ObjHead;
1459 pti->
ppi->UserHandleCount++;
1475 pti = pIMC->
head.pti;
1487 pti->
ppi->UserHandleCount--;
1524 pwndChild = pti->
rpdesk->pDeskInfo->spwnd->spwndChild;
1531 if (pWnd && pWnd->
hImc == hIMC)
1573 ERR(
"IME is disabled\n");
1593 if (dwClientImcData)
1622 ERR(
"!IS_IMM_MODE()\n");
1627 if (!dwClientImcData)
1659 if (pIMC && pti != pIMC->
head.pti)
1681 if (pwndTarget->
hImc == hIMC || (bIgnoreNullImc && !pwndTarget->
hImc))
1685 if (pwndTarget == pwndFocus)
1693 if (!bIgnoreNullImc || pWnd->
hImc)
1696 if (pWnd->
hImc != hIMC)
1699 if (pWnd == pwndFocus)
1719 ERR(
"!IS_IMM_MODE()\n");
1741 if (pti->
ppi != ptiIMC->
ppi)
1781 ERR(
"!IS_IMM_MODE()\n");
1808 ERR(
"!IS_IMM_MODE()\n");
1816 ptiIMC = pIMC->
head.pti;
1850 PWND pwnd, pwndOwner, pwndNode;
1856 if (pwnd == pwndTarget || pwnd->
head.pti != ptiTarget ||
IS_WND_MENU(pwnd))
1863 for (pwndOwner = pwnd; pwndOwner; pwndOwner = pwndOwner->
spwndOwner)
1883 if (pwndNode->
head.pti != ptiTarget)
1901 for (; pwndNode; pwndNode = pwndNode->
spwndOwner)
1903 if (pwndNode->
head.pti != ptiTarget)
1950 for (pwndNode = pwndParent; pwndNode; pwndNode = pwndNode->
spwndParent)
2006 pimeui = ((
PIMEWND)pImeWnd)->pimeui;
2033 pimeui = ((
PIMEWND)pImeWnd)->pimeui;
2041 SafeImeUI = *pimeui;
2058 for (pwndNode = pwndTarget; pwndNode; pwndNode = pwndNode->
spwndParent)
2060 if (pwndNode == pwndNode->
head.
rpdesk->pDeskInfo->spwnd)
2078 pimeui = ((
PIMEWND)pImeWnd)->pimeui;
2086 SafeImeUI = *pimeui;
2101 if (pwndNode == pwndTarget)
2110 for (pwndNode = pwndTarget; pwndNode; pwndNode = pwndNode->
spwndOwner)
2120 if (pwndNode == pImeWnd)
2123 if (pwndNode == pImeWnd)
2141 PWND pwndNode, pwndIMC;
2159 if (!pwndNode || pwndIme == pwndNode)
2168 pimeui = ((
PIMEWND)pwndNode)->pimeui;
2169 if (!pimeui || pimeui == (
PIMEUI)-1)
2172 if (pti && pti != pwndNode->
head.pti)
2177 if (pwndNode->
head.pti->ppi != ptiCurrent->
ppi)
2187 SafeImeUI = *pimeui;
2251 SafeImeUI = *pimeui;
2343 ptiIME = pImeWnd->
head.pti;
2353 pimeui = ((
PIMEWND)pImeWnd)->pimeui;
2354 SafeImeUI = *pimeui;
#define InterlockedIncrement
#define InterlockedDecrement
#define UlongToHandle(ul)
#define DBG_DEFAULT_CHANNEL(ch)
_In_ PSCSI_REQUEST_BLOCK _Out_ NTSTATUS _Inout_ BOOLEAN * Retry
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define ERROR_ACCESS_DENIED
#define ValidateHwndNoErr(hwnd)
#define ExAllocatePoolWithTag(hernya, size, tag)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
PUSER_MESSAGE_QUEUE gpqForeground
#define ISITHOOKED(HookId)
#define IME_CMODE_KATAKANA
#define IME_CMODE_HANJACONVERT
#define IME_THOTKEY_IME_NONIME_TOGGLE
#define IACE_IGNORENOCONTEXT
#define MOD_IGNORE_ALL_MODIFIER
#define IME_CHOTKEY_IME_NONIME_TOGGLE
#define IME_HOTKEY_DSWITCH_LAST
#define IME_CMODE_CHARCODE
#define IME_CMODE_ALPHANUMERIC
#define IMN_OPENSTATUSWINDOW
#define IME_PROP_NEED_ALTKEY
#define IME_HOTKEY_DSWITCH_FIRST
#define IMN_CLOSESTATUSWINDOW
#define IME_CMODE_FULLSHAPE
#define IME_PROP_IGNORE_UPKEYS
#define EXCEPTION_EXECUTE_HANDLER
#define WNDS_SERVERSIDEWINDOWPROC
#define UserHMGetHandle(obj)
DWORD NTAPI NtUserNotifyIMEStatus(HWND hwnd, BOOL fOpen, DWORD dwConversion)
BOOL NTAPI NtUserDisableThreadIme(DWORD dwThreadID)
struct _THREADINFO * GetW32ThreadInfo(VOID)
BOOL NTAPI NtUserSetImeInfoEx(PIMEINFOEX pImeInfoEx)
DWORD_PTR NTAPI NtUserQueryInputContext(HIMC hIMC, DWORD dwType)
VOID NTAPI RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING, IN PCWSTR, IN INT)
@ ImeInfoExKeyboardLayout
BOOL NTAPI NtUserGetImeInfoEx(PIMEINFOEX pImeInfoEx, IMEINFOEXCLASS SearchType)
#define ExFreePoolWithTag(_P, _T)
NTSYSAPI NTSTATUS NTAPI ZwQueryDefaultLocale(_In_ BOOLEAN UserProfile, _Out_ PLCID DefaultLocaleId)
#define MAKELCID(lgid, srtid)
HANDLE NTAPI PsGetThreadId(IN PETHREAD Thread)
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
HANDLE NTAPI PsGetThreadProcessId(IN PETHREAD Thread)
LRESULT APIENTRY co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam, LPARAM lParam)
PWINSTATION_OBJECT FASTCALL IntGetProcessWindowStation(HWINSTA *phWinSta OPTIONAL)
VOID FASTCALL UserLeave(VOID)
VOID FASTCALL UserEnterShared(VOID)
VOID FASTCALL UserEnterExclusive(VOID)
static __inline VOID UserDerefObjectCo(PVOID obj)
static __inline VOID UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry)
VOID NTAPI KeDetachProcess(VOID)
VOID NTAPI KeAttachProcess(IN PKPROCESS Process)
#define _SEH2_EXCEPT(...)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define LANGIDFROMLCID(l)
#define STATUS_BUFFER_TOO_SMALL
struct _WINSTATION_OBJECT * rpwinstaParent
struct _CLIENTINFO * pClientInfo
struct tagIMC * spDefaultImc
struct tagKL * KeyboardLayout
struct _WND * spwndDefaultIme
struct _USER_MESSAGE_QUEUE * MessageQueue
BYTE afKeyState[256 *2/8]
struct _WND * spwndParent
ULONG_PTR dwClientImcData
struct tagIMEHOTKEY * pNext
HWND ahwnd[ANYSIZE_ARRAY]
#define RtlZeroMemory(Destination, Length)
#define STATUS_UNSUCCESSFUL
@ SETIMEHOTKEY_INITIALIZE
#define ASSERT_REFS_CO(_obj_)
BOOLEAN co_UserDestroyWindow(PVOID Object)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_writes_opt_ NumCharacters PUSHORT _Inout_ PUSHORT _In_ UCHAR _In_opt_ USHORT LangID
#define IntDereferenceThreadInfo(pti)
#define IntReferenceThreadInfo(pti)
DWORD APIENTRY co_IntImmProcessKey(HWND hWnd, HKL hKL, UINT vKey, LPARAM lParam, DWORD dwHotKeyID)
PWND FASTCALL UserGetDesktopWindow(VOID)
PTHREADINFO gptiForeground
static __inline PVOID DesktopHeapAlloc(IN PDESKTOP Desktop, IN SIZE_T Bytes)
static __inline BOOL DesktopHeapFree(IN PDESKTOP Desktop, IN PVOID lpMem)
BOOL IntFindNonImeRelatedWndOfSameThread(PWND pwndParent, PWND pwndTarget)
static PIMEHOTKEY FASTCALL IntGetImeHotKeyById(PIMEHOTKEY pList, DWORD dwHotKeyId)
#define INVALID_THREAD_ID
VOID FASTCALL IntFreeImeHotKeys(VOID)
#define VK_DBE_ALPHANUMERIC
#define LANGID_CHINESE_SIMPLIFIED
DWORD FASTCALL IntAssociateInputContextEx(PWND pWnd, PIMC pIMC, DWORD dwFlags)
struct tagIMEHOTKEY IMEHOTKEY
BOOL NTAPI NtUserSetImeHotKey(DWORD dwHotKeyId, UINT uModifiers, UINT uVirtualKey, HKL hKL, DWORD dwAction)
PIMEHOTKEY IntGetImeHotKeyByKey(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight, UINT uVirtualKey)
PWND FASTCALL IntGetTopLevelWindow(PWND pwnd)
LRESULT FASTCALL IntSendMessageToUI(PTHREADINFO ptiIME, PIMEUI pimeui, UINT uMsg, WPARAM wParam, LPARAM lParam)
DWORD NTAPI NtUserSetThreadLayoutHandles(HKL hNewKL, HKL hOldKL)
static VOID FASTCALL IntDeleteImeHotKey(PIMEHOTKEY *ppList, PIMEHOTKEY pHotKey)
PVOID AllocInputContextObject(PDESKTOP pDesk, PTHREADINFO pti, SIZE_T Size, PVOID *HandleOwner)
BOOL FASTCALL IntImeCanDestroyDefIME(PWND pImeWnd, PWND pwndTarget)
DWORD NTAPI NtUserGetAppImeLevel(HWND hWnd)
static BOOL APIENTRY IntSetImeHotKey(DWORD dwHotKeyId, UINT uModifiers, UINT uVirtualKey, HKL hKL, DWORD dwAction)
static LANGID FASTCALL IntGetImeHotKeyLangId(DWORD dwHotKeyId)
DWORD FASTCALL UserBuildHimcList(PTHREADINFO pti, DWORD dwCount, HIMC *phList)
BOOL IntDestroyInputContext(PIMC pIMC)
DWORD NTAPI NtUserCheckImeHotKey(UINT uVirtualKey, LPARAM lParam)
VOID FASTCALL IntSendOpenStatusNotify(PTHREADINFO ptiIME, PIMEUI pimeui, PWND pWnd, BOOL bOpen)
BOOL FASTCALL IntCheckImeShowStatus(PWND pwndIme, PTHREADINFO pti)
BOOL NTAPI NtUserSetAppImeLevel(HWND hWnd, DWORD dwLevel)
BOOL FASTCALL UserUpdateInputContext(PIMC pIMC, DWORD dwType, DWORD_PTR dwValue)
BOOL NTAPI NtUserSetImeOwnerWindow(HWND hImeWnd, HWND hwndFocus)
VOID FASTCALL IntCheckImeShowStatusInThread(PWND pImeWnd)
#define VK_DBE_ENTERCONFIGMODE
BOOL NTAPI NtUserDestroyInputContext(HIMC hIMC)
PIMEHOTKEY gpImeHotKeyList
PWND FASTCALL co_IntCreateDefaultImeWindow(PWND pwndTarget, HINSTANCE hInst)
#define VK_DBE_ENTERWORDREGISTERMODE
BOOL NTAPI NtUserGetImeHotKey(DWORD dwHotKeyId, LPUINT lpuModifiers, LPUINT lpuVirtualKey, LPHKL lphKL)
#define LANGID_CHINESE_TRADITIONAL
PIMC FASTCALL UserCreateInputContext(ULONG_PTR dwClientImcData)
BOOL FASTCALL IntImeCanDestroyDefIMEforChild(PWND pImeWnd, PWND pwndTarget)
HIMC FASTCALL IntAssociateInputContext(PWND pWnd, PIMC pImc)
VOID FASTCALL IntImeSetFutureOwner(PWND pImeWnd, PWND pwndOwner)
BOOL FASTCALL IntWantImeWindow(PWND pwndTarget)
BOOL FASTCALL UserGetImeInfoEx(_Inout_ PWINSTATION_OBJECT pWinSta, _Inout_ PIMEINFOEX pInfoEx, _In_ IMEINFOEXCLASS SearchType)
VOID FASTCALL IntImeSetTopMost(PWND pImeWnd, BOOL bTopMost, PWND pwndInsertBefore)
PWND FASTCALL IntGetLastTopMostWindowNoIME(PWND pImeWnd)
BOOLEAN UserDestroyInputContext(PVOID Object)
NTSTATUS NTAPI NtUserBuildHimcList(DWORD dwThreadId, DWORD dwCount, HIMC *phList, LPDWORD pdwCount)
UINT FASTCALL IntGetImeHotKeyLanguageScore(HKL hKL, LANGID HotKeyLangId)
HKL FASTCALL IntGetActiveKeyboardLayout(VOID)
HIMC NTAPI NtUserCreateInputContext(ULONG_PTR dwClientImcData)
BOOL FASTCALL UserSetImeInfoEx(_Inout_ PWINSTATION_OBJECT pWinSta, _Inout_ PIMEINFOEX pImeInfoEx)
VOID FASTCALL IntImeCheckTopmost(PWND pImeWnd)
static VOID FASTCALL UserSetImeConversionKeyState(PTHREADINFO pti, DWORD dwConversion)
VOID FASTCALL IntNotifyImeShowStatus(PWND pImeWnd)
VOID UserFreeInputContext(PVOID Object)
#define VK_DBE_NOCODEINPUT
BOOL NTAPI NtUserUpdateInputContext(HIMC hIMC, DWORD dwType, DWORD_PTR dwValue)
BOOL FASTCALL IntBroadcastImeShowStatusChange(PWND pImeWnd, BOOL bShow)
struct tagIMEHOTKEY * PIMEHOTKEY
PIMEHOTKEY IntCheckImeHotKey(PUSER_MESSAGE_QUEUE MessageQueue, UINT uVirtualKey, LPARAM lParam)
DWORD FASTCALL IntGetImeCompatFlags(PTHREADINFO pti)
DWORD NTAPI NtUserAssociateInputContext(HWND hWnd, HIMC hIMC, DWORD dwFlags)
UINT FASTCALL IntImmProcessKey(PUSER_MESSAGE_QUEUE MessageQueue, PWND pWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static VOID FASTCALL IntAddImeHotKey(PIMEHOTKEY *ppList, PIMEHOTKEY pHotKey)
static PIMEHOTKEY APIENTRY IntGetImeHotKeyByKeyAndLang(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight, UINT uVirtualKey, LANGID TargetLangId)
HKL FASTCALL UserGetKeyboardLayout(DWORD dwThreadId)
BOOL FASTCALL UserPostMessage(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
LRESULT FASTCALL co_IntSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
PTHREADINFO FASTCALL IntTID2PTI(HANDLE id)
PVOID UserGetObject(PUSER_HANDLE_TABLE ht, HANDLE handle, HANDLE_TYPE type)
BOOL FASTCALL UserMarkObjectDestroy(PVOID Object)
PVOID FASTCALL UserAssignmentLock(PVOID *ppvObj, PVOID pvNew)
BOOL FASTCALL UserDereferenceObject(PVOID Object)
BOOL FASTCALL UserDeleteObject(HANDLE h, HANDLE_TYPE type)
PUSER_HANDLE_TABLE gHandleTable
PVOID FASTCALL UserCreateObject(PUSER_HANDLE_TABLE ht, PDESKTOP pDesktop, PTHREADINFO pti, HANDLE *h, HANDLE_TYPE type, ULONG size)
PVOID UserGetObjectNoErr(PUSER_HANDLE_TABLE ht, HANDLE handle, HANDLE_TYPE type)
HANDLE FASTCALL UserGetProp(_In_ PWND Window, _In_ ATOM Atom, _In_ BOOLEAN SystemProp)
VOID FASTCALL IntFreeHwndList(PWINDOWLIST pwlTarget)
VOID FASTCALL IntUnlinkWindow(PWND Wnd)
PWND FASTCALL co_UserCreateWindowEx(CREATESTRUCTW *Cs, PUNICODE_STRING ClassName, PLARGE_STRING WindowName, PVOID acbiBuffer, DWORD dwVer)
PWINDOWLIST FASTCALL IntBuildHwndList(PWND pwnd, DWORD dwFlags, PTHREADINFO pti)
VOID FASTCALL IntLinkHwnd(PWND Wnd, HWND hWndPrev)
static VOID WndSetOwner(_Inout_ PWND pwnd, _In_opt_ PWND pwndOwner)
#define IS_WND_MENU(pWnd)
#define IS_WND_IMELIKE(pWnd)
#define IS_WND_CHILD(pWnd)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid