- Win32API質問箱 Build120©2ch.net
236 :デフォルトの名無しさん[sage]:2015/05/04(月) 20:58:25.12 ID:VqP+6wea - 32bitOS上でもIsWow64Process関数はFALSEを返すが大丈夫か?
作っているアプリ自体が64bitっていうなら良いけど。
|
- Win32API質問箱 Build120©2ch.net
239 :デフォルトの名無しさん[sage]:2015/05/04(月) 23:36:23.21 ID:VqP+6wea - >>237
Windows XP SP2以降はこの関数が存在しているらしい。 「関数が存在していなければ32bitOS」という判断は出来るが「関数が存在していれば64bitOS」という判断は出来ない。 また実機(WindowsXP SP2)でも過去に検証済み。 MSDN https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms684139.aspx >If the process is running under 32-bit Windows, the value is set to FALSE. >If the process is a 64-bit application running under 64-bit Windows, the value is also set to FALSE. そのサイトに書かれている方法は以下の文が肝。 >始めに利用者が起動するのは32bit版のプログラムです。 32bitアプリ実行環境においてIsWow64ProcessがFALSEを返すということは、ネイティブで実行されている。 逆にIsWow64ProcessがTRUEを返したならそれはWOW64の下で動いているということになる。 だから「必ず最初は32bitアプリを起動させて・・・」という方法を取れるならそのブログのようにIsWow64Processだけで判断も出来る。 >>238 result が FALSEってのがどのレベルで言っているのか分からんが ( IsWow64Processの戻り値ということなら)64bitOSで64bitアプリケーションでも IsWow64Process はFALSE を返す。 つまり32bitOSか64bitアプリなら関数はFALSEを返すので アプリが何bitかを判断するにはOSが何bitかを知らないといけない。
|
- Win32API質問箱 Build120©2ch.net
240 :デフォルトの名無しさん[sage]:2015/05/04(月) 23:45:54.58 ID:VqP+6wea - というかあれだな。
32bitアプリを作っているなら「最初に起動するのは32bitアプリ」なのは当然か。 フック対象が64bitならフックしないか、64bit版を起動させるっていうブログの方法で問題ないな。 ただ「関数が存在するかどうか」だけじゃ不十分だから気をつけてね。
|