Wie kann ich abrufen Fehlermeldungen für DirectX 9

Möchte ich abrufen Fehlermeldungen für DirectX 9, aber ich kann auf dem web finden, ist die Verwendung der FormatMessage() und _com_error.ErrorMessage(), die beide mich nicht.

hr = g_pd3dDevice->GetRenderTargetData(...
... //the debugger tells me hr = 0x8876086c
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
    FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL, hr, 0, (LPTSTR)&lpBuf, 0, NULL))
//it returns 0 with lpBuf unallocated

FormatMessage() fehlschlägt und ich die es wieder mit GetLastError (), um zu sehen, warum FormatMessage() fehlschlägt:
"The system cannot find message text for message number 0x%1 in der message-Datei für" %2."

_com_error.ErrorMessage() sagt mir "Unknown error 0x8876086c"

  • BTW: gibt es einen gemeinsamen Weg, um Fehler-Zeichenfolgen für alle HRESULT?
  • Nicht wirklich, Fehlercodes und-Meldungen werden kategorisiert. Zum Beispiel, Netzwerk-subsystem hat seine eigenen codes und Nachrichten, DX hat seine eigenen, etc. So müssen Sie wissen, eine Art von operation, die Sie ausgeführt wurden, um eine Nachricht entsprechend der Fehlermeldung, die Sie bekommen.
  • Blick in die d3d9.h header-Datei für Fehler-codes. Finden Sie eine übereinstimmung mit D3DERR_INVALIDCALL, der string ist nicht zu sagen, warum man ungültige Argumente übergeben. Auch nicht, Ihr snippet.
  • Wie Sie schon erwähnten, Netzwerk-APIs, die ich verwendet, GetLastError() mit FormatMessage für die winsock-APIs und es funktioniert obwohl die MSDN sagt zu WSAGetLastError() statt. Ich weiß nicht, ob es eine zuverlässige Möglichkeit.
  • Passant du hast Recht. Aber ich bin auf der Suche nach einem Weg, um den Fehler anzuzeigen, die für alle DX9-APIs, die ich benutze, nicht nur in diesem einzelnen Fall.
  • Schau mal hier - alax.info/blog/1383 das tool deckt ein paar tausend HRESULT codes von verschiedenen APIs und dekodiert die Werte auf bequeme Art und Weise.
  • Wirklich nettes tool. Vielen Dank für die Empfehlung!

InformationsquelleAutor LeOpArD | 2012-11-24
Schreibe einen Kommentar