С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
 Аватар для Delvox
7 / 7 / 1
Регистрация: 09.03.2013
Сообщений: 54

Необработанное исключение. Нарушение прав доступа при чтении

17.01.2014, 17:59. Показов 2901. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Пишу привязку программы к конкретному компьютеру, и получаю информацию о железе через WMI, но при сохранении данных полученных от функции в строку типа string получаю ошибку "Необработанное исключение в "0x00ea1a42" в "universal.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000".


Функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
char wqlQuery(IWbemServices *pSvc, LPCWSTR pstrName, LPCWSTR pstrWmiclass)
{
IEnumWbemClassObject *pEnumerator = NULL;
pSvc->ExecQuery(_bstr_t(L"WQL"), _bstr_t(L"SELECT ")+_bstr_t(pstrName)+_bstr_t(L" FROM ")+_bstr_t(pstrWmiclass),
    WBEM_FLAG_FORWARD_ONLY|WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator);
 
IWbemClassObject *pclsObj;
ULONG uReturn = 0;
VARIANT vt;
VariantInit(&vt);
 
while(WBEM_S_NO_ERROR == pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn))
    {
    pclsObj->Get(pstrName, 0, &vt, NULL, NULL);
    //wprintf(L"%s\n",  (vt.vt==VT_NULL)?L"<null>":vt.bstrVal);
 
    VariantClear(&vt);
    pclsObj->Release();
    }
 
pEnumerator->Release();
}
Вызов функции и сохранение параметров:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char* motherboard ()
    {   
        TCHAR resBuffer[MAX_PATH];
 
        CoInitializeEx(0, COINIT_MULTITHREADED);
        CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
 
        IWbemLocator *pLoc = NULL;
        CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID*)&pLoc);
        IWbemServices *pSvc = NULL;
        pLoc->ConnectServer(_bstr_t(L"root\\cimv2"), NULL, NULL, NULL, NULL, NULL, 0, &pSvc);
string resultates =(const char*) wqlQuery(pSvc, L"Version", L"Win32_Bios");//вот тут ошибка
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.01.2014, 17:59
Ответы с готовыми решениями:

Необработанное исключение: Нарушение прав доступа при чтении
Работала с игрой &quot;Крестики-нолики&quot;. При компиляции выдает сообщение &quot;Необработанное исключение в &quot;0x0086297b&quot; в...

Нарушение прав доступа при чтении по адресу
Почему-то жалуется на &quot;нарушение прав доступа при чтении по адресу 0x00000030.&quot; fun вызывается кнопкой как fun(); #include...

Вызвано необработанное исключение: нарушение доступа для чтения. lpnmhdr было nullptr
Ошибка в фрагменте (см.скрин) после нажатия на кнопку &quot;ждать 5 сек&quot;. Строки 183-191 из общего кода: case WM_NOTIFY: LPNMHDR lpnmhdr =...

8
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
17.01.2014, 19:05
Сделайте проверку ошибок, тогда станет ясно, что и в каком месте происходит.
0
 Аватар для Delvox
7 / 7 / 1
Регистрация: 09.03.2013
Сообщений: 54
17.01.2014, 19:12  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Сделайте проверку ошибок, тогда станет ясно, что и в каком месте происходит.
таки ошибка видна, она в 12 строчке, вопрос в том как ее исправить?
т.е. как присвоить значение возвращенное функцией строке типа char или string ?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
17.01.2014, 19:22
Цитата Сообщение от Delvox Посмотреть сообщение
таки ошибка видна
Если нет проверки ошибок - код некорректен и его результаты непредсказуемы.
В приведенном примере есть как минимум семь мест, из-за которых может возникнуть
ошибка, и ни одно из них не контролируется.

Пальцем в небо: думаю, ошибка в этой строке:
C++
1
pSvc->ExecQuery
0
 Аватар для Delvox
7 / 7 / 1
Регистрация: 09.03.2013
Сообщений: 54
17.01.2014, 19:23  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Если нет проверки ошибок - код некорректен и его результаты непредсказуемы.
В приведенном примере есть как минимум семь мест, из-за которых может возникнуть
ошибка, и ни одно из них не контролируется.

Пальцем в небо: думаю, ошибка в этой строке:
C++
1
pSvc->ExecQuery
как исправить мой недочет?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
17.01.2014, 19:28
Ну представьте на секунду, что pLoc->ConnectServer по какой-то причине
завершается с ошибкой. В этом случае pSvc останется равным NULL.
Но этот факт игнорируется и pSvc передается аргументом в функцию
wqlQuery, где происходит попытка его разыменования - pSvc->ExecQuery.
В результате разыменования нулевого указателя программа валится:
"0xC0000005: Нарушение прав доступа при чтении "0x00000000".
Если Вы сделаете проверку возвращаемых значений, то будете точно
знать, какая функция завершилась неудачно и по какой причине (по
коду возврата, либо по GetLastError).
1
 Аватар для Delvox
7 / 7 / 1
Регистрация: 09.03.2013
Сообщений: 54
17.01.2014, 19:32  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Ну представьте на секунду, что pLoc->ConnectServer по какой-то причине
завершается с ошибкой. В этом случае pSvc останется равным NULL.
Но этот факт игнорируется и pSvc передается аргументом в функцию
wqlQuery, где происходит попытка его разыменования - pSvc->ExecQuery.
В результате разыменования нулевого указателя программа валится:
"0xC0000005: Нарушение прав доступа при чтении "0x00000000".
Если Вы сделаете проверку возвращаемых значений, то будете точно
знать, какая функция завершилась неудачно и по какой причине (по
коду возврата, либо по GetLastError).
спасибо, пойду пытаться исправлять
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
17.01.2014, 19:35
Кстати, вот еще - в wqlQuery и motherboard отсутствует return.
И wqlQuery объявлена с возвращаемым типом char, а в motherboard
этот тип почему-то приводится к <const char *>, что бессмысленно.
0
 Аватар для Delvox
7 / 7 / 1
Регистрация: 09.03.2013
Сообщений: 54
17.01.2014, 19:38  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Кстати, вот еще - в wqlQuery и motherboard отсутствует return.
И wqlQuery объявлена с возвращаемым типом char, а в motherboard
этот тип почему-то приводится к <const char *>, что бессмысленно.
это отголоски моих незнаний и эксперементов с кодом, я добивался того чтобы присвоить строке полученные данные от функции. А потом уже использовать данные из этой строки для привязка программы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.01.2014, 19:38
Помогаю со студенческими работами здесь

Необработанное исключение, нарушение прав доступа при чтении
Необработанное исключение по адресу 0x0F5E4654 (msvcr120d.dll) в Проект1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу...

Необработанное исключение. Нарушение прав доступа при чтении
Ребят помогите. В общем есть программа, открывает один файл, ищет в нем последовательности, заменяет на другие. В консоли все прекрасно...

Необработанное исключение: 0xC0000005: Нарушение прав доступа при чтении
Программа складывает и вычитает матрицы произвольной размерности, читаемые ею с файла. На самом выходе из программы вылетает данное...

Необработанное исключение по адресу 0x008B94C5. 0xC0000005: нарушение прав доступа при чтении по
Здравствуйте! Функция должна искать локальные минимумы массива. То есть это элементы,которые меньше своих соседей. Дело в том,что функция...

Необработанное исключение по адресу 0x00E730CD в ConsoleApplication18.exe: 0xC0000005: нарушение прав доступа при чтении
Задана целочисленная динамическая матрица M. Элементы этой матрицы, без остатка делящиеся на 6, переписать в динамический массив L и найти...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru