ReactOS  0.4.15-dev-1197-g8081ba9
misc.c File Reference
#include <win32k.h>
Include dependency graph for misc.c:

Go to the source code of this file.

Functions

 DBG_DEFAULT_CHANNEL (UserMisc)
 
int __cdecl _scwprintf (const wchar_t *format,...)
 
PTHREADINFO FASTCALL IntTID2PTI (HANDLE id)
 
DWORD FASTCALL UserGetLanguageToggle (VOID)
 
USHORT FASTCALL UserGetLanguageID (VOID)
 
HBRUSH FASTCALL GetControlColor (PWND pwndParent, PWND pwnd, HDC hdc, UINT CtlMsg)
 
HBRUSH FASTCALL GetControlBrush (PWND pwnd, HDC hdc, UINT ctlType)
 
HBRUSH APIENTRY NtUserGetControlBrush (HWND hwnd, HDC hdc, UINT ctlType)
 
HBRUSH APIENTRY NtUserGetControlColor (HWND hwndParent, HWND hwnd, HDC hdc, UINT CtlMsg)
 
DWORD_PTR APIENTRY NtUserGetThreadState (DWORD Routine)
 
DWORD APIENTRY NtUserSetThreadState (DWORD Set, DWORD Flags)
 
UINT APIENTRY NtUserGetDoubleClickTime (VOID)
 
BOOL APIENTRY NtUserGetGUIThreadInfo (DWORD idThread, LPGUITHREADINFO lpgui)
 
DWORD APIENTRY NtUserGetGuiResources (HANDLE hProcess, DWORD uiFlags)
 
VOID FASTCALL IntSetWindowState (PWND pWnd, UINT Flag)
 
VOID FASTCALL IntClearWindowState (PWND pWnd, UINT Flag)
 
NTSTATUS FASTCALL IntSafeCopyUnicodeString (PUNICODE_STRING Dest, PUNICODE_STRING Source)
 
NTSTATUS FASTCALL IntSafeCopyUnicodeStringTerminateNULL (PUNICODE_STRING Dest, PUNICODE_STRING Source)
 
void UserDbgAssertThreadInfo (BOOL showCaller)
 
void NTAPI UserDbgPreServiceHook (ULONG ulSyscallId, PULONG_PTR pulArguments)
 
ULONG_PTR NTAPI UserDbgPostServiceHook (ULONG ulSyscallId, ULONG_PTR ulResult)
 
PPROCESSINFO GetW32ProcessInfo (VOID)
 
PTHREADINFO GetW32ThreadInfo (VOID)
 
NTSTATUS GetProcessLuid (IN PETHREAD Thread OPTIONAL, IN PEPROCESS Process OPTIONAL, OUT PLUID Luid)
 

Function Documentation

◆ _scwprintf()

int __cdecl _scwprintf ( const wchar_t format,
  ... 
)

Definition at line 21 of file misc.c.

24 {
25  int len;
26  va_list args;
27 
30  va_end(args);
31 
32  return len;
33 }
Definition: match.c:390
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
#define va_end(ap)
Definition: acmsvcex.h:90
char * va_list
Definition: acmsvcex.h:78
GLenum GLsizei len
Definition: glext.h:6722
_Check_return_ _CRTIMP int __cdecl _vscwprintf(_In_z_ _Printf_format_string_ const wchar_t *_Format, va_list _ArgList)
#define va_start(ap, A)
Definition: acmsvcex.h:91
#define args
Definition: format.c:66

◆ DBG_DEFAULT_CHANNEL()

DBG_DEFAULT_CHANNEL ( UserMisc  )

◆ GetControlBrush()

HBRUSH FASTCALL GetControlBrush ( PWND  pwnd,
HDC  hdc,
UINT  ctlType 
)

Definition at line 171 of file misc.c.

175 {
176  PWND pwndParent = IntGetParent(pwnd);
177  return GetControlColor( pwndParent, pwnd, hdc, ctlType);
178 }
HBRUSH FASTCALL GetControlColor(PWND pwndParent, PWND pwnd, HDC hdc, UINT CtlMsg)
Definition: misc.c:145
HDC hdc
Definition: main.c:9
Definition: ntuser.h:657
PWND FASTCALL IntGetParent(PWND Wnd)
Definition: window.c:185

Referenced by EDIT_NotifyCtlColor(), IntDrawScrollInterior(), NtUserGetControlBrush(), and STATIC_SendWmCtlColorStatic().

◆ GetControlColor()

HBRUSH FASTCALL GetControlColor ( PWND  pwndParent,
PWND  pwnd,
HDC  hdc,
UINT  CtlMsg 
)

Definition at line 145 of file misc.c.

150 {
151  HBRUSH hBrush;
152 
153  if (!pwndParent) pwndParent = pwnd;
154 
155  if ( pwndParent->head.pti->ppi != PsGetCurrentProcessWin32Process())
156  {
157  return (HBRUSH)IntDefWindowProc( pwndParent, CtlMsg, (WPARAM)hdc, (LPARAM)UserHMGetHandle(pwnd), FALSE);
158  }
159 
160  hBrush = (HBRUSH)co_IntSendMessage( UserHMGetHandle(pwndParent), CtlMsg, (WPARAM)hdc, (LPARAM)UserHMGetHandle(pwnd));
161 
162  if (!hBrush || !GreIsHandleValid(hBrush))
163  {
164  hBrush = (HBRUSH)IntDefWindowProc( pwndParent, CtlMsg, (WPARAM)hdc, (LPARAM)UserHMGetHandle(pwnd), FALSE);
165  }
166  return hBrush;
167 }
LRESULT FASTCALL IntDefWindowProc(PWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL Ansi)
Definition: defwnd.c:532
BOOL NTAPI GreIsHandleValid(HGDIOBJ hobj)
Definition: gdiobj.c:1143
UINT_PTR WPARAM
Definition: windef.h:207
#define FALSE
Definition: types.h:117
THRDESKHEAD head
Definition: ntuser.h:659
LONG_PTR LPARAM
Definition: windef.h:208
#define UserHMGetHandle(obj)
Definition: ntuser.h:208
LRESULT FASTCALL co_IntSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
Definition: message.c:1446
HDC hdc
Definition: main.c:9
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
Definition: process.c:1183

Referenced by ButtonWndProc_common(), CB_Paint(), COMBO_PrepareColors(), DEFDLG_Proc(), GB_Paint(), GetControlBrush(), IntFillWindow(), LISTBOX_Paint(), LISTBOX_RepaintItem(), ListBoxWndProc_common(), NtUserGetControlColor(), OB_Paint(), PB_Paint(), and UB_Paint().

◆ GetProcessLuid()

NTSTATUS GetProcessLuid ( IN PETHREAD Thread  OPTIONAL,
IN PEPROCESS Process  OPTIONAL,
OUT PLUID  Luid 
)

Definition at line 787 of file misc.c.

791 {
796 
797  if (Thread && Process)
799 
800  /* If nothing has been specified, use the current thread */
801  if (!Thread && !Process)
803 
804  if (Thread)
805  {
806  /* Use a thread token */
807  ASSERT(!Process);
809  &CopyOnOpen,
810  &EffectiveOnly,
812 
813  /* If we don't have a thread token, use a process token */
814  if (!Token)
816  }
817  if (!Token && Process)
818  {
819  /* Use a process token */
821 
822  /* If we don't have a token, fail */
823  if (!Token)
824  return STATUS_NO_TOKEN;
825  }
826  ASSERT(Token);
827 
828  /* Query the LUID */
830 
831  /* Get rid of the token and return */
833  return Status;
834 }
#define PsGetCurrentThread()
Definition: env_spec_w32.h:81
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
LONG NTSTATUS
Definition: precomp.h:26
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID _Out_ PHANDLE Token
_Out_ PBOOLEAN CopyOnOpen
Definition: psfuncs.h:154
VOID NTAPI ObDereferenceObject(IN PVOID Object)
Definition: obref.c:375
PEPROCESS __stdcall PsGetThreadProcess(_In_ PETHREAD Thread)
NTSTATUS NTAPI SeQueryAuthenticationIdToken(IN PACCESS_TOKEN Token, OUT PLUID LogonId)
Definition: token.c:1752
enum _SECURITY_IMPERSONATION_LEVEL SECURITY_IMPERSONATION_LEVEL
unsigned char BOOLEAN
smooth NULL
Definition: ftsmooth.c:416
_Out_ PBOOLEAN _Out_ PBOOLEAN _Out_ PSECURITY_IMPERSONATION_LEVEL ImpersonationLevel
Definition: psfuncs.h:154
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
Definition: fltkernel.h:2653
#define STATUS_NO_TOKEN
Definition: ntstatus.h:360
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
Status
Definition: gdiplustypes.h:24
PACCESS_TOKEN NTAPI PsReferencePrimaryToken(PEPROCESS Process)
Definition: security.c:440
PACCESS_TOKEN NTAPI PsReferenceImpersonationToken(IN PETHREAD Thread, OUT PBOOLEAN CopyOnOpen, OUT PBOOLEAN EffectiveOnly, OUT PSECURITY_IMPERSONATION_LEVEL ImpersonationLevel)
Definition: security.c:808
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:219
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ BOOLEAN EffectiveOnly
Definition: sefuncs.h:417

Referenced by BuildUserModeWindowStationName(), IntResolveDesktop(), UserEndShutdown(), and UserInitiateShutdown().

◆ GetW32ProcessInfo()

◆ GetW32ThreadInfo()

PTHREADINFO GetW32ThreadInfo ( VOID  )

Definition at line 779 of file misc.c.

780 {
783 }
#define TRUE
Definition: types.h:120
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
Definition: thread.c:805
void UserDbgAssertThreadInfo(BOOL showCaller)
Definition: misc.c:704

Referenced by NtUserGetThreadState().

◆ IntClearWindowState()

VOID FASTCALL IntClearWindowState ( PWND  pWnd,
UINT  Flag 
)

Definition at line 588 of file misc.c.

589 {
590  UINT bit;
591  if (gptiCurrent->ppi != pWnd->head.pti->ppi) return;
592  bit = 1 << LOWORD(Flag);
593  TRACE("CWS %x\n",bit);
594  switch(HIWORD(Flag))
595  {
596  case 0:
597  pWnd->state &= ~bit;
598  break;
599  case 1:
600  pWnd->state2 &= ~bit;
601  break;
602  case 2:
603  pWnd->ExStyle2 &= ~bit;
604  break;
605  }
606 }
DWORD ExStyle2
Definition: ntuser.h:709
PPROCESSINFO ppi
Definition: win32.h:87
THRDESKHEAD head
Definition: ntuser.h:659
PTHREADINFO gptiCurrent
Definition: ntuser.c:15
#define TRACE(s)
Definition: solgame.cpp:4
Definition: xml2sdb.h:79
DWORD state
Definition: ntuser.h:665
unsigned int UINT
Definition: ndis.h:50
#define HIWORD(l)
Definition: typedefs.h:247
DWORD state2
Definition: ntuser.h:666
#define LOWORD(l)
Definition: pedump.c:82

Referenced by NtUserCallHwndParam().

◆ IntSafeCopyUnicodeString()

NTSTATUS FASTCALL IntSafeCopyUnicodeString ( PUNICODE_STRING  Dest,
PUNICODE_STRING  Source 
)

Definition at line 609 of file misc.c.

611 {
613  PWSTR Src;
614 
615  Status = MmCopyFromCaller(Dest, Source, sizeof(UNICODE_STRING));
616  if(!NT_SUCCESS(Status))
617  {
618  return Status;
619  }
620 
621  if(Dest->Length > 0x4000)
622  {
623  return STATUS_UNSUCCESSFUL;
624  }
625 
626  Src = Dest->Buffer;
627  Dest->Buffer = NULL;
628  Dest->MaximumLength = Dest->Length;
629 
630  if(Dest->Length > 0 && Src)
631  {
633  if(!Dest->Buffer)
634  {
635  return STATUS_NO_MEMORY;
636  }
637 
638  Status = MmCopyFromCaller(Dest->Buffer, Src, Dest->Length);
639  if(!NT_SUCCESS(Status))
640  {
642  Dest->Buffer = NULL;
643  return Status;
644  }
645 
646 
647  return STATUS_SUCCESS;
648  }
649 
650  /* String is empty */
651  return STATUS_SUCCESS;
652 }
USHORT MaximumLength
Definition: env_spec_w32.h:370
uint16_t * PWSTR
Definition: typedefs.h:56
LONG NTSTATUS
Definition: precomp.h:26
#define MmCopyFromCaller
Definition: polytest.cpp:29
#define TAG_STRING
Definition: oslist.h:22
smooth NULL
Definition: ftsmooth.c:416
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
Status
Definition: gdiplustypes.h:24
#define STATUS_NO_MEMORY
Definition: ntstatus.h:260
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3167
#define ExFreePoolWithTag(_P, _T)
Definition: module.h:1099
return STATUS_SUCCESS
Definition: btrfs.c:3014

◆ IntSafeCopyUnicodeStringTerminateNULL()

NTSTATUS FASTCALL IntSafeCopyUnicodeStringTerminateNULL ( PUNICODE_STRING  Dest,
PUNICODE_STRING  Source 
)

Definition at line 655 of file misc.c.

657 {
659  PWSTR Src;
660 
661  Status = MmCopyFromCaller(Dest, Source, sizeof(UNICODE_STRING));
662  if(!NT_SUCCESS(Status))
663  {
664  return Status;
665  }
666 
667  if(Dest->Length > 0x4000)
668  {
669  return STATUS_UNSUCCESSFUL;
670  }
671 
672  Src = Dest->Buffer;
673  Dest->Buffer = NULL;
674  Dest->MaximumLength = 0;
675 
676  if(Dest->Length > 0 && Src)
677  {
678  Dest->MaximumLength = Dest->Length + sizeof(WCHAR);
680  if(!Dest->Buffer)
681  {
682  return STATUS_NO_MEMORY;
683  }
684 
685  Status = MmCopyFromCaller(Dest->Buffer, Src, Dest->Length);
686  if(!NT_SUCCESS(Status))
687  {
689  Dest->Buffer = NULL;
690  return Status;
691  }
692 
693  /* Make sure the string is null-terminated */
694  Src = (PWSTR)((PBYTE)Dest->Buffer + Dest->Length);
695  *Src = L'\0';
696 
697  return STATUS_SUCCESS;
698  }
699 
700  /* String is empty */
701  return STATUS_SUCCESS;
702 }
USHORT MaximumLength
Definition: env_spec_w32.h:370
uint16_t * PWSTR
Definition: typedefs.h:56
LONG NTSTATUS
Definition: precomp.h:26
#define MmCopyFromCaller
Definition: polytest.cpp:29
#define TAG_STRING
Definition: oslist.h:22
smooth NULL
Definition: ftsmooth.c:416
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
Status
Definition: gdiplustypes.h:24
static const WCHAR L[]
Definition: oid.c:1250
#define STATUS_NO_MEMORY
Definition: ntstatus.h:260
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3167
#define ExFreePoolWithTag(_P, _T)
Definition: module.h:1099
return STATUS_SUCCESS
Definition: btrfs.c:3014
BYTE * PBYTE
Definition: pedump.c:66

Referenced by InitThreadCallback(), and NtUserRegisterWindowMessage().

◆ IntSetWindowState()

VOID FASTCALL IntSetWindowState ( PWND  pWnd,
UINT  Flag 
)

Definition at line 567 of file misc.c.

568 {
569  UINT bit;
570  if (gptiCurrent->ppi != pWnd->head.pti->ppi) return;
571  bit = 1 << LOWORD(Flag);
572  TRACE("SWS %x\n",bit);
573  switch(HIWORD(Flag))
574  {
575  case 0:
576  pWnd->state |= bit;
577  break;
578  case 1:
579  pWnd->state2 |= bit;
580  break;
581  case 2:
582  pWnd->ExStyle2 |= bit;
583  break;
584  }
585 }
DWORD ExStyle2
Definition: ntuser.h:709
PPROCESSINFO ppi
Definition: win32.h:87
THRDESKHEAD head
Definition: ntuser.h:659
PTHREADINFO gptiCurrent
Definition: ntuser.c:15
#define TRACE(s)
Definition: solgame.cpp:4
Definition: xml2sdb.h:79
DWORD state
Definition: ntuser.h:665
unsigned int UINT
Definition: ndis.h:50
#define HIWORD(l)
Definition: typedefs.h:247
DWORD state2
Definition: ntuser.h:666
#define LOWORD(l)
Definition: pedump.c:82

Referenced by NtUserCallHwndParam().

◆ IntTID2PTI()

PTHREADINFO FASTCALL IntTID2PTI ( HANDLE  id)

Definition at line 41 of file misc.c.

42 {
45  PTHREADINFO pti;
47  if (!NT_SUCCESS(Status))
48  {
49  return NULL;
50  }
52  {
54  return NULL;
55  }
57  if (!pti)
58  {
60  return NULL;
61  }
62  // Validate and verify!
63  _SEH2_TRY
64  {
65  if (pti->TIF_flags & TIF_INCLEANUP) pti = NULL;
66  if (pti && !(pti->TIF_flags & TIF_GUITHREADINITIALIZED)) pti = NULL;
67  if (PsGetThreadId(Thread) != id) pti = NULL;
68  }
70  {
71  pti = NULL;
72  }
73  _SEH2_END
75  return pti;
76 }
PVOID NTAPI PsGetThreadWin32Thread(IN PETHREAD Thread)
Definition: thread.c:795
NTSTATUS NTAPI PsLookupThreadByThreadId(IN HANDLE ThreadId, OUT PETHREAD *Thread)
Definition: thread.c:643
FLONG TIF_flags
Definition: win32.h:94
LONG NTSTATUS
Definition: precomp.h:26
VOID NTAPI ObDereferenceObject(IN PVOID Object)
Definition: obref.c:375
_SEH2_TRY
Definition: create.c:4226
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
#define TIF_GUITHREADINITIALIZED
Definition: ntuser.h:264
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
Definition: fltkernel.h:2653
Status
Definition: gdiplustypes.h:24
HANDLE NTAPI PsGetThreadId(IN PETHREAD Thread)
Definition: thread.c:705
_SEH2_END
Definition: create.c:4400
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
BOOLEAN NTAPI PsIsThreadTerminating(IN PETHREAD Thread)
Definition: thread.c:868
#define TIF_INCLEANUP
Definition: ntuser.h:240

Referenced by NtUserAttachThreadInput(), NtUserGetGUIThreadInfo(), NtUserGetThreadDesktop(), and NtUserSetWindowsHookEx().

◆ NtUserGetControlBrush()

HBRUSH APIENTRY NtUserGetControlBrush ( HWND  hwnd,
HDC  hdc,
UINT  ctlType 
)

Definition at line 182 of file misc.c.

186 {
187  PWND pwnd;
188  HBRUSH hBrush = NULL;
189 
191  if ( (pwnd = UserGetWindowObject(hwnd)) &&
192  ((ctlType - WM_CTLCOLORMSGBOX) < CTLCOLOR_MAX) &&
193  hdc )
194  {
195  hBrush = GetControlBrush(pwnd, hdc, ctlType);
196  }
197  UserLeave();
198  return hBrush;
199 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
smooth NULL
Definition: ftsmooth.c:416
#define WM_CTLCOLORMSGBOX
Definition: winuser.h:1748
PWND FASTCALL UserGetWindowObject(HWND hWnd)
Definition: window.c:103
VOID FASTCALL UserEnterExclusive(VOID)
Definition: ntuser.c:247
HDC hdc
Definition: main.c:9
#define CTLCOLOR_MAX
Definition: winuser.h:948
Definition: ntuser.h:657
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:255
HBRUSH FASTCALL GetControlBrush(PWND pwnd, HDC hdc, UINT ctlType)
Definition: misc.c:171

Referenced by GetControlBrush().

◆ NtUserGetControlColor()

HBRUSH APIENTRY NtUserGetControlColor ( HWND  hwndParent,
HWND  hwnd,
HDC  hdc,
UINT  CtlMsg 
)

Definition at line 206 of file misc.c.

211 {
212  PWND pwnd, pwndParent = NULL;
213  HBRUSH hBrush = NULL;
214 
216  if ( (pwnd = UserGetWindowObject(hwnd)) &&
217  ((CtlMsg - WM_CTLCOLORMSGBOX) < CTLCOLOR_MAX) &&
218  hdc )
219  {
220  if (hwndParent) pwndParent = UserGetWindowObject(hwndParent);
221  hBrush = GetControlColor( pwndParent, pwnd, hdc, CtlMsg);
222  }
223  UserLeave();
224  return hBrush;
225 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
HBRUSH FASTCALL GetControlColor(PWND pwndParent, PWND pwnd, HDC hdc, UINT CtlMsg)
Definition: misc.c:145
smooth NULL
Definition: ftsmooth.c:416
static HWND hwndParent
Definition: cryptui.c:300
#define WM_CTLCOLORMSGBOX
Definition: winuser.h:1748
PWND FASTCALL UserGetWindowObject(HWND hWnd)
Definition: window.c:103
VOID FASTCALL UserEnterExclusive(VOID)
Definition: ntuser.c:247
HDC hdc
Definition: main.c:9
#define CTLCOLOR_MAX
Definition: winuser.h:948
Definition: ntuser.h:657
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:255

Referenced by GetControlColor().

◆ NtUserGetDoubleClickTime()

UINT APIENTRY NtUserGetDoubleClickTime ( VOID  )

Definition at line 354 of file misc.c.

355 {
356  UINT Result;
357 
358  TRACE("Enter NtUserGetDoubleClickTime\n");
359  UserEnterShared();
360 
361  // FIXME: Check if this works on non-interactive winsta
363 
364  TRACE("Leave NtUserGetDoubleClickTime, ret=%u\n", Result);
365  UserLeave();
366  return Result;
367 }
VOID FASTCALL UserEnterShared(VOID)
Definition: ntuser.c:241
INT iDblClickTime
Definition: sysparams.h:90
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
#define TRACE(s)
Definition: solgame.cpp:4
SPIVALUES gspv
Definition: sysparams.c:17
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:255
unsigned int UINT
Definition: ndis.h:50

Referenced by GetDoubleClickTime().

◆ NtUserGetGuiResources()

DWORD APIENTRY NtUserGetGuiResources ( HANDLE  hProcess,
DWORD  uiFlags 
)

Definition at line 503 of file misc.c.

506 {
508  PPROCESSINFO W32Process;
510  DWORD Ret = 0;
512 
513  TRACE("Enter NtUserGetGuiResources\n");
514  UserEnterShared();
515 
518  *PsProcessType,
520  (PVOID*)&Process,
521  NULL);
522 
523  if(!NT_SUCCESS(Status))
524  {
526  RETURN( 0);
527  }
528 
529  W32Process = (PPROCESSINFO)Process->Win32Process;
530  if(!W32Process)
531  {
534  RETURN( 0);
535  }
536 
537  switch(uiFlags)
538  {
539  case GR_GDIOBJECTS:
540  {
541  Ret = (DWORD)W32Process->GDIHandleCount;
542  break;
543  }
544  case GR_USEROBJECTS:
545  {
546  Ret = (DWORD)W32Process->UserHandleCount;
547  break;
548  }
549  default:
550  {
552  break;
553  }
554  }
555 
557 
558  RETURN( Ret);
559 
560 CLEANUP:
561  TRACE("Leave NtUserGetGuiResources, ret=%lu\n",_ret_);
562  UserLeave();
563  END_CLEANUP;
564 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
VOID FASTCALL UserEnterShared(VOID)
Definition: ntuser.c:241
#define CLEANUP
Definition: ntuser.h:5
#define PROCESS_QUERY_INFORMATION
Definition: pstypes.h:158
LONG NTSTATUS
Definition: precomp.h:26
struct _PROCESSINFO * PPROCESSINFO
Definition: ntwin32.h:5
_In_ BOOL _In_ HANDLE hProcess
Definition: mapping.h:70
KPROCESSOR_MODE NTAPI ExGetPreviousMode(VOID)
Definition: sysinfo.c:3066
VOID NTAPI ObDereferenceObject(IN PVOID Object)
Definition: obref.c:375
#define RETURN(x)
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
Definition: obref.c:496
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
unsigned long DWORD
Definition: ntddk_ex.h:95
#define DECLARE_RETURN(type)
Definition: ntuser.h:3
Status
Definition: gdiplustypes.h:24
VOID FASTCALL SetLastNtError(NTSTATUS Status)
Definition: error.c:36
static DWORD
Definition: misc.c:47
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:255
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:219
POBJECT_TYPE PsProcessType
Definition: process.c:20
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
Definition: error.c:27
#define END_CLEANUP
Definition: ntuser.h:6

Referenced by GetGuiResources().

◆ NtUserGetGUIThreadInfo()

BOOL APIENTRY NtUserGetGUIThreadInfo ( DWORD  idThread,
LPGUITHREADINFO  lpgui 
)

Definition at line 371 of file misc.c.

374 {
376  PTHRDCARETINFO CaretInfo;
377  GUITHREADINFO SafeGui;
379  PUSER_MESSAGE_QUEUE MsgQueue;
380  PTHREADINFO W32Thread, pti;
381 
383 
384  TRACE("Enter NtUserGetGUIThreadInfo\n");
385  UserEnterShared();
386 
387  Status = MmCopyFromCaller(&SafeGui, lpgui, sizeof(DWORD));
388  if(!NT_SUCCESS(Status))
389  {
391  RETURN( FALSE);
392  }
393 
394  if(SafeGui.cbSize != sizeof(GUITHREADINFO))
395  {
397  RETURN( FALSE);
398  }
399 
400  if (idThread)
401  {
403 
404  // Validate Tread ID
405  W32Thread = IntTID2PTI((HANDLE)(DWORD_PTR)idThread);
406 
407  if ( !W32Thread )
408  {
410  RETURN( FALSE);
411  }
412 
413  Desktop = W32Thread->rpdesk;
414 
415  // Check Desktop and it must be the same as current.
416  if ( !Desktop || Desktop != pti->rpdesk )
417  {
419  RETURN( FALSE);
420  }
421 
422  if ( W32Thread->MessageQueue )
423  MsgQueue = W32Thread->MessageQueue;
424  else
425  {
426  if ( Desktop ) MsgQueue = Desktop->ActiveMessageQueue;
427  }
428  }
429  else
430  { /* Get the foreground thread */
431  /* FIXME: Handle NULL queue properly? */
432  MsgQueue = IntGetFocusMessageQueue();
433  if(!MsgQueue)
434  {
436  RETURN( FALSE);
437  }
438  }
439 
440  CaretInfo = &MsgQueue->CaretInfo;
441 
442  SafeGui.flags = (CaretInfo->Visible ? GUI_CARETBLINKING : 0);
443 /*
444  if (W32Thread->pMenuState->pGlobalPopupMenu)
445  {
446  SafeGui.flags |= GUI_INMENUMODE;
447 
448  if (W32Thread->pMenuState->pGlobalPopupMenu->spwndNotify)
449  SafeGui.hwndMenuOwner = UserHMGetHandle(W32Thread->pMenuState->pGlobalPopupMenu->spwndNotify);
450 
451  if (W32Thread->pMenuState->pGlobalPopupMenu->fHasMenuBar)
452  {
453  if (W32Thread->pMenuState->pGlobalPopupMenu->fIsSysMenu)
454  {
455  SafeGui.flags |= GUI_SYSTEMMENUMODE;
456  }
457  }
458  else
459  {
460  SafeGui.flags |= GUI_POPUPMENUMODE;
461  }
462  }
463  */
464  SafeGui.hwndMenuOwner = MsgQueue->MenuOwner;
465 
466  if (MsgQueue->MenuOwner)
467  SafeGui.flags |= GUI_INMENUMODE | MsgQueue->MenuState;
468 
469  if (MsgQueue->MoveSize)
470  SafeGui.flags |= GUI_INMOVESIZE;
471 
472  /* FIXME: Add flag GUI_16BITTASK */
473 
474  SafeGui.hwndActive = MsgQueue->spwndActive ? UserHMGetHandle(MsgQueue->spwndActive) : 0;
475  SafeGui.hwndFocus = MsgQueue->spwndFocus ? UserHMGetHandle(MsgQueue->spwndFocus) : 0;
476  SafeGui.hwndCapture = MsgQueue->spwndCapture ? UserHMGetHandle(MsgQueue->spwndCapture) : 0;
477  SafeGui.hwndMoveSize = MsgQueue->MoveSize;
478  SafeGui.hwndCaret = CaretInfo->hWnd;
479 
480  SafeGui.rcCaret.left = CaretInfo->Pos.x;
481  SafeGui.rcCaret.top = CaretInfo->Pos.y;
482  SafeGui.rcCaret.right = SafeGui.rcCaret.left + CaretInfo->Size.cx;
483  SafeGui.rcCaret.bottom = SafeGui.rcCaret.top + CaretInfo->Size.cy;
484 
485  Status = MmCopyToCaller(lpgui, &SafeGui, sizeof(GUITHREADINFO));
486  if(!NT_SUCCESS(Status))
487  {
489  RETURN( FALSE);
490  }
491 
492  RETURN( TRUE);
493 
494 CLEANUP:
495  TRACE("Leave NtUserGetGUIThreadInfo, ret=%u\n",_ret_);
496  UserLeave();
497  END_CLEANUP;
498 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
HWND hwndMenuOwner
Definition: winable.h:75
VOID FASTCALL UserEnterShared(VOID)
Definition: ntuser.c:241
#define CLEANUP
Definition: ntuser.h:5
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
#define TRUE
Definition: types.h:120
DWORD cbSize
Definition: winable.h:70
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
Definition: thread.c:805
LONG NTSTATUS
Definition: precomp.h:26
LONG top
Definition: windef.h:307
HWND hwndActive
Definition: winable.h:72
#define MmCopyFromCaller
Definition: polytest.cpp:29
#define MmCopyToCaller(x, y, z)
Definition: mmcopy.h:19
#define GUI_CARETBLINKING
Definition: winable.h:27
LONG left
Definition: windef.h:306
LONG right
Definition: windef.h:308
PUSER_MESSAGE_QUEUE FASTCALL IntGetFocusMessageQueue(VOID)
Definition: desktop.c:1271
struct _DESKTOP * rpdesk
Definition: win32.h:91
#define RETURN(x)
HWND hwndCaret
Definition: winable.h:77
PTHREADINFO FASTCALL IntTID2PTI(HANDLE id)
Definition: misc.c:41
#define FALSE
Definition: types.h:117
#define ERROR_ACCESS_DENIED
Definition: compat.h:97
HWND hwndFocus
Definition: winable.h:73
unsigned char BOOLEAN
LONG cx
Definition: windef.h:334
static CHAR Desktop[MAX_PATH]
Definition: dem.c:256
#define UserHMGetHandle(obj)
Definition: ntuser.h:208
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
unsigned long DWORD
Definition: ntddk_ex.h:95
#define DECLARE_RETURN(type)
Definition: ntuser.h:3
#define GUI_INMOVESIZE
Definition: winable.h:28
Status
Definition: gdiplustypes.h:24
HWND hwndMoveSize
Definition: winable.h:76
THRDCARETINFO CaretInfo
Definition: msgqueue.h:92
uint32_t DWORD_PTR
Definition: typedefs.h:65
VOID FASTCALL SetLastNtError(NTSTATUS Status)
Definition: error.c:36
#define GUI_INMENUMODE
Definition: winable.h:29
struct _USER_MESSAGE_QUEUE * MessageQueue
Definition: win32.h:88
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:255
LONG bottom
Definition: windef.h:309
LONG cy
Definition: windef.h:335
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
Definition: error.c:27
HWND hwndCapture
Definition: winable.h:74
#define END_CLEANUP
Definition: ntuser.h:6

Referenced by GetGUIThreadInfo().

◆ NtUserGetThreadState()

DWORD_PTR APIENTRY NtUserGetThreadState ( DWORD  Routine)

Definition at line 231 of file misc.c.

233 {
234  DWORD_PTR ret = 0;
235 
236  TRACE("Enter NtUserGetThreadState\n");
237  if (Routine != THREADSTATE_GETTHREADINFO)
238  {
239  UserEnterShared();
240  }
241  else
242  {
244  }
245 
246  switch (Routine)
247  {
250  break;
253  break;
255  /* FIXME: Should use UserEnterShared */
257  break;
259  ret = (DWORD_PTR)GetW32ThreadInfo()->pDeskInfo->hProgmanWindow;
260  break;
262  ret = (DWORD_PTR)GetW32ThreadInfo()->pDeskInfo->hTaskManWindow;
263  break;
266  break;
268  {
270  ((PTHREADINFO)PsGetCurrentThreadWin32Thread())->pusmCurrent;
271  TRACE("THREADSTATE_INSENDMESSAGE\n");
272 
273  ret = ISMEX_NOSEND;
274  if (Message)
275  {
276  if (Message->ptiSender)
277  ret = ISMEX_SEND;
278  else
279  {
280  if (Message->CompletionCallback)
281  ret = ISMEX_CALLBACK;
282  else
283  ret = ISMEX_NOTIFY;
284  }
285  /* If ReplyMessage */
286  if (Message->QS_Flags & QS_SMRESULT) ret |= ISMEX_REPLIED;
287  }
288 
289  break;
290  }
293  break;
294 
296  {
297  PTHREADINFO pti;
299  pti->pcti->timeLastRead = EngGetTickCount32();
300  break;
301  }
302 
305  break;
306 
309  break;
311  ret = (DWORD_PTR) (GetW32ThreadInfo()->MessageQueue->CursorObject ?
312  UserHMGetHandle(GetW32ThreadInfo()->MessageQueue->CursorObject) : 0);
313  break;
316  break;
317  }
318 
319  TRACE("Leave NtUserGetThreadState, ret=%lu\n", ret);
320  UserLeave();
321 
322  return ret;
323 }
PUSER_MESSAGE_QUEUE gpqForeground
Definition: focus.c:12
VOID FASTCALL UserEnterShared(VOID)
Definition: ntuser.c:241
HWND FASTCALL IntGetThreadFocusWindow(VOID)
Definition: focus.c:39
#define DWORD_PTR
Definition: treelist.c:76
PTHREADINFO GetW32ThreadInfo(VOID)
Definition: misc.c:779
HWND FASTCALL UserGetActiveWindow(VOID)
Definition: focus.c:1311
#define EngGetTickCount32()
Definition: eng.h:43
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
Definition: thread.c:805
LPARAM FASTCALL MsqGetMessageExtraInfo(VOID)
Definition: msgqueue.c:2512
#define QS_TIMER
Definition: winuser.h:893
#define QS_SMRESULT
Definition: undocuser.h:93
DWORD APIENTRY IntGetQueueStatus(DWORD Changes)
Definition: message.c:2086
#define QS_SENDMESSAGE
Definition: winuser.h:892
struct _CLIENTTHREADINFO * pcti
Definition: win32.h:90
#define QS_INPUT
Definition: winuser.h:881
VOID FASTCALL UserEnterExclusive(VOID)
Definition: ntuser.c:247
#define UserHMGetHandle(obj)
Definition: ntuser.h:208
#define TRACE(s)
Definition: solgame.cpp:4
struct _THREADINFO * PTHREADINFO
Definition: ntwin32.h:6
CHAR Message[80]
Definition: alive.c:5
int ret
uint32_t DWORD_PTR
Definition: typedefs.h:65
HWND APIENTRY IntGetCapture(VOID)
Definition: focus.c:1322
struct _USER_MESSAGE_QUEUE * MessageQueue
Definition: win32.h:88
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:255
#define QS_POSTMESSAGE
Definition: winuser.h:888
#define QS_MOUSEBUTTON
Definition: winuser.h:885
#define QS_PAINT
Definition: winuser.h:887
#define QS_KEY
Definition: winuser.h:883
struct _DESKTOPINFO * pDeskInfo
Definition: win32.h:92
#define LOWORD(l)
Definition: pedump.c:82

Referenced by DIALOG_CreateIndirect(), GetActiveWindow(), GetCapture(), GetCursor(), GetFocus(), GetInputState(), GetMessageTime(), GetProgmanWindow(), GetTaskmanWindow(), GetW32ThreadInfo(), InSendMessage(), InSendMessageEx(), IsGUIThread(), NtUserxGetMessageExtraInfo(), and PeekMessageWorker().

◆ NtUserSetThreadState()

DWORD APIENTRY NtUserSetThreadState ( DWORD  Set,
DWORD  Flags 
)

Definition at line 327 of file misc.c.

330 {
331  PTHREADINFO pti;
332  DWORD Ret = 0;
333  // Test the only flags user can change.
338  if (pti->MessageQueue)
339  {
340  Ret = pti->MessageQueue->QF_flags; // Get the queue flags.
341  if (Set)
342  pti->MessageQueue->QF_flags |= (Set&Flags); // Set the queue flags.
343  else
344  {
345  if (Flags) pti->MessageQueue->QF_flags &= ~Flags; // Clr the queue flags.
346  }
347  }
348  UserLeave();
349  return Ret;
350 }
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
Definition: thread.c:805
#define QF_TABSWITCHING
Definition: msgqueue.h:101
#define QF_DIALOGACTIVE
Definition: msgqueue.h:106
static BOOL Set
Definition: pageheap.c:10
#define QF_FF10STATUS
Definition: msgqueue.h:98
#define QF_FMENUSTATUS
Definition: msgqueue.h:97
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
VOID FASTCALL UserEnterExclusive(VOID)
Definition: ntuser.c:247
unsigned long DWORD
Definition: ntddk_ex.h:95
struct _USER_MESSAGE_QUEUE * MessageQueue
Definition: win32.h:88
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:255
#define QF_FMENUSTATUSBREAK
Definition: msgqueue.h:96

Referenced by DEFDLG_Proc().

◆ UserDbgAssertThreadInfo()

void UserDbgAssertThreadInfo ( BOOL  showCaller)

Definition at line 704 of file misc.c.

705 {
706  PTEB Teb;
707  PPROCESSINFO ppi;
708  PCLIENTINFO pci;
709  PTHREADINFO pti;
710 
713  Teb = NtCurrentTeb();
714  pci = GetWin32ClientInfo();
715 
716  ASSERT(Teb);
717  ASSERT(pti);
718  ASSERT(pti->ppi == ppi);
719  ASSERT(pti->pClientInfo == pci);
720  ASSERT(Teb->Win32ThreadInfo == pti);
721  ASSERT(pci->ppi == ppi);
722  ASSERT(pci->fsHooks == pti->fsHooks);
724  if (pti->pcti && pci->pDeskInfo)
725  ASSERT(pci->pClientThreadInfo == (PVOID)((ULONG_PTR)pti->pcti - pci->ulClientDelta));
726  //if (pti->pcti && IsListEmpty(&pti->SentMessagesListHead))
727  // ASSERT((pti->pcti->fsChangeBits & QS_SENDMESSAGE) == 0);
728  if (pti->KeyboardLayout)
729  ASSERT(pci->hKL == pti->KeyboardLayout->hkl);
730  if(pti->rpdesk != NULL)
731  ASSERT(pti->pDeskInfo == pti->rpdesk->pDeskInfo);
732 
733  /*too bad we still get this assertion*/
734 
735  // Why? Not all flags are passed to the user and doing so could crash the system........
736 
737  /* ASSERT(pci->dwTIFlags == pti->TIF_flags); */
738 /* if(pci->dwTIFlags != pti->TIF_flags)
739  {
740  ERR("pci->dwTIFlags(0x%x) doesn't match pti->TIF_flags(0x%x)\n", pci->dwTIFlags, pti->TIF_flags);
741  if(showCaller)
742  {
743  DbgPrint("Caller:\n");
744  KeRosDumpStackFrames(NULL, 10);
745  }
746  pci->dwTIFlags = pti->TIF_flags;
747  }
748 */
749 }
ULONG fsHooks
Definition: ntuser.h:296
PVOID Win32ThreadInfo
Definition: compat.h:594
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
Definition: thread.c:805
#define GetWin32ClientInfo()
Definition: ntuser.h:320
struct _DESKTOP * rpdesk
Definition: win32.h:91
PCLIENTTHREADINFO pClientThreadInfo
Definition: ntuser.h:300
PPROCESSINFO ppi
Definition: win32.h:87
uint32_t ULONG_PTR
Definition: typedefs.h:65
smooth NULL
Definition: ftsmooth.c:416
struct _CLIENTTHREADINFO * pcti
Definition: win32.h:90
ULONG_PTR ulClientDelta
Definition: ntuser.h:294
ULONG fsHooks
Definition: win32.h:116
struct _CLIENTINFO * pClientInfo
Definition: win32.h:93
HKL hKL
Definition: ntuser.h:307
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
PDESKTOPINFO pDeskInfo
Definition: ntuser.h:293
struct tagKL * KeyboardLayout
Definition: win32.h:89
Definition: compat.h:583
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
Definition: psfuncs.h:420
static __inline ULONG_PTR DesktopHeapGetUserDelta(VOID)
Definition: desktop.h:291
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
Definition: process.c:1183
struct _DESKTOPINFO * pDeskInfo
Definition: win32.h:92
struct _PROCESSINFO * ppi
Definition: ntuser.h:314

Referenced by GetW32ThreadInfo(), UserDbgPostServiceHook(), and UserDbgPreServiceHook().

◆ UserDbgPostServiceHook()

ULONG_PTR NTAPI UserDbgPostServiceHook ( ULONG  ulSyscallId,
ULONG_PTR  ulResult 
)

Definition at line 760 of file misc.c.

761 {
762  /* Make sure that the first syscall is NtUserInitialize */
763  /* too bad this fails */
764  // ASSERT(gpepCSRSS);
765 
767 
768  return ulResult;
769 }
#define TRUE
Definition: types.h:120
void UserDbgAssertThreadInfo(BOOL showCaller)
Definition: misc.c:704

◆ UserDbgPreServiceHook()

void NTAPI UserDbgPreServiceHook ( ULONG  ulSyscallId,
PULONG_PTR  pulArguments 
)

Definition at line 753 of file misc.c.

754 {
756 }
#define FALSE
Definition: types.h:117
void UserDbgAssertThreadInfo(BOOL showCaller)
Definition: misc.c:704

◆ UserGetLanguageID()

USHORT FASTCALL UserGetLanguageID ( VOID  )

Definition at line 96 of file misc.c.

97 {
99  OBJECT_ATTRIBUTES ObAttr;
100 // http://support.microsoft.com/kb/324097
104  UNICODE_STRING Language;
105 
106  RtlInitUnicodeString( &Language,
107  L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Nls\\Language");
108 
110  &Language,
112  NULL,
113  NULL);
114 
115  if ( NT_SUCCESS(ZwOpenKey(&KeyHandle, KEY_READ, &ObAttr)))
116  {
118  if ( pKeyInfo )
119  {
120  RtlInitUnicodeString(&Language, L"Default");
121 
122  if ( NT_SUCCESS(ZwQueryValueKey( KeyHandle,
123  &Language,
125  pKeyInfo,
126  Size,
127  &Size)) )
128  {
129  RtlInitUnicodeString(&Language, (PWSTR)pKeyInfo->Data);
130  if (!NT_SUCCESS(RtlUnicodeStringToInteger(&Language, 16, &Ret)))
131  {
133  }
134  }
135  ExFreePoolWithTag(pKeyInfo, TAG_STRING);
136  }
138  }
139  TRACE("Language ID = %x\n",Ret);
140  return (USHORT) Ret;
141 }
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
Definition: ndis.h:4711
#define KEY_READ
Definition: nt_native.h:1023
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
uint16_t * PWSTR
Definition: typedefs.h:56
#define SUBLANG_DEFAULT
Definition: nls.h:168
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
#define TAG_STRING
Definition: oslist.h:22
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define MAX_PATH
Definition: compat.h:34
#define LANG_ENGLISH
Definition: nls.h:52
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
static const WCHAR L[]
Definition: oid.c:1250
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
unsigned short USHORT
Definition: pedump.c:61
struct _KEY_VALUE_PARTIAL_INFORMATION KEY_VALUE_PARTIAL_INFORMATION
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToInteger(PUNICODE_STRING String, ULONG Base, PULONG Value)
unsigned int ULONG
Definition: retypes.h:1
#define MAKELANGID(p, s)
Definition: nls.h:15
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
#define ExFreePoolWithTag(_P, _T)
Definition: module.h:1099

Referenced by DriverEntry().

◆ UserGetLanguageToggle()

DWORD FASTCALL UserGetLanguageToggle ( VOID  )

Definition at line 80 of file misc.c.

81 {
83  DWORD dwValue = 0;
84 
85  Status = RegReadUserSetting(L"Keyboard Layout\\Toggle", L"Layout Hotkey", REG_SZ, &dwValue, sizeof(dwValue));
86  if (NT_SUCCESS(Status))
87  {
88  dwValue = atoi((char *)&dwValue);
89  TRACE("Layout Hotkey %d\n",dwValue);
90  }
91  return dwValue;
92 }
LONG NTSTATUS
Definition: precomp.h:26
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
unsigned long DWORD
Definition: ntddk_ex.h:95
Status
Definition: gdiplustypes.h:24
static const WCHAR L[]
Definition: oid.c:1250
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
#define REG_SZ
Definition: layer.c:22

Referenced by SpiGetSet(), and SpiUpdatePerUserSystemParameters().