Внутреннее устройство графических дескрипторов HPEN, HBRUSH и т.д.

Тема в разделе "WASM.WIN32", создана пользователем Xerx, 4 сен 2007.

  1. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    У меня вопрос: чем реально являются указанные в subj. дескрипторы? На адреса участков памяти не похоже. И можно ли напрямую получать (а может даже и устанавливать) значения цвета/атрибутов и т.д. непосредственно из этих дескрипторов, а не через вызов соответствующих функций GDI. Само собой, под user-mode. Вопрос не праздный, а очень даже практический. Всем заранее спасибо!!!
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    это хендлы. в таблице объектов процесса

    typedef HANDLE HPEN;

    из юзермода вряд ли ты чтото сделаешь сам
     
  3. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Great
    А можно по ним получить параметры самих объектов? Если да, то как? Заодно и задать сами параметры (хотя бы цвет).

    Я сейчас изучаю работу функции GetObject(). Может из нее что узнаю.
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ну примерно так и получить
     
  5. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    В итоге все уперлось в
    Код (Text):
    1. MOV     EAX, 1090
    2. MOV     EDX, 7FFE0300
    3. CALL    NEAR DWORD PTR DS:[EDX] ; ntdll.KiFastSystemCallRet
    Получается, что и правда никак. :-(
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ну а ты как хотел? Ядро защищает свои объекты от прямого доступа, а графич. подсистема уже стала частью ядра
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Проще изучить документацию по ней. Найдёшь всё тебя интересующее на данный момент.
     
  8. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    На сколько я помню, Руссинович писал, что почти всё GDI перенесено в XP в user-mode, - чтоб из-за утечки GDI страдал сам процесс, а HPEN, HBRUSH... это даже уже и не HANDLE, а так - номера для GDI.
     
  9. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Feng Yuan
    "Windows Graphics Programming"
    Chapter 3. GDI /DirectDraw Internal Data Structures
    3.2 DECODING GDI OBJECT HANDLES
    Part of HGDIOBJ Is a GDI ObjectType
    [​IMG]
     
  10. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Great
    Настолько знаю, kernel32, user32, gdi32 выполняются под user-mode. Думал, что и данные хранятся аналогично и к ним есть доступ.

    IceStudent
    Какие именно вопросы там для меня полезны? Я что-то ничего стоящего не нашел.

    kero
    О чем-то подобном я догадывался, т.к. часто накладываются маски для выделения разных частей значения (тестировал для HPEN)
     
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Xerx
    Я имел ввиду ответ на этот вопрос. Естесственно, напрямую ты не изменишь объекты.
     
  12. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Ну, на вашу долю еще остались 8 bits unknown :)
     
  13. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    kero
    А оно мне надо, коли остальные 24 бита ничего полезного мне дать не могут? :derisive: