サービスで作ったMutexがアプリケーションで作れない。。 – プログラミング – Home

サービスで作ったMutexがアプリケー...
 
通知
すべてクリア

[解決済] サービスで作ったMutexがアプリケーションで作れない。。


Q
 Q
(@Q)
ゲスト
結合: 24年前
投稿: 45
Topic starter  

Win32サービスとMFCアプリケーション間で、FileMappingを使ったプロセス間通信を作成
しています。
プロセス間通信のためのMemoryMappedFileの読み書きの排他制御のため、Mutexを使おう
と思うのですが、MFCアプリケーション側でサービスで作成したMutexと同じ名前のMutex
を作成することができません。(最初の所有権は両方ともFALSE)で作成しています。

ちなみにWin32サービスではなく、アプリケーション&アプリケーションでは問題なく作
成できます。
どうやらWin32サービスであることが鍵のようですが・・。
何か御存知の方いらっしゃいましたら、御教授頂ければ幸いです。
よろしくお願いいたします。

開発環境:VC++6.0
Win32サービス作成にはATLは使用せず、Win32APIを使って作成しています。


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

Global\ プリフィクスをつけてみるとか。
…ハズしてたらごめんなさい。


返信引用
Q
 Q
(@Q)
ゲスト
結合: 24年前
投稿: 45
Topic starter  

レス有難うございます。
Mutex名はGlobal\XXXXX.cccみたいな感じで、グローバルMutexにしています。
試した環境はWinXP professionalです

あ、ひょっとしたら、システム権限で作成するカーネルオブジェクトはユーザー権限の
ものと重複しないようにしているのかもしれません。。
(システム権限のものと重複を許すとシステムに支障をきたすため、作成すらできない
ようになっているとか・・)
あくまで推測ですが・・

サービス&サービスで試してみます。


返信引用
そらぱ
 そらぱ
(@そらぱ)
ゲスト
結合: 22年前
投稿: 14
 

CreateFileMapping() SECURITY_ATTRIBUTES の設定が必要なはずです。
この情報を参考にして見てください。

http://support.microsoft.com/kb/106387/en-us

IIS の ASP用の COM で、起動中のアプリケーションと FileMapping による
共有をさせたときにこの方法でうまくいきました。

# 外していたらごめんなさい。


返信引用
Q
 Q
(@Q)
ゲスト
結合: 24年前
投稿: 45
Topic starter  

>そらばさん

ビンゴっぽいです^^
早速試してみます!!


返信引用
Q
 Q
(@Q)
ゲスト
結合: 24年前
投稿: 45
Topic starter  

解決しました!
SecurityDescripterの指定でサービスのMutexをアプリケーションで取得することに成功
しました。
ただ、MFCのCMutexでは何故か失敗するみたいです。。

回答頂いたみなさん、
情報有難うございました!!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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