ReactOS 0.4.15-dev-7788-g1ad9096
desktop.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS user32.dll
4 * FILE: win32ss/user/user32/misc/desktop.c
5 * PURPOSE: Desktops
6 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
7 * UPDATE HISTORY:
8 * 06-06-2001 CSH Created
9 */
10
11#include <user32.h>
12
14
15/*********************************************************************
16 * desktop class descriptor
17 */
18#if 0 // Kept for referencing.
20{
21 WC_DESKTOP, /* name */
22 CS_DBLCLKS, /* style */
23 NULL, /* procA (winproc is Unicode only) */
24 DesktopWndProc, /* procW */
25 0, /* extra */
26 IDC_ARROW, /* cursor */
27 (HBRUSH)(COLOR_BACKGROUND+1) /* brush */
28};
29#endif
30
34 UINT Msg,
37{
38 TRACE("Desktop W Class Atom! hWnd 0x%x, Msg %d\n", Wnd, Msg);
39
40 switch(Msg)
41 {
42 case WM_ERASEBKGND:
43 case WM_NCCREATE:
44 case WM_CREATE:
45 case WM_CLOSE:
46 case WM_DISPLAYCHANGE:
47 case WM_PAINT:
49 {
50 LRESULT lResult;
52 TRACE("Desktop lResult %d\n", lResult);
53 return lResult;
54 }
55
57 if (Wnd == (HWND)wParam) break;
59 {
60 HDC hdc = GetWindowDC( Wnd );
62 ReleaseDC( Wnd, hdc );
63 break;
64 }
65
66 case WM_SETCURSOR:
68
69 default:
70 return DefWindowProcW(Wnd, Msg, wParam, lParam);
71 }
72 return 0;
73}
74
75VOID
78{
79#define COPYS(f,len) MultiByteToWideChar ( CP_THREAD_ACP, 0, pA->f, len, pW->f, len )
80#define COPYN(f) pW->f = pA->f
81
82 COPYN(lfHeight);
83 COPYN(lfWidth);
84 COPYN(lfEscapement);
85 COPYN(lfOrientation);
86 COPYN(lfWeight);
87 COPYN(lfItalic);
88 COPYN(lfUnderline);
89 COPYN(lfStrikeOut);
90 COPYN(lfCharSet);
91 COPYN(lfOutPrecision);
92 COPYN(lfClipPrecision);
93 COPYN(lfQuality);
94 COPYN(lfPitchAndFamily);
95 COPYS(lfFaceName,LF_FACESIZE);
96
97#undef COPYN
98#undef COPYS
99}
100
101VOID
102WINAPI
104{
105#define COPYS(f,len) WideCharToMultiByte ( CP_THREAD_ACP, 0, pW->f, len, pA->f, len, NULL, NULL )
106#define COPYN(f) pA->f = pW->f
107
108 COPYN(lfHeight);
109 COPYN(lfWidth);
110 COPYN(lfEscapement);
111 COPYN(lfOrientation);
112 COPYN(lfWeight);
113 COPYN(lfItalic);
114 COPYN(lfUnderline);
115 COPYN(lfStrikeOut);
116 COPYN(lfCharSet);
117 COPYN(lfOutPrecision);
118 COPYN(lfClipPrecision);
119 COPYN(lfQuality);
120 COPYN(lfPitchAndFamily);
121 COPYS(lfFaceName,LF_FACESIZE);
122
123#undef COPYN
124#undef COPYS
125}
126
127int WINAPI
129{
130 //FIXME("Global Server Data -> %x\n",gpsi);
131 if (nIndex < 0 || nIndex >= SM_CMETRICS) return 0;
132 return gpsi->aiSysMet[nIndex];
133}
134
135/*
136 * @implemented
137 */
138int WINAPI
140{
141 BOOL Hook;
142 int Ret = 0;
143
144 if (!gpsi) // Fixme! Hax! Need Timos delay load support?
145 {
146 return RealGetSystemMetrics(nIndex);
147 }
148
150
152
153 /* Bypass SEH and go direct. */
154 if (!Hook) return RealGetSystemMetrics(nIndex);
155
157 {
158 Ret = guah.GetSystemMetrics(nIndex);
159 }
161 {
162 ERR("Got exception in hooked GetSystemMetrics!\n");
163 }
164 _SEH2_END;
165
167
168 return Ret;
169}
170
171/*
172 * @unimplemented
173 */
175{
177}
178
181 UINT uiParam,
182 PVOID pvParam,
183 UINT fWinIni)
184{
185 switch (uiAction)
186 {
187
188 case SPI_GETNONCLIENTMETRICS:
189 {
190 LPNONCLIENTMETRICSA pnclma = (LPNONCLIENTMETRICSA)pvParam;
191 NONCLIENTMETRICSW nclmw;
192 if(pnclma->cbSize != sizeof(NONCLIENTMETRICSA))
193 {
195 return FALSE;
196 }
197 nclmw.cbSize = sizeof(NONCLIENTMETRICSW);
198
199 if (!SystemParametersInfoW(uiAction, sizeof(NONCLIENTMETRICSW),
200 &nclmw, fWinIni))
201 return FALSE;
202
203 pnclma->iBorderWidth = nclmw.iBorderWidth;
204 pnclma->iScrollWidth = nclmw.iScrollWidth;
205 pnclma->iScrollHeight = nclmw.iScrollHeight;
206 pnclma->iCaptionWidth = nclmw.iCaptionWidth;
207 pnclma->iCaptionHeight = nclmw.iCaptionHeight;
208 pnclma->iSmCaptionWidth = nclmw.iSmCaptionWidth;
209 pnclma->iSmCaptionHeight = nclmw.iSmCaptionHeight;
210 pnclma->iMenuWidth = nclmw.iMenuWidth;
211 pnclma->iMenuHeight = nclmw.iMenuHeight;
212 LogFontW2A(&(pnclma->lfCaptionFont), &(nclmw.lfCaptionFont));
213 LogFontW2A(&(pnclma->lfSmCaptionFont), &(nclmw.lfSmCaptionFont));
214 LogFontW2A(&(pnclma->lfMenuFont), &(nclmw.lfMenuFont));
215 LogFontW2A(&(pnclma->lfStatusFont), &(nclmw.lfStatusFont));
216 LogFontW2A(&(pnclma->lfMessageFont), &(nclmw.lfMessageFont));
217 return TRUE;
218 }
219 case SPI_SETNONCLIENTMETRICS:
220 {
221 LPNONCLIENTMETRICSA pnclma = (LPNONCLIENTMETRICSA)pvParam;
222 NONCLIENTMETRICSW nclmw;
223 if(pnclma->cbSize != sizeof(NONCLIENTMETRICSA))
224 {
226 return FALSE;
227 }
228 nclmw.cbSize = sizeof(NONCLIENTMETRICSW);
229 nclmw.iBorderWidth = pnclma->iBorderWidth;
230 nclmw.iScrollWidth = pnclma->iScrollWidth;
231 nclmw.iScrollHeight = pnclma->iScrollHeight;
232 nclmw.iCaptionWidth = pnclma->iCaptionWidth;
233 nclmw.iCaptionHeight = pnclma->iCaptionHeight;
234 nclmw.iSmCaptionWidth = pnclma->iSmCaptionWidth;
235 nclmw.iSmCaptionHeight = pnclma->iSmCaptionHeight;
236 nclmw.iMenuWidth = pnclma->iMenuWidth;
237 nclmw.iMenuHeight = pnclma->iMenuHeight;
238 LogFontA2W(&(nclmw.lfCaptionFont), &(pnclma->lfCaptionFont));
239 LogFontA2W(&(nclmw.lfSmCaptionFont), &(pnclma->lfSmCaptionFont));
240 LogFontA2W(&(nclmw.lfMenuFont), &(pnclma->lfMenuFont));
241 LogFontA2W(&(nclmw.lfStatusFont), &(pnclma->lfStatusFont));
242 LogFontA2W(&(nclmw.lfMessageFont), &(pnclma->lfMessageFont));
243
244 return SystemParametersInfoW(uiAction, sizeof(NONCLIENTMETRICSW),
245 &nclmw, fWinIni);
246 }
247 case SPI_GETICONMETRICS:
248 {
249 LPICONMETRICSA picma = (LPICONMETRICSA)pvParam;
250 ICONMETRICSW icmw;
251 if(picma->cbSize != sizeof(ICONMETRICSA))
252 {
254 return FALSE;
255 }
256 icmw.cbSize = sizeof(ICONMETRICSW);
257 if (!SystemParametersInfoW(uiAction, sizeof(ICONMETRICSW),
258 &icmw, fWinIni))
259 return FALSE;
260
261 picma->iHorzSpacing = icmw.iHorzSpacing;
262 picma->iVertSpacing = icmw.iVertSpacing;
263 picma->iTitleWrap = icmw.iTitleWrap;
264 LogFontW2A(&(picma->lfFont), &(icmw.lfFont));
265 return TRUE;
266 }
267 case SPI_SETICONMETRICS:
268 {
269 LPICONMETRICSA picma = (LPICONMETRICSA)pvParam;
270 ICONMETRICSW icmw;
271 if(picma->cbSize != sizeof(ICONMETRICSA))
272 {
274 return FALSE;
275 }
276 icmw.cbSize = sizeof(ICONMETRICSW);
277 icmw.iHorzSpacing = picma->iHorzSpacing;
278 icmw.iVertSpacing = picma->iVertSpacing;
279 icmw.iTitleWrap = picma->iTitleWrap;
280 LogFontA2W(&(icmw.lfFont), &(picma->lfFont));
281
282 return SystemParametersInfoW(uiAction, sizeof(ICONMETRICSW),
283 &icmw, fWinIni);
284 }
286 {
287 LOGFONTW lfw;
288 if (!SystemParametersInfoW(uiAction, 0, &lfw, fWinIni))
289 return FALSE;
290 LogFontW2A(pvParam, &lfw);
291 return TRUE;
292 }
294 {
295 LPLOGFONTA plfa = (LPLOGFONTA)pvParam;
296 LOGFONTW lfw;
297 LogFontA2W(&lfw,plfa);
298 return SystemParametersInfoW(uiAction, 0, &lfw, fWinIni);
299 }
301 {
302 BOOL Ret;
303 WCHAR awc[MAX_PATH];
304 UNICODE_STRING ustrWallpaper;
305 ANSI_STRING astrWallpaper;
306
308 RtlInitUnicodeString(&ustrWallpaper, awc);
309 RtlInitEmptyAnsiString(&astrWallpaper, pvParam, uiParam);
310 RtlUnicodeStringToAnsiString(&astrWallpaper, &ustrWallpaper, FALSE);
311 return Ret;
312 }
313
315 {
316 UNICODE_STRING ustrWallpaper;
317 BOOL Ret;
318
319 if (pvParam)
320 {
321 if (!RtlCreateUnicodeStringFromAsciiz(&ustrWallpaper, pvParam))
322 {
323 ERR("RtlCreateUnicodeStringFromAsciiz failed\n");
324 return FALSE;
325 }
326 pvParam = &ustrWallpaper;
327 }
328
329 Ret = NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, uiParam, pvParam, fWinIni);
330
331 if (pvParam)
332 RtlFreeUnicodeString(&ustrWallpaper);
333
334 return Ret;
335 }
336 }
337 return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
338}
339
342 UINT uiParam,
343 PVOID pvParam,
344 UINT fWinIni)
345{
346 switch(uiAction)
347 {
348
350 {
351 UNICODE_STRING ustrWallpaper;
352
353 RtlInitUnicodeString(&ustrWallpaper, pvParam);
354 return NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, uiParam, &ustrWallpaper, fWinIni);
355 }
356 }
357 return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
358}
359
360
361/*
362 * @implemented
363 */
366 UINT uiParam,
367 PVOID pvParam,
368 UINT fWinIni)
369{
370 BOOL Hook, Ret = FALSE;
371
373
375
376 /* Bypass SEH and go direct. */
377 if (!Hook) return RealSystemParametersInfoA(uiAction, uiParam, pvParam, fWinIni);
378
380 {
381 Ret = guah.SystemParametersInfoA(uiAction, uiParam, pvParam, fWinIni);
382 }
384 {
385 ERR("Got exception in hooked SystemParametersInfoA!\n");
386 }
387 _SEH2_END;
388
390
391 return Ret;
392}
393
394/*
395 * @implemented
396 */
399 UINT uiParam,
400 PVOID pvParam,
401 UINT fWinIni)
402{
403 BOOL Hook, Ret = FALSE;
404
406
408
409 /* Bypass SEH and go direct. */
410 if (!Hook) return RealSystemParametersInfoW(uiAction, uiParam, pvParam, fWinIni);
411
413 {
414 Ret = guah.SystemParametersInfoW(uiAction, uiParam, pvParam, fWinIni);
415 }
417 {
418 ERR("Got exception in hooked SystemParametersInfoW!\n");
419 }
420 _SEH2_END;
421
423
424 return Ret;
425}
426
427/*
428 * @implemented
429 */
430HDESK WINAPI
432 LPCSTR lpszDevice,
433 LPDEVMODEA pDevmode,
435 ACCESS_MASK dwDesiredAccess,
437{
438 UNICODE_STRING DesktopNameU;
439 HDESK hDesktop;
440 LPDEVMODEW DevmodeW = NULL;
441
442 if (lpszDesktop)
443 {
444 /* After conversion, the buffer is zero-terminated */
445 RtlCreateUnicodeStringFromAsciiz(&DesktopNameU, lpszDesktop);
446 }
447 else
448 {
449 RtlInitUnicodeString(&DesktopNameU, NULL);
450 }
451
452 if (pDevmode)
453 DevmodeW = GdiConvertToDevmodeW(pDevmode);
454
455 hDesktop = CreateDesktopW(DesktopNameU.Buffer,
456 NULL,
457 DevmodeW,
458 dwFlags,
459 dwDesiredAccess,
460 lpsa);
461
462 /* Free the string, if it was allocated */
463 if (lpszDesktop) RtlFreeUnicodeString(&DesktopNameU);
464
465 return hDesktop;
466}
467
468
469/*
470 * @implemented
471 */
472HDESK WINAPI
474 LPCWSTR lpszDevice,
475 LPDEVMODEW pDevmode,
477 ACCESS_MASK dwDesiredAccess,
479{
481 UNICODE_STRING DesktopName, DesktopDevice;
482 HWINSTA hWinSta;
483 HDESK hDesktop;
485
486 /* Retrive WinStation handle. */
488
489 /* Initialize the strings. */
490 RtlInitUnicodeString(&DesktopName, lpszDesktop);
491 RtlInitUnicodeString(&DesktopDevice, lpszDevice);
492
493 /* Check for process is inherited, set flag if set. */
494 if (lpsa && lpsa->bInheritHandle) Attributes |= OBJ_INHERIT;
495
496 /* Initialize the attributes for the desktop. */
498 &DesktopName,
500 hWinSta,
501 lpsa ? lpsa->lpSecurityDescriptor : NULL);
502
503 /* Send the request and call to win32k. */
504 hDesktop = NtUserCreateDesktop( &oas,
505 &DesktopDevice,
506 pDevmode,
507 dwFlags,
508 dwDesiredAccess);
509
510 return(hDesktop);
511}
512
513
514/*
515 * @implemented
516 */
517BOOL
518WINAPI
520 HWINSTA WindowStation,
523{
524 return EnumNamesA(WindowStation, EnumFunc, Context, TRUE);
525}
526
527
528/*
529 * @implemented
530 */
531BOOL
532WINAPI
534 HWINSTA WindowStation,
537{
538 return EnumNamesW(WindowStation, EnumFunc, Context, TRUE);
539}
540
541
542/*
543 * @implemented
544 */
545HDESK
546WINAPI
549{
550 USER_API_MESSAGE ApiMessage;
551 PUSER_GET_THREAD_CONSOLE_DESKTOP GetThreadConsoleDesktopRequest = &ApiMessage.Data.GetThreadConsoleDesktopRequest;
552
553 GetThreadConsoleDesktopRequest->ThreadId = dwThreadId;
554
556 NULL,
558 sizeof(*GetThreadConsoleDesktopRequest));
559 if (!NT_SUCCESS(ApiMessage.Status))
560 {
561 UserSetLastNTError(ApiMessage.Status);
562 return NULL;
563 }
564
566 GetThreadConsoleDesktopRequest->ConsoleDesktop);
567}
568
569
570/*
571 * @implemented
572 */
573HDESK
574WINAPI
576 LPCSTR lpszDesktop,
578 BOOL fInherit,
579 ACCESS_MASK dwDesiredAccess)
580{
581 UNICODE_STRING DesktopNameU;
582 HDESK hDesktop;
583
584 if (lpszDesktop)
585 {
586 /* After conversion, the buffer is zero-terminated */
587 RtlCreateUnicodeStringFromAsciiz(&DesktopNameU, lpszDesktop);
588 }
589 else
590 {
591 RtlInitUnicodeString(&DesktopNameU, NULL);
592 }
593
594 hDesktop = OpenDesktopW(DesktopNameU.Buffer,
595 dwFlags,
596 fInherit,
597 dwDesiredAccess);
598
599 /* Free the string, if it was allocated */
600 if (lpszDesktop) RtlFreeUnicodeString(&DesktopNameU);
601
602 return hDesktop;
603}
604
605
606/*
607 * @implemented
608 */
609HDESK
610WINAPI
612 LPCWSTR lpszDesktop,
614 BOOL fInherit,
615 ACCESS_MASK dwDesiredAccess)
616{
617 UNICODE_STRING DesktopName;
619
620 RtlInitUnicodeString(&DesktopName, lpszDesktop);
621
623 &DesktopName,
626 0);
627
628 if( fInherit )
629 {
630 ObjectAttributes.Attributes |= OBJ_INHERIT;
631 }
632
633 return NtUserOpenDesktop(&ObjectAttributes, dwFlags, dwDesiredAccess);
634}
635
636
637/*
638 * @implemented
639 */
642{
643 return SetShellWindowEx(hwndShell, hwndShell);
644}
645
646
647/*
648 * @implemented
649 */
652{
655 if (pdi) return pdi->hShellWindow;
656 return NULL;
657}
658
659
660/* EOF */
static BOOL CALLBACK EnumFunc(_In_ HWND hWnd, _In_ PCWSTR lpszString, _In_ HANDLE hData)
Definition: SetProp.c:15
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define ERR(fmt,...)
Definition: debug.h:110
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
struct @1627 Msg[]
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
#define CSR_CREATE_API_NUMBER(ServerId, ApiId)
Definition: csrmsg.h:37
#define LF_FACESIZE
Definition: dimm.idl:39
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define SetLastError(x)
Definition: compat.h:752
#define MAX_PATH
Definition: compat.h:34
PSERVERINFO gpsi
Definition: imm.c:18
DWORD dwThreadId
Definition: fdebug.c:31
#define _SEH2_END
Definition: filesup.c:22
#define _SEH2_TRY
Definition: filesup.c:19
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
BOOL NTAPI NtUserMessageCall(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, ULONG_PTR ResultInfo, DWORD dwType, BOOL Ansi)
Definition: message.c:2490
#define FNID_DESKTOP
Definition: ntuser.h:862
BOOL NTAPI NtUserSystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
Definition: sysparams.c:2168
HWINSTA NTAPI NtUserGetProcessWindowStation(VOID)
Definition: winsta.c:1376
#define OBJ_OPENIF
Definition: winternl.h:229
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
#define OBJ_INHERIT
Definition: winternl.h:225
const char * filename
Definition: ioapi.h:137
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:92
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
#define SPI_GETDESKWALLPAPER
Definition: sysparams.c:34
unsigned int UINT
Definition: ndis.h:50
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
ULONG ACCESS_MASK
Definition: nt_native.h:40
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define CONST
Definition: pedump.c:81
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:34
const struct builtin_class_descr DESKTOP_builtin_class
NTSTATUS NTAPI CsrClientCallServer(_Inout_ PCSR_API_MESSAGE ApiMessage, _Inout_opt_ PCSR_CAPTURE_BUFFER CaptureBuffer, _In_ CSR_API_NUMBER ApiNumber, _In_ ULONG DataLength)
Definition: connect.c:366
#define TRACE(s)
Definition: solgame.cpp:4
LPVOID lpSecurityDescriptor
Definition: compat.h:193
union _USER_API_MESSAGE::@3536 Data
NTSTATUS Status
Definition: winmsg.h:104
USER_GET_THREAD_CONSOLE_DESKTOP GetThreadConsoleDesktopRequest
Definition: winmsg.h:111
SYSTEMPARAMETERSINFOA SystemParametersInfoA
Definition: undocuser.h:354
SYSTEMPARAMETERSINFOW SystemParametersInfoW
Definition: undocuser.h:355
GETSYSTEMMETRICS GetSystemMetrics
Definition: undocuser.h:353
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
#define WC_DESKTOP
Definition: undocuser.h:10
BOOL WINAPI SetShellWindowEx(HWND, HWND)
Definition: ntwrapper.h:58
BOOL FASTCALL EnumNamesA(HWINSTA WindowStation, NAMEENUMPROCA EnumFunc, LPARAM Context, BOOL Desktops)
Definition: winsta.c:273
BOOL FASTCALL EndUserApiHook(VOID)
Definition: usrapihk.c:164
BOOL FASTCALL BeginIfHookedUserApiHook(VOID)
Definition: usrapihk.c:106
VOID WINAPI UserSetLastNTError(IN NTSTATUS Status)
Definition: misc.c:25
USERAPIHOOK guah
Definition: usrapihk.c:344
BOOL FASTCALL EnumNamesW(HWINSTA WindowStation, NAMEENUMPROCW EnumFunc, LPARAM Context, BOOL Desktops)
Definition: winsta.c:130
static __inline void LoadUserApiHook()
Definition: user_x.h:85
static __inline PDESKTOPINFO GetThreadDesktopInfo(VOID)
Definition: user_x.h:43
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
HDESK APIENTRY NtUserOpenDesktop(POBJECT_ATTRIBUTES ObjectAttributes, DWORD dwFlags, ACCESS_MASK dwDesiredAccess)
Definition: desktop.c:2588
HDESK APIENTRY NtUserGetThreadDesktop(DWORD dwThreadId, HDESK hConsoleDesktop)
Definition: desktop.c:3033
HDESK APIENTRY NtUserCreateDesktop(POBJECT_ATTRIBUTES ObjectAttributes, PUNICODE_STRING lpszDesktopDevice, LPDEVMODEW lpdmw, DWORD dwFlags, ACCESS_MASK dwDesiredAccess)
Definition: desktop.c:2529
LRESULT WINAPI DesktopWndProcW(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
Definition: desktop.c:33
HDESK WINAPI OpenDesktopA(LPCSTR lpszDesktop, DWORD dwFlags, BOOL fInherit, ACCESS_MASK dwDesiredAccess)
Definition: desktop.c:575
BOOL WINAPI RealSystemParametersInfoA(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
Definition: desktop.c:180
BOOL WINAPI EnumDesktopsA(HWINSTA WindowStation, DESKTOPENUMPROCA EnumFunc, LPARAM Context)
Definition: desktop.c:519
VOID WINAPI LogFontW2A(LPLOGFONTA pA, CONST LOGFONTW *pW)
Definition: desktop.c:103
#define COPYN(f)
#define COPYS(f, len)
int WINAPI RealGetSystemMetrics(int nIndex)
Definition: desktop.c:128
BOOL WINAPI SystemParametersInfoA(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
Definition: desktop.c:365
HDESK WINAPI CreateDesktopW(LPCWSTR lpszDesktop, LPCWSTR lpszDevice, LPDEVMODEW pDevmode, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa)
Definition: desktop.c:473
HDESK WINAPI CreateDesktopA(LPCSTR lpszDesktop, LPCSTR lpszDevice, LPDEVMODEA pDevmode, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa)
Definition: desktop.c:431
BOOL WINAPI SetShellWindow(HWND hwndShell)
Definition: desktop.c:641
BOOL WINAPI SetDeskWallpaper(LPCSTR filename)
Definition: desktop.c:174
BOOL WINAPI SystemParametersInfoW(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
Definition: desktop.c:398
VOID WINAPI LogFontA2W(LPLOGFONTW pW, CONST LOGFONTA *pA)
Definition: desktop.c:77
BOOL WINAPI RealSystemParametersInfoW(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
Definition: desktop.c:341
HWND WINAPI GetShellWindow(VOID)
Definition: desktop.c:651
BOOL WINAPI EnumDesktopsW(HWINSTA WindowStation, DESKTOPENUMPROCW EnumFunc, LPARAM Context)
Definition: desktop.c:533
HWINSTA WINAPI GetProcessWindowStation(void)
Definition: ntwrapper.h:124
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO * pdi
Definition: winddi.h:3554
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define WINAPI
Definition: msvc.h:6
DEVMODEW *WINAPI GdiConvertToDevmodeW(const DEVMODEA *)
Definition: misc.c:969
struct tagLOGFONTA * LPLOGFONTA
@ UserpGetThreadConsoleDesktop
Definition: winmsg.h:26
#define USERSRV_SERVERDLL_INDEX
Definition: winmsg.h:15
#define WM_PAINT
Definition: winuser.h:1620
HDESK WINAPI GetThreadDesktop(_In_ DWORD)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define WM_ERASEBKGND
Definition: winuser.h:1625
#define WM_QUERYNEWPALETTE
Definition: winuser.h:1878
#define WM_CLOSE
Definition: winuser.h:1621
HDC WINAPI GetWindowDC(_In_opt_ HWND)
HDESK WINAPI OpenDesktopW(_In_ LPCWSTR, _In_ DWORD, _In_ BOOL, _In_ DWORD)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SPI_SETDESKWALLPAPER
Definition: winuser.h:1369
#define WM_CREATE
Definition: winuser.h:1608
NAMEENUMPROCW DESKTOPENUMPROCW
Definition: winuser.h:2913
#define WM_PALETTECHANGED
Definition: winuser.h:1877
#define IDC_ARROW
Definition: winuser.h:687
BOOL WINAPI PaintDesktop(_In_ HDC)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
#define CS_DBLCLKS
Definition: winuser.h:651
#define SPI_GETICONTITLELOGFONT
Definition: winuser.h:1380
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1626
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2105
#define WM_NCCREATE
Definition: winuser.h:1683
#define SPI_SETICONTITLELOGFONT
Definition: winuser.h:1383
#define WM_SETCURSOR
Definition: winuser.h:1636
NAMEENUMPROCA DESKTOPENUMPROCA
Definition: winuser.h:2912
int WINAPI GetSystemMetrics(_In_ int)
#define COLOR_BACKGROUND
Definition: winuser.h:913
#define SM_CMETRICS
Definition: winuser.h:1065
const char * LPCSTR
Definition: xmlstorage.h:183
__wchar_t WCHAR
Definition: xmlstorage.h:180
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185