У меня возникла следующая проблема
Для получения сообщения об ошибке в Win32
Я использовал стандартный код из MSDN
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Process any inserts in lpMsgBuf.
// ...
// Display the string.
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
(находится в статье про ::FormatMessage)
Я выяснил, что по некоторым кодам ошибок
FormatMessage сама выдает ошибку. GetLastError
возвращает 317 — The system cannot find message
text for message number 0x%1 in the message
file for %2. Я обнаружил, что в kernel32.dll
(у меня Windows NT Server 4)
нет некоторого количества ошибочных кодов.
Начиная с 2010 ошибки. В приниципе, меня
интересуют ошибки WSA. Но все равно
хотелось бы разобраться. Самое что интересное
у некоторых людей сообщения по ошибке 2010
есть, у некоторых нет.
Здравствуйте Lexey, Вы писали:
L>Здравствуйте Kirhgoff, Вы писали:
K>>Начиная с 2010 ошибки. В приниципе, меня K>>интересуют ошибки WSA.
L>AFAIR, ошибки WSA ты с помощью FormatMessage никогда не получишь. Они специфичны для WinSock.
2000/XP вполне успешно их показывают. А вот NT 4 и 9x/Me — нет.
-- Alex Fedotov
Re[3]: FormatMessage не находит сообщений об ошибках
Здравствуйте Alex Fedotov, Вы писали:
L>>AFAIR, ошибки WSA ты с помощью FormatMessage никогда не получишь. Они специфичны для WinSock.
AF>2000/XP вполне успешно их показывают. А вот NT 4 и 9x/Me — нет.
Круто, а в документации это где-нибудь написано?
Re[4]: FormatMessage не находит сообщений об ошибках
AF>>>2000/XP вполне успешно их показывают. А вот NT 4 и 9x/Me — нет.
L>>Круто, а в документации это где-нибудь написано?
L>А написано оно в хэлпе по WSAGetLastError в MSDN-e.
L>Return Values L>The return value indicates the error value for this thread’s last Windows Sockets operation that failed.
[skip] K>Начиная с 2010 ошибки. В приниципе, меня K>интересуют ошибки WSA. Но все равно K>хотелось бы разобраться. Самое что интересное K>у некоторых людей сообщения по ошибке 2010 K>есть, у некоторых нет.
А может попробовать FORMAT_MESSAGE_FROM_HMODULE и указать lpSource = hWinsock32Instance ?
Почетный кавалер ордена Совка.
Re[2]: FormatMessage не находит сообщений об ошибках
От:
Аноним
Дата:
22.03.02 14:34
Оценка:
Здравствуйте Patalog, Вы писали: P>А может попробовать FORMAT_MESSAGE_FROM_HMODULE и указать lpSource = hWinsock32Instance ?
а где взять то его — hWinsock32Instance?
Kirhgoff
Re[2]: FormatMessage не находит сообщений об ошибках
От:
Аноним
Дата:
22.03.02 14:39
Оценка:
Patalog, прошу прощения!
Сначала надо подумать, а потом уже спрашивать.
Вся проблема в том, что я использую ws2_32.dll
а в ней, в отличие от winsock2.dll, нкт таблицы
сообщений об ошибках.Большое спасибо, что подтолкнул
к правильному ответу.