Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/39: Рейтинг темы: голосов - 39, средняя оценка - 4.87
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033

ZwQuerySystemInformation

17.07.2012, 17:43. Показов 8092. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа пытаюсь из ntdll.dll загрузить функцию - ZwQuerySystemInformations , но когда я объявляю её вот так -
C++
1
2
3
4
5
6
typedef BOOL  (__stdcall *ZwQuerySystemInformations)(
SYSTEM_INFORMATION_CLASS SystemInformationClass,
PVOID SystemInformation,
ULONG SystemInformationLength,
PULONG ReturnLength
);
компилятор говорит не объявлено - SYSTEM_INFORMATION_CLASS . Как быть в данной ситуации ? Пробовал объвить вот так -
C++
1
SYSTEM_INFORMATION_CLASS SystemInformationClass
но на это он тоже начинает ругаться . Среда - Dev C++
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.07.2012, 17:43
Ответы с готовыми решениями:

Описание ZwQuerySystemInformation
Здравствуйте, есть у кого-нибудь описание функции ZwQuerySystemInformation? Поисковики мне ничего толкового не дали.

Список процессов через ZwQuerySystemInformation
Здравствуйте..Требуется получить список процессов через функцию ZwQuerySystemInformation...В драйвере реализовал.Теперь требуется получить...

Результаты ZwQuerySystemInformation
Здравствуйте....Требуется получить список процессов в драйвере с помощью функции ZwQuerySystemInformation()...Код рабочий, только не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
17.07.2012, 19:00
Нет такой функции в NtDll.dll. Есть ZwQuerySystemInformation. Только прототип ее уже описан в ddk/ntapi.h, зачем еще раз делать то же самое?
1
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
17.07.2012, 19:33  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Нет такой функции в NtDll.dll
извеняюсь опечатка зачем то - s наконце поставил , извини те , а где она есть и как мне её получить в dev c++ ?

Добавлено через 19 минут
Извеняюсь тупанул , всё нашёл , всё сделал
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
17.07.2012, 19:38
Вдруг еще кому понадобится. Для начала -
C++
1
#include <ddk/ntapi.h>
, а потом идем в Project -> Project Options -> Parameters, линкеру жмем Add library or Object, добавляем из папки \Dev-Cpp\lib библиотеку libntdll.a ... Всё, можно ZwQuerySystemInformation начинать использовать, больше делать ничего не надо.
1
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
17.07.2012, 20:00  [ТС]
ан нет функцию норм воспринимает , а вот при использовании какая то ерунда -
C++
1
2
3
static char Buffer[1000];static DWORD Byet=0x008;
ZwQuerySystemInformation(SystemSummaryMemoryInformation,Buffer,Byet,NULL);
MessageBox(hwnd,Buffer,"",MB_OK);
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
17.07.2012, 20:20
Игорь с++, ZwQuerySystemInformation - это функция, которая при ошибке вернет результат типа NTSTATUS. Посмотри, какой результат она тебе выдает. Скорее всего 0xC0000004 (STATUS_INFO_LENGTH_MISMATCH). Так?
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
17.07.2012, 20:49  [ТС]
неа , вот такой - 0xC0000008

Добавлено через 11 минут
Извеняюсь я ещё код чуть другой сделал -
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
static int a;
      static char Buffer[1000];static DWORD Byet=0x00C;
 
    switch (message)                  /* handle the messages */
    {
      
      case WM_CHAR:
a =  ZwQuerySystemInformation(SystemProcessorInformation,Buffer,Byet,NULL);
 if(a==0){Beep(500,500);
 Byet=GetLastError();
 itoa(Byet,Buffer,16);MessageBox(hwnd,Buffer,"",MB_OK);
 }
 if(a!=0){MessageBox(hwnd,Buffer,"",MB_OK);}          
           break;
Добавлено через 10 минут
причём я заметил какой бы я не делал параметр , возвращает всегда эту ошибку
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
17.07.2012, 21:51
Я не знаю, всегда ли можно вызывать эту функцию с параметром SystemSummaryMemoryInformation (про него в MSDN ни слова, а на сторонних сайтах есть вот такое примечание:
SystemSummaryMemoryInformation
0x014 GET checked build only
, что такое checked build? Почему только он? Непонятно), но вот такой код, к примеру, прекрасно отрабатывает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
case WM_CREATE:
{
   SYSTEM_BASIC_INFORMATION sbi;
   ULONG ReturnLength = 0;
                   
   ZwQuerySystemInformation(SystemBasicInformation, &sbi, 
      sizeof(SYSTEM_BASIC_INFORMATION), &ReturnLength);
                   
   char buffer[256];
   sprintf(buffer, "number processors : %d", sbi.NumberProcessors);
   MessageBoxA(hwnd, buffer, "title", MB_OK);
}
break;
, то есть, ZwQuerySystemInformation рабочая. Да и вообще, не стоило бы пользоваться функциями, для которых написано, что они "may be altered or unavailable in subsequent versions of Windows". Потом проблем не оберешься. Пользуйся рекомендованными средствами вместо недокументированных.
1
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
17.07.2012, 21:57  [ТС]
спасибо за информацию , если позволите ещё один вопрос - в pdh.dll какая функция(и есть ли она вообще)для вывода на экран загруженности процессора ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
17.07.2012, 22:56
Есть. MS дает пример использования pdh.dll для получения в том числе и загрузки процессора (достаточно в поле szObjectName записать "Processor", а в szCounterName - "% Processor Time" для англоязычной Windows или русские аналоги для русскоязычной, и далее PdhMakeCounterPath + PdhAddCounter + PdhCollectQueryData)
1
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
17.07.2012, 23:01  [ТС]
Спасибо полез разбираться и переписовать для Dev C++
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
18.07.2012, 04:41
А мне вот интересно стало: задается символьная переменная Buffer размеров в 1000 символов. А длина ее при вызове функции указывается то как 8, то как 12 символов. Это как???
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
18.07.2012, 13:00  [ТС]
GrayWolf, Да там уже по барабану главное , что не меньше , тем более это рабочий вариант , а в нормальном коде всё идёт последовательно.
0
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 7
05.03.2013, 12:09
Игорь, вы разобрались с вашей задачей? Если да, то каким образом?
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.03.2013, 13:02  [ТС]
Student2014, с чем конкретно тебя интересует ?
0
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 7
05.03.2013, 17:27
Компилятор не понимает SYSTEM_INFORMATION_CLASS.
Кстати, разумно ли для получения списка всех хендлов системы использовать эту функцию? Какой тогда аргумент надо передавать?
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.03.2013, 17:46  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Вдруг еще кому понадобится. Для начала -
Код C++
1
#include <ddk/ntapi.h>
, а потом идем в Project -> Project Options -> Parameters, линкеру жмем Add library or Object, добавляем из папки \Dev-Cpp\lib библиотеку libntdll.a ... Всё, можно ZwQuerySystemInformation начинать использовать, больше делать ничего не надо.
Вот это вы читали ?
0
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 7
05.03.2013, 17:54
Читал, но я работаю в VS2010.
А по второму вопросу что скажете?
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.03.2013, 18:03  [ТС]
Цитата Сообщение от Student2014 Посмотреть сообщение
А по второму вопросу что скажете?
Понятие не имею , я для чего то другого использовал , правда уже даже не помню для чего.
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
11.03.2013, 01:04
Цитата Сообщение от Student2014 Посмотреть сообщение
Компилятор не понимает SYSTEM_INFORMATION_CLASS.
#include "winternl.h"
Цитата Сообщение от Student2014 Посмотреть сообщение
Кстати, разумно ли для получения списка всех хендлов системы использовать эту функцию? Какой тогда аргумент надо передавать?
Ты о SYSTEM_PROCESS_INFORMATION?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru