Показать сообщение отдельно

  #2  
Старый 09.06.2020, 20:39
DartPhoenix
Познавший АНТИЧАТ
Регистрация: 15.09.2013
Сообщений: 1,019
С нами: 6662486

Репутация: 24


По умолчанию

Лет эдак 8 назад я занимался внедрением сией чудесной feature в ПО. Это какой-то кошмар.

У мелкомягких это было реализовано кажется по технологии COM.

Т.е. пишем (грубо говоря)

Код:
if (SUCCEEDED(InitializeInterface))
  if (SUCCEEDED(Еще что-то делаем))
    .... ; Пятидесятый уровень вложенности
    if (SUCCEEDED(делаем проброс порта))
    else CloseHandle(a);
  else CloseHandle(b);
else CloseHandle(c);
И так далее.

И вот ты это дело запускаешь - а оно не работает. Сначала я делал без всех этих Close - но так - вообще не работало. Ну тоесть как... Оно или срабатывает с первого раза - или не срабатывает вообще.

Сообщения которые отдает тебе свитч ты не видишь. Просто видишь ошибку которая ни о чем не говорит и все. Мне нельзя было юзать более другие либы, нужно было то, что идет в комплекте с Вендой и ни либой больше.

Это какой-то ад. И вот чтобы как-то работало - вот все эти действия надо поместить в цикл и однажды оно срабатывало. Ну какбэ работает.

До сих пор не знаю как работает сея технология по rfc - ибо после того как я этим отзанимался - больше и близко к ней не подходил.

======================

Но есть мнение что таки багов там больше чем в данном disclosure.

UPD:

А нет, даже не так. Там надо было закрыть все хендлы которые ты открыл до этого, поэтому все решалось через goto. Тоесть идет список закрытий хендлов и ты через goto после else закрываешь все что успел наоткрывать.

Можно конечно (нужно тоесть) использовать объектный подход - но это в том случае если у тебя есть возможность подключить соответствующую либу.
 
Ответить с цитированием