安全でないコールバックからマネージド コードにメッセージを渡す方法の簡単な例はありますか?
構造体にパックされたいくつかのメッセージを受信する独自の dll があり、すべてがコールバック関数に送られます。
以下に使用例を示しますが、unsafe コードも呼び出します。すべてマネージ コードであるアプリケーションにメッセージを渡したいと考えています。
*PS 相互運用や安全でないコードの経験はありません。私は 8 年前に C++ で開発していましたが、その悪夢のような時代のことはほとんど覚えていません :)
PPS アプリケーションは地獄のように読み込まれます。元の開発者は、1 秒あたり 200 万メッセージを処理すると主張しています。最も効率的なソリューションが必要です。*
static unsafe int OnCoreCallback(IntPtr pSys, IntPtr pMsg)
{
// Alias structure pointers to the pointers passed in.
CoreSystem* pCoreSys = (CoreSystem*)pSys;
CoreMessage* pCoreMsg = (CoreMessage*)pMsg;
// message handler function.
if (pCoreMsg->MessageType == Core.MSG_STATUS)
OnCoreStatus(pCoreSys, pCoreMsg);
// Continue running
return (int)Core.CALLBACKRETURN_CONTINUE;
}
ありがとうございました。