Дополнения WINDOWS.INC (for 32 bit MASM)

Тема в разделе "WASM.WIN32", создана пользователем paralvic, 11 дек 2010.

  1. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    Попробовав что-нибудь написать на masm, каждый сталкивался с
    ОТСУТСТВИЕМ или НЕКОРРЕКТНОСТЬЮ структур WINDOWS.INC.
    Давайте дополним его вместе.
     
  2. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    Например, просто осуществляя поиск файлов, сталкиваешься когда в ответ приходят символы "?".
    Отлично, будем искать в юникод-формате. А структура какая?

    Код (Text):
    1. ;windows.inc
    2. ;Дополнение
    3.  
    4. ;После
    5. ;WIN32_FIND_DATA
    6.  
    7. ;Вставить
    8. WIN32_FIND_DATAW STRUCT
    9.   dwFileAttributes      DWORD      ?
    10.   ftCreationTime        FILETIME <>
    11.   ftLastAccessTime      FILETIME <>
    12.   ftLastWriteTime       FILETIME <>
    13.   nFileSizeHigh         DWORD      ?
    14.   nFileSizeLow          DWORD      ?
    15.   dwReserved0           DWORD      ?
    16.   dwReserved1           DWORD      ?
    17.   cFileName             WORD MAX_PATH dup(?)
    18.   cAlternate            WORD 14 dup(?)
    19. WIN32_FIND_DATAW ENDS
    20. ; exist variant:))) cFileName WORD UNICODE_STRING_MAX_CHARS dup(?)
    На практике достаточно увеличить буфер имени вдвое. Не видел я виндовс, использующей имена длиннее. Хотя этот вариант можно раскомментировать и вставить.
     
  3. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    Код виртуальной клавиши.
    Код (Text):
    1. ;windows.inc
    2. ;Дополнение
    3.  
    4. ;После
    5. ;VK_RETURN  equ 0Dh
    6.  
    7. VK_ENTER     equ 0Dh      ;никогда б не угадал, не путать с VK_EXECUTE
     
  4. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    masm32.com windows.inc project пишите туда - глядишь услышат и поправят
     
  5. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    спасибо за ссылку

    http://www.masm32.com/board/index.php?board=14.0
    англоязычное обсуждение. тут есть русские парни.
     
  6. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    А у Iczelion есть такие константы:

    Код (Text):
    1. WM_SHELLNOTIFY equ WM_USER+5
    2. IDI_TRAY equ 0
    3. IDM_RESTORE equ 1000
    4. IDM_EXIT    equ 1010
     
  7. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    В разных версиях различны целые блоки кусками.

    Хоцца навести порядок. Например алфавитный.
    Константы мы упорядочем.
    Со структурами интереснее. Тут полный фигвам, никакого алфавитного порядка.
    Нужно, чтобы входящие были перед теми куда они входят.
    Пример:
    Код (Text):
    1. RECT STRUCT
    2.   left    dd      ?
    3.   top     dd      ?
    4.   right   dd      ?
    5.   bottom  dd      ?
    6. RECT ENDS
    7.  
    8. PAINTSTRUCT STRUCT
    9.   hdc           DWORD      ?
    10.   fErase        DWORD      ?
    11.   rcPaint       RECT       <>   ; Алфавит P, R, S, T.  Делаешь так и тебя спросят: А чё это?
    12.   fRestore      DWORD      ?
    13.   fIncUpdate    DWORD      ?
    14.   rgbReserved   BYTE 32 dup(?)
    15. PAINTSTRUCT ENDS
     
  8. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    Ещё есть проблемка.
    Помните windows работает в ring0, ring3.
    windows.inc в основном ring3
    Есть инклуды ring0
    (кто спросит откуда пусть "убъйоцца ап стену (символ MSDN;)" или юзает поиск сайта).
    Подключаешь.
    Нафига структуры ring0 в windows.inc. Например:
    Код (Text):
    1. CONTEXT struct ; в си определенная в Winnt.h
     
  9. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    Ещё есть приколы в .inc файлах.
    Пример advapi32.UninstallApplication
    Попробуйте скомпилировать файл с этой функцией.
     
  10. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    198
    paralvic
    CONTEXT в ring3 используется (SetThreadContext например).