Существует ли Windows API, возвращающий текст сообщения для кодов NTSTATUS?
то есть что-то похожее на WinAPI: FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ....)
FormatMessage не работает - ни на ntstatus коде, ни на HRESULT_FROM_NT(ntstatus).
Важным моментом в записи базы знаний является использование FORMAT_MESSAGE_FROM_HMODULE и передача результата LoadLibrary("NTDLL.DLL") для параметра lpSource.
Это должно быть опубликовано как ответ.





Согласно этой статье базы знаний MS , FormatMessage API можно использовать для преобразования NTSTATUS кода в текст.
Статья выше содержит полный пример использования.
Важные замечания по использованию:
dwFlags (первый параметр) должен включать:
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_HMODULE
lpSource (второй параметр) должен быть HMODULE файла «NTDLL.DLL» (можно получить через LoadLibrary("NTDLL.DLL")).Другая альтернатива, если вы используете C++, — использовать std::system_category (доступно начиная с C++ 11).
#include <system_error> // required for std::system_category
#include <iostream>
// ...
std::string message1 = std::system_category().message(STATUS_TIMEOUT);
std::cout << message1 << std::endl;
Выход:
The wait operation timed out.
Примечание: не все значения NTSTATUS поддерживаются std::system_category(), для некоторых вы получите "unknown error".
FormatMessageдолжна иметь возможность конвертироватьNTSTATUSв строку. Там есть пример, как его использовать. Вы уверены, что это не работает?