Пытаюсь считать значение ключа из реестра: Код (Text): invoke RegOpenKeyEx, HKEY_LOCAL_MACHINE, subKey, 0, KEY_READ, hKey mov [mozSize], 200 invoke RegQueryValueEx, [hKey], keyName, 0, 0, mPath, mSize invoke RegCloseKey, [hKey] Но почему-то данный код то выполняется как надо, то RegQueryValueEx возвращает ошибку #126. Даже в голову ничего не приходит =/ Спасибо.
e4key Код (Text): // MessageText: // // The specified module could not be found. // #define ERROR_MOD_NOT_FOUND 126L Код (Text): ; MessageText: ; ; {Unable To Locate DLL} ; The dynamic link library %hs could not be found in the specified path %hs. ; STATUS_DLL_NOT_FOUND equ 0C0000135h RtlNtStatusToDosErrorNoTeb(STATUS_DLL_NOT_FOUND) = ERROR_MOD_NOT_FOUND. Тоесть LdrGetDllHandleEx() возвращает эту ошибку. Откуда там это не понятно. Могу предположить что это предыдущий код ошибки не изменяется, тоесть вы не верно условия при которой возникла ошибка определили. Далее вы будите дебажить этот код.
Clerk, ну собственно я проверял ошибки после RegOpenKeyEx, их там нет. Только после RegQueryValueEx. До этих функций кода вообще нет - RegOpenKeyEx первая. И что самое интересное - функция то выполняется, то не выполняется.
Ну да, конечно. Запусти под отладкой и стоя на ЕП посмотри LastError. Или вызывай GetLastError первой.. уверен, там будет ERROR_MOD_NOT_FOUND. И покажи как у тебя импорт прописан.
Partner 1. IceT хотел сказать, что после загрузки LastErr может быть не ERROR_SUCCESS 2. IceT возможно подразумевал (т.к. четко это не высказано), что API не меняют LastErr в случае успешного выполнения 3. Контроль за LastErr осуществлять необходимо (ну хотя бы в критически важных местах)
Partner Я конечно понимаю что winerror.h малоинформативный, следует ядерные коды(ntstatus) использовать, но в среде винапи желательно первое не совмещать со вторым.
Partner max7C4 разжевал уже все. После загрузки LastError часто не нулевой. А АПИ у топикстартера возвращают 0 (If the function succeeds, the return value is ERROR_SUCCESS) т.е., видимо, если RtlNtStatusToDosError возвращает не 0, только тогда вызывается SetLastError. А уж какой там MOD был NOT_FOUND - это только загрузчику известно. e4key, делай так: Код (Text): invoke RegQueryValueEx, [hKey], keyName, 0, 0, mPath, mSize or eax,eax je .err ; здесь GetLastError вызывать смысла нету .err: invoke GetLastError ret