Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
'function': Die Ereignisquelle verfügt über einen "out"-Parameter. Achten Sie beim Verknüpfen mehrerer Ereignishandler auf Vorsicht.
Hinweise
Wenn mehrere Ereignissenken auf eine COM-Ereignisquelle lauschen, wird der Wert eines Out-Parameters möglicherweise ignoriert.
Beachten Sie, dass in den folgenden Situationen ein Speicherverlust auftritt:
Wenn eine Methode über einen out-Parameter verfügt, der intern zugeordnet ist, z. B. ein BSTR *.
Wenn das Ereignis mehrere Handler hat (ist ein Multicastereignis).
Der Grund für den Verlust besteht darin, dass der Ausgabeparameter von mehreren Handlern festgelegt wird, aber nur vom letzten Handler an die Aufrufwebsite zurückgegeben wird.
Beispiel
Im folgenden Beispiel wird C4683 generiert und veranschaulicht, wie sie behoben werden:
// C4683.cpp
// compile with: /W1 /LD
#define _ATL_ATTRIBUTES 1
#include "atlbase.h"
#include "atlcom.h"
[ module(name="xx") ];
[ object ]
__interface I {
HRESULT f([out] int* pi);
// try the following line instead
// HRESULT f(int* pi);
};
[ coclass, event_source(com) ]
struct E {
__event __interface I; // C4683
};