20#define DCX_CACHECOMPAREMASK (DCX_CLIPSIBLINGS | DCX_CLIPCHILDREN | \
21 DCX_NORESETATTRS | DCX_LOCKWINDOWUPDATE | \
22 DCX_LAYEREDWIN | DCX_CACHE | DCX_WINDOW | \
59 while (ListEntry != &
LEDce)
62 ListEntry = ListEntry->
Flink;
120 TRACE(
"FREE DCATTR!!!! NOT DCE_WINDOW_DC!!!!! hDC-> %p\n", pDce->
hDC);
252 if (RgnVisible !=
NULL)
272 if (RgnVisible !=
NULL)
318 TRACE(
"Exit!!!!! DCX_CACHE!!!!!! hDC-> %p \n", dce->
hDC);
328 while (ListEntry != &
LEDce)
331 ListEntry = ListEntry->Flink;
358 Flags &= ~DCX_USESTYLE;
383 if (Wnd->pcls->pdce)
hDC = ((
PDCE)Wnd->pcls->pdce)->hDC;
384 TRACE(
"We have CLASS!!\n");
423 Flags &= ~DCX_PARENTCLIP;
435 Flags &= ~DCX_CLIPCHILDREN;
458 while (ListEntry != &
LEDce)
461 ListEntry = ListEntry->
Flink;
476 UpdateClipOrigin =
TRUE;
484 Dce = (DceEmpty ==
NULL) ? DceUnused : DceEmpty;
499 while (ListEntry != &
LEDce)
502 ListEntry = ListEntry->
Flink;
510 bUpdateVisRgn =
FALSE;
513 else if (Dce->
hDC ==
hDC)
break;
538 ERR(
"FIXME: Got DCE with invalid hDC! %p\n", Dce->
hDC);
560 ClipRegion = Wnd->hrgnUpdate;
561 bUpdateVisRgn =
TRUE;
572 Wnd->rcClient.bottom);
580 Wnd->rcWindow.bottom);
583 bUpdateVisRgn =
TRUE;
585 else if (ClipRegion !=
NULL)
589 ERR(
"Should not be called!!\n");
594 bUpdateVisRgn =
TRUE;
605 TRACE(
"ENTER!!!!!! DCX_CACHE!!!!!! hDC-> %p\n", Dce->
hDC);
638 if (
NULL == pdce)
return;
645 TRACE(
"Change ownership for DCE! -> %p\n" , pdce);
653 ERR(
"Attempted to change ownership of an DCEhDC %p currently being destroyed!!!\n",
698 while (ListEntry != &
LEDce)
701 ListEntry = ListEntry->
Flink;
718 TRACE(
"POWNED DCE going Cheap!! DCX_CACHE!! hDC-> %p \n",
722 ERR(
"Fail Owner Switch hDC-> %p \n", pDCE->
hDC);
734 ERR(
"Not POWNED or CLASSDC hwndCurrent -> %p \n",
768 while (ListEntry != &
LEDce)
771 ListEntry = ListEntry->
Flink;
772 if (pDCE == pdceClass)
786 while (ListEntry != &
LEDce)
789 ListEntry = ListEntry->
Flink;
807 while (ListEntry != &
LEDce)
810 ListEntry = ListEntry->
Flink;
831 while (ListEntry != &
LEDce)
834 ListEntry = ListEntry->
Flink;
844 CurrentWindow =
NULL;
847 if (
NULL == CurrentWindow)
875 if (
NULL !=
dc->dclevel.prgnClip)
901 while (ListEntry != &
LEDce)
904 ListEntry = ListEntry->
Flink;
927 while (ListEntry != &
LEDce)
930 ListEntry = ListEntry->
Flink;
967 if (pwndo) *pwndo = (
PWNDOBJ)Clip;
979 TRACE(
"Enter NtUserGetDCEx: hWnd %p, ClipRegion %p, Flags %x.\n",
990 TRACE(
"Leave NtUserGetDCEx, ret=%p\n", Ret);
1036 BOOL ForceBackground)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
#define DBG_DEFAULT_CHANNEL(ch)
_Inout_ PVCB _In_ BOOLEAN Force
VOID FASTCALL GdiSelectVisRgn(HDC hdc, PREGION prgn)
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
BOOL FASTCALL IntGdiDeleteDC(HDC, BOOL)
BOOL NTAPI GreSetDCOwner(HDC hdc, ULONG ulOwner)
HPALETTE NTAPI GdiSelectPalette(_In_ HDC hDC, _In_ HPALETTE hpal, _In_ BOOL ForceBackground)
VOID FASTCALL DCU_SetDcUndeletable(HDC)
BOOL FASTCALL IntGdiCleanDC(HDC hDC)
FORCEINLINE PDC DC_LockDc(HDC hdc)
#define DCX_NOCLIPCHILDREN
void FASTCALL DceEmptyCache(void)
HDC FASTCALL IntGdiCreateDC(PUNICODE_STRING Driver, PUNICODE_STRING pustrDevice, PVOID pUMdhpdev, CONST PDEVMODEW pdmInit, BOOL CreateAsIC)
WORD APIENTRY IntGdiSetHookFlags(HDC hDC, WORD Flags)
VOID FASTCALL IntEngWindowChanged(_In_ struct _WND *Window, _In_ FLONG flChanged)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define InsertHeadList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define InitializeListHead(ListHead)
#define DCHF_INVALIDATEVISRGN
#define DCHF_VALIDATEVISRGN
BOOL FASTCALL co_IntGraphicsCheck(BOOL Create)
#define UserHMGetHandle(obj)
struct _THREADINFO * GetW32ThreadInfo(VOID)
#define KeLeaveCriticalRegion()
#define KeEnterCriticalRegion()
#define ExFreePoolWithTag(_P, _T)
BOOL WINAPI GreSetDCOrg(_In_ HDC hdc, _In_ LONG x, _In_ LONG y, _In_opt_ PRECTL Rect)
__kernel_entry W32KAPI DWORD APIENTRY NtGdiSetLayout(_In_ HDC hdc, _In_ LONG wox, _In_ DWORD dwLayout)
__kernel_entry W32KAPI HRGN APIENTRY NtGdiCreateRectRgn(_In_ INT xLeft, _In_ INT yTop, _In_ INT xRight, _In_ INT yBottom)
__kernel_entry W32KAPI INT APIENTRY NtGdiOffsetRgn(_In_ HRGN hrgn, _In_ INT cx, _In_ INT cy)
#define GDI_OBJ_HMGR_POWNED
#define GDI_OBJ_HMGR_PUBLIC
#define GDI_OBJ_HMGR_NONE
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
VOID FASTCALL UserLeave(VOID)
VOID FASTCALL UserEnterExclusive(VOID)
#define IntSysCreateRectpRgnIndirect(prc)
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
PULONG MinorVersion OPTIONAL
Implementation of the Explorer desktop window.
struct _LIST_ENTRY * Flink
#define RTL_CONSTANT_STRING(s)
#define CONTAINING_RECORD(address, type, field)
PWND FASTCALL UserGetWindowObject(HWND hWnd)
PREGION FASTCALL VIS_ComputeVisibleRegion(PWND Wnd, BOOLEAN ClientArea, BOOLEAN ClipChildren, BOOLEAN ClipSiblings)
_Must_inspect_result_ _In_ WDFCMRESLIST List
#define W32PF_OWNDCCLEANUP
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
ULONG NTAPI GreGetObjectOwner(HGDIOBJ hobj)
BOOL NTAPI GreIsHandleValid(HGDIOBJ hobj)
VOID FASTCALL REGION_Delete(PREGION pRgn)
PREGION FASTCALL REGION_LockRgn(_In_ HRGN hrgn)
VOID FASTCALL REGION_UnlockRgn(_In_ PREGION prgn)
PREGION FASTCALL IntSysCreateRectpRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect)
BOOL FASTCALL REGION_bOffsetRgn(_Inout_ PREGION prgn, _In_ INT cx, _In_ INT cy)
INT FASTCALL IntGdiCombineRgn(PREGION prgnDest, PREGION prgnSrc1, PREGION prgnSrc2, INT iCombineMode)
HWND FASTCALL IntGetDesktopWindow(VOID)
HANDLE FASTCALL UserGetProp(_In_ PWND Window, _In_ ATOM Atom, _In_ BOOLEAN SystemProp)
BOOL FASTCALL IntIsChildWindow(PWND Parent, PWND BaseWindow)
static VOID FASTCALL DceDeleteClipRgn(DCE *Dce)
HDC APIENTRY NtUserGetWindowDC(HWND hWnd)
DCE *FASTCALL DceGetDceFromDC(HDC hdc)
HWND FASTCALL IntWindowFromDC(HDC hDc)
void FASTCALL DceFreeWindowDCE(PWND Window)
void FASTCALL DceFreeDCE(PDCE pdce, BOOLEAN Force)
#define DCX_CACHECOMPAREMASK
void FASTCALL DceFreeClassDCE(PDCE pdceClass)
HDC FASTCALL DceCreateDisplayDC(VOID)
HDC FASTCALL UserGetDCEx(PWND Wnd OPTIONAL, HANDLE ClipRegion, ULONG Flags)
void FASTCALL DceFreeThreadDCE(PTHREADINFO pti)
HDC FASTCALL UserGetWindowDC(PWND Wnd)
HWND FASTCALL UserGethWnd(HDC hdc, PWNDOBJ *pwndo)
VOID FASTCALL DceResetActiveDCEs(PWND Window)
VOID FASTCALL DceUpdateVisRgn(DCE *Dce, PWND Window, ULONG Flags)
HPALETTE APIENTRY NtUserSelectPalette(HDC hDC, HPALETTE hpal, BOOL ForceBackground)
NTSTATUS NTAPI InitDCEImpl(VOID)
static VOID APIENTRY DceSetDrawable(PWND Window OPTIONAL, HDC hDC, ULONG Flags, BOOL SetClipOrigin)
HDC APIENTRY NtUserGetDCEx(HWND hWnd OPTIONAL, HANDLE ClipRegion, ULONG Flags)
INT FASTCALL UserReleaseDC(PWND Window, HDC hDc, BOOL EndPaint)
static INT FASTCALL DceReleaseDC(DCE *dce, BOOL EndPaint)
PDCE FASTCALL DceAllocDCE(PWND Window OPTIONAL, DCE_TYPE Type)
static PREGION FASTCALL DceGetVisRgn(PWND Window, ULONG Flags, HWND hWndChild, ULONG CFlags)
HDC APIENTRY NtUserGetDC(HWND hWnd)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
#define DCX_INTERSECTUPDATE
_Must_inspect_result_ _In_ ULONG Flags