Kurz der eine Funktion manuell das übersetzt einige bekannte REFIID zu Namen, wie zum Beispiel das Schreiben:Gibt es eine Betriebssystemfunktion, um eine REFIID in einen hilfreichen Namen zu übersetzen?
if (riid == IID_IUnknown) return "IUnknown";
if (riid == IID_IShellBrowser) return "IShellBrowser";
...
Gibt es einen Systemaufruf, der eine angemessene Debug-String für bekannte (oder sogar alle) REFIIDs zurückkehren würde?
Verwenden Sie niemals 'catch (...)'. Dafür gibt es viele verschiedene philosophische Gründe, aber wenn Sie einen pragmatischen haben möchten: Um die Prüfung "Designed for Vista" zu bestehen, muss Ihre Anwendung niemals Zugriffsverletzungsausnahmen erfassen. Abhängig von den Einstellungen Ihres Compilers macht 'catch (...)' genau das. –
Verwenden Sie außerdem die Klasse "CComBSTR", um eine OLE-Zeichenfolge (z. B. BSTR) in einer MFC- oder ATL-Anwendung zu verwalten. –
Es gibt keinen Grund, den gesamten Overhead einer OLE-Zeichenfolge aufzurufen. Ja, es gibt Mechanismen dafür, aber na und? Sie können nicht einfach die Art und Weise ändern, wie sie GUIDs ausdrücken, also ist es kein bewegliches Ziel, also kein Risiko, wenn ich meine eigene, effizientere Lösung durchführe. – Mordachai