Сообщений 1 Оценка 0 Оценить |
Q. Как можно в коде MTS/COM+-компонента найти, в каком апартменте он создан, причем для STA – в каком именно STA – host, main или ином, и как-то идентифицировать апартмент (по хендлу окна?) нельзя ли?
A. По смещению 0F80h в TEB находится адрес структуры, которая определяет параметры апартамента. Если указатель равен нулю, СОМ не инициализирован. Если инициализирован, по смещению 12 в этой структуре находится переменная, по значению которой можно определить тип аппартамента.
Пример кода:
int k; __asm{ mov eax,fs:[18h]; mov eax,[eax+0F80h]; mov ebx,[eax+0Ch]; mov k,ebx } if (k == 0x81){ //STA } elseif (k == 0x141){ //MTA } |
см. также http://www.rsdn.ru/Forum/?mid=114989
Сообщений 1 Оценка 0 Оценить |