mcrblog

vcpp-ml

1998年10月

31

[vcpp 00022049] RE: ExitWindows

Discoversoftの山本です。

>加来です。質問です。
>
>例えば
>
>ExitWindowsEx( EWX_POWEROFF || EWX_FORCE , 0  );
>
>と書けば電源を切ってくれるわけですが、
>パソコンによっては”電源を切る準備ができました”という
>メッセ―ジがでて、電源が切れないものもあります。
>(同じATXマザーボードでも)
>これって何が原因なのでしょう?
>
>またこれらの制約についての何らかの設定が
>どこかにあるとすればそれをいじる方法ってありますか?
>教えてください。
>

これはNECの少し古いPC-98シリーズによくあるもので、
直せません(直接ハードウェア的な問題)。
そっくりそのままマザーボードを取りかえるなどをしないといけないと思います。

---------------------
Discoversoft   山本 大祐
Web: http://www2s.biglobe.ne.jp/~yamadai
E-mail: d...@muc.biglobe.ne.jp
31

[vcpp 00022048] Re:MFC vs. API(Was Re: )

渡辺 裕朗です

私はVC4(4.0->4.1->4.2)の時に拡張DLLでひどい目にあいました
ランタイムのDLLのバージョンによって動かなくなりました。
それ以来、DLLはAPIオンリーにしています。
内部でC++は使ってますけど。テンプレートは楽ですから

> 私は Static Lib.が好きです。(^^)
私もソースの共有はStatic Libにしてます。
VC5からdswができて、管理が楽になりました。
ファイルサイズは大きくなりますが、ランタイムの管理を考えれば楽ですから。
APIオンリーのLibraryでも、構成の名前を工夫して、リンクオプション(MFCを使
用するかどうか)を変更しておけば、問題ないですしね。
例)
MFC使用
  Debug、Release、ReleseST
API Only、STD C or STD C++ Only
  DebAPI、RelAPI
こうしておけば、リンクエラーを出なくできます。



----------------------------------------------------
渡辺 裕朗(Hiroaki Watanabe)
E-Mail : d...@asahi-net.or.jp
Homepage : http://www.asahi-net.or.jp/~DS8H-WTNB/
----------------------------------------------------
31

[vcpp 00023423] Re: DirectX(DirectSound3D)について

岩田です。

申し訳ありません。思いっきり文字化けしていました。
再送します。

ここから、

>>> DDSURFACEDESC ddsd = {sizeof(ddsd)};
>>>
>>> はDx5までは正常に機能しますが、Dx6 SDKにするとちゃんと初期化されず、
>>> サーフェースを作れません。(全部埋めればそんな事無いけど)
>>
>>もともと危険だと思います。
>
>ありゃ?そうでしたっけ?仕様ではたしか引数を一つに
>するだけでは最初のメンバしか初期化されず、
>あとはNULLが入るはずです。たぶん。
>
>>> 結局ZeroMemory使うしかないのかな?
>>
>>DDSURFACEDESC ddsd = { 0 };
>>ddsd.dwSize = sizeof(ddsd);
>>
>>で良いんじゃないですか?
>
>なぜかそれでもだめなんです。
>日ごろの行いが悪いせいかもしれません(^-^;
>
>多分コンパイラの仕様で(^^;、
>無名unionが入っている構造体で
>サイズの報告が不正な値になります
>(sizeof演算子ではなく、カウンタレジスタへ代入で)

カウンタレジスタは間違いですね。
rep sto*にならなくても間違いますし。

>VC4.0を使っています。
>
>struct
>{
>    char a;
>    int b;
>} Test1 = {1000};
>
>a = 0xe8;// 切り捨て
>b = 0;
>
>struct
>{
>    int a;
>    int b;
>} Test2 = {1000};
>
>a = 1000;
>b = 0;
>
>struct
>{
>    int a;
>    union
>    {
>      int b;
>    }// noname
>int c;
>} Test3 = {1000};
>
>a = 1000;
>他は不定
>
>struct
>{
>    int a;
>    union
>    {
>      int b;
>    }_b;
>    int c;
>} Test4 = {1000};
>
>a = 1000;
>b = 0;
>c = 0;

ここまで。

かわむら@DSTさん wrote.

>ただ、ソースからみて
>「「構造体の最初のメンバが{}で指定した値、他は0で初期化されている」
>って事を示そうとしている。」と仮定しています。

そうです。文字化けしてすみませんでした。

># 大ぼけの可能性は 99.89% ってとこでしょうか。

99.89%ってどこからきてるんだろ(^^;

高田@USAさん wrote.

>もしかして dwSize の前にメンバが追加されてるのですか?
># 手元にDx6SDKが無いので確認できません。

いいえ、そうではないですよ。
Dx5 SDKでは無名unionの位置が致命的にならなかっただけだと思います。

とにかく、無名unionの後のメンバーが
初期化されないといいたかったわけです。

でも、他のコンパイラで試したわけでもないので、、、
31

[vcpp 00022047] Re:ExitWindows

こんにちは。
大津です。

> 加来です。質問です。

> 例えば

> ExitWindowsEx( EWX_POWEROFF || EWX_FORCE , 0  ); 

> と書けば電源を切ってくれるわけですが、
> パソコンによっては”電源を切る準備ができました”という
> メッセ―ジがでて、電源が切れないものもあります。
> (同じATXマザーボードでも)
> これって何が原因なのでしょう?

パワーマネジメントの規格が統一されていないからです。
APMだ、ACPIだというものです。
詳細については、・・・・大津もよくわからん。(笑)
あまり興味を持っていないもんで。
まあ、内容はどうあれ、
パワーマネジメント規格の統一が遅れマザーボードベンダが
自社解釈で、パワーマネジメントの設定を行ってきたからです。
なんかバグも多いようだし。


> またこれらの制約についての何らかの設定が
> どこかにあるとすればそれをいじる方法ってありますか?
> 教えてください。

以下は、大津が単に知識として持っていることを書きます。
(その内容をいじったことなどないということです。)

まず、パソコンの電源オンで、ビデオのBIOSがメモリに
ロードされ初期化されます。
(これをしないとディスプレイが表示されないわけです。)

続いて、メモリ上に、M/B関係のBIOSがロードされ、
続いてSCSI関係のBIOSロードが行われます。

パソコン起動時に毎回見ているあれです。

ここまできて、INT13割り込みコール(だったかな?何に
せよ割り込みコールです)が行われ、HDDの先頭に移ります。

BIOSの内容は、HDDの先頭に作られた、テーブルに保管
されます。このテーブルの中に、BIOS情報は格納されてい
ます。
31

[vcpp 00022046] Re:ExitWindows

こんにちは。
大津です。

> 加来です。質問です。

> 例えば

> ExitWindowsEx( EWX_POWEROFF || EWX_FORCE , 0  ); 

> と書けば電源を切ってくれるわけですが、
> パソコンによっては”電源を切る準備ができました”という
> メッセ―ジがでて、電源が切れないものもあります。
> (同じATXマザーボードでも)
> これって何が原因なのでしょう?

パワーマネジメントの規格が統一されていないからです。
APMだ、ACPIだというものです。
詳細については、・・・・大津もよくわからん。(笑)
あまり興味を持っていないもんで。
まあ、内容はどうあれ、
パワーマネジメント規格の統一が遅れマザーボードベンダが
自社解釈で、パワーマネジメントの設定を行ってきたからです。
なんかバグも多いようだし。


> またこれらの制約についての何らかの設定が
> どこかにあるとすればそれをいじる方法ってありますか?
> 教えてください。

以下は、大津が単に知識として持っていることを書きます。
(その内容をいじったことなどないということです。)

まず、パソコンの電源オンで、ビデオのBIOSがメモリに
ロードされ初期化されます。
(これをしないとディスプレイが表示されないわけです。)

続いて、メモリ上に、M/B関係のBIOSがロードされ、
続いてSCSI関係のBIOSロードが行われます。

パソコン起動時に毎回見ているあれです。

ここまできて、INT13割り込みコール(だったかな?何に
せよ割り込みコールです)が行われ、HDDの先頭に移ります。

BIOSの内容は、HDDの先頭に作られた、テーブルに保管
されます。このテーブルの中に、BIOS情報は格納されてい
ます。
記事検索
Amazon.co.jp
  • ライブドアブログ