【问题标题】:Delphi Image DLL not working in AzureDelphi Image DLL 在 Azure 中不起作用
【发布时间】:2017-05-12 22:31:19
【问题描述】:

我们有一个 dll 来处理我们软件的一些图像。 我最近在golang中创建了一个应用程序,它使用了这个DLL,在测试环境中一切正常,但是在azure中,创建的图像都是黑色的,我不知道是不是delphi限制,操作系统,天蓝色,如果有人有小费.. 在生成图像的代码下方,即使是只有 Draw 的简单代码,图像也会变黑。

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);

附加信息,如果我得到画布的高度和宽度信息,我在天蓝色中的所有内容都是 0,但在其他机器中尺寸是正确的。

【问题讨论】:

  • 做一些调试。
  • 天蓝色 DLL 中的 Windows API 调用中的调试?很难实现。
  • 一点也不。使用跟踪调试。
  • 您显示的代码毫无意义。 vBitmapvBitmapParedesACanvas 有什么关系?
  • 对不起,我在代码中更改了太多,在把它放在这里的时候我搞砸了......

标签: delphi azure canvas bitmap draw


【解决方案1】:

Azure 应用服务有一些沙盒限制,尤其是围绕 GDI。因此,您的部分(或全部)User32/GDI32 API 调用失败。

Win32k.sys (User32/GDI32) 限制

为了彻底减少攻击面,沙盒阻止了几乎所有的 Win32k.sys API 被调用,这实际上意味着大部分 User32/GDI32 系统调用都被阻止了。

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

请参阅this wiki document 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2023-04-04
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多