Warum findet FormatMessage() keine Meldung für WinINet-Fehler?

Lesezeit: 1 Minute

Benutzer-Avatar
TTT

Ich führe das zum Testen aus FormatNachricht:

LPVOID lpMsgBuf;
errCode=12163;

FormatMessage(
    FORMAT_MESSAGE_ALLOCATE_BUFFER | 
    FORMAT_MESSAGE_FROM_SYSTEM ,
    0,
    errCode,
    0,
    (LPTSTR) &lpMsgBuf,
    0, NULL );

Allerdings, wenn es zurückkehrt lpMsgBuf enthält NULL … Ich hatte so etwas erwartet ERROR_INTERNET_DISCONNECTED.

Sieht irgendetwas falsch aus? Vielen Dank.

Benutzer-Avatar
Shog9

Das ist ein WinINet-Fehler, und die damit verbundene Meldung befindet sich in WinINet.dll. Sie müssen FormatMessage() nur darüber informieren, damit es die richtige Nachricht abruft:

FormatMessage( 
   // flags:
   FORMAT_MESSAGE_ALLOCATE_BUFFER  // allocate buffer (free with LocalFree())
   | FORMAT_MESSAGE_IGNORE_INSERTS // don't process inserts
   | FORMAT_MESSAGE_FROM_HMODULE,  // retrieve message from specified DLL
   // module to retrieve message text from
   GetModuleHandle(_T("wininet.dll")),
   // error code to look up
   errCode,
   // default language
   0, 
   // address of location to hold pointer to allocated buffer
   (LPTSTR)&lpMsgBuf, 
   // no minimum size
   0, 
   // no arguments
   NULL );

Dies ist offiziell auf MSDN unter der dokumentiert Abschnitt “Behandlung von Fehlern”. der WinINet-Dokumentation.

Beachten Sie, dass Sie die hinzufügen können FORMAT_MESSAGE_FROM_SYSTEM Flag wieder ein, wenn Sie diese Routine für möglicherweise oder möglicherweise auftretende Fehler verwenden möchten nicht von WinINet gekommen sind: mit diesem Flag an Ort und Stelle, FormatMessage() greift auf die Systemmeldungstabelle zurück, wenn der Fehler nicht in wininet.dll gefunden wird. Jedoch, tun nicht Entfernen Sie das FORMAT_MESSAGE_IGNORE_INSERTS-Flag.

  • Die Arbeit mit WinINet hat mir viele Dinge beigebracht, die ich eigentlich nie wissen wollte. 🙁

    – Shog9

    29. Januar 2010 um 2:56 Uhr

1206330cookie-checkWarum findet FormatMessage() keine Meldung für WinINet-Fehler?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy