Контекст материнского потока

Тема в разделе "WASM.WIN32", создана пользователем Sunzer, 22 сен 2011.

  1. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4. assume fs:nothing
    5.  
    6. include    bin\windows.inc
    7. include    bin\kernel32.inc
    8. include    bin\user32.inc
    9. include    bin\ntdll.inc
    10. include    bin\advapi32.inc
    11. include    bin\gdi32.inc
    12.  
    13. includelib bin\user32.lib
    14. includelib bin\kernel32.lib
    15. includelib bin\ntdll.lib
    16. includelib bin\advapi32.lib
    17. includelib bin\gdi32.lib
    18.  
    19. .data
    20.  ThreadContext CONTEXT <>
    21. .code
    22.  
    23.  
    24. start:
    25.  
    26.  PUSH EBP
    27.  MOV EBP,ESP
    28.  MOV EAX,FS:[18h]
    29.  MOV ECX,offset @Thread
    30.  invoke CreateThread,0,0,ECX,EAX,0,0
    31.  XCHG EAX,ESI
    32.  MOV ThreadContext.ContextFlags,CONTEXT_FULL
    33.  PUSH offset ThreadContext ; Context of main thread
    34.  PUSH ESI ; Handle of main thread
    35.  CALL GetThreadContext
    36.  
    37.  invoke SuspendThread,-2
    38.  LEAVE
    39.  RET
    40.  
    41.  @Thread:
    42.  PUSH EBP
    43.  MOV EBP,ESP
    44.  invoke SuspendThread,-2
    45.  MOV EAX,[EBP+8]
    46.  MOV EAX,[EAX+24h] ; Main thread ID
    47.  PUSH EAX
    48.  PUSH 0
    49.  PUSH THREAD_SUSPEND_RESUME or THREAD_GET_CONTEXT or THREAD_SET_CONTEXT
    50.  CALL OpenThread
    51.  
    52.  XCHG EAX,ESI
    53.  MOV ThreadContext.ContextFlags,CONTEXT_FULL
    54.  PUSH offset ThreadContext ; Context of main thread
    55.  PUSH ESI ; Handle of main thread
    56.  CALL GetThreadContext
    57.  LEAVE
    58.  RET
    59.  
    60. end start
    На Windows XP нет проблем, на Windows Vista, ERROR_ACCESS_DENIED, при попытке получить контекст материнского потока.
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Sunzer
    Может Runas Admin попробовать?
     
  3. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Нет, http://msdn.microsoft.com/en-us/library/ms679362(v=VS.85).aspx

    Добавив этот флаг все заработало, но без него в Win7 работало,в Vista нет.