AttachConsole関数の動作環境

AttachConsole関数の動作する環境についてなのですが、
実行できるWindowsのバージョンが決まっているようなのですが、
諸説あって、自分の中で情報が錯綜している状況です。
ということで、今時分の手元にある情報を書き出してみます。

まず、その諸説というのですが、実行できるOSが
Windows 2000以上か、XP以上か、というものです。

まず、話のベースとなる情報を提示します。

WIN32WINNTの値とOSのバージョンの対応
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/using_the_windows_headers.asp

AttachConsole関数
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/attachconsole.asp

次に、集めた情報について、Windows 2000以上、Windows XP以上という
二つの項目に分けて、情報を表示し、適宜引用やリンクをします。

○Windows 2000以上(WIN32WINNT が 0x500 以上)
・MSDNのAttacheConsole() に関する説明(上記、二つ目のURL)の "Remarks" の文章。
 "To compile an application that uses this function, define WIN32WINNT as 0x0500 or later."
 (この関数を使ったアプリケーションをコンパイルするには、
 WIN32WINNTの値を0x0500かそれより大きい値として定義する。)

・WinCon.h の内容。
 この関数を定義しているヘッダを参照すると、以下のように記述されている。

if(WIN32WINNT >= 0x0500)

WINBASEAPI
BOOL
WINAPI
AttachConsole(
IN DWORD dwProcessId
);

define ATTACHPARENTPROCESS ((DWORD)-1)

endif /* WIN32WINNT >= 0x0500 */

 つまり、これを見る限りだと、指し示す値は、Windows 2000 以上となる。

○Windows XP以上(WIN32WINNT が 0x500 より大きい)
・巷の情報。
 あんまり、過信するべきではないと思うが、巷の情報ではXP以上という話。

・MSDNのAttacheConsole() に関する説明の "Requirements" の文章。
 ここには、"Requires Windows Vista or Windows XP."となっている。
 上で 0x500 以上と断っておいてここでこういわれると、もうどうしよもない・・・。

総合的に見ると、ヘッダが一番有力的な情報ではあると思う。
しかし、それ自身はただ単に実行の制限を行っているに過ぎないので、
結局のところ、さらに奥まった内部の部分を見ないとわからない。

#以下愚痴

第一、Windows XPでコンパイルして、実行してるのにどうして動かないのかと orz
XPに関しては、両方の共通部分として入ってるから、動くはずなのに。。。
一部、動作不安定という報告もあるけど、それが原因なのかさっぱり。
3台実験して、3台ともだめ。もう、、、

Posted at : 2006-07-28 23:32:12 / Category : none

Comments

まだコメントはありません / No comment.

Send comment


Name


Mail-address (empty is OK. If you want to notify update, please fill mail-address.)


Bot check code (241231 と入力してください / Please input 241231.)