Index: subsystems/win32/win32k/ntuser/misc.c =================================================================== --- subsystems/win32/win32k/ntuser/misc.c (revision 51681) +++ subsystems/win32/win32k/ntuser/misc.c (working copy) @@ -508,11 +508,6 @@ PCLIENTINFO pci; PTHREADINFO pti = PsGetCurrentThreadWin32Thread(); - if (pti == NULL) - { - /* FIXME - temporary hack for system threads... */ - return NULL; - } /* initialize it */ pti->ppi = ppi = GetW32ProcessInfo(); @@ -526,39 +521,38 @@ } /* update the TEB */ Teb = NtCurrentTeb(); + if(Teb == NULL) + { + pti->pClientInfo = NULL; + return pti; + } + pci = GetWin32ClientInfo(); pti->pClientInfo = pci; - _SEH2_TRY - { - ProbeForWrite( Teb, - sizeof(TEB), - sizeof(ULONG)); - Teb->Win32ThreadInfo = (PW32THREAD) pti; + ProbeForWrite( Teb, + sizeof(TEB), + sizeof(ULONG)); - pci->ppi = ppi; - pci->fsHooks = pti->fsHooks; - if (pti->KeyboardLayout) pci->hKL = pti->KeyboardLayout->hkl; - pci->dwTIFlags = pti->TIF_flags; - /* CI may not have been initialized. */ - if (!pci->pDeskInfo && pti->pDeskInfo) - { - if (!pci->ulClientDelta) pci->ulClientDelta = DesktopHeapGetUserDelta(); + Teb->Win32ThreadInfo = (PW32THREAD) pti; - pci->pDeskInfo = (PVOID)((ULONG_PTR)pti->pDeskInfo - pci->ulClientDelta); - } - if (pti->pcti && pci->pDeskInfo) - pci->pClientThreadInfo = (PVOID)((ULONG_PTR)pti->pcti - pci->ulClientDelta); - else - pci->pClientThreadInfo = NULL; + pci->ppi = ppi; + pci->fsHooks = pti->fsHooks; + if (pti->KeyboardLayout) pci->hKL = pti->KeyboardLayout->hkl; + pci->dwTIFlags = pti->TIF_flags; + /* CI may not have been initialized. */ + if (!pci->pDeskInfo && pti->pDeskInfo) + { + if (!pci->ulClientDelta) pci->ulClientDelta = DesktopHeapGetUserDelta(); + pci->pDeskInfo = (PVOID)((ULONG_PTR)pti->pDeskInfo - pci->ulClientDelta); } - _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) - { - SetLastNtError(_SEH2_GetExceptionCode()); - } - _SEH2_END; + if (pti->pcti && pci->pDeskInfo) + pci->pClientThreadInfo = (PVOID)((ULONG_PTR)pti->pcti - pci->ulClientDelta); + else + pci->pClientThreadInfo = NULL; + return pti; }