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

Тема в разделе "WASM.BEGINNERS", создана пользователем dsoft, 5 дек 2010.

  1. dsoft

    dsoft Евгений

    Публикаций:
    0
    Регистрация:
    20 май 2007
    Сообщения:
    54
    Адрес:
    Омск
    Код (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

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    dsoft,

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

    dsoft Евгений

    Публикаций:
    0
    Регистрация:
    20 май 2007
    Сообщения:
    54
    Адрес:
    Омск
    А то, что

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

    dsoft Евгений

    Публикаций:
    0
    Регистрация:
    20 май 2007
    Сообщения:
    54
    Адрес:
    Омск
    Похоже, нужно было сделать так:
    Код (Text):
    1.    mov eax, [Buf]
    2.    invoke ZeroMemory, eax, width * height
    но пока толком не проверил. По крайней мере вылеты программы прекратились.
     
  5. dsoft

    dsoft Евгений

    Публикаций:
    0
    Регистрация:
    20 май 2007
    Сообщения:
    54
    Адрес:
    Омск
    Всё верно, указанный выше код является правильным.
     
  6. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    dsoft
    А вот вам еще кое-что
     
  7. dsoft

    dsoft Евгений

    Публикаций:
    0
    Регистрация:
    20 май 2007
    Сообщения:
    54
    Адрес:
    Омск
    Да, приведённый код удобен как универсальный, например, для библиотеки. У меня же жёстко заданный битмап (256 цветов), хотя указанный код размера не добавляет.