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);
324 #if 0 // Need to research and fix before this is a "growing" issue. 328 while (ListEntry != &
LEDce)
331 ListEntry = ListEntry->Flink;
383 if (Wnd->pcls->pdce)
hDC = ((
PDCE)Wnd->pcls->pdce)->hDC;
384 TRACE(
"We have CLASS!!\n");
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",
750 ERR(
"[%p] GetDC() without ReleaseDC()!\n",
Window->head.h);
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)
__kernel_entry W32KAPI HRGN APIENTRY NtGdiCreateRectRgn(_In_ INT xLeft, _In_ INT yTop, _In_ INT xRight, _In_ INT yBottom)
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
BOOL NTAPI GreIsHandleValid(HGDIOBJ hobj)
FORCEINLINE PDC DC_LockDc(HDC hdc)
VOID FASTCALL GdiSelectVisRgn(HDC hdc, PREGION prgn)
BOOL FASTCALL IntGdiCleanDC(HDC hDC)
BOOL FASTCALL IntGdiDeleteDC(HDC, BOOL)
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
HDC APIENTRY NtUserGetDCEx(HWND hWnd OPTIONAL, HANDLE ClipRegion, ULONG Flags)
__kernel_entry W32KAPI DWORD APIENTRY NtGdiSetLayout(_In_ HDC hdc, _In_ LONG wox, _In_ DWORD dwLayout)
HDC APIENTRY NtUserGetWindowDC(HWND hWnd)
BOOL FASTCALL REGION_bOffsetRgn(_Inout_ PREGION prgn, _In_ INT cx, _In_ INT cy)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical 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
ULONG NTAPI GreGetObjectOwner(HGDIOBJ hobj)
DCE *FASTCALL DceGetDceFromDC(HDC hdc)
HDC FASTCALL DceCreateDisplayDC(VOID)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
#define InsertTailList(ListHead, Entry)
PREGION FASTCALL REGION_LockRgn(_In_ HRGN hrgn)
HPALETTE APIENTRY NtUserSelectPalette(HDC hDC, HPALETTE hpal, BOOL ForceBackground)
struct _THREADINFO * GetW32ThreadInfo(VOID)
static VOID FASTCALL DceDeleteClipRgn(DCE *Dce)
#define DCX_CACHECOMPAREMASK
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
void FASTCALL DceFreeThreadDCE(PTHREADINFO pti)
static INT FASTCALL DceReleaseDC(DCE *dce, BOOL EndPaint)
PREGION FASTCALL IntSysCreateRectpRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define DCX_NOCLIPCHILDREN
PWND FASTCALL UserGetWindowObject(HWND hWnd)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
INT FASTCALL IntGdiCombineRgn(PREGION prgnDest, PREGION prgnSrc1, PREGION prgnSrc2, INT iCombineMode)
HDC FASTCALL UserGetDCEx(PWND Wnd OPTIONAL, HANDLE ClipRegion, ULONG Flags)
HWND FASTCALL IntWindowFromDC(HDC hDc)
HDC FASTCALL UserGetWindowDC(PWND Wnd)
#define IntSysCreateRectpRgnIndirect(prc)
VOID FASTCALL UserEnterExclusive(VOID)
WORD APIENTRY IntGdiSetHookFlags(HDC hDC, WORD Flags)
struct _LIST_ENTRY * Flink
_Must_inspect_result_ _In_ ULONG Flags
Implementation of the Explorer desktop window.
HANDLE FASTCALL UserGetProp(_In_ PWND Window, _In_ ATOM Atom, _In_ BOOLEAN SystemProp)
VOID FASTCALL DceResetActiveDCEs(PWND Window)
#define DECLARE_RETURN(type)
BOOL WINAPI GreSetDCOrg(_In_ HDC hdc, _In_ LONG x, _In_ LONG y, _In_opt_ PRECTL Rect)
#define ExAllocatePoolWithTag(hernya, size, tag)
__kernel_entry W32KAPI INT APIENTRY NtGdiOffsetRgn(_In_ HRGN hrgn, _In_ INT cx, _In_ INT cy)
VOID FASTCALL DceUpdateVisRgn(DCE *Dce, PWND Window, ULONG Flags)
BOOL FASTCALL co_IntGraphicsCheck(BOOL Create)
_Must_inspect_result_ _In_ WDFCMRESLIST List
#define KeEnterCriticalRegion()
void FASTCALL DceFreeWindowDCE(PWND Window)
#define GDI_OBJ_HMGR_POWNED
VOID FASTCALL DCU_SetDcUndeletable(HDC)
VOID FASTCALL UserLeave(VOID)
HWND FASTCALL IntGetDesktopWindow(VOID)
#define KeLeaveCriticalRegion()
#define DCX_INTERSECTUPDATE
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
#define InitializeListHead(ListHead)
void FASTCALL DceFreeDCE(PDCE pdce, BOOLEAN Force)
HDC FASTCALL IntGdiCreateDC(PUNICODE_STRING Driver, PUNICODE_STRING pustrDevice, PVOID pUMdhpdev, CONST PDEVMODEW pdmInit, BOOL CreateAsIC)
HWND FASTCALL UserGethWnd(HDC hdc, PWNDOBJ *pwndo)
PDCE FASTCALL DceAllocDCE(PWND Window OPTIONAL, DCE_TYPE Type)
BOOL NTAPI GreSetDCOwner(HDC hdc, ULONG ulOwner)
#define GDI_OBJ_HMGR_PUBLIC
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
VOID FASTCALL IntEngWindowChanged(_In_ struct _WND *Window, _In_ FLONG flChanged)
INT FASTCALL UserReleaseDC(PWND Window, HDC hDc, BOOL EndPaint)
PREGION FASTCALL VIS_ComputeVisibleRegion(PWND Wnd, BOOLEAN ClientArea, BOOLEAN ClipChildren, BOOLEAN ClipSiblings)
VOID FASTCALL REGION_UnlockRgn(_In_ PREGION prgn)
DBG_DEFAULT_CHANNEL(UserDce)
#define W32PF_OWNDCCLEANUP
#define GDI_OBJ_HMGR_NONE
#define DCHF_INVALIDATEVISRGN
BOOL FASTCALL IntIsChildWindow(PWND Parent, PWND BaseWindow)
HDC APIENTRY NtUserGetDC(HWND hWnd)
NTSTATUS NTAPI InitDCEImpl(VOID)
#define ExFreePoolWithTag(_P, _T)
VOID FASTCALL REGION_Delete(PREGION pRgn)
VOID FASTCALL DceEmptyCache(VOID)
static VOID APIENTRY DceSetDrawable(PWND Window OPTIONAL, HDC hDC, ULONG Flags, BOOL SetClipOrigin)
#define DCHF_VALIDATEVISRGN
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
void FASTCALL DceFreeClassDCE(PDCE pdceClass)
HPALETTE NTAPI GdiSelectPalette(_In_ HDC hDC, _In_ HPALETTE hpal, _In_ BOOL ForceBackground)
static PREGION FASTCALL DceGetVisRgn(PWND Window, ULONG Flags, HWND hWndChild, ULONG CFlags)
_Inout_ PVCB _In_ BOOLEAN Force
#define RTL_CONSTANT_STRING(s)
PULONG MinorVersion OPTIONAL