Странно себя ведет CreateMutex

Тема в разделе "WASM.BEGINNERS", создана пользователем tagegor, 12 авг 2009.

  1. tagegor

    tagegor New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2009
    Сообщения:
    54
    И снова здрастье :lol:
    На сей раз у меня нехотят ставяцца мутексы...
    Код (Text):
    1. .code
    2. start:
    3.  
    4. Call Mutex
    5.  
    6. Mutex proc
    7.  
    8.  LOCAL hMutex: dword
    9.  invoke CreateMutex, 0,0,0
    10.  mov hMutex, eax
    11.  invoke GetLastError
    12.  .IF eax==0
    13.  invoke MessageBox, NULL, addr MsgBoxText2, addr MsgBoxCaption2, MB_OK ;Мутекс  поставился
    14.  .ELSE
    15.  invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK ; Мутекс уже стоит
    16.  .ENDIF
    17.  ret
    18.  
    19. Mutex endp
    И мне всегда сообщается что мутекс поставился. Хотя в системе он стоит :\
    Как решить траблу?
     
  2. SmanxX1

    SmanxX1 Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    139
    В этом есть что-то удивительное?
     
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    tagegor
    он у тебя безымянный, значит каждый раз новый
     
  4. icent

    icent New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2009
    Сообщения:
    154
    А ты думал в системе может быть только один мьютекс?))
     
  5. tagegor

    tagegor New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2009
    Сообщения:
    54
    нет....
    Я указывал имя мьютексу. Просто данный сорц был вырезкой )))
     
  6. djmans

    djmans New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2006
    Сообщения:
    312
    охренет, нафик проверят по GetLastError? В случаи успеха WinAPI обычно не высталяют ERROR_SUCCESSED, а ясно дело сохраняется ошибка от какойто придыдущей апи, которая вылетела с ошибкой. К GetLastError нужно обрашаться в случаи возврата ошибки прочими WinAPI.

    Надо смотреть eax от CreateMutex.
     
  7. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    djmans
    В общем Вы правы, конечно, но AFAIK вот это:
    таки неверно. Чаще ERROR_SUCCESSED всё-таки выставляется, чем не выставляется. Но далеко не всегда.
    tagegor
    MSDN читать надо, прежде чем использовать ф-ию. И обсуждалось это тоже:
    http://www.wasm.ru/forum/viewtopic.php?pid=284936#p284936
    http://www.wasm.ru/forum/viewtopic.php?pid=280690#p280690
    Так что не важно, укажете Вы там имя или нет: ошибки быть не должно ни в том, ни в другом случае.
     
  8. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    djmans
    Скопировал Ваше ERROR_SUCCESSED. Хотя на самом деле ERROR_SUCCESS. :)
     
  9. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    djmans
    Наверное Вы всё-таки правы. :) Таки заглянул в MSDN:
    Говорят, что большинство таки не выставляют код ошибки, если завершаются успешно.
     
  10. djmans

    djmans New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2006
    Сообщения:
    312
  11. djmans

    djmans New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2006
    Сообщения:
    312
    И вообше.
    это с чего вдруг? может нужно высавить условие (eax == ERROR_ALREADY_EXISTS)? а то если прав нету или памяти нету или инкорет параметры, это не значит что "Мутекс уже стоит"