- PR -

名前でカーネルオブジェクトの取得

1
投稿者投稿内容
Patton
会議室デビュー日: 2007/04/04
投稿数: 6
投稿日時: 2007-08-29 00:21
OS:WinXP sp2
環境:VC++ (MFC)

現在、異なるプロセスで作成したカーネルオブジェクトを取得する勉強をしています。試しに、カーネルオブジェクトとして Mutex を使っています。
CreateMutex() の第3引数の lpName に名前を設定して、他プロセス(他アプリ)からその名前を使って Open することを考えています。

ところが、OpenMutex() を行っても NULL が返ってきます。


そのため、まずは、CreateMutex() を行った直後に、OpenMutex() を行ってみましたら、
「error 5 : アクセスが拒否されました」
のエラーが出てしまいました。
具体的コードは以下の通りです。


==============================================================
#define MUTEX_OBJECT _T("Mutex_Process")
・・・・・略・・・・
{
m_hMutex = CreateMutex( NULL, FALSE, MUTEX_OBJECT );
// m_hMutex はHANDLE型のメンバー変数
HANDLE hMutex = OpenMutex( NULL, FALSE, MUTEX_OBJECT );
if( NULL == hMutex )
{
//メッセージを表示する。 <== 実行するとここに来る。
}
===============================================================

何が悪いのか教えてください。
よろしくお願いします。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-08-29 01:26
引用:

Pattonさんの書き込み (2007-08-29 00:21) より:
ところが、OpenMutex() を行っても NULL が返ってきます。
HANDLE hMutex = OpenMutex( NULL, FALSE, MUTEX_OBJECT );
何が悪いのか教えてください。
よろしくお願いします。



一切アクセス権のないMutexを開こうとしてるようにみえますよ。

第1引数に
MUTEX_ALL_ACCESS
を指定してやったらどうです?
Patton
会議室デビュー日: 2007/04/04
投稿数: 6
投稿日時: 2007-08-30 22:51
ありがとうございます。
即、解決しました。
1

スキルアップ/キャリアアップ(JOB@IT)