singlepost

Системное программирование! << На главную или назад  

Может кто знает, какую литературку можно почитать, чтобы понять, как добраться до информации, кот.мне нужна,а именно что-то типа таблицы процессов, в которой указаны все запущенные процессы, и инфа о них. короче как если бы вы нажали Alt+Ctrl+Delete и перешли на вкладку процессы????????????????????????????????????????????????

45 ответов в теме “Системное программирование!”

  1. 16
    Ирина Чекрышова ответил:

    Ясно, спасибо

  2. 15
    Сергей Галат ответил:

    Насчет списка запущенных процессов – есть несколько способов, общее API верхнего уровня для них (для современных ОС семейства Windows) – уже упомянутый здесь toolhelp (CreateToolhelp32Snapshot, Process32First и Process32Next).

    Насчет приоритетов – хорошо описывает Дж. Рихтер.
    Диапазон значений приоритета любого потока – от 1 до 31. Однако Win API скрывает эти конкретные значения, предлагая использовать абстракции класса приоритета процесса (process priority class – Set(Get)PriorityClass) и уровня приоритета каждого из его потоков (thread priority level – Set(Get)ThreadPriority). Возможные значения представлены в виде набора констант (от IDLE_PRIORITY_CLASS до REALTIME_PRIORITY_CLASS для класса приоритета процесса и от THREAD_PRIORITY_IDLE до THREAD_PRIORITY_TIME_CRITICAL для уровня приоритета потока). Фактическое значение приоритета потока (от 1 до 31) вычисляется на базе этих двух параметров.
    Т.о. разработчик должен оперировать предоставляемым набором констант, а не конкретными значениями. Фактический алгоритм расчета приоритета потока может различаться для разных версий Windows – от разрабочика это скрыто, и это его не должно волновать.

    В итоге, короче, не сможешь ты в SetPriorityClass передать другие значения :) Юзай комбинацию функций SetPriorityClass и SetThreadPriority.

  3. 14
    Ирина Чекрышова ответил:

    Ау!!!

  4. 13
    Ирина Чекрышова ответил:

    Базовый приоритет представляет собой число от 0 до 32 вроде как. Функция, изменяющая приоритет:
    SetPriorityClass(hProcess:Cardinal; dwPriorityClass:Cardinal);

    Первый параметр хэндл процесса, второй – одна из следующих констант:(NORMAL_PRIORITY_CLASS = $00000020;
    IDLE_PRIORITY_CLASS = $00000040;
    HIGH_PRIORITY_CLASS = $00000080;
    REALTIME_PRIORITY_CLASS = $00000100;
    $00008000
    $00004000) ;;;;;;;;;
    они возводят приоритет лишь в конкретные 6 значений (8, 4, 13, 24, 6, 10 соответственно) . Вопрос: А МОЖНО ЛИ СДЕЛАТЬ ТАК, ЧТОБ И ДРУГИЕ ЗНАЧЕНИЯ МОЖНО БЫЛО ПРИСВОИТЬ ПРИОРИТЕТУ???

  5. 12
    Евгений Михайлин ответил:

    и вообще имхо системное программирование лучше изучать на Unix системах. Там сделано красивее и мозги не засоряются.Базовые принципы будут понятны – а если надо проф. работать под виндой – мсдн в руки

  6. 11
    Константин Смотритель ответил:

    Правильно сказал Руслан.

    Если речь о Windows – то, что тебе надо хорошо описано в книге "Windows для профессионалов: создание эффективных Win32-приложений с учётом специфики 64-разрядной версии Windows"/пер. с английского, Джефри Рихтер, 4-е издание СПб "Питер" 2003, 752с.

    На доступном языке автор раскрывает недокументрованные (и документированные) возможности.

    Вообще-то, прав Олег Андреев, говоря, что здесь не собираются программисты :-(

  7. 10
    Руслан Шамюнов ответил:

    Нет – просто флуд развели )

  8. 9
    Ирина Чекрышова ответил:

    О господи, неужели все так запущено… :-О

  9. 8
    Алексей Андреев ответил:

    Бывает необходимость, например чтобы выловить руткит или вирус, они обманывают API. Но вряд ли это относится к текущему обсуждению, просто не удержался.

  10. 7
    Руслан Шамюнов ответил:

    Да и зачем лезть в дебри системы, когда есть удобные инструменты в API

  11. 6
    Алексей Андреев ответил:

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

  12. 5
    Vadim Ershov ответил:

    Господа, а что, тут нет места для ассемблера? винда что не позволит посмотреть оперативу? обязательно использовать WinAPI?

  13. 4
    Руслан Шамюнов ответил:

    Процессы представляют из себя связанный список. Самый простой способ получения CreateToolhelp32Snapshot, Process32First и Process32Next. Информация есть в любом справочнике по WinAPI.
    Если нужна книга по устройству винды, то могу посоветовать Джеффри РИХТЕР "Создание эффективных WIN32-приложений
    с учетом специфики 64-разрядной версии Windows"

    Что касается Криса Касперски – его литература направлена на дизассемблирование, отладку и взлом программ на ассемблере.

  14. 3
    Дмитрий Потапов ответил:

    Я бы посоветовал читать МСДН :-)
    Пять минут чтения и узнаём о том что WMI спасёт отца русской демократии.
    Объект – Win32_Process. Пятнадцать минут кодинга – и на экране вся инфа о всех процессах системы.

    Код бы выложил, да тут места мало чтобы двести строк кода вставить.

    P.S. Достаточно было всего одного знака вопроса :-)

    UPD: порезал каменты, запостил код на Nopaste: //rafb.net/p/LAq2lS89.html
    Использование:
    1. Компилируем как консольную аппликуху (в 2005й студии компилится влёт, вроде ничего дополнительно прописывать не надо)
    2. Запускаем из командной строки: имя_проги WQL_запрос поле1 поле2 …
    3. Пример: WMIRequest.exe "SELECT * FROM Win32_Process" Caption ThreadCount WorkingSetSize

  15. 2
    Стас Кардапольцев ответил:

    Я ща читаю системное программирование в среде Windows,джонсон м. харт

  16. 1
    Анатолий Лютин ответил:

    Надо читать книги (авторов сразу не вспомню) типа "Win32 и системное программирование", можно попробовать Касперски "Отладка приложения без исходного кода" и т.п. Если кто-нибудь прокомментит, то с удовольствием выслушаю другое мнение.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.