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;
158 if (
id == OIC_WINLOGO+1 )
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);
654 TRACE(
"Enter NtUserGetCursorInfo\n");
689 TRACE(
"Leave NtUserGetCursorInfo, ret=%i\n", Ret);
796 TRACE(
"Enter NtUserDestroyCursorIcon (%p, %i)\n", hCurIcon, bForce);
811 ERR(
"Trying to delete global cursor!\n");
826 WARN(
"Trying to delete current cursor!\n");
833 WARN(
"Trying to delete shared cursor.\n");
846 TRACE(
"Leave NtUserDestroyCursorIcon, ret=%i\n",
ret);
870 TRACE(
"Enter NtUserFindExistingCursorIcon\n");
1000 TRACE(
"Enter NtUserGetClipCursor\n");
1034 TRACE(
"Leave NtUserGetClipCursor, ret=%i\n", Ret);
1051 TRACE(
"Enter NtUserSetCursor: %p\n", hCursor);
1087 TRACE(
"Returning Global Cursor hcur %p\n",hOldCursor);
1119 FIXME(
" is UNIMPLEMENTED.\n");
1135 ERR(
"Mismatch in CURSORF_flags! cursor: 0x%08lx, data: 0x%08lx\n",
1136 pcur->CURSORF_flags, pcursordata->CURSORF_flags);
1141 if (pcur->hbmMask !=
NULL)
1143 ERR(
"Cursor data already set!\n");
1148 if (pcursordata->hbmMask ==
NULL)
1150 ERR(
"NtUserSetCursorIconData was got no hbmMask.\n");
1158 ERR(
"Failed to set ownership of hbmMask %p.\n", pcursordata->hbmMask);
1163 if (pcursordata->hbmColor)
1168 ERR(
"Failed to set ownership of hbmColor %p.\n", pcursordata->hbmColor);
1175 if (pcursordata->hbmAlpha)
1180 ERR(
"Failed to set ownership of hbmAlpha %p.\n", pcursordata->hbmAlpha);
1182 if (pcursordata->hbmColor)
1192 if (pcur->strName.Buffer !=
NULL)
1198 RtlInitEmptyUnicodeString(&pcur->strName,
NULL, 0);
1202 if (pcur->atomModName != 0)
1208 pcur->atomModName = atomModName;
1209 pcur->rt = pcursordata->rt;
1211 pcur->xHotspot = pcursordata->xHotspot;
1212 pcur->yHotspot = pcursordata->yHotspot;
1213 pcur->hbmMask = pcursordata->hbmMask;
1214 pcur->hbmColor = pcursordata->hbmColor;
1215 pcur->hbmAlpha = pcursordata->hbmAlpha;
1216 pcur->rcBounds.left = 0;
1217 pcur->rcBounds.top = 0;
1218 pcur->rcBounds.right = pcursordata->cx;
1219 pcur->rcBounds.bottom = pcursordata->cy;
1220 pcur->hbmUserAlpha = pcursordata->hbmUserAlpha;
1221 pcur->bpp = pcursordata->bpp;
1222 pcur->cx = pcursordata->cx;
1223 pcur->cy = pcursordata->cy;
1224 if (pustrName !=
NULL)
1226 pcur->strName = *pustrName;
1259 ERR(
"Mismatch in CURSORF_flags! acon: 0x%08lx, data: 0x%08lx\n",
1260 pacon->CURSORF_flags, pcursordata->CURSORF_flags);
1265 if (pacon->aspcur !=
NULL)
1267 ERR(
"Acon data already set!\n");
1272 for (
i = 0;
i < pcursordata->cicur;
i++)
1275 if (pcursordata->aicur[
i] >= pcursordata->cpcur)
1277 ERR(
"aicur[%lu] is out or range. Got %lu, cpcur = %u\n",
1278 i, pcursordata->aicur[
i], pcursordata->cpcur);
1288 (pcursordata->cicur *
sizeof(
DWORD)) +
1289 (pcursordata->cicur *
sizeof(
INT));
1295 ERR(
"Failed to allocate memory (cpcur = %u, cicur = %u)\n",
1296 pcursordata->cpcur, pcursordata->cicur);
1301 aicur = (
DWORD*)&aspcur[pcursordata->cpcur];
1302 ajifRate = (
INT*)&aicur[pcursordata->cicur];
1306 RtlCopyMemory(ajifRate, pcursordata->ajifRate, pcursordata->cicur *
sizeof(
INT));
1312 pcdFrame = pcursordata->
aspcur;
1315 for (
i = 0;
i < pcursordata->cpcur;
i++)
1319 if (hcurFrame ==
NULL)
1321 ERR(
"Failed to create a cursor for frame %u\n",
i);
1333 ERR(
"Invalid flags for acon frame %u: 0x%08lx\n",
1341 ERR(
"Failed to set cursor data for frame %u\n",
i);
1351 if (pacon->strName.Buffer !=
NULL)
1357 RtlInitEmptyUnicodeString(&pacon->strName,
NULL, 0);
1361 if (pacon->atomModName != 0)
1367 if (pacon->aspcur !=
NULL)
1369 for (
i = 0;
i < pacon->cpcur;
i++)
1378 pacon->atomModName = atomModName;
1379 pacon->rt = pcursordata->rt;
1381 pacon->cpcur = pcursordata->cpcur;
1382 pacon->cicur = pcursordata->cicur;
1383 pacon->aspcur = aspcur;
1384 pacon->aicur = aicur;
1385 pacon->ajifRate = ajifRate;
1387 if (pustrName !=
NULL)
1397 for (
i = 0;
i < pcursordata->cpcur;
i++)
1399 if (aspcur[
i] ==
NULL)
1427 if (pustrModule !=
NULL)
1431 pustrModule->Buffer,
1435 ERR(
"Failed to create atom from module name '%wZ': 0x%08lx\n",
1450 ERR(
"Failed to reference cursor %p\n", hcursor);
1474 if (bResult !=
FALSE)
1486 if (atomModName != 0)
1522 TRACE(
"Enter NtUserSetCursorIconData\n");
1533 cursordata = *pCursorData;
1539 if ((cursordata.
cpcur == 0) || (cursordata.
cicur == 0) ||
1540 (cursordata.
cpcur > 1000) || (cursordata.
cicur > 1000))
1542 ERR(
"Range error (cpcur = %u, cicur = %u)\n",
1555 if (pvBuffer ==
NULL)
1557 ERR(
"Failed to allocate memory (cpcur = %u, cicur = %u)\n",
1565 ajifRate = (
INT*)&aicur[cursordata.
cicur];
1586 cursordata.
aspcur = aspcur;
1587 cursordata.
aicur = aicur;
1606 if (pustrModule !=
NULL)
1612 ERR(
"Failed to copy pustrModule: status 0x%08lx\n",
status);
1618 if (pustrRsrc !=
NULL)
1624 ERR(
"Failed to copy pustrRsrc: status 0x%08lx\n",
status);
1641 pustrModule ? &ustrModule :
NULL,
1642 pustrRsrc ? &ustrRsrc :
NULL,
1656 if (pvBuffer !=
NULL)
1662 if (bResult ==
FALSE)
1671 TRACE(
"Leave NtUserSetCursorIconData, bResult = %i\n", bResult);
1693 HBRUSH hbrFlickerFreeDraw,
1696 PSURFACE psurfDest, psurfMask, psurfColor;
1699 HBITMAP hbmMask, hbmColor, hbmAlpha;
1701 RECTL rcDest, rcSrc;
1708 ERR(
"DrawIconEx called without mask or color bitmap to draw.\n");
1715 if (istepIfAniCur >= pAcon->
cicur)
1717 ERR(
"NtUserDrawIconEx: istepIfAniCur too big!\n");
1720 pIcon = pAcon->
aspcur[pAcon->
aicur[istepIfAniCur]];
1732 if (psurfMask ==
NULL)
1734 ERR(
"Unable to lock the mask surface.\n");
1739 if (hbmColor ==
NULL)
1747 ERR(
"Unable to lock the color bitmap.\n");
1755 ERR(
"Could not lock the destination DC.\n");
1768 cxWidth = pIcon->
cx;
1778 cyHeight = pIcon->
cy;
1782 RECTL_vSetRect(&rcDest, xLeft, yTop, xLeft + cxWidth, yTop + cyHeight);
1790 psurfDest = pdc->dclevel.pSurface;
1792 if (psurfDest ==
NULL)
1806 bOffScreen = hbrFlickerFreeDraw &&
1815 TRACE(
"Performing off-screen rendering.\n");
1819 ERR(
"Failed to get brush object.\n");
1827 if (!psurfOffScreen)
1829 ERR(
"Failed to allocate the off-screen surface.\n");
1856 ERR(
"Failed to paint the off-screen surface.\n");
1861 psurfDest = psurfOffScreen;
1863 pdcClipObj = (
CLIPOBJ *)&pdc->co;
1885 ERR(
"Failed to paint the off-screen surface.\n");
1893 TRACE(
"Performing on screen rendering.\n");
1894 pdcClipObj = (
CLIPOBJ *)&pdc->co;
1907 ERR(
"SURFACE_LockSurface failed!\n");
1926 ERR(
"NtGdiAlphaBlend failed!\n");
1952 ERR(
"Failed to mask the bitmap data.\n");
1982 ERR(
"Failed to render the icon bitmap.\n");
2011 ERR(
"Failed to render the icon bitmap.\n");
2026 RECTL_vSetRect(&rcDest, xLeft, yTop, xLeft + cxWidth, yTop + cyHeight);
2034 psurfDest = pdc->dclevel.pSurface;
2041 &psurfOffScreen->SurfObj,
2088 HBRUSH hbrFlickerFreeDraw,
2096 TRACE(
"Enter NtUserDrawIconEx\n");
2101 ERR(
"UserGetCurIconObject(0x%p) failed!\n",
hIcon);
2139 TRACE(
"Enter NtUserGetCursorFrameInfo\n");
2187 TRACE(
"Leaving NtUserGetCursorFrameInfo, ret = 0x%p\n",
ret);
2223 for (
i = 0 ;
i < 16;
i++)
2229 if (pcurOrig)
break;
2244 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)
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)
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 EXCEPTION_EXECUTE_HANDLER
#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
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 _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 IS_INTRESOURCE(i)
#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)