Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Доступ к члену структуры. C++


Автор: BaDP1nG 24.7.2008, 15:04
Здравствуйте! 
Пишу на c++  используя встроеный ассемблер
Есть структурка tmp типа SHELLEXECUTEINFO. 
Как обратиться к ее членам?
lea eax, [tmp.hProcess] не компилится. кричит [C++ Error] Unit1.cpp(69): E2017 Ambiguous member name '_PROCESS_INFORMATION::hProcess' 

Автор: Rrader 24.7.2008, 17:33
tmp.hProcess находится по смещению [eax + 56] для SHELLEXECUTEINFOA.
Код

    __asm
    {
       lea eax, Tmp
       mov eax, [eax + 56]
       // EAX - hProcess
    }

Автор: AndNot 24.7.2008, 17:47
Цитата(BaDP1nG @  24.7.2008,  15:04 Найти цитируемый пост)
lea eax, [tmp.hProcess] не компилится
Видимо компилятор тупой, но никакого криминала в этой инструкции не заметил smile Не лучше ли задать вопрос в разделе Синяков? Это их язык, кто как не они должны знать, на чем пишут smile Или сделай ручками: 
lea eax, [tmp]
add eax, xxxxx
где xxxx - смещение нужного поля.

Добавлено @ 17:49
Rrader, ему не значение hProcess нужно, а адрес ;) Так что не mov, а add eax, 56

Добавлено через 4 минуты и 34 секунды
Кстати, ватком тоже отказался с полями структур работать smile 

Автор: dumb 24.7.2008, 18:42
Код

__asm {
    lea eax, tmp.(SHELLEXECUTEINFO)hProcess
    mov [eax], 1
// или так
    lea eax, tmp
    mov [eax].(SHELLEXECUTEINFO)hProcess, 2
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)