Ich habe ein ATL-Projekt, das ein COM-Objekt verfügbar macht. Ich möchte, dass mein COM-Objekt von Zeit zu Zeit eine vom Verbraucher angegebene Funktion aufruft oder über andere Möglichkeiten, den Verbraucher von Zeit zu Zeit zu benachrichtigen.Rückrufe in COM-Objekten
Ich habe versucht, eine Methode in CerberusNative.idl
hinzuzufügen, um void Funktionszeiger zu nehmen, die ich von der COM-Instanz Seite der Dinge aufrufen möchte, so dass der Verbraucher das COM-Objekt bei der Initialisierung nur sagen müsste, was seine Rückrufe sind :
interface ICerberusSession : IDispatch {
[id(5)] HRESULT SetCallbacks([in] void(*userExit)(int, char *), [in] void(*userAttemptingReconnection)(), [in] void(*userReconnected)());
};
es jedoch einige Probleme mit meinen Leeren Funktionszeigern:
Severity Code Beschreibung Projektdatei Zeilenunterdrückungszustand Fehler MIDL2269 Prozeduren in einer Objektschnittstelle muss neu ein HRESULT drehen: [(Parameter 'userexit')] Fehler MIDL2131 Parameter muss keine Funktion sein: [Parameter 'userexit' Ordnung 'setCallbacks' (Interface 'ICerberusSession')]
Auf welche Weise kann ich eine Client-Anwendung abrufen, um Rückruffunktionen in meinem COM-Objekt zu abonnieren?
Follow-up-Frage, ob jemand oder interessiert helfen kann: http : //stackoverflow.com/questions/43006702/setting-up-my-atl-com-callback-functions – Alexandru