Welche Ausnahmen können auftreten, wenn PInvoke verwendet wird oder werden alle Fehler von den Rückgabewerten der Methode behandelt, und es liegt im Ermessen des Entwicklers, Ausnahmen zu überprüfen und ggf. auszulösen?
Mit P / Invoke können Sie sicher sagen, dass es zwei Arten von Fehlern gibt, die Sie behandeln müssen.
Bei Gruppe 1 gibt es einige Ausnahmen, die auftreten können (nicht die definitive Liste):
Bei Gruppe 2 müssen Sie das Rückgabeergebnis Ihrer P / Aufgerufenen Methode / Funktionsaufruf überprüfen und entsprechend handeln. Marshal.GetLastWin32Error () ist hier praktisch.
Deshalb ist es immer am besten, Wrapper-Klassen für jedes native Material zu erstellen, das Sie verwenden müssen. Auf diese Weise können Sie Ihre Rückgabeergebnisse in Ausnahmen konvertieren und Ihren verwalteten und systemeigenen Code trennen.
Ich bin nicht sicher, ob es eine definitive Liste der Ausnahmen gibt, die ausgelöst werden können, aber ich weiß, dass mindestens das Folgende auftreten kann
Die meisten dieser Ausnahmetypen sind nicht für PInvoke spezifisch und können an jedem Punkt im Programm auftreten. Der einzige, der für den PInvoke-Aufruf spezifisch ist, ist die DLL-Ausnahme nicht gefunden (an den Typ kann ich mich nicht erinnern).
Auch:
DllNotFoundException
BadImageFormatException
(DLL ist falsches Format oder beschädigt) MethodAccessException
(Versuch durch Sicherheitsmethode, um systemeigenen Code aufzurufen)