OutputDebugString trouble

Тема в разделе "WASM.WIN32", создана пользователем Voodoo, 15 дек 2004.

  1. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    На форуме я видел ссылку на статью про принцип работы OutputDebugString и как получить сообщение им передаваемое. Я реализовал его, но этот вариант не работает в Win9x. Это значит что я где-то ошибся или в 9x OutputDebugString реализован по-другому?
    Код (Text):
    1.  
    2. format  PE console
    3. include '%inc%\win32a.inc'
    4. entry   start
    5.  
    6. start:
    7.         invoke  CreateFileMapping, -1, 0, PAGE_READWRITE, 0, 4096, sname
    8.         test    eax, eax
    9.         jz      .exit
    10.         mov     [fsect], eax
    11.  
    12.         invoke  MapViewOfFile, [fsect], FILE_MAP_ALL_ACCESS, 0, 0, 4096
    13.         test    eax, eax
    14.         jz      .exit
    15.         mov     [sect], eax
    16.  
    17.         invoke  CreateEvent, 0, 0, 0, bname
    18.         test    eax, eax
    19.         jz      .exit
    20.         mov     [bev], eax
    21.  
    22.         invoke  CreateEvent, 0, 0, 0, dname
    23.         test    eax, eax
    24.         jz      .exit
    25.         mov     [dev], eax
    26.  
    27.         invoke  SetConsoleCtrlHandler, handlecon, 1
    28.  
    29.       .work:
    30.         invoke  SetEvent, [bev]
    31.         invoke  WaitForSingleObject, [dev], -1
    32.         invoke  ResetEvent, [bev]
    33.         mov     esi, [sect]
    34.         xor     eax, eax
    35.         lodsd
    36.         invoke  printf, fmt, eax, esi
    37.         jmp     .work
    38.  
    39.       .exit:
    40.         ret
    41.  
    42. handlecon:
    43.         mov     eax, [esp+4]
    44.         cmp     eax, 2
    45.         je      start.exit
    46.         xor     eax, eax
    47.         sub     esp, 4
    48.         ret
    49.  
    50. fmt     db 'Process', 9h, '%X', 9h, 'send', 9h, '%s', 10, 13, 0
    51. sname   db 'DBWIN_BUFFER', 0
    52. dname   db 'DBWIN_DATA_READY', 0
    53. bname   db 'DBWIN_BUFFER_READY', 0
    54. fsect   dd 0
    55. sect    dd 0
    56. dev     dd 0
    57. bev     dd 0
    58.  
    59. data    import
    60.  
    61. library kernel32, 'kernel32.dll',\
    62.         msvcrt, 'msvcrt.dll'
    63.  
    64. include '%inc%\apia\kernel32.inc'
    65.  
    66. import  msvcrt,\
    67.         printf, 'printf'
    68.  
    69. end     data
    70.  
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Voodoo

    Это значит что ты действительно где-то ошибся :derisive:


    Код (Text):
    1. format PE GUI 4.0
    2. entry start
    3.  
    4. include '%fasminc%\win32a.inc'
    5.  
    6. section '.code' code readable executable
    7.  
    8. align 4
    9. start:
    10.   invoke OutputDebugString, OutputString
    11.   invoke ExitProcess, 0
    12.  
    13.  
    14. section '.data' data readable writeable
    15.  
    16. OutputString  db "Test string",0
    17.  
    18.  
    19. section '.idata' import data readable
    20.  
    21. library kernel32,'KERNEL32.DLL'
    22.  
    23. include '%fasminc%\APIA\KERNEL32.INC'
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Хотя сейчас я подумал что ты не то спрашивал..

    Вообще-то дебажную строку нужно получать из отладчика, как это и

    положено, при получении соответствующего отладочного события..
     
  4. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    Извини, я не понял твоего ответа :dntknw: Мне кажется ты не понял вопроса :) В WinXP эта прога ловит все сообщения ODS. В Win98 - ничего. Меня это удивило :) Точнее меня заинтересовало, как же реализовать в Win98
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Asterix, если бы ты сходил по ссылке, которую давал Four-F, ты бы понял, что Voodoo хочет реализовать свой DebugView ;)
     
  6. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    Ну, скажем не DbgView, но поделочка пригодится...
     
  7. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    Так все-таки это моя ошибка или платформенные особенности???
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Voodoo

    Посмотри код DbgView под Win9x…