Использование RtlZeroMemory

Discussion in 'WASM.BEGINNERS' started by dsoft, Dec 5, 2010.

  1. dsoft

    dsoft Евгений

    Blog Posts:
    0
    Joined:
    May 20, 2007
    Messages:
    54
    Location:
    Омск
    Code (Text):
    1. .data?
    2.   Buf DWORD ?
    3.   bi BITMAPINFO <>
    4.  
    5. ...
    6.   ; create the bitmap
    7.   invoke CreateDIBSection, 0, ADDR bi, DIB_RGB_COLORS, ADDR Buf, NULL, 0
    8. ...
    9.   invoke ZeroMemory, ADDR Buf, width * height ; В дебагере эта строка улетает в никуда
    Не могу понять где ошибка, вроде буфер создаётся при создании битмапа. В других примерах смотрел там используется такой же подход и всё работает, а у меня вылет с ошибкой.
     
  2. baldr

    baldr New Member

    Blog Posts:
    0
    Joined:
    Apr 29, 2010
    Messages:
    327
    dsoft,

    А то, что Buf DWORD ? резервирует, как и сказано, всего лишь четыре байта, не смущает? Тереть Buf на width*height байт означает убить следующий за ним bi практически наверняка.
     
  3. dsoft

    dsoft Евгений

    Blog Posts:
    0
    Joined:
    May 20, 2007
    Messages:
    54
    Location:
    Омск
    А то, что

    Code (Text):
    1.   invoke CreateDIBSection, 0, ADDR bi, DIB_RGB_COLORS, ADDR Buf, NULL, 0
    создаёт место под этот буфер вам ни о чём не говорит?
     
  4. dsoft

    dsoft Евгений

    Blog Posts:
    0
    Joined:
    May 20, 2007
    Messages:
    54
    Location:
    Омск
    Похоже, нужно было сделать так:
    Code (Text):
    1.    mov eax, [Buf]
    2.    invoke ZeroMemory, eax, width * height
    но пока толком не проверил. По крайней мере вылеты программы прекратились.
     
  5. dsoft

    dsoft Евгений

    Blog Posts:
    0
    Joined:
    May 20, 2007
    Messages:
    54
    Location:
    Омск
    Всё верно, указанный выше код является правильным.
     
  6. max7C4

    max7C4 New Member

    Blog Posts:
    0
    Joined:
    Mar 17, 2008
    Messages:
    1,203
    dsoft
    А вот вам еще кое-что
     
  7. dsoft

    dsoft Евгений

    Blog Posts:
    0
    Joined:
    May 20, 2007
    Messages:
    54
    Location:
    Омск
    Да, приведённый код удобен как универсальный, например, для библиотеки. У меня же жёстко заданный битмап (256 цветов), хотя указанный код размера не добавляет.