Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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 es wird gezeigt, wie dieser behoben werden kann.
// 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
};