Delphi Image DLL在Azure中不起作用 [英] Delphi Image DLL not working in Azure

查看:24
本文介绍了Delphi Image DLL在Azure中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们有一个动态链接库来处理我们软件的一些图像。 我最近在Golang创建了一个应用程序,它使用这个DLL,在测试环境中一切工作得很好,但在Azure中,创建的图像都是黑色的,我不知道这是不是Delphi的限制,OS,Azure,如果有人有提示的话。 在生成图像的代码下面,即使是只有一张图的简单代码,图像也会变成黑色。

AOut := 'test.bmp';
vBitmap := TBitmap.Create;
vBitmap.Width := 2399;
vBitmap.Height := 3337;
vBitmap.PixelFormat := pf24bit;
vBitmap.Canvas.Brush.Color := clRed;
vBitmap.Brush.Style := bsSolid;
vBitmap.Canvas.FillRect(Rect(0,0,2399,3337));
vBitmap.SaveToFile(AOut);

一个附加信息,如果我得到画布的高度和宽度信息,我在Azure中就有所有的0,但在其他机器中,尺寸是正确的。

推荐答案

Azure应用服务有一些沙箱限制,尤其是在gdi方面。因此,部分(或全部)User32/GDI32 API调用失败。

Win32k.sys(User32/GDI32)限制

为了从根本上减少受攻击面,沙箱会阻止几乎所有Win32k.sys API被调用,这实际上意味着大多数User32/GDI32系统调用被阻止。

对于大多数应用程序来说,这不是问题,因为大多数Azure Web应用程序不需要访问Windows UI功能(它们毕竟是Web应用程序)。

有关详细信息,请参阅this wiki document

这篇关于Delphi Image DLL在Azure中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆