DLLを介した同期処理 – プログラミング – Home

通知
すべてクリア

[解決済] DLLを介した同期処理


Niit
 Niit
(@Niit)
ゲスト
結合: 18年前
投稿: 7
Topic starter  

このようなDLLを作成してメインアプリとサブアプリの同期を処理をしようと
しているのですが

extern C
{
__declspec(dllexport) void test();
__declspec(dllexport) void Initialize_dll( void (*pFunc)());
__declspec(dllexport) void End_dll();
__declspec(dllexport) void SetBreak(bool b);
}

#pragma comment(linker,/section:my_shared,rws)
#pragma data_seg (my_shared)
bool bBlock = false;
CEvent* pEvent = NULL;
#pragma data_seg()

///////////////////////////////////////
// メインアプリが呼ぶ
void test()
{
if(bBlock == true)
{
WaitForSingleObject(*pEvent, INFINITE); // block.
/////////// 何か処理する

}
}

///////////////////////////////////////
// メインアプリが呼ぶ
void Initialize_dll( void (*pFunc)())
{
pEvent = new CEvent(0, true, Llockevent);
}

///////////////////////////////////////
// メインアプリが呼ぶ
void End_dll()
{
if(pEvent)
{
delete pEvent;
}
}

///////////////////////////////////////
// サブアプリが呼ぶ
void SetBreak(bool b)
{
if(pEvent == NULL)
return;

bBlock = b;
if(b == false)
{ // release.
pEvent->SetEvent();
}
else
{ // block.
pEvent->ResetEvent();
}
}

サブアプリからイベントを解除してもメインアプリが復帰せずに困っています
環境はXP,VS2008です。よろしくお願い致します。


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

pEvent はサブアプリから見たときに何の意味もないただの数字でしかないのでは。
イベントは共有セクションに置かず、名前を付けて互いに Open すればよいのではない
でしょうか。


返信引用
Niit
 Niit
(@Niit)
ゲスト
結合: 18年前
投稿: 7
Topic starter  

>>aetosさん
ありがとうございます。
共有セクションに置かない名前付イベントを使用したら1発で解決できました!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました