News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

GDI+ DLL call function error

Started by Ilya81, February 19, 2007, 01:20:55 PM

Previous topic - Next topic

Ilya81

I correct a program sources of which are not saved and use disassembling. It saves a bitmap in TIFF file, but when it has one of dimesions larger than 8092 pixel occurs an error. The programm uses gdiplus.dll. It runs follwoing commands to use its functions:

mov     eax, [eax+4]
.text:00405308                 push    ebx
.text:00405309                 push    edi
.text:0040530A                 lea     ecx, [esp+48h+arg_0]
.text:0040530E                 push    ecx
.text:0040530F                 push    eax
.text:00405310                 mov     [esp+50h+arg_0], ebp
.text:00405314                 call    GdipCreateFromHDC
.text:00405319                 mov     edi, [esp+50h+var_4]
.text:0040531D                 mov     [esp+50h+var_34], eax
.text:00405321                 mov     [esp+50h+var_38], edi
.text:00405325                 mov     eax, [esi+120h]
.text:0040532B                 mov     ecx, [esi+11Ch]
.text:00405331                 lea     edx, [esp+50h+var_4]
.text:00405335                 push    edx
.text:00405336                 push    edi
.text:00405337                 push    eax
.text:00405338                 push    ecx
.text:00405339                 mov     [esp+60h+var_C], ebp
.text:0040533D                 mov     [esp+60h+var_24], offset off_40DA00
.text:00405345                 mov     [esp+60h+var_4], ebp
.text:00405349                 call    GdipCreateBitmapFromGraphics
.text:0040534E                 mov     ebx, [esp+60h+var_14]
.text:00405352                 mov     [esp+60h+var_2C], eax
.text:00405356                 mov     [esp+60h+var_30], ebx
.text:0040535A                 lea     eax, [esp+60h+var_14]
.text:0040535E                 push    eax
.text:0040535F                 push    ebx
.text:00405360                 mov     [esp+68h+var_14], ebp
.text:00405364                 call    GdipGetImageGraphicsContext
.text:00405369                 mov     ecx, [esp+68h+var_1C]
.text:0040536D                 mov     [esp+68h+var_54], eax
.text:00405371                 mov     [esp+68h+var_58], ecx
.text:00405375                 lea     edx, [esp+68h+var_1C]
.text:00405379                 push    edx
.text:0040537A                 push    0FF808080h
.text:0040537F                 mov     [esp+70h+var_48], offset off_40E820
.text:00405387                 mov     [esp+70h+var_1C], ebp
.text:0040538B                 call    GdipCreateSolidFill
.text:00405390                 mov     ebp, [esp+70h+var_24]
.text:00405394                 mov     [esp+70h+var_48], eax
.text:00405398                 mov     [esp+70h+var_4C], ebp
.text:0040539C                 mov     eax, [esi+120h]
.text:004053A2                 mov     ecx, [esi+11Ch]
.text:004053A8                 push    eax
.text:004053A9                 mov     eax, [esp+74h+var_60]
.text:004053AD                 push    ecx
.text:004053AE                 push    0
.text:004053B0                 push    0
.text:004053B2                 push    ebp
.text:004053B3                 push    eax
.text:004053B4                 mov     byte ptr [esp+88h+var_2C], 3
.text:004053B9                 call    GdipFillRectangleI
.text:004053BE                 test    eax, eax
.text:004053C0                 jz      short loc_4053C6
.text:004053C2                 mov     [esp+88h+var_74], eax


The error occurs after runing with lines and then checking functions results.

Tell me please, what should be corrected to make these function to save images with a dimension more than 8092 pixels properly.