47 {OCR_APPSTARTING,
NULL},
93 pcur->pcurNext = *ppcurHead;
115 for (ppcur = ppcurHead;
120 if ((*ppcur) == pcur)
123 (*ppcur) = pcur->pcurNext;
127 pcur->CURSORF_flags &= ~CURSORF_LINKED;
166 for (
i = 0 ;
i < 6;
i++)
212 WARN(
"Requesting invalid/destroyed cursor.\n");
265 if (
x ==
gpsi->ptCursor.x &&
y ==
gpsi->ptCursor.y)
372 for (
i = 0;
i < AniCurIcon->
cpcur;
i++)
428 TRACE(
"Enter NtUserGetIconInfo\n");
433 WARN(
"Nothing to fill.\n");
442 WARN(
"UserGetIconObject(0x%p) Failed.\n", hCurIcon);
454 FrameCurIcon = ((
PACON)CurIcon)->aspcur[0];
467 colorBpp = FrameCurIcon->
bpp;
507 if (
BufLen > (lpModule->MaximumLength))
509 lpModule->Length = 0;
510 lpModule->MaximumLength =
BufLen;
515 BufLen = lpModule->MaximumLength;
517 lpModule->Length =
BufLen;
578 TRACE(
"Leave NtUserGetIconInfo, ret=%i\n", Ret);
600 TRACE(
"Enter NtUserGetIconSize\n");
612 CurIcon = AniCurIcon->
aspcur[0];
638 TRACE(
"Leave NtUserGetIconSize, ret=%i\n", bRet);
658 TRACE(
"Enter NtUserGetCursorInfo\n");
695 TRACE(
"Leave NtUserGetCursorInfo, ret=%i\n", Ret);
802 TRACE(
"Enter NtUserDestroyCursorIcon (%p, %i)\n", hCurIcon, bForce);
817 ERR(
"Trying to delete global cursor!\n");
832 WARN(
"Trying to delete current cursor!\n");
839 WARN(
"Trying to delete shared cursor.\n");
852 TRACE(
"Leave NtUserDestroyCursorIcon, ret=%i\n",
ret);
876 TRACE(
"Enter NtUserFindExistingCursorIcon\n");
1006 TRACE(
"Enter NtUserGetClipCursor\n");
1040 TRACE(
"Leave NtUserGetClipCursor, ret=%i\n", Ret);
1057 TRACE(
"Enter NtUserSetCursor: %p\n", hCursor);
1093 TRACE(
"Returning Global Cursor hcur %p\n",hOldCursor);
1125 FIXME(
" is UNIMPLEMENTED.\n");
1141 ERR(
"Mismatch in CURSORF_flags! cursor: 0x%08lx, data: 0x%08lx\n",
1142 pcur->CURSORF_flags, pcursordata->CURSORF_flags);
1147 if (pcur->hbmMask !=
NULL)
1149 ERR(
"Cursor data already set!\n");
1154 if (pcursordata->hbmMask ==
NULL)
1156 ERR(
"NtUserSetCursorIconData was got no hbmMask.\n");
1164 ERR(
"Failed to set ownership of hbmMask %p.\n", pcursordata->hbmMask);
1169 if (pcursordata->hbmColor)
1174 ERR(
"Failed to set ownership of hbmColor %p.\n", pcursordata->hbmColor);
1181 if (pcursordata->hbmAlpha)
1186 ERR(
"Failed to set ownership of hbmAlpha %p.\n", pcursordata->hbmAlpha);
1188 if (pcursordata->hbmColor)
1198 if (pcur->strName.Buffer !=
NULL)
1204 RtlInitEmptyUnicodeString(&pcur->strName,
NULL, 0);
1208 if (pcur->atomModName != 0)
1214 pcur->atomModName = atomModName;
1215 pcur->rt = pcursordata->rt;
1217 pcur->xHotspot = pcursordata->xHotspot;
1218 pcur->yHotspot = pcursordata->yHotspot;
1219 pcur->hbmMask = pcursordata->hbmMask;
1220 pcur->hbmColor = pcursordata->hbmColor;
1221 pcur->hbmAlpha = pcursordata->hbmAlpha;
1222 pcur->rcBounds.left = 0;
1223 pcur->rcBounds.top = 0;
1224 pcur->rcBounds.right = pcursordata->cx;
1225 pcur->rcBounds.bottom = pcursordata->cy;
1226 pcur->hbmUserAlpha = pcursordata->hbmUserAlpha;
1227 pcur->bpp = pcursordata->bpp;
1228 pcur->cx = pcursordata->cx;
1229 pcur->cy = pcursordata->cy;
1230 if (pustrName !=
NULL)
1232 pcur->strName = *pustrName;
1265 ERR(
"Mismatch in CURSORF_flags! acon: 0x%08lx, data: 0x%08lx\n",
1266 pacon->CURSORF_flags, pcursordata->CURSORF_flags);
1271 if (pacon->aspcur !=
NULL)
1273 ERR(
"Acon data already set!\n");
1278 for (
i = 0;
i < pcursordata->cicur;
i++)
1281 if (pcursordata->aicur[
i] >= pcursordata->cpcur)
1283 ERR(
"aicur[%lu] is out or range. Got %lu, cpcur = %u\n",
1284 i, pcursordata->aicur[
i], pcursordata->cpcur);
1294 (pcursordata->cicur *
sizeof(
DWORD)) +
1295 (pcursordata->cicur *
sizeof(
INT));
1301 ERR(
"Failed to allocate memory (cpcur = %u, cicur = %u)\n",
1302 pcursordata->cpcur, pcursordata->cicur);
1307 aicur = (
DWORD*)&aspcur[pcursordata->cpcur];
1308 ajifRate = (
INT*)&aicur[pcursordata->cicur];
1312 RtlCopyMemory(ajifRate, pcursordata->ajifRate, pcursordata->cicur *
sizeof(
INT));
1318 pcdFrame = pcursordata->
aspcur;
1321 for (
i = 0;
i < pcursordata->cpcur;
i++)
1325 if (hcurFrame ==
NULL)
1327 ERR(
"Failed to create a cursor for frame %u\n",
i);
1339 ERR(
"Invalid flags for acon frame %u: 0x%08lx\n",
1347 ERR(
"Failed to set cursor data for frame %u\n",
i);
1357 if (pacon->strName.Buffer !=
NULL)
1363 RtlInitEmptyUnicodeString(&pacon->strName,
NULL, 0);
1367 if (pacon->atomModName != 0)
1373 if (pacon->aspcur !=
NULL)
1375 for (
i = 0;
i < pacon->cpcur;
i++)
1384 pacon->atomModName = atomModName;
1385 pacon->rt = pcursordata->rt;
1387 pacon->cpcur = pcursordata->cpcur;
1388 pacon->cicur = pcursordata->cicur;
1389 pacon->aspcur = aspcur;
1390 pacon->aicur = aicur;
1391 pacon->ajifRate = ajifRate;
1393 if (pustrName !=
NULL)
1403 for (
i = 0;
i < pcursordata->cpcur;
i++)
1405 if (aspcur[
i] ==
NULL)
1433 if (pustrModule !=
NULL)
1437 pustrModule->Buffer,
1441 ERR(
"Failed to create atom from module name '%wZ': 0x%08lx\n",
1456 ERR(
"Failed to reference cursor %p\n", hcursor);
1480 if (bResult !=
FALSE)
1492 if (atomModName != 0)
1528 TRACE(
"Enter NtUserSetCursorIconData\n");
1539 cursordata = *pCursorData;
1545 if ((cursordata.
cpcur == 0) || (cursordata.
cicur == 0) ||
1546 (cursordata.
cpcur > 1000) || (cursordata.
cicur > 1000))
1548 ERR(
"Range error (cpcur = %u, cicur = %u)\n",
1561 if (pvBuffer ==
NULL)
1563 ERR(
"Failed to allocate memory (cpcur = %u, cicur = %u)\n",
1571 ajifRate = (
INT*)&aicur[cursordata.
cicur];
1592 cursordata.
aspcur = aspcur;
1593 cursordata.
aicur = aicur;
1612 if (pustrModule !=
NULL)
1618 ERR(
"Failed to copy pustrModule: status 0x%08lx\n",
status);
1624 if (pustrRsrc !=
NULL)
1630 ERR(
"Failed to copy pustrRsrc: status 0x%08lx\n",
status);
1647 pustrModule ? &ustrModule :
NULL,
1648 pustrRsrc ? &ustrRsrc :
NULL,
1662 if (pvBuffer !=
NULL)
1668 if (bResult ==
FALSE)
1677 TRACE(
"Leave NtUserSetCursorIconData, bResult = %i\n", bResult);
1699 HBRUSH hbrFlickerFreeDraw,
1702 PSURFACE psurfDest, psurfMask, psurfColor;
1705 HBITMAP hbmMask, hbmColor, hbmAlpha;
1707 RECTL rcDest, rcSrc;
1714 ERR(
"DrawIconEx called without mask or color bitmap to draw.\n");
1721 if (istepIfAniCur >= pAcon->
cicur)
1723 ERR(
"NtUserDrawIconEx: istepIfAniCur too big!\n");
1726 pIcon = pAcon->
aspcur[pAcon->
aicur[istepIfAniCur]];
1738 if (psurfMask ==
NULL)
1740 ERR(
"Unable to lock the mask surface.\n");
1745 if (hbmColor ==
NULL)
1753 ERR(
"Unable to lock the color bitmap.\n");
1761 ERR(
"Could not lock the destination DC.\n");
1774 cxWidth = pIcon->
cx;
1784 cyHeight = pIcon->
cy;
1788 RECTL_vSetRect(&rcDest, xLeft, yTop, xLeft + cxWidth, yTop + cyHeight);
1796 psurfDest = pdc->dclevel.pSurface;
1798 if (psurfDest ==
NULL)
1812 bOffScreen = hbrFlickerFreeDraw &&
1821 TRACE(
"Performing off-screen rendering.\n");
1825 ERR(
"Failed to get brush object.\n");
1833 if (!psurfOffScreen)
1835 ERR(
"Failed to allocate the off-screen surface.\n");
1862 ERR(
"Failed to paint the off-screen surface.\n");
1867 psurfDest = psurfOffScreen;
1869 pdcClipObj = (
CLIPOBJ *)&pdc->co;
1891 ERR(
"Failed to paint the off-screen surface.\n");
1899 TRACE(
"Performing on screen rendering.\n");
1900 pdcClipObj = (
CLIPOBJ *)&pdc->co;
1913 ERR(
"SURFACE_LockSurface failed!\n");
1932 ERR(
"NtGdiAlphaBlend failed!\n");
1958 ERR(
"Failed to mask the bitmap data.\n");
1988 ERR(
"Failed to render the icon bitmap.\n");
2017 ERR(
"Failed to render the icon bitmap.\n");
2032 RECTL_vSetRect(&rcDest, xLeft, yTop, xLeft + cxWidth, yTop + cyHeight);
2040 psurfDest = pdc->dclevel.pSurface;
2047 &psurfOffScreen->SurfObj,
2094 HBRUSH hbrFlickerFreeDraw,
2102 TRACE(
"Enter NtUserDrawIconEx\n");
2107 ERR(
"UserGetCurIconObject(0x%p) failed!\n",
hIcon);
2145 TRACE(
"Enter NtUserGetCursorFrameInfo\n");
2193 TRACE(
"Leaving NtUserGetCursorFrameInfo, ret = 0x%p\n",
ret);
2229 for (
i = 0 ;
i < 16;
i++)
2235 if (pcurOrig)
break;
2250 FIXME(
"Need to copy cursor data or do something! pcurOrig %p new pcur %p\n",pcurOrig,pcur);
HBITMAP FASTCALL BITMAP_CopyBitmap(HBITMAP hBitmap)
BOOL NTAPI GreSetBitmapOwner(_In_ HBITMAP hbmp, _In_ ULONG ulOwner)
#define DBG_DEFAULT_CHANNEL(ch)
static BOOLEAN IntLPtoDP(DC *pdc, PPOINTL ppt, UINT count)
#define OIC_INTERNAL_WINSMALL
struct _CURICON_OBJECT * PCURICON_OBJECT
#define CURSORF_USER_MASK
VOID FASTCALL DC_vPrepareDCsForBlit(PDC pdcDest, const RECT *rcDest, PDC pdcSrc, const RECT *rcSrc)
VOID FASTCALL DC_vFinishBlit(PDC pdc1, PDC pdc2)
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
FORCEINLINE PDC DC_LockDc(HDC hdc)
#define ERROR_NOT_ENOUGH_MEMORY
#define NT_SUCCESS(StatCode)
#define ERROR_INVALID_PARAMETER
static void cleanup(void)
#define IS_INTRESOURCE(x)
static const WCHAR Cleanup[]
VOID NTAPI EBRUSHOBJ_vCleanup(EBRUSHOBJ *pebo)
VOID NTAPI EBRUSHOBJ_vInit(EBRUSHOBJ *pebo, PBRUSH pbrush, PSURFACE psurf, COLORREF crBackgroundClr, COLORREF crForegroundClr, PPALETTE ppalDC)
#define ExAllocatePoolWithTag(hernya, size, tag)
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
#define BRUSH_ShareLockBrush(hBrush)
#define BRUSH_ShareUnlockBrush(pBrush)
#define GDI_OBJECT_TYPE_BRUSH
#define GDI_HANDLE_GET_TYPE(h)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
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
#define UserHMGetHandle(obj)
_Out_opt_ PICONINFO _Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING _Out_opt_ LPDWORD _In_ BOOL bInternal
struct _THREADINFO * GetW32ThreadInfo(VOID)
_Out_opt_ PICONINFO IconInfo
struct tagCURSORDATA CURSORDATA
#define CURSORF_ACONFRAME
_Out_opt_ PICONINFO _Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING lpResName
_Out_opt_ PICONINFO _Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING _Out_opt_ LPDWORD pbpp
#define EXCEPTION_EXECUTE_HANDLER
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)
#define MmCopyToCaller(x, y, z)
#define ExFreePoolWithTag(_P, _T)
static DWORD DWORD DWORD DWORD * steps
VOID FASTCALL co_MsqInsertMouseMessage(MSG *Msg, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook)
PCURICON_OBJECT FASTCALL UserSetCursor(PCURICON_OBJECT NewCursor, BOOL ForceChange)
NTSYSAPI NTSTATUS NTAPI RtlAddAtomToAtomTable(_In_ PRTL_ATOM_TABLE AtomTable, _In_ PWSTR AtomName, _Out_ PRTL_ATOM Atom)
NTSYSAPI NTSTATUS NTAPI RtlLookupAtomInAtomTable(_In_ PRTL_ATOM_TABLE AtomTable, _In_ PWSTR AtomName, _Out_ PRTL_ATOM Atom)
NTSYSAPI NTSTATUS NTAPI RtlDeleteAtomFromAtomTable(_In_ PRTL_ATOM_TABLE AtomTable, _In_ RTL_ATOM Atom)
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)
#define GDI_OBJ_HMGR_POWNED
#define GDI_OBJ_HMGR_PUBLIC
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
BOOL FASTCALL CheckWinstaAttributeAccess(ACCESS_MASK DesiredAccess)
VOID FASTCALL UserLeave(VOID)
VOID FASTCALL UserEnterShared(VOID)
VOID FASTCALL UserEnterExclusive(VOID)
#define MAKEINTRESOURCE(i)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
static __inline NTSTATUS ProbeAndCaptureUnicodeString(OUT PUNICODE_STRING Dest, IN KPROCESSOR_MODE CurrentMode, IN const UNICODE_STRING *UnsafeSrc)
static __inline VOID ReleaseCapturedUnicodeString(IN PUNICODE_STRING CapturedString, IN KPROCESSOR_MODE CurrentMode)
Implementation of the Explorer desktop window.
struct _CURICON_OBJECT * pcurNext
struct _CURICON_OBJECT * pCursorCache
struct _PROCESSINFO * ppi
struct _PALETTE *const ppal
PCURICON_OBJECT CurrentCursorObject
struct tagCURSORDATA * aspcur
#define __WARNING_READ_OVERRUN
#define _PRAGMA_WARNING_SUPPRESS(x)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
#define W32PF_CREATEDWINORDC
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)
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)
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
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 SURFACE_ShareUnlockSurface(pBMObj)
#define SURFACE_ShareLockSurface(hBMObj)
BOOL NTAPI GreSetObjectOwner(HGDIOBJ hobj, ULONG ulOwner)
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
VOID NTAPI GDIOBJ_vDeleteObject(POBJ pobj)
FORCEINLINE VOID RECTL_vSetRect(_Out_ RECTL *prcl, _In_ LONG left, _In_ LONG top, _In_ LONG right, _In_ LONG bottom)
FORCEINLINE VOID RECTL_vOffsetRect(_Inout_ RECTL *prcl, _In_ INT cx, _In_ INT cy)
_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 APIENTRY NtUserGetClipCursor(RECTL *lpRect)
VOID FreeCurIconObject(_In_ PVOID Object)
static VOID IntInsertCursorIntoList(_Inout_ PCURICON_OBJECT pcur)
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)
HANDLE IntCreateCurIconHandle(BOOLEAN Animated)
BOOL APIENTRY UserSetCursorIconData(_In_ HCURSOR hcursor, _In_opt_ PUNICODE_STRING pustrModule, _In_opt_ PUNICODE_STRING pustrRsrc, _In_ PCURSORDATA pcursordata)
static BOOL IntSetCursorData(_Inout_ PCURICON_OBJECT pcur, _In_opt_ PUNICODE_STRING pustrName, _In_ ATOM atomModName, _In_ const CURSORDATA *pcursordata)
BOOL APIENTRY NtUserGetIconSize(HANDLE hCurIcon, UINT istepIfAniCur, PLONG plcx, PLONG plcy)
HICON NTAPI NtUserFindExistingCursorIcon(_In_ PUNICODE_STRING pustrModule, _In_ PUNICODE_STRING pustrRsrc, _In_ FINDEXISTINGCURICONPARAM *param)
BOOL APIENTRY NtUserSetCursorContents(HANDLE hCurIcon, PICONINFO UnsafeIconInfo)
BOOL InitCursorImpl(VOID)
BOOL APIENTRY NtUserClipCursor(RECTL *prcl)
BOOL UserSetCursorPos(INT x, INT y, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook)
BOOL APIENTRY NtUserDestroyCursor(_In_ HANDLE hCurIcon, _In_ BOOL bForce)
__kernel_entry BOOL APIENTRY NtUserSetCursorIconData(_In_ HCURSOR hcursor, _In_opt_ PUNICODE_STRING pustrModule, _In_opt_ PUNICODE_STRING pustrRsrc, _In_ const CURSORDATA *pCursorData)
VOID IntLoadSystenIcons(HICON hcur, DWORD id)
PCURICON_OBJECT IntSystemSetCursor(PCURICON_OBJECT pcurNew)
PSYSTEM_CURSORINFO IntGetSysCursorInfo(VOID)
BOOL APIENTRY NtUserSetSystemCursor(HCURSOR hcur, DWORD id)
BOOL APIENTRY NtUserGetCursorInfo(PCURSORINFO pci)
FORCEINLINE BOOL is_icon(PCURICON_OBJECT object)
PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon)
BOOL APIENTRY UserClipCursor(RECTL *prcl)
BOOL UserDrawIconEx(HDC hDc, INT xLeft, INT yTop, PCURICON_OBJECT pIcon, INT cxWidth, INT cyHeight, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags)
HCURSOR APIENTRY NtUserSetCursor(HCURSOR hCursor)
static BOOL IntSetAconData(_Inout_ PACON pacon, _In_opt_ PUNICODE_STRING pustrName, _In_ ATOM atomModName, _In_ const CURSORDATA *pcursordata)
VOID FASTCALL IntCleanupCurIconCache(PPROCESSINFO Win32Process)
SYSTEM_CURSORINFO gSysCursorInfo
PCURICON_OBJECT gcurFirst
HCURSOR NTAPI NtUserGetCursorFrameInfo(HCURSOR hCursor, DWORD istep, INT *rate_jiffies, DWORD *num_steps)
BOOLEAN IntDestroyCurIconObject(_In_ PVOID Object)
static VOID IntRemoveCursorFromList(_Inout_ PCURICON_OBJECT pcur)
PWND FASTCALL UserGetDesktopWindow(VOID)
LONG NTAPI UserGetSystemMetrics(ULONG Index)
BOOL FASTCALL UserDereferenceObject(PVOID Object)
PVOID FASTCALL UserReferenceObjectByHandle(HANDLE handle, HANDLE_TYPE type)
BOOL FASTCALL UserDeleteObject(HANDLE h, HANDLE_TYPE type)
PUSER_HANDLE_TABLE gHandleTable
BOOL FASTCALL UserObjectInDestroy(HANDLE h)
void FreeProcMarkObject(_In_ PVOID Object)
PVOID FASTCALL UserCreateObject(PUSER_HANDLE_TABLE ht, PDESKTOP pDesktop, PTHREADINFO pti, HANDLE *h, HANDLE_TYPE type, ULONG size)
PVOID UserGetObjectNoErr(PUSER_HANDLE_TABLE ht, HANDLE handle, HANDLE_TYPE type)
VOID FASTCALL UserReferenceObject(PVOID obj)
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
_In_ ULONG _In_ CLIPOBJ _In_ RECTL * prcl
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
#define ERROR_INVALID_CURSOR_HANDLE
#define WINSTA_READATTRIBUTES
#define WINSTA_WRITEATTRIBUTES
VOID NTAPI EXLATEOBJ_vInitialize(_Out_ PEXLATEOBJ pexlo, _In_opt_ PALETTE *ppalSrc, _In_opt_ PALETTE *ppalDst, _In_ COLORREF crSrcBackColor, _In_ COLORREF crDstBackColor, _In_ COLORREF crDstForeColor)
VOID NTAPI EXLATEOBJ_vCleanup(_Inout_ PEXLATEOBJ pexlo)
VOID NTAPI EXLATEOBJ_vInitSrcMonoXlate(PEXLATEOBJ pexlo, PPALETTE ppalDst, COLORREF crBackgroundClr, COLORREF crForegroundClr)