Ошибка LoadLibrary с кодом ошибки 14007

0

Когда я пытаюсь загрузить DLL с помощью LoadLibrary, дескриптор не является нулевым, но GetLastError возвращает 14007. Любые идеи?

MSDN говорит:

ERROR_SXS_KEY_NOT_FOUND
14007 (0x36B7)
The requested lookup key was not found in any active activation context

HMODULE handle = LoadLibrary ("mydll.dll"); r = GetLastError(); if (! handle) return 0;

Теги:

1 ответ

-2

Код ошибки не всегда сбрасывается при успешном завершении.

Прежде всего, чтобы узнать, успешно ли вызов функции, вы следуете семантике, указанной в документации. В этом случае, возвращает ли LoadLibrary допустимый дескриптор.

Вы указали, что это так, поэтому результат GetLastError не имеет значения. Это может быть результатом некоторых предыдущих вызовов, которые не удались.

Из документации GetLastError:

Возвращаемое значение - код последней ошибки вызывающего потока.

Раздел "Возвращаемое значение" документации для каждой функции, которая устанавливает код последней ошибки, отмечает условия, при которых функция устанавливает код последней ошибки. Большинство функций, которые устанавливают код последней ошибки потока, устанавливают его, когда они терпят неудачу. Однако некоторые функции также устанавливают код последней ошибки, когда они преуспевают. Если функция не документирована для установки кода последней ошибки, значение, возвращаемое этой функцией, является просто самым последним последним кодом ошибки, который был установлен; некоторые функции устанавливают код последней ошибки в 0 при успешном запуске, а другие - нет.

Я не вижу ничего в документации LoadLibrary предполагая, что код ошибки установлен на 0 при успехе, что означает, что это не имеет смысла в вашем случае.

  • 0
    Что меня озадачивает, так это то, что я поместил GetLastError в трассировку в разных местах и прошел через код, ошибка появляется сразу после вызова LoadLibrary.
  • 0
    @Syler: я не понимаю, что вы имеете в виду под «всплывающим». Можете быть более конкретными? Как это связано с семантикой, которую я объяснил выше?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню