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

C++ и WinAPI

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

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

04.01.2017, 17:56. Просмотров 192. Ответов 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 ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2017, 17:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не определяется SYSTEM_INFORMATION_CLASS (C++ WinAPI):

JF v95c не определяется (или определяется как USB MEMORY BAR) - Flash-память
Недавно столкнулся с такой ситуацией. Подключаю флэху а она не работает... т.е. на win xp определяется как неопознанное устройство. на...

HDD определяется в BIOS но не запускается и неправильно определяется объем диска - Жесткие диски
Всем доброго времени суток, прошу вас о помощи в борьбе с моим винтом от ноута. Попробую описать подробно, как все было. В один прекрасный...

HDD определяется в BIOS но не определяется в ОС - Жесткие диски
Доброе время суток! Столкнулся с проблемой связанным с винтом. После перезагрузки компа винчестер не определяется вин 7. Запуск винды при...

Nokia N95 определяется на windows 8.1, но не определяется на windows 7 - Драйверы
Имеется мобила Nokia N95. Решил подключить к компу (Windows 8.1). Всё ОК. А тут вдруг решил к ноуту трубу воткнуть. Пишет, что &quot;не удалось...

Не определяется last - jQuery
Есть вот такой код: $(document).on('click','.btn-add-lesson',function(){ var time = &quot;&quot;; var parent =...

Не определяется видеокарта - Видеокарты
Здравствуйте,нужна помощь по видеокарте. Железо: Процессор:AMD Phenom(tm) 9100e Quad-Core Processor 1.8 GHz ОЗУ:4ГБ ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nd2
2255 / 1827 / 639
Регистрация: 29.01.2016
Сообщений: 5,893
04.01.2017, 18:10 #2
#include <Windows.h> выше перенеси.

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

Добавлено через 1 минуту
По WinAPI вопросы лучше там задавать: http://www.cyberforum.ru/win-api/
0
roman912
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 55
04.01.2017, 18:20  [ТС] #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 нормально не подсоединяется, может есть способ это исправить ?
0
nd2
2255 / 1827 / 639
Регистрация: 29.01.2016
Сообщений: 5,893
04.01.2017, 18:26 #4
Цитата Сообщение от roman912 Посмотреть сообщение
Не помогает, даже еще ошибки теперь лезут по winterln.h
...
0
Миниатюры
Не определяется SYSTEM_INFORMATION_CLASS  
roman912
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 55
04.01.2017, 18:37  [ТС] #5
nd2, а подскажи что в настройках проекта поставить, чтобы компилился. У меня почему-то не работает.
0
nd2
2255 / 1827 / 639
Регистрация: 29.01.2016
Сообщений: 5,893
04.01.2017, 18:48 #6
Трудно сказать. Единственное, что вижу, это то, что файл winternl.h у меня другой. В строчках с ошибками там нет таких идентификаторов, как у тебя.
Цитата Сообщение от nd2 Посмотреть сообщение
По WinAPI вопросы лучше там задавать: http://www.cyberforum.ru/win-api/
0
Убежденный
Системный программист
Эксперт С++
15550 / 7058 / 1114
Регистрация: 02.05.2013
Сообщений: 11,468
Завершенные тесты: 1
04.01.2017, 19:21 #7
SYSTEM_INFORMATION_CLASS - это Native API, а не Win32 API.
Часть этих объявлений есть в заголовке winternl.h, но все остальное недокументировано и
придется искать в других источниках. Могу посоветовать, например, исходники Process Hacker,
там есть много интересного по данному вопросу.
0
roman912
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 55
04.01.2017, 19:38  [ТС] #8
Цитата Сообщение от Убежденный Посмотреть сообщение
Часть этих объявлений есть в заголовке winternl.h
Вот еще этот winternl.h, почему-то если ставлю его после windows.h то куча ошибок от него и не видит эти определения.

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

Кстати какую лучше студию поставить 2006 или 2008, чтобы были подсказки в winapi c++ ? В C# есть подсказки, а в с++ почему-то не работают.
0
Убежденный
Системный программист
Эксперт С++
15550 / 7058 / 1114
Регистрация: 02.05.2013
Сообщений: 11,468
Завершенные тесты: 1
04.01.2017, 19:46 #9
Цитата Сообщение от roman912 Посмотреть сообщение
Я правильно понимаю, что лучше не пытаться подключать winternl, а все нужные структуры и прототипы функций самому описывать ?
Да, это более грамотный способ.
Потому что Microsoft в своих структурах много интересного прячет.
А объявляя нужные структуры и information classes вручную, ты
получаешь к ним доступ. Но, опять же, это все недокументировано и
рекомендуется использовать такие методы только если других путей нет или
они по каким-то причинам невозможны.

Цитата Сообщение от roman912 Посмотреть сообщение
Кстати какую лучше студию поставить 2006 или 2008, чтобы были подсказки в winapi c++ ?
Не знаю, о чем ты, потому что IntelliSense (подсказки, подсветка и т.п.) работают
во всех Студиях очень давно. В том числе и для C++. Сам пользуюсь и VS2008, и
VS2010, и еще немного VS2015, все работает без проблем. А есть еще VisualAssistX...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2017, 19:46
Привет! Вот еще темы с ответами:

Не определяется HDD - Жесткие диски
При загрузке биоса перестал детектиться винт. HDD вестерн диджиталовский 800AAJS-00B4A0 (на 80 гигов). Шаманил с джамперами - бестолку....

Не определяется переносной ЖД - Жесткие диски
Всем добрый день. Возникла большая проблема с переносным ЖД AData Nobility NH92. При подключении к компьютеру есть звук подключения, но...

Не определяется руль - Джойстики
Есть руль Dialog GW-200 Street Racer 1 Исправно работал 1 год у меня(достался бесплатно) и года 3(плюс минус 1) у моего друга.Как то...

ResultSet не определяется - Java БД
Всем доброго времени суток, уважаемые форумчане! Сразу к делу. Взял коннектор с оф. сайта MySQL, 5-я версия. Пишу на NetBeans,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.01.2017, 19:46
Ответ Создать тему
Опции темы

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