1. C++ / Говнокод #16847

    +55

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    bool nt_utils::enum_processes(std::vector<uint32_t>& pids)
    {
      pids.clear();
    
      PDWORD process_ids = NULL;
      DWORD cb = ALLOC_SIZE;
      DWORD bytes_returned = 0;
      BOOL complete = FALSE;
    
      __try {
    
        while (!complete) {
          process_ids = static_cast<PDWORD>(
            ::HeapAlloc(
              ::GetProcessHeap(),
              HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY,
              cb
            )
          );
    
          if (::EnumProcesses(process_ids, cb, &bytes_returned)) {
            if (cb == bytes_returned) {
              ::HeapFree(::GetProcessHeap(), 0, process_ids);
              process_ids = NULL;
              cb *= 2;
            } else {
              complete = TRUE;
            }
          } else {
            ::HeapFree(::GetProcessHeap(), 0, process_ids);
            process_ids = NULL;
            complete = TRUE;
          }
        }
        
        if (process_ids) {
          DWORD size = bytes_returned / sizeof(DWORD);
          pids.reserve(size);
          for (DWORD i = 0; i < size; ++i) {
            assert(process_ids[i]);
            pids[i] = process_ids[i];
          }
          ::HeapFree(::GetProcessHeap(), 0, process_ids);
        }
    
      } __except (EXCEPTION_EXECUTE_HANDLER) {
        if (process_ids) {
          ::HeapFree(::GetProcessHeap(), 0, process_ids);
        }
        return false;
      }
    
      return !!process_ids;
    }

    Получение id всех процессов

    Запостил: gc4242, 14 Октября 2014

    Комментарии (25) RSS

    • return !!process_ids; // !!!!!!!!! >:-(
      Ответить
    • ::HeapFree(::GetProcessHeap(), 0, process_ids);
      }

      } __except (EXCEPTION_EXECUTE_HANDLER) {
      if (process_ids) {
      ::HeapFree(::GetProcessHeap(), 0, process_ids);


      блядь, для этого и нужны деструкторы ващето
      Ответить
    • Как-то мне противно стало от этих кодов, сразу повеяло запахом винапишечки, Structured Exception Handling, windows only программ, VC++, странных типов, ручной проверки кодов возврата, функций с бесконечным числом аргументов, первой зарплаты светловолосых крестоблядей, молящих о еде собаками у перехода.
      Ответить
      • Если долго кушать каки, то начинаешь различать их вкус. Я каки кушал достаточно и у этого конкретного привкус ВинАПИ довольно слаб.
        Ответить
        • В сортах какаш не разбираюсь.Поговорил с пастой, день прожит не зря.
          Ответить
      • > молящих о еде собаками у перехода
        не распарсил
        Ответить
        • Может, это выражение-антоним к "ходить гоголем"?
          "ходить гоголем" → "молить собакой",
          т.е. "молить собакой о еде" - чувствовать себя измученной собакой и молить о еде или молить о еде как голодная собака.
          Ответить
        • >> молящих о еде собаками у перехода
          > не распарсил
          1. Одеваешься в лохмотья, синяки и вонь
          2. Берёшь жалкую дворнягу
          3. Садишься у перехода с дворнягой и пустой ёмкостью для приёма денег
          4. ...
          5. Профит
          Ответить
          • hot dog же! не?
            Ответить
          • 1. Натравливаешь собаку на одинокого прохожего
            2. Ждешь
            3. ...
            4. PROFITЕДА
            Ответить
        • Мозг 3.1415926 поражен генератором. Он теперь и сам так пишет.
          Ответить
          • Ага, я тоже долго вчитывался, пытаясь понять, генератор это или человек. В итоге решил, что это всё же человек.

            Жаль, что тест тьюринга начинает барахлить не из-за развития машин, а из-за деградации людей.
            Ответить
            • Самое страшное, что я моментально всё распарсил и интерпретировал.
              Ответить
          • Ничего не понимаю… И это программисты. Говно какое-то. Яндекс им дал поиск - ищи! Ищи копипасту блядь! Не хочу, хочу вчитываться! Что такое?
            Ответить
            • Пасты для быдла же.
              Ответить
              • http://govnokod.ru/16637#comment246653
                Уничижительно
                Ответить
                • Я свободный человек. Хочу — критикую себя. Хочу — веду себя, как быдло. Хочу — вчитываюсь в чужую пасту вместо того, чтобы искать оригинал.
                  Ответить
                  • Въебал плюс.
                    Ответить
                  • А можно, пожалуйста, назвать критерий быдла.
                    Ответить
                    • Сам хочу узнать. Я раньше думал, что быдло — это про это: http://bydlo.com.pl/. И про это: http://bydlo.net.pl/. Но цивилизованные европейцы пытаются меня убедить в чём-то другом.
                      Ответить
      • Еда собаками - брикеты еды в форме собак. В Корее популярно.
        Ответить
    • Обратите внимание, что Конардо является никогда не спамившим в форточка c++.
      Кто был конардо? Имеется тридве кандидатуры:

      *Bormand
      *Incanus-gay
      Ответить

    Добавить комментарий