Форум программистов, компьютерный форум CyberForum.ru

C++ и WinAPI

Войти
Регистрация
Восстановить пароль
 
roman912
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 55
#1

Не определяется SYSTEM_INFORMATION_CLASS - C++ WinAPI

04.01.2017, 17:56. Просмотров 151. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
#include <winternl.h>
#include <Windows.h>
 
int main()
{
    NTSTATUS status;
    PVOID buffer;
    SYSTEM_INFORMATION_CLASS spi;
    return 0;
}
Подключаю winternl.h для того, чтобы ntdll функции и их структуры использовать, но почему-то ругается и не видит
SYSTEM_INFORMATION_CLASS. Делаю в студии 2010 exspress.

P.S. В какой студии удобнее работать с вин апи, лучше ли будет в 2006 или 2008 ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2017, 17:56     Не определяется SYSTEM_INFORMATION_CLASS
Посмотрите здесь:

Не определяется функция _atold C++
Не определяется функция getch C++
C++ Не определяется равносторонний треугольник по заданным координатам
C++ Поле шахматной доски определяется парой натуральных чисел
Последовательность многочленов T0(x),T1(x),. определяется следующим образом C++
C++ Сформировать массив, каждый член которого определяется формулой
C++ Не определяется идентификатор
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nd2
1770 / 1452 / 504
Регистрация: 29.01.2016
Сообщений: 4,501
04.01.2017, 18:10     Не определяется SYSTEM_INFORMATION_CLASS #2
#include <Windows.h> выше перенеси.

Добавлено через 3 минуты
Цитата Сообщение от roman912 Посмотреть сообщение
лучше ли будет в 2006 или 2008 ?
Не лучше.

Добавлено через 1 минуту
По WinAPI вопросы лучше там задавать: http://www.cyberforum.ru/win-api/
roman912
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 55
04.01.2017, 18:20  [ТС]     Не определяется SYSTEM_INFORMATION_CLASS #3
Цитата Сообщение от nd2 Посмотреть сообщение
#include <Windows.h> выше перенеси.
Не помогает, даже еще ошибки теперь лезут по winterln.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
1>------ Построение начато: проект: projec, Конфигурация: Debug Win32 ------
1>  main.cpp
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(96): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "FullDllName"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(96): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(96): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(109): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "ImagePathName"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(109): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(109): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(110): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "CommandLine"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(110): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(110): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(148): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "ObjectName"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(148): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(148): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(275): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "TypeName"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(275): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(275): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(385): error C2065: PUNICODE_STRING: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(385): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "Name"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(385): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(388): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(458): error C2065: SYSTEM_INFORMATION_CLASS: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(458): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "SystemInformationClass"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(458): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(462): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(505): error C2065: PANSI_STRING: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(506): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "AnsiString"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(506): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(506): error C2182: RtlFreeAnsiString: недопустимое использование типа "void"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(506): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(511): error C2065: PUNICODE_STRING: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(512): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "UnicodeString"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(512): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(512): error C2182: RtlFreeUnicodeString: недопустимое использование типа "void"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(512): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(517): error C2065: POEM_STRING: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(518): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "OemString"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(518): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(518): error C2182: RtlFreeOemString: недопустимое использование типа "void"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(518): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(523): error C2065: PSTRING: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(523): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "DestinationString"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(523): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(523): error C2182: RtlInitString: недопустимое использование типа "void"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(525): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(530): error C2065: PANSI_STRING: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(530): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "DestinationString"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(530): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(530): error C2182: RtlInitAnsiString: недопустимое использование типа "void"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(532): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(537): error C2065: PUNICODE_STRING: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(537): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "DestinationString"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(537): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(537): error C2182: RtlInitUnicodeString: недопустимое использование типа "void"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(539): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(544): error C2065: PUNICODE_STRING: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(544): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "DestinationString"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(544): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(547): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(552): error C2065: PANSI_STRING: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(552): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "DestinationString"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(552): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(555): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(560): error C2065: POEM_STRING: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(560): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "DestinationString"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(560): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(563): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(598): error C2065: PUNICODE_STRING: необъявленный идентификатор
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(598): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "UnicodeString"
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(598): warning C4229: устаревший элемент: пропуск модификаторов для данных
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winternl.h(601): error C2059: синтаксическая ошибка: )
1>c:\documents\visual studio 2010\projects\projec\projec\main.cpp(11): error C2065: SYSTEM_INFORMATION_CLASS: необъявленный идентификатор
1>c:\documents\visual studio 2010\projects\projec\projec\main.cpp(11): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "spi"
1>c:\documents\visual studio 2010\projects\projec\projec\main.cpp(11): error C2065: spi: необъявленный идентификатор
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
У меня почему-то winternl.h нормально не подсоединяется, может есть способ это исправить ?
nd2
1770 / 1452 / 504
Регистрация: 29.01.2016
Сообщений: 4,501
04.01.2017, 18:26     Не определяется SYSTEM_INFORMATION_CLASS #4
Цитата Сообщение от roman912 Посмотреть сообщение
Не помогает, даже еще ошибки теперь лезут по winterln.h
...
Миниатюры
Не определяется SYSTEM_INFORMATION_CLASS  
roman912
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 55
04.01.2017, 18:37  [ТС]     Не определяется SYSTEM_INFORMATION_CLASS #5
nd2, а подскажи что в настройках проекта поставить, чтобы компилился. У меня почему-то не работает.
nd2
1770 / 1452 / 504
Регистрация: 29.01.2016
Сообщений: 4,501
04.01.2017, 18:48     Не определяется SYSTEM_INFORMATION_CLASS #6
Трудно сказать. Единственное, что вижу, это то, что файл winternl.h у меня другой. В строчках с ошибками там нет таких идентификаторов, как у тебя.
Цитата Сообщение от nd2 Посмотреть сообщение
По WinAPI вопросы лучше там задавать: http://www.cyberforum.ru/win-api/
Убежденный
Системный программист
Эксперт С++
15102 / 6797 / 1073
Регистрация: 02.05.2013
Сообщений: 11,111
Завершенные тесты: 1
04.01.2017, 19:21     Не определяется SYSTEM_INFORMATION_CLASS #7
SYSTEM_INFORMATION_CLASS - это Native API, а не Win32 API.
Часть этих объявлений есть в заголовке winternl.h, но все остальное недокументировано и
придется искать в других источниках. Могу посоветовать, например, исходники Process Hacker,
там есть много интересного по данному вопросу.
roman912
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 55
04.01.2017, 19:38  [ТС]     Не определяется SYSTEM_INFORMATION_CLASS #8
Цитата Сообщение от Убежденный Посмотреть сообщение
Часть этих объявлений есть в заголовке winternl.h
Вот еще этот winternl.h, почему-то если ставлю его после windows.h то куча ошибок от него и не видит эти определения.

Я правильно понимаю, что лучше не пытаться подключать winternl, а все нужные структуры и прототипы функций самому описывать ? Я просто думал подключить этот файл, чтобы структуры самому не описывать.

Кстати какую лучше студию поставить 2006 или 2008, чтобы были подсказки в winapi c++ ? В C# есть подсказки, а в с++ почему-то не работают.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2017, 19:46     Не определяется SYSTEM_INFORMATION_CLASS
Еще ссылки по теме:

C++ Kbhit() - не определяется
C++ Неправильно определяется get_global_id на OpenCL?
Где определяется функция narrow_cast? C++
Создать программу, в которой определяется дискриминант C++
Макрос определяется как тип C++

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

Или воспользуйтесь поиском по форуму:
Убежденный
Системный программист
Эксперт С++
15102 / 6797 / 1073
Регистрация: 02.05.2013
Сообщений: 11,111
Завершенные тесты: 1
04.01.2017, 19:46     Не определяется SYSTEM_INFORMATION_CLASS #9
Цитата Сообщение от roman912 Посмотреть сообщение
Я правильно понимаю, что лучше не пытаться подключать winternl, а все нужные структуры и прототипы функций самому описывать ?
Да, это более грамотный способ.
Потому что Microsoft в своих структурах много интересного прячет.
А объявляя нужные структуры и information classes вручную, ты
получаешь к ним доступ. Но, опять же, это все недокументировано и
рекомендуется использовать такие методы только если других путей нет или
они по каким-то причинам невозможны.

Цитата Сообщение от roman912 Посмотреть сообщение
Кстати какую лучше студию поставить 2006 или 2008, чтобы были подсказки в winapi c++ ?
Не знаю, о чем ты, потому что IntelliSense (подсказки, подсветка и т.п.) работают
во всех Студиях очень давно. В том числе и для C++. Сам пользуюсь и VS2008, и
VS2010, и еще немного VS2015, все работает без проблем. А есть еще VisualAssistX...
Yandex
Объявления
04.01.2017, 19:46     Не определяется SYSTEM_INFORMATION_CLASS
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru