BOOL APIENTRY NtGdiEngStretchBlt( IN SURFOBJ *psoDest, IN SURFOBJ *psoSource, IN SURFOBJ *Mask, IN CLIPOBJ *ClipRegion, IN XLATEOBJ *ColorTranslation, IN COLORADJUSTMENT *pca, IN POINTL *BrushOrigin, IN RECTL *prclDest, IN RECTL *prclSrc, IN POINTL *MaskOrigin, IN ULONG Mode) { COLORADJUSTMENT ca; POINTL lBrushOrigin; RECTL rclDest; RECTL rclSrc; POINTL lMaskOrigin; _SEH2_TRY { if (pca) { ProbeForRead(pca, sizeof(COLORADJUSTMENT), 1); RtlCopyMemory(&ca,pca, sizeof(COLORADJUSTMENT)); pca = &ca; } ProbeForRead(BrushOrigin, sizeof(POINTL), 1); RtlCopyMemory(&lBrushOrigin, BrushOrigin, sizeof(POINTL)); ProbeForRead(prclDest, sizeof(RECTL), 1); RtlCopyMemory(&rclDest, prclDest, sizeof(RECTL)); ProbeForRead(prclSrc, sizeof(RECTL), 1); RtlCopyMemory(&rclSrc, prclSrc, sizeof(RECTL)); ProbeForRead(MaskOrigin, sizeof(POINTL), 1); RtlCopyMemory(&lMaskOrigin, MaskOrigin, sizeof(POINTL)); } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { _SEH2_YIELD(return FALSE); } _SEH2_END; return EngStretchBlt(psoDest, psoSource, Mask, ClipRegion, ColorTranslation, pca, &lBrushOrigin, &rclDest, &rclSrc, &lMaskOrigin, Mode); }
BOOL APIENTRY VBoxDispDrvStretchBlt(SURFOBJ *psoDest, SURFOBJ *psoSrc, SURFOBJ *psoMask, CLIPOBJ *pco, XLATEOBJ *pxlo, COLORADJUSTMENT *pca, POINTL *pptlHTOrg, RECTL *prclDest, RECTL *prclSrc, POINTL *pptlMask, ULONG iMode) { BOOL bRc; LOGF_ENTER(); STATDRVENTRY(StretchBlt, psoDest); bRc = EngStretchBlt(getSurfObj(psoDest), getSurfObj(psoSrc), psoMask, pco, pxlo, pca, pptlHTOrg, prclDest, prclSrc, pptlMask, iMode); VBVA_OPERATION(psoDest, StretchBlt, (psoDest, psoSrc, psoMask, pco, pxlo, pca, pptlHTOrg, prclDest, prclSrc, pptlMask, iMode)); LOGF_LEAVE(); return bRc; }