In einigen der IDL Ich arbeite mit Ich habe festgestellt, dass es 2 Konventionen für die Markierung von Rückgabewerten in Methoden - [in, out]
und [out, retval]
.Unterschiede zwischen [in, out] und [out, retval] in COM IDL Definitionen
Es scheint, dass [in, out]
werden verwendet, wenn mehrere Rückgabewerte sind zum Beispiel:
HRESULT MyMethod(
[in] long InputParam,
[in, out] long* OutputParam1,
[in, out] long* OutputParam2
);
Es scheint, dass [out, retval]
verwendet wird, wenn es nur ein einziger Rückgabewert, zum Beispiel:
HRESULT MyMethod2(
[in] long InputParam,
[out, retval] long* OutputParam1
);
Ist dies eine COM IDL-Konvention oder nur eine Konvention in dem Code, mit dem ich arbeite?
Gibt es einen funktionalen Unterschied im Code, der aus den 2 Notationen generiert wird, oder sind sie vollständig austauschbar?
Danke für die nützliche Erklärung. – LeopardSkinPillBoxHat
Ich möchte hinzufügen, dass '[in, out]' möglicherweise nicht korrekt von allen Sprachen (genauer gesagt Old School Visual Basic, nicht sicher über .NET) behandelt werden. –
Ich frage mich, ob [out, retval] ist gegen die beste Praxis, um COM-Schnittstellen zu definieren, da es keine Möglichkeit gibt, Fehlercode (HRESULT) zu erhalten, wenn die Ausführung fehlschlägt? – dave