2015-03-15 4 views
0

Я пытаюсь закодировать простую программу в C, которая пишет и читает что-то из реестра Windows. Что означает значение возврата 7 для RegOpenKeyEx?RegOpenKeyEx - что означает код ошибки 7?

У меня есть трудное время, пытаясь угадать. Да, MSDN говорит, что я могу использовать FormatMessage для его изучения, но он принимает 7 аргументов, и я понятия не имею, как его использовать ... (кстати, какой ужасный api-дизайн).

+0

Да, это плохо разработанный API. Коды системных ошибок задокументированы на [MSDN] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382%28v=vs.85%29.aspx). Кстати, действительно ли это 7? – cremno

+1

MSDN также говорит: «Если функция не работает, возвращаемое значение представляет собой ненулевой код ошибки, определенный в Winerror.h», который вы можете получить из [MSDN - системные коды ошибок] (https://msdn.microsoft.com/) ан-нас/библиотека/окна/настольные/ms681382% 28В = vs.85% 29.aspx). Если вы действительно получаете 7, это соответствует 'ERROR_ARENA_TRASHED'. – SleuthEye

+0

'ERROR_ARENA_TRASHED' довольно неправдоподобно. MCVE пожалуйста. –

ответ

1

MSDN entry for RegOpenKeyEx также указывает на то, что:

Если функция завершается ошибкой, возвращаемое значение является ненулевым кодом ошибки определяется в Winerror.h.

Эти коды ошибок задокументированы на странице MSDN - System Error Codes. Если вы действительно получаете 7, то эта ошибка будет соответствовать:

ERROR_ARENA_TRASHED
7 (0x7)
Блоки управления для хранения были уничтожены.

Что это означает, что может варьироваться от вашего реестра коррумпируется, к убиванию программных ошибок, в результате, казалось бы, странным поведение, или просто, что вы получаете что-то другое в качестве возвращаемого значения и приводят к поверить, что вы получаете результат 7. Без более полного примера кода, трудно предпринять что-то более конкретное.

P.S.: FormatMessage в основном удобен, если вы пытаетесь получить строковое представление ошибки во время выполнения. Если это так, вы можете обратиться к this answer за примером о том, как его использовать.