93 pcur->pcurNext = *ppcurHead;
115 for (ppcur = ppcurHead;
120 if ((*ppcur) == pcur)
123 (*ppcur) = pcur->pcurNext;
166 for (
i = 0 ;
i < 6;
i++)
212 WARN(
"Requesting invalid/destroyed cursor.\n");
368 for (
i = 0;
i < AniCurIcon->
cpcur;
i++)
424 TRACE(
"Enter NtUserGetIconInfo\n");
429 WARN(
"Nothing to fill.\n");
438 WARN(
"UserGetIconObject(0x%p) Failed.\n", hCurIcon);
450 FrameCurIcon = ((
PACON)CurIcon)->aspcur[0];
463 colorBpp = FrameCurIcon->
bpp;
503 if (
BufLen > (lpModule->MaximumLength))
505 lpModule->Length = 0;
506 lpModule->MaximumLength =
BufLen;
511 BufLen = lpModule->MaximumLength;
513 lpModule->Length =
BufLen;
574 TRACE(
"Leave NtUserGetIconInfo, ret=%i\n", Ret);
596 TRACE(
"Enter NtUserGetIconSize\n");
608 CurIcon = AniCurIcon->
aspcur[0];
634 TRACE(
"Leave NtUserGetIconSize, ret=%i\n", bRet);
655 TRACE(
"Enter NtUserGetCursorInfo\n");
693 TRACE(
"Leave NtUserGetCursorInfo, ret=%i\n",_ret_);
800 TRACE(
"Enter NtUserDestroyCursorIcon (%p, %i)\n", hCurIcon, bForce);
815 ERR(
"Trying to delete global cursor!\n");
830 WARN(
"Trying to delete current cursor!\n");
837 WARN(
"Trying to delete shared cursor.\n");
850 TRACE(
"Leave NtUserDestroyCursorIcon, ret=%i\n",
ret);
874 TRACE(
"Enter NtUserFindExistingCursorIcon\n");
980 Ret = CurIcon->
head.h;
1004 TRACE(
"Enter NtUserGetClipCursor\n");
1038 TRACE(
"Leave NtUserGetClipCursor, ret=%i\n",_ret_);
1055 TRACE(
"Enter NtUserSetCursor: %p\n", hCursor);
1091 TRACE(
"Returning Global Cursor hcur %p\n",hOldCursor);
1123 FIXME(
" is UNIMPLEMENTED.\n");
1139 ERR(
"Mismatch in CURSORF_flags! cursor: 0x%08lx, data: 0x%08lx\n",
1140 pcur->CURSORF_flags, pcursordata->CURSORF_flags);
1145 if (pcur->hbmMask !=
NULL)
1147 ERR(
"Cursor data already set!\n");
1152 if (pcursordata->hbmMask ==
NULL)
1154 ERR(
"NtUserSetCursorIconData was got no hbmMask.\n");
1162 ERR(
"Failed to set ownership of hbmMask %p.\n", pcursordata->hbmMask);
1167 if (pcursordata->hbmColor)
1172 ERR(
"Failed to set ownership of hbmColor %p.\n", pcursordata->hbmColor);
1179 if (pcursordata->hbmAlpha)
1184 ERR(
"Failed to set ownership of hbmAlpha %p.\n", pcursordata->hbmAlpha);
1186 if (pcursordata->hbmColor)
1196 if (pcur->strName.Buffer !=
NULL)
1202 RtlInitEmptyUnicodeString(&pcur->strName,
NULL, 0);
1206 if (pcur->atomModName != 0)
1212 pcur->atomModName = atomModName;
1213 pcur->rt = pcursordata->rt;
1215 pcur->xHotspot = pcursordata->xHotspot;
1216 pcur->yHotspot = pcursordata->yHotspot;
1217 pcur->hbmMask = pcursordata->hbmMask;
1218 pcur->hbmColor = pcursordata->hbmColor;
1219 pcur->hbmAlpha = pcursordata->hbmAlpha;
1220 pcur->rcBounds.left = 0;
1221 pcur->rcBounds.top = 0;
1222 pcur->rcBounds.right = pcursordata->cx;
1223 pcur->rcBounds.bottom = pcursordata->cy;
1224 pcur->hbmUserAlpha = pcursordata->hbmUserAlpha;
1225 pcur->bpp = pcursordata->bpp;
1226 pcur->cx = pcursordata->cx;
1227 pcur->cy = pcursordata->cy;
1228 if (pustrName !=
NULL)
1230 pcur->strName = *pustrName;
1263 ERR(
"Mismatch in CURSORF_flags! acon: 0x%08lx, data: 0x%08lx\n",
1264 pacon->CURSORF_flags, pcursordata->CURSORF_flags);
1269 if (pacon->aspcur !=
NULL)
1271 ERR(
"Acon data already set!\n");
1276 for (
i = 0;
i < pcursordata->cicur;
i++)
1279 if (pcursordata->aicur[
i] >= pcursordata->cpcur)
1281 ERR(
"aicur[%lu] is out or range. Got %lu, cpcur = %u\n",
1282 i, pcursordata->aicur[
i], pcursordata->cpcur);
1292 (pcursordata->cicur *
sizeof(
DWORD)) +
1293 (pcursordata->cicur *
sizeof(
INT));
1299 ERR(
"Failed to allocate memory (cpcur = %u, cicur = %u)\n",
1300 pcursordata->cpcur, pcursordata->cicur);
1305 aicur = (
DWORD*)&aspcur[pcursordata->cpcur];
1306 ajifRate = (
INT*)&aicur[pcursordata->cicur];
1310 RtlCopyMemory(ajifRate, pcursordata->ajifRate, pcursordata->cicur *
sizeof(
INT));
1316 pcdFrame = pcursordata->
aspcur;
1319 for (
i = 0;
i < pcursordata->cpcur;
i++)
1323 if (hcurFrame ==
NULL)
1325 ERR(
"Failed to create a cursor for frame %u\n",
i);
1337 ERR(
"Invalid flags for acon frame %u: 0x%08lx\n",
1345 ERR(
"Failed to set cursor data for frame %u\n",
i);
1355 if (pacon->strName.Buffer !=
NULL)
1361 RtlInitEmptyUnicodeString(&pacon->strName,
NULL, 0);
1365 if (pacon->atomModName != 0)
1371 if (pacon->aspcur !=
NULL)
1373 for (
i = 0;
i < pacon->cpcur;
i++)
1382 pacon->atomModName = atomModName;
1383 pacon->rt = pcursordata->rt;
1385 pacon->cpcur = pcursordata->cpcur;
1386 pacon->cicur = pcursordata->cicur;
1387 pacon->aspcur = aspcur;
1388 pacon->aicur = aicur;
1389 pacon->ajifRate = ajifRate;
1391 if (pustrName !=
NULL)
1401 for (
i = 0;
i < pcursordata->cpcur;
i++)
1403 if (aspcur[
i] ==
NULL)
1431 if (pustrModule !=
NULL)
1435 pustrModule->Buffer,
1439 ERR(
"Failed to create atom from module name '%wZ': 0x%08lx\n",
1454 ERR(
"Failed to reference cursor %p\n", hcursor);
1478 if (bResult !=
FALSE)
1490 if (atomModName != 0)
1518 _SEH2_VOLATILE
PVOID pvBuffer;
1526 TRACE(
"Enter NtUserSetCursorIconData\n");
1537 cursordata = *pCursorData;
1543 if ((cursordata.
cpcur == 0) || (cursordata.
cicur == 0) ||
1544 (cursordata.
cpcur > 1000) || (cursordata.
cicur > 1000))
1546 ERR(
"Range error (cpcur = %u, cicur = %u)\n",
1559 if (pvBuffer ==
NULL)
1561 ERR(
"Failed to allocate memory (cpcur = %u, cicur = %u)\n",
1569 ajifRate = (
INT*)&aicur[cursordata.
cicur];
1590 cursordata.
aspcur = aspcur;
1591 cursordata.
aicur = aicur;
1610 if (pustrModule !=
NULL)
1616 ERR(
"Failed to copy pustrModule: status 0x%08lx\n",
status);
1622 if (pustrRsrc !=
NULL)
1628 ERR(
"Failed to copy pustrRsrc: status 0x%08lx\n",
status);
1645 pustrModule ? &ustrModule :
NULL,
1646 pustrRsrc ? &ustrRsrc :
NULL,
1660 if (pvBuffer !=
NULL)
1666 if (bResult ==
FALSE)
1674 TRACE(
"Leave NtUserSetCursorIconData, bResult = %i\n", bResult);
1696 HBRUSH hbrFlickerFreeDraw,
1699 PSURFACE psurfDest, psurfMask, psurfColor;
1702 HBITMAP hbmMask, hbmColor, hbmAlpha;
1704 RECTL rcDest, rcSrc;
1711 ERR(
"DrawIconEx called without mask or color bitmap to draw.\n");
1718 if (istepIfAniCur >= pAcon->
cicur)
1720 ERR(
"NtUserDrawIconEx: istepIfAniCur too big!\n");
1723 pIcon = pAcon->
aspcur[pAcon->
aicur[istepIfAniCur]];
1735 if (psurfMask ==
NULL)
1737 ERR(
"Unable to lock the mask surface.\n");
1742 if (hbmColor ==
NULL)
1750 ERR(
"Unable to lock the color bitmap.\n");
1758 ERR(
"Could not lock the destination DC.\n");
1771 cxWidth = pIcon->
cx;
1781 cyHeight = pIcon->
cy;
1785 RECTL_vSetRect(&rcDest, xLeft, yTop, xLeft + cxWidth, yTop + cyHeight);
1793 psurfDest = pdc->dclevel.pSurface;
1795 if (psurfDest ==
NULL)
1809 bOffScreen = hbrFlickerFreeDraw &&
1818 TRACE(
"Performing off-screen rendering.\n");
1822 ERR(
"Failed to get brush object.\n");
1826 #if 0 //We lock the hdc surface during the whole function it makes no sense to use an offscreen surface for "flicker free" drawing 1830 if (!psurfOffScreen)
1832 ERR(
"Failed to allocate the off-screen surface.\n");
1859 ERR(
"Failed to paint the off-screen surface.\n");
1864 psurfDest = psurfOffScreen;
1866 pdcClipObj = (
CLIPOBJ *)&pdc->co;
1888 ERR(
"Failed to paint the off-screen surface.\n");
1896 TRACE(
"Performing on screen rendering.\n");
1897 pdcClipObj = (
CLIPOBJ *)&pdc->co;
1910 ERR(
"SURFACE_LockSurface failed!\n");
1929 ERR(
"NtGdiAlphaBlend failed!\n");
1955 ERR(
"Failed to mask the bitmap data.\n");
1985 ERR(
"Failed to render the icon bitmap.\n");
2014 ERR(
"Failed to render the icon bitmap.\n");
2029 RECTL_vSetRect(&rcDest, xLeft, yTop, xLeft + cxWidth, yTop + cyHeight);
2037 psurfDest = pdc->dclevel.pSurface;
2044 &psurfOffScreen->SurfObj,
2091 HBRUSH hbrFlickerFreeDraw,
2099 TRACE(
"Enter NtUserDrawIconEx\n");
2104 ERR(
"UserGetCurIconObject(0x%p) failed!\n",
hIcon);
2142 TRACE(
"Enter NtUserGetCursorFrameInfo\n");
2190 TRACE(
"Leaving NtUserGetCursorFrameInfo, ret = 0x%p\n",
ret);
2226 for (
i = 0 ;
i < 16;
i++)
2232 if (pcurOrig)
break;
2247 FIXME(
"Need to copy cursor data or do something! pcurOrig %p new pcur %p\n",pcurOrig,pcur);
static __inline NTSTATUS ProbeAndCaptureUnicodeString(OUT PUNICODE_STRING Dest, IN KPROCESSOR_MODE CurrentMode, IN const UNICODE_STRING *UnsafeSrc)
#define BRUSH_ShareUnlockBrush(pBrush)
#define ERROR_INVALID_PARAMETER
PVOID FASTCALL UserReferenceObjectByHandle(HANDLE handle, HANDLE_TYPE type)
NTSYSAPI NTSTATUS NTAPI RtlLookupAtomInAtomTable(_In_ PRTL_ATOM_TABLE AtomTable, _In_ PWSTR AtomName, _Out_ PRTL_ATOM Atom)
BOOL APIENTRY IntEngAlphaBlend(_Inout_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSource, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclDest, _In_ RECTL *prclSrc, _In_ BLENDOBJ *pBlendObj)
VOID FASTCALL UserEnterShared(VOID)
#define WINSTA_WRITEATTRIBUTES
BOOL NTAPI GreSetObjectOwner(HGDIOBJ hobj, ULONG ulOwner)
PCURICON_OBJECT IntSystemSetCursor(PCURICON_OBJECT pcurNew)
#define ERROR_INVALID_CURSOR_HANDLE
BOOL UserDrawIconEx(HDC hDc, INT xLeft, INT yTop, PCURICON_OBJECT pIcon, INT cxWidth, INT cyHeight, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags)
BOOL FASTCALL UserDeleteObject(HANDLE h, HANDLE_TYPE type)
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
VOID FASTCALL co_MsqInsertMouseMessage(MSG *Msg, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook)
BOOL APIENTRY NtUserClipCursor(RECTL *prcl)
VOID NTAPI EBRUSHOBJ_vCleanup(EBRUSHOBJ *pebo)
FORCEINLINE PDC DC_LockDc(HDC hdc)
PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon)
PVOID UserGetObjectNoErr(PUSER_HANDLE_TABLE ht, HANDLE handle, HANDLE_TYPE type)
#define SURFACE_ShareUnlockSurface(pBMObj)
DBG_DEFAULT_CHANNEL(UserIcon)
#define BRUSH_ShareLockBrush(hBrush)
struct tagCURSORDATA * aspcur
TW_UINT32 TW_UINT16 TW_UINT16 MSG
NTSYSAPI NTSTATUS NTAPI RtlAddAtomToAtomTable(_In_ PRTL_ATOM_TABLE AtomTable, _In_ PWSTR AtomName, _Out_ PRTL_ATOM Atom)
_Out_opt_ PICONINFO _Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING _Out_opt_ LPDWORD pbpp
PRTL_ATOM_TABLE gAtomTable
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL _In_opt_ BRUSHOBJ _In_opt_ POINTL _In_ ROP4 rop4
struct _PALETTE *const ppal
#define ERROR_NOT_ENOUGH_MEMORY
static VOID IntInsertCursorIntoList(_Inout_ PCURICON_OBJECT pcur)
GLint GLint GLint GLint GLint x
BOOL FASTCALL UserDereferenceObject(PVOID Object)
#define MmCopyToCaller(x, y, z)
static VOID IntRemoveCursorFromList(_Inout_ PCURICON_OBJECT pcur)
#define SURFACE_ShareLockSurface(hBMObj)
_Out_opt_ PICONINFO _Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING lpResName
_Must_inspect_result_ NTSTATUS NTAPI ProbeAndCaptureUnicodeStringOrAtom(_Out_ _When_(return >=0, _At_(pustrOut->Buffer, _Post_ _Notnull_)) PUNICODE_STRING pustrOut, __in_data_source(USER_MODE) _In_ PUNICODE_STRING pustrUnsafe)
BOOL UserSetCursorPos(INT x, INT y, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
static BOOL IntSetCursorData(_Inout_ PCURICON_OBJECT pcur, _In_opt_ PUNICODE_STRING pustrName, _In_ ATOM atomModName, _In_ const CURSORDATA *pcursordata)
PVOID FASTCALL UserCreateObject(PUSER_HANDLE_TABLE ht, PDESKTOP pDesktop, PTHREADINFO pti, HANDLE *h, HANDLE_TYPE type, ULONG size)
VOID IntLoadSystenIcons(HICON hcur, DWORD id)
struct _CURICON_OBJECT * pCursorCache
struct _THREADINFO * GetW32ThreadInfo(VOID)
#define CURSORF_ACONFRAME
struct _CURICON_OBJECT * pcurNext
VOID NTAPI EBRUSHOBJ_vInit(EBRUSHOBJ *pebo, PBRUSH pbrush, PSURFACE psurf, COLORREF crBackgroundClr, COLORREF crForegroundClr, PPALETTE ppalDC)
VOID NTAPI EXLATEOBJ_vInitialize(_Out_ PEXLATEOBJ pexlo, _In_opt_ PALETTE *ppalSrc, _In_opt_ PALETTE *ppalDst, _In_ COLORREF crSrcBackColor, _In_ COLORREF crDstBackColor, _In_ COLORREF crDstForeColor)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define __WARNING_READ_OVERRUN
BOOL InitCursorImpl(VOID)
PCURICON_OBJECT CurrentCursorObject
#define GDI_OBJECT_TYPE_BRUSH
#define EXCEPTION_EXECUTE_HANDLER
static DWORD DWORD DWORD DWORD * steps
BOOL FASTCALL UserObjectInDestroy(HANDLE h)
VOID NTAPI EXLATEOBJ_vCleanup(_Inout_ PEXLATEOBJ pexlo)
BOOL APIENTRY UserClipCursor(RECTL *prcl)
#define GDI_HANDLE_GET_TYPE(h)
LONG NTAPI UserGetSystemMetrics(ULONG Index)
void FreeProcMarkObject(_In_ PVOID Object)
VOID FASTCALL UserEnterExclusive(VOID)
#define UserHMGetHandle(obj)
BOOL APIENTRY IntEngStretchBlt(SURFOBJ *DestObj, SURFOBJ *SourceObj, SURFOBJ *Mask, CLIPOBJ *ClipRegion, XLATEOBJ *ColorTranslation, COLORADJUSTMENT *pca, RECTL *DestRect, RECTL *SourceRect, POINTL *pMaskOrigin, BRUSHOBJ *Brush, POINTL *BrushOrigin, ULONG Mode)
static __inline VOID ReleaseCapturedUnicodeString(IN PUNICODE_STRING CapturedString, IN KPROCESSOR_MODE CurrentMode)
BOOL APIENTRY NtUserGetCursorInfo(PCURSORINFO pci)
VOID NTAPI GDIOBJ_vDeleteObject(POBJ pobj)
#define IS_INTRESOURCE(i)
#define _SEH2_YIELD(STMT_)
PCURICON_OBJECT gcurFirst
BOOL FASTCALL CheckWinstaAttributeAccess(ACCESS_MASK DesiredAccess)
Implementation of the Explorer desktop window.
#define NT_SUCCESS(StatCode)
_Success_(return !=FALSE)
struct tagCURSORDATA CURSORDATA
#define WINSTA_READATTRIBUTES
BOOL APIENTRY UserSetCursorIconData(_In_ HCURSOR hcursor, _In_opt_ PUNICODE_STRING pustrModule, _In_opt_ PUNICODE_STRING pustrRsrc, _In_ PCURSORDATA pcursordata)
PSYSTEM_CURSORINFO IntGetSysCursorInfo(VOID)
#define DECLARE_RETURN(type)
NTSYSAPI NTSTATUS NTAPI RtlQueryAtomInAtomTable(_In_ PRTL_ATOM_TABLE AtomTable, _In_ RTL_ATOM Atom, _Out_opt_ PULONG RefCount, _Out_opt_ PULONG PinCount, _Out_opt_z_bytecap_(*NameLength) PWSTR AtomName, _Inout_opt_ PULONG NameLength)
PSURFACE NTAPI SURFACE_AllocSurface(_In_ USHORT iType, _In_ ULONG cx, _In_ ULONG cy, _In_ ULONG iFormat, _In_ ULONG fjBitmap, _In_opt_ ULONG cjWidth, _In_opt_ ULONG cjBufSize, _In_opt_ PVOID pvBits)
#define ExAllocatePoolWithTag(hernya, size, tag)
BOOL APIENTRY NtUserGetIconSize(HANDLE hCurIcon, UINT istepIfAniCur, PLONG plcx, PLONG plcy)
PWND FASTCALL UserGetDesktopWindow(VOID)
#define IntLPtoDP(pdc, ppt, count)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
#define CURSORF_USER_MASK
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
struct _PROCESSINFO * ppi
#define GDI_OBJ_HMGR_POWNED
HICON NTAPI NtUserFindExistingCursorIcon(_In_ PUNICODE_STRING pustrModule, _In_ PUNICODE_STRING pustrRsrc, _In_ FINDEXISTINGCURICONPARAM *param)
BOOL APIENTRY NtUserGetClipCursor(RECTL *lpRect)
static const WCHAR Cleanup[]
VOID FASTCALL SetLastNtError(NTSTATUS Status)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
HCURSOR APIENTRY NtUserSetCursor(HCURSOR hCursor)
SYSTEM_CURSORINFO gSysCursorInfo
HCURSOR NTAPI NtUserGetCursorFrameInfo(HCURSOR hCursor, DWORD istep, INT *rate_jiffies, DWORD *num_steps)
FORCEINLINE VOID RECTL_vOffsetRect(_Inout_ RECTL *prcl, _In_ INT cx, _In_ INT cy)
VOID FASTCALL UserLeave(VOID)
FORCEINLINE VOID RECTL_vSetRect(_Out_ RECTL *prcl, _In_ LONG left, _In_ LONG top, _In_ LONG right, _In_ LONG bottom)
BOOL APIENTRY NtUserDestroyCursor(_In_ HANDLE hCurIcon, _In_ BOOL bForce)
VOID FreeCurIconObject(_In_ PVOID Object)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
BOOL APIENTRY NtUserSetSystemCursor(HCURSOR hcur, DWORD id)
HBITMAP FASTCALL BITMAP_CopyBitmap(HBITMAP hBitmap)
BOOL APIENTRY NtUserDrawIconEx(HDC hdc, int xLeft, int yTop, HICON hIcon, int cxWidth, int cyHeight, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags, BOOL bMetaHDC, PVOID pDIXData)
VOID FASTCALL IntCleanupCurIconCache(PPROCESSINFO Win32Process)
BOOLEAN IntDestroyCurIconObject(_In_ PVOID Object)
#define GDI_OBJ_HMGR_PUBLIC
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
HANDLE IntCreateCurIconHandle(BOOLEAN Animated)
VOID FASTCALL DC_vPrepareDCsForBlit(PDC pdcDest, const RECT *rcDest, PDC pdcSrc, const RECT *rcSrc)
GLint GLint GLint GLint GLint GLint y
FORCEINLINE BOOL is_icon(PCURICON_OBJECT object)
struct _CURICON_OBJECT * PCURICON_OBJECT
BOOL NTAPI GreSetBitmapOwner(_In_ HBITMAP hbmp, _In_ ULONG ulOwner)
VOID FASTCALL DC_vFinishBlit(PDC pdc1, PDC pdc2)
NTSYSAPI NTSTATUS NTAPI RtlDeleteAtomFromAtomTable(_In_ PRTL_ATOM_TABLE AtomTable, _In_ RTL_ATOM Atom)
_In_ ULONG _In_ CLIPOBJ _In_ RECTL * prcl
__kernel_entry BOOL APIENTRY NtUserSetCursorIconData(_In_ HCURSOR hcursor, _In_opt_ PUNICODE_STRING pustrModule, _In_opt_ PUNICODE_STRING pustrRsrc, _In_ const CURSORDATA *pCursorData)
#define RtlZeroMemory(Destination, Length)
char * cleanup(char *str)
#define RtlCopyMemory(Destination, Source, Length)
#define W32PF_CREATEDWINORDC
#define _SEH2_EXCEPT(...)
_Out_opt_ PICONINFO _Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING _Out_opt_ LPDWORD _In_ BOOL bInternal
GLuint GLuint GLsizei GLenum type
#define ExFreePoolWithTag(_P, _T)
#define _SEH2_GetExceptionCode()
static BOOL IntSetAconData(_Inout_ PACON pacon, _In_opt_ PUNICODE_STRING pustrName, _In_ ATOM atomModName, _In_ const CURSORDATA *pcursordata)
BOOL APIENTRY NtUserSetCursorContents(HANDLE hCurIcon, PICONINFO UnsafeIconInfo)
PCURICON_OBJECT FASTCALL UserSetCursor(PCURICON_OBJECT NewCursor, BOOL ForceChange)
PUSER_HANDLE_TABLE gHandleTable
static SERVICE_STATUS status
_Out_opt_ PICONINFO IconInfo
VOID NTAPI EXLATEOBJ_vInitSrcMonoXlate(PEXLATEOBJ pexlo, PPALETTE ppalDst, COLORREF crBackgroundClr, COLORREF crForegroundClr)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
BOOL APIENTRY IntEngBitBlt(SURFOBJ *psoTrg, SURFOBJ *psoSrc, SURFOBJ *psoMask, CLIPOBJ *pco, XLATEOBJ *pxlo, RECTL *prclTrg, POINTL *pptlSrc, POINTL *pptlMask, BRUSHOBJ *pbo, POINTL *pptlBrush, ROP4 Rop4)
#define _PRAGMA_WARNING_SUPPRESS(x)
VOID FASTCALL UserReferenceObject(PVOID obj)