トップページ > 過去ログ > 記事閲覧
x64においてのGetIMEInputDataの挙動
名前:結城 日時: 2013/04/25 01:04

お世話になっております x86からx64に移行した所 IME関係の関数内で全角に切り替えると必ずメモリ破損エラーが起きるようになりました それ以外の場所については特に何も変わりなく動作しております お忙しいとお聞きしておりますがなにとぞよろしくお願いいたします ログ貼っときます 1:システムの情報を出力します 3: DXライブラリ Ver3.10a 6: 論理プロセッサの数 : 8 8: OS Windows7 ( Build 7601 Service Pack 1 ) 31: CPUID命令は使えません 33:COMの初期化... 成功しました 38:メモリ総量:8040.30MB 空きメモリ領域:1879.55MB 40:タイマーの精度を検査します 42:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 44: パフォーマンスカウンターを使用します タイマー精度 : 2143.603000 KHz 48: ソフトの二重起動検査... 二重起動はされていませんでした 53:ウインドウクラスを登録します... 登録に成功しました 63:ウインドウモード起動用のウインドウを作成します 68:ウインドウの作成に成功しました 72:ウインドウを表示します 125:IMEを無効にしました 128:ウインドウスタイルをウインドウモード用に変更します... 完了 156:DirectInput関係初期化処理 158: XInput DLL の読み込み中... 成功 165: DirectInput7 の取得中... 成功 184: 引き続き初期化処理... 初期化成功 216: ジョイパッドの初期化... 228: ジョイパッドの初期化は正常に終了しました 230: マウスデバイスの初期化... 初期化成功 234: キーボードデバイスの初期化... 初期化成功 238:DirectInput 関連の初期化は正常に終了しました 242:DirectSound の初期化を行います 244:DirectSound インターフェースの取得を行います.... 成功 251:引き続きインターフェースの初期化処理... 成功 435: DirectSound デバイスを列挙します 438: モジュール名: ドライバ記述:プライマリ サウンド ドライバー 440: モジュール名:{0.0.0.00000000}.{54dfc457-6633-41f4-9229-f5629526f7e3} ドライバ記述:スピーカー (Realtek High Definition Audio) 441: モジュール名:{0.0.0.00000000}.{19db7d73-c99b-43ce-9de8-983ebfc8ebf5} ドライバ記述:スピーカー (USB PnP Sound Device) 444: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 446: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 448: 利用可能サンプリング精度 450: プライマリ 16bit = OK 8bit = OK 452: セカンダリ 16bit = OK 8bit = OK 454: 利用可能チャンネル 455: プライマリ MONO = OK STEREO = OK 457: セカンダリ MONO = OK STEREO = OK 461:DirectSound の初期化は正常に終了しました 466:DirectDraw オブジェクトの取得を行います.... 成功 474:引き続き初期化処理... 初期化に成功しました 509:IDirect3D9Ex オブジェクトを取得します.... 成功 515:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します 801:成功 805:Driver:igdumd64.dll Description:Intel(R) HD Graphics 3000 807:画面のフォーマットは D3DFMT_X8R8G8B8 です 808:Zバッファのフォーマットは D3DFMT_D16 です 811:16bit カラーフォーマットは D3DFMT_R5G6B5 です 813:32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 815:アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です 817:アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 819:アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です 821:アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 823:DXT1テクスチャフォーマットはD3DFMT_DXT1 です 825:DXT2テクスチャフォーマットはD3DFMT_DXT2 です 826:DXT3テクスチャフォーマットはD3DFMT_DXT3 です 828:DXT4テクスチャフォーマットはD3DFMT_DXT4 です 830:DXT5テクスチャフォーマットはD3DFMT_DXT5 です 832:描画用 16bit カラーフォーマットは D3DFMT_R5G6B5 です 833:描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 835:描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 837:描画用ABGR整数16ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です 838:描画用ABGR浮動小数点16ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です 840:描画用ABGR浮動小数点32ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です 842:描画用1チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8R8G8B8 です 844:描画用1チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です 845:描画用1チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_R16F です 847:描画用1チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_R32F です 849:描画用2チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です 850:描画用2チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です 852:描画用2チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_G16R16F です 854:描画用2チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_G32R32F です 856:一度に描画できるプリミティブの最大数:1048575 858:対応している最大頂点インデックス:16777215 860:同時にレンダリングできるバッファの数:4 862:最大テクスチャサイズ 幅:8192 高さ:8192 864:テクスチャステージテンポラリレジスタ:使用可 866:減算合成のハードウェア対応:ネイティブ 868:ハードウェア頂点シェーダーバージョンコード:300 870:エミュレーション頂点シェーダーバージョンコード:エミュレーション無し 872:ピクセルシェーダーバージョンコード:300 874:バックバッファロックはロックできません 876:Zバッファを作成します.... 成功 1208:プログラマブルシェーダーを使用します 1359:フォントの初期化を行います 1371:フォントの初期化は正常に終了しました 1435:文字コードバッファの初期化を行います... 完了しました 10598:ウインドウスタイルをウインドウモード用に変更します... 完了 33295:漢字変換候補のデータサイズが0でした DefHWND:1e3063a IMC:32f11ed 33626:以下のメモリ確保情報が破損しました、強制終了します 33629:HEAD BASE:49 6e 70 75 74 53 74 72 69 6e 67 2e 63 70 70 00 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 33632:HEAD TEMP1:49 6e 70 75 74 53 74 72 69 6e 67 2e 63 70 70 00 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 33634:HEAD TEMP2:00 00 41 30 00 00 a1 30 00 00 16 55 00 00 3e 54 00 00 5e 55 00 00 d9 86 00 00 58 53 22 6f 57 5b 33637: size: 266( 0.260kb) file:InputString.cpp line:2748 ID:0 addr:5c872480 data:<..&#9624;&#23687;..&#9628;&#23687;..■&#23687;..&#9636;&#23687;> [00 00 98 87 00 00 9c 87 00 00 a0 87 00 00 a4 87] 33640: size: 266( 0.260kb) file:InputString.cpp line:2748 ID:0 addr:5c8724c0 33643: size:1408731672(12644577705984.000kb) file: line:46 ID:3014702 addr:5c87260a そのほかに詳細な情報としては IME系統の関数を使用すると大量にカーネルの初回例外を吐かれます >初回例外が 0x00000000773EE0AA (kernel32.dll) で発生しました (Client_x64.exe 内): 0xC0000005: 場所 0x0000000000000000 への書き込み中にアクセス違反が発生しました。 以下同文が延々…… GetIMEInputDataを全角の状態で呼ぶと上記ログのように破損が生じます

Page: 1 |

追記 ( No.1 )
名前:結城 日時:2013/04/26 14:43

コンパイラの情報が抜けていました IDEはVC++2012 for Desktopで msvc10を使用しています
追記 ( No.2 )
名前:結城 日時:2013/04/26 14:46

DxLibのバージョンは3.10aを使用しております
Re: x64においてのGetIMEInputDataの挙動 ( No.3 )
名前:管理人 日時:2013/04/30 00:31

手元でも例外が発生するのを確認しました すみません、単純なミス( ポインタを 4byte固定で扱っていた )が原因でした 修正版をアップしましたので、よろしければお使いください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)

Page: 1 |