▼ なすこじさん
> 確認しました。
> User Objectsの項でしたね。ありがとうございます。
>
> 2chから遡ってBug 19368にたどり着きました。
すみません。リンク貼っとけばよかったですね。
今更だけど。。。
http://bugs.winehq.org/show_bug.cgi?id=19368
> 共有メモリにあるのはAcceletor Tableのハンドルだけです。実体はデスクトップヒープに作られると思います
> なので、他のプロセスからも参照できるが、Destroyを忘れるとアプリを終了してもメモリに残る……と思う。
そのようですね。
Dmitry Timoshkov 氏の解答によるとによると、
Acceletor Tableは、user32 kernel objectとして
作成されるから、複数プロセスからも参照できる。
だそうです。(解釈あってるか不安ですが。。。)
# In Windows an accelerator is a user32 kernel object,
# like windows and menus, and an accelerator created
# in one process is visible to anotherone.
> 一方Wineではプロセスヒープに作られてしまい
> 他のプロセスから見れなくなっているのでは?
> というのが私の推測です。
> 怪しいですが (^^;
これはYesでしょうね。
なすこじさんがが教えてくださったAlloc16は
最終的にヒープを取得しているようです。
Dmitry Timoshkov 氏の解答によると、
Wineは、window handleしか、
user32 kernel object実装していない
とのこと。(和訳あってるかしら・・・)
# Wine implements this only for window handles.
> > 生成は、起動時に1回しか呼び出されていないようです。
>
> ご、ごめんなさい m(_ _)m
> 再作成のために毎回やっていると思い込んでいました。確かにループの外にありますね。
ryoji さんが報告してくださった箇所でも
Acceletor Tableは生成されているようですが、
文章を書くのに支障はでないのではとおもいます。
(ryojiさんありがとうございます。)
> > Wine側には、調査後報告するようにします。
> > (ちょっと時間が開くかもしれませんが、
> > またこのBBSに報告します。)
>
> お手数をお掛けしますが宜しくお願いします。
報告しちゃいました。。。。
今度は、Wine側ソースを追っかけしてみます、
ではでは。 |