/* INCLUDES ******************************************************************/
-#include <w32k.h>
+#include <win32k.h>
#define NDEBUG
#include <debug.h>
}
BOOL FASTCALL
-co_IntDestroyCaret(PW32THREAD Win32Thread)
+co_IntDestroyCaret(PTHREADINFO Win32Thread)
{
PUSER_MESSAGE_QUEUE ThreadQueue;
ThreadQueue = (PUSER_MESSAGE_QUEUE)Win32Thread->MessageQueue;
IntSetCaretBlinkTime(UINT uMSeconds)
{
/* Don't save the new value to the registry! */
- PWINSTATION_OBJECT WinStaObject = PsGetCurrentThreadWin32Thread()->Desktop->WindowStation;
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ PWINSTATION_OBJECT WinStaObject = pti->rpdesk->rpwinstaParent;
/* windows doesn't do this check */
if((uMSeconds < MIN_CARETBLINKRATE) || (uMSeconds > MAX_CARETBLINKRATE))
}
WinStaObject->CaretBlinkRate = uMSeconds;
+ gpsi->dtCaretBlink = uMSeconds;
return TRUE;
}
if(!NT_SUCCESS(Status) || (KeyValuePartialInfo->Type != REG_SZ))
{
NtClose(KeyHandle);
- ExFreePool(KeyValuePartialInfo);
+ ExFreePoolWithTag(KeyValuePartialInfo, TAG_STRING);
return 0;
}
Val = 0;
}
- ExFreePool(KeyValuePartialInfo);
+ ExFreePoolWithTag(KeyValuePartialInfo, TAG_STRING);
NtClose(KeyHandle);
return (UINT)Val;
UINT FASTCALL
IntGetCaretBlinkTime(VOID)
{
+ PTHREADINFO pti;
PWINSTATION_OBJECT WinStaObject;
UINT Ret;
- WinStaObject = PsGetCurrentThreadWin32Thread()->Desktop->WindowStation;
+ pti = PsGetCurrentThreadWin32Thread();
+ WinStaObject = pti->rpdesk->rpwinstaParent;
Ret = WinStaObject->CaretBlinkRate;
if(!Ret)
BOOL FASTCALL
co_IntSetCaretPos(int X, int Y)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if(ThreadQueue->CaretInfo->hWnd)
{
ThreadQueue->CaretInfo->Pos.x = X;
ThreadQueue->CaretInfo->Pos.y = Y;
co_IntSendMessage(ThreadQueue->CaretInfo->hWnd, WM_SYSTIMER, IDCARETTIMER, 0);
- IntSetTimer(ThreadQueue->CaretInfo->hWnd, IDCARETTIMER, IntGetCaretBlinkTime(), NULL, TRUE);
+ IntSetTimer(UserGetWindowObject(ThreadQueue->CaretInfo->hWnd), IDCARETTIMER, IntGetCaretBlinkTime(), NULL, TMRF_SYSTEM);
}
return TRUE;
}
BOOL FASTCALL
IntSwitchCaretShowing(PVOID Info)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if(ThreadQueue->CaretInfo->hWnd)
{
VOID FASTCALL
co_IntDrawCaret(HWND hWnd)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if(ThreadQueue->CaretInfo->hWnd && ThreadQueue->CaretInfo->Visible &&
ThreadQueue->CaretInfo->Showing)
BOOL FASTCALL co_UserHideCaret(PWINDOW_OBJECT Window OPTIONAL)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
if (Window) ASSERT_REFS_CO(Window);
- if(Window && Window->OwnerThread != PsGetCurrentThread())
+ if(Window && Window->pti->pEThread != PsGetCurrentThread())
{
SetLastWin32Error(ERROR_ACCESS_DENIED);
return FALSE;
}
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if(Window && ThreadQueue->CaretInfo->hWnd != Window->hSelf)
{
BOOL FASTCALL co_UserShowCaret(PWINDOW_OBJECT Window OPTIONAL)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
if (Window) ASSERT_REFS_CO(Window);
- if(Window && Window->OwnerThread != PsGetCurrentThread())
+ if(Window && Window->pti->pEThread != PsGetCurrentThread())
{
SetLastWin32Error(ERROR_ACCESS_DENIED);
return FALSE;
}
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if(Window && ThreadQueue->CaretInfo->hWnd != Window->hSelf)
{
{
co_IntSendMessage(ThreadQueue->CaretInfo->hWnd, WM_SYSTIMER, IDCARETTIMER, 0);
}
- IntSetTimer(ThreadQueue->CaretInfo->hWnd, IDCARETTIMER, IntGetCaretBlinkTime(), NULL, TRUE);
+ IntSetTimer(UserGetWindowObject(ThreadQueue->CaretInfo->hWnd), IDCARETTIMER, IntGetCaretBlinkTime(), NULL, TMRF_SYSTEM);
}
return TRUE;
/* SYSCALLS *****************************************************************/
BOOL
-STDCALL
+APIENTRY
NtUserCreateCaret(
HWND hWnd,
HBITMAP hBitmap,
int nHeight)
{
PWINDOW_OBJECT Window;
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
DECLARE_RETURN(BOOL);
RETURN(FALSE);
}
- if(Window->OwnerThread != PsGetCurrentThread())
+ if(Window->pti->pEThread != PsGetCurrentThread())
{
SetLastWin32Error(ERROR_ACCESS_DENIED);
RETURN(FALSE);
}
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if (ThreadQueue->CaretInfo->Visible)
{
}
else
{
+ if (nWidth == 0)
+ {
+ nWidth = UserGetSystemMetrics(SM_CXBORDER);
+ }
+ if (nHeight == 0)
+ {
+ nHeight = UserGetSystemMetrics(SM_CYBORDER);
+ }
ThreadQueue->CaretInfo->Bitmap = (HBITMAP)0;
ThreadQueue->CaretInfo->Size.cx = nWidth;
ThreadQueue->CaretInfo->Size.cy = nHeight;
}
UINT
-STDCALL
+APIENTRY
NtUserGetCaretBlinkTime(VOID)
{
DECLARE_RETURN(UINT);
}
BOOL
-STDCALL
+APIENTRY
NtUserGetCaretPos(
LPPOINT lpPoint)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
NTSTATUS Status;
DECLARE_RETURN(BOOL);
DPRINT("Enter NtUserGetCaretPos\n");
UserEnterShared();
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
Status = MmCopyToCaller(lpPoint, &(ThreadQueue->CaretInfo->Pos), sizeof(POINT));
if(!NT_SUCCESS(Status))
}
BOOL
-STDCALL
+APIENTRY
NtUserShowCaret(HWND hWnd OPTIONAL)
{
PWINDOW_OBJECT Window = NULL;
}
BOOL
-STDCALL
+APIENTRY
NtUserHideCaret(HWND hWnd OPTIONAL)
{
PWINDOW_OBJECT Window = NULL;