問題タブ [wow64]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-c++ - 64 ビット Windows サーバー 2008 上の Visual C++ 2005 で 32 ビット アプリケーションのコンパイルを最適化する方法
継続的統合のために、64 ビット Windows サーバー 2008 を使用してビルド サーバーをインストールしました。
私が 64 ビット サーバーを選択した理由は、~3Gb 以上の RAM を搭載するためでした。このマシンが非常に高速なビルドを提供することを期待していました。
残念ながら、結果は控えめに言っても大きく欠けています。私のデスクトップは、Xeon クアッド コア、15k RPM SAS、および 8 ギガの RAM を搭載したこのサーバーよりも高速なビルドを提供します。
Visual C++ 2005 を使用して、32 ビット アプリケーションを Cygwin でコンパイルします。
WOW64 エミュレーターがビルド プロセスを遅らせるボトルネックになる可能性はありますか?
任意のポインタ、コメントをいただければ幸いです。
よろしく、
c++ - RegOpenKeyEx()がVista 64ビットでエラーコード2を返すのはなぜですか?
私は次の電話をかけていました:
(C ++、Visual Studio 5、Vista 64ビット)。
regedit
「 」はキーが存在することを示していますが、エラーコード2(「ファイルが見つかりません」)で失敗しています。このコードは常に32ビットXPで機能します。明らかに存在するのに、なぜ「ファイルが見つかりません」のですか?
windows - WOW64からのシェルリンク(LNK)の起動
32ビットアプリケーションは、ShellExecuteを介してWindows LNKファイル(シェルリンク)を起動します。64ビットバイナリ([スタート]メニューの[Internet Explorer(64ビット)]ショートカットなど)へのリンクを「起動」しようとすると、常に32ビットバイナリが起動することになります。内部的に、ShellExecuteはリンクターゲットを誤って解決します。LNK内にFOLDERID_ProgramFilesを保持する隠しフィールドがあります。64ビットアプリはこれを64ビットプログラムファイルディレクトリに解決しますが、32ビットアプリは解決しません。
Wow64DisableWow64FsRedirectionは、ShellExecuteのこの動作を変更しません。
64ビットの「トランポリン」プロセス(プラグインアーキテクチャの仕組みによりオプションではありません)を実行する以外に、32ビットアプリが64ビットアプリとまったく同じようにシェルリンクを起動する方法はありますか?
windows - 64 ビット オペレーティング システムで 32 ビット プロセスがアクセスできるメモリの量はどれくらいですか?
Windows では、通常の状況では、32 ビット プロセスは 2GB の RAM (または boot.ini ファイルの特別なスイッチを使用すると 3GB) にしかアクセスできません。64 ビット オペレーティング システムで 32 ビット プロセスを実行する場合、使用可能なメモリの量はどれくらいですか? これを変更できる特別なスイッチや設定はありますか?
64-bit - Windows での 64/32 ビット標準ドライバーの変換
質問は基本的にこのスレッドのフォローアップです: 32 ビット プログラムで 64 ビット ドライバーを使用する。ウィンドウズ
64 ビット DLL のセットで使用される 64 ビット ドライバーを使用しているときに学んだように、32 ビット プロセスで DLL を呼び出すことはできません。これを回避するために、いくつかの面白いインターポーズ通信を使用します。
グラフィックス カードのような「標準デバイス」を使用している場合に、64 ビットから 32 ビットへの自動変換がどのように行われるかは不明です。Windows 64 ビット OS の 32 ビット アプリケーションは、プリンター ドライバーを使用したり、いくつかの Windows DLL を使用して GDI で何かを描画したりできるはずです。Microsoft は、グラフィックス カードまたはプリンタ用に 32 ビットから 64 ビット ハードウェア ドライバに変換する必要がありました。WoW64 がレジストリとファイル システムへのアクセスを行うことは知っていますが、標準ドライバーにも変換されますか?
具体的な質問は、ハードウェア用の 64 ビット WDM ドライバーがある場合、Windows が 64<->32 の変換を行うことで、これを 32 ビット アプリケーションで簡単に使用できるかということです。
c# - メモリを大量に消費する C# アプリの開発とデバッグ
32 ビット ライブラリとリンクする必要があり、可能な限り最大量のメモリを使用する必要がある C# アプリがあります (イメージング アプリ)。XP64 デスクトップでアプリを実行するため、WOW64 を使用し、Visual Studio for x86 でビルドをターゲットにしています (そしてeditbin /largeaddressaware
ポストビルドを実行しています)。いくつかの問題が発生しています:
Visual Studio のビルトイン デバッガーでは、2 GB のメモリしか使用できません (アプリに最大 1.5 GB とオーバーヘッドを加えたもの)。
コマンド ラインから実行すると、アプリは 3 GB のメモリを認識できますが、Microsoft のドキュメントでは 4 GB を表示する必要があると記載されているようです。
WOW64 C# アプリを取得して、プラットフォームが提供できる完全な 4 GB を表示する方法を誰か教えてもらえますか?
また、Visual Studio (VS 2008、別名 VS90) デバッガーが/largeaddressaware
ビットに従い、アプリのメモリを 2 GB に制限するのをやめる方法を教えてもらえますか?
VS80 と VS90 でも同じ動作が見られます。また、.NET Framework 3.5、3.0、2.0 の間でも違いはありません。問題を説明する簡単な C# プログラムを次に示します。x86 用にビルドしeditbin /largeaddressaware
、組み込みデバッガーで実行する場合とコマンド ラインから実行する場合を比較して、C# で使用できるメモリの違いを確認します。
c++ - WOW64 Api を必要とするライブラリを構築できません
32 ビット アプリケーションの Windows Vista 64 ビットのバグを修正しています。関数 Wow64DisableWow64FsRedirection(...) を使用しようとすると、コンパイラは「宣言されていない識別子...」と表示します。
Windows.h ヘッダー ファイルをインクルードし、_WIN32_WINNT を 0x0501 に設定します。
何か案は?
ありがとう。
編集: MS Visual Studio 2003 を使用しています
c++ - 32ビットパスを同等のWOW64に変換する
使用していると思われるパスを実際に使用しているパスとの間で変換する32ビットアプリで呼び出すことができる関数はありますか?(たとえば、64ビットシステムで実行している場合は、プログラムファイル内のフォルダーのパスをプログラムファイル(x86)内のパスに、またはその逆に変換するために呼び出します。)これを行う必要があります。 GUIでディレクトリが表示されると(ファイルやディレクトリを参照するときのように)、アプリ自体が認識していると見なすのではなく、実際のディレクトリが表示されます。
32ビットと64ビットの両方のWindowsをサポートする必要があるため、これは両方の環境で機能するはずです。
編集WOW64に対処する必要があるのは、私のアプリがインストーラーのブートストラップアプリケーションであるという事実にあります。デフォルトでは、製品は32ビットシステムのプログラムファイルの下にインストールされますが、64ビットシステムの場合、製品はプログラムファイル(x86)の下にインストールされます。ユーザーが製品をインストールする場所を選択できるダイアログ(それが必要な場合は別のハードドライブ上を含む)。両方の環境で正しく機能する必要があります。現在、64ビットシステムであっても、常にプログラムファイルを表示(および閲覧)しています。
.net - 64ビットの.NETアプリケーションからWOW64レジストリキーを開く方法
私の.NETアプリケーション(任意のCPU)は、32ビットプログラムによって作成されたレジストリ値を読み取る必要があります。64ビットWindowsでは、これはレジストリのWow6432Nodeキーの下にあります。Wow6432Nodeにハードコーディングするべきではないことを読みました。それで、.NETでそれにアクセスする正しい方法は何ですか?