トップページ > 記事閲覧
DXライブラリ終了途中?のアクセス違反
名前:たろう 日時: 2022/09/01 01:27

いつもすみませんたろうです。 またすみませんm(__)m 現在作っているゲームをウィンドウの閉じるボタンで終了すると 発生確立は50回に1回くらいでしょうか、ウィンドウが消える前にフリーズしてしまいます visualstudio(2022)には 「フレームがモジュールにありません 読み込まれたモジュールに現在のスタック フレームが見つかりませんでした。この場所のソースは表示できません。」 と表示され、ヒントもわからない状態です。 (Releaseモード「デバッグの開始」で発生しました。その後気づいてDebugに切り替えてからいくら試しても発生しません…) デバッグの停止で、フリーズしたウィンドウを強制的に閉じると、visual studioには 3637:サウンド関連の終了処理... スレッド 0x5014 はコード 0 (0x0) で終了しました。 スレッド 0x477c はコード 0 (0x0) で終了しました。 0x00000000010035CC で例外がスローされました (Armagic.exe 内): 0xC0000005: 場所 0x00000000010035CC の実行中にアクセス違反が発生しました プログラム '[26316] Armagic.exe' はコード 0 (0x0) で終了しました。 (※最後の部分) と表示されました。 この場合原因の特定はどのようにしたらよいでしょうか? 相変わらず知識が足りず、行き詰っています。 アドバイスをいただけると助かりますm(__)m 問題が発生した時のログを貼ります。 0:ファイルアクセス処理の初期化...成功 13:ChangeWindowMode実行 13:ウインドウモードフラグが立てられました 14:DXライブラリの初期化処理開始 15: システムの情報を出力します 15: DXライブラリ Ver3.23c 17: 論理プロセッサの数 : 12 17: OS Windows11 ( Build 22000 ) 118: 現時点のCPU動作速度:大体3.59GHz 118: MMX命令を使用します 118: SSE命令が使用可能です 118: SSE2命令が使用可能です 119: CPUベンダ:AuthenticAMD 120: CPU名:AMD Ryzen 5 4500 6-Core Processor 120: COMの初期化... 成功 121: 非同期読み込み処理の初期化...成功 121: メモリ総量:32640.33MB 空きメモリ領域:22350.27MB 121: タイマーの精度を検査します 121: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 121: パフォーマンスカウンターを使用します タイマー精度 : 10000.000000 KHz 123: ソフトの二重起動検査... 二重起動はされていませんでした 124: ウインドウクラスを登録します... 登録に成功しました 124: ウインドウモード起動用のウインドウを作成します 124: ディスプレイ情報のセットアップ開始 124: モニターの数:2 ディスプレイデバイスの数:4 124: No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 60Hz 96x96dpi 126: No.1 モニター名:\\.\DISPLAY2 1080x1920 32bit 60Hz 96x96dpi 177: ディスプレイ情報のセットアップ完了 178: ウインドウ矩形 ( 671, 3 )-( 1233, 1014 ) 189: ウインドウの作成に成功しました 189: ウインドウを表示します 241: IMEを無効にしました 243: ウインドウスタイルをウインドウモード用に変更します... 完了 283: DirectInput関係初期化処理 283: XInput DLL の読み込み中... 成功 289: DirectInput8 の取得を試みます...成功 377: 引き続き初期化処理... 初期化成功 380: ジョイパッドの初期化... 382: XInput 対応コントローラーのチェックを開始します 382: XInput 対応コントローラー No.0 をチェック 382: XInput 対応コントローラー No.0 の接続は確認できませんでした 383: XInput 対応コントローラー No.1 をチェック 383: XInput 対応コントローラー No.1 の接続は確認できませんでした 384: XInput 対応コントローラー No.2 をチェック 384: XInput 対応コントローラー No.2 の接続は確認できませんでした 385: XInput 対応コントローラー No.3 をチェック 385: XInput 対応コントローラー No.3 の接続は確認できませんでした 385: XInput 対応コントローラーのチェック完了 386: DirectInput 対応ジョイパッドの列挙を開始します 402: DirectInput 対応入力装置を検出しました 402: Device Product GUID : 200f056e,0000,0000,00,00,50,49,44,56,49,44 403: Device Instance GUID : 912fabe0,1db5,11ed,80,03,44,45,53,54,00,00 403: DirectInputDevice8 の作成... 成功 405: DirectInputDevice の情報を取得します... 成功 405: Device Product Name : JC-U4013S DirectInput Mode 405: Device Instance Name : JC-U4013S DirectInput Mode 406: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致 406: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致 408: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... 不一致 972: DirectInputDevice のデータ形式に JOYSTICK 形式を設定... 成功 974: DirectInputDevice の協調レベルに DISCL_FOREGROUND | DISCL_EXCLUSIVE を設定... 成功 974: DirectInputDevice から取得する X軸 の値の範囲を設定... 成功 974: DirectInputDevice から取得する Y軸 の値の範囲を設定... 成功 976: DirectInputDevice から取得する Z軸 の値の範囲を設定... 成功 976: DirectInputDevice から取得する Rx軸 の値の範囲を設定... 成功 978: DirectInputDevice から取得する Ry軸 の値の範囲を設定... 成功 978: DirectInputDevice から取得する Rz軸 の値の範囲を設定... 成功 978: DirectInputDevice のボタンの数を取得... 成功 ボタンの数は 13 個です 998: DirectInputDevice の X軸 のデッドゾーンを設定... 成功 999: DirectInputDevice の Y軸 のデッドゾーンを設定... 成功 1000: DirectInputDevice の Z軸 のデッドゾーンを設定... 成功 1001: DirectInputDevice の Rx軸 のデッドゾーンを設定... 成功 1002: DirectInputDevice の Ry軸 のデッドゾーンを設定... 成功 1002: DirectInputDevice の Rz軸 のデッドゾーンを設定... 成功 1003: DirectInputDevice の DirectInputEffect No.0 を作成... 成功 1004: DirectInputDevice の DirectInputEffect No.1 を作成... 成功 1005: DirectInputDevice の通知処理用の Event を作成... 成功 1006: DirectInputDevice の通知処理用の Event を DirectInputDevice に設定... 成功 1006: DirectInputDevice のアクセス権を取得... 成功 1013: 検出した DirectInput 対応入力装置を入力ナンバー 0 で登録します 1013: 検出した DirectInput 対応入力装置の初期化は正常に終了しました 1063: DirectInput 対応ジョイパッドの列挙終了 1063: ジョイパッドの初期化は正常に終了しました 1064: マウスデバイスの初期化... 初期化成功 1065: キーボードデバイスの初期化... 初期化成功 1066: DirectInput 関連の初期化は正常に終了しました 1071: WASAPI の初期化を行います 1078: デバイス名 : スピーカー (Realtek(R) Audio) 1083: デフォルト遅延時間 : 10.000 ms 1083: 最小遅延時間 : 3.000 ms 1083: 遅延時間 : 10.000 ms 1087: チャンネル数   : 2 ch 1087: 量子化ビット深度 : 32 bit 1088: 有効ビット深度  : 32 bit 1088: サンプリングレート : 48000 Hz 1088: データ形式 : 浮動小数点型 1120: 動作モード : 共有モード 1120: WASAPI の初期化は正常に終了しました 1122: d3d11.dll の読み込み.... 成功 1127: dxgi.dll の読み込み.... 成功 1127: API CreateDXGIFactory2 のアドレスを取得します.... 成功 1127: IDXGIFactory2 を作成します.... 成功 1134: API CreateDXGIFactory6 のアドレスを取得します.... 成功 1136: IDXGIAdapter を列挙 1136: Adapter No.0 Desc:NVIDIA GeForce GTX 1660 SUPER VRAM:5992MB 1137: Output Device No.0 Name:\\.\DISPLAY1 ( 0, 0 )-( 1920, 1080 ) 1137: Output Device No.1 Name:\\.\DISPLAY2 ( -2160, -1395 )-( -1080, 525 ) 1137: Adapter No.1 Desc:Microsoft Basic Render Driver VRAM:0MB 1138: API D3D11CreateDevice のアドレスを取得します.... 成功 1138: IDXGIAdapter を取得します.... 成功 1139: IDXGIAdapter1 を取得します.... 成功 1139: IDXGIAdapter2 を取得します.... 成功 1139: IDXGIAdapter3 を取得します.... 成功 1140: IDXGIAdapter4 を取得します.... 成功 1140: Direct3D 11 FeatureLevel 11_0 以上を対象とします 1140: ID3D11Device オブジェクトを取得します.... 成功 1228: IDXGIDevice1 を取得します.... 成功 1228: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました 1228: [ウインドウモード 1080x1920 ( 687, 41 )-( 1233, 1013 )] 1229: IDXGISwapChain2 を作成します.... 成功 1229: IDXGIFactory2->CreateSwapChainForHwnd の戻り値:0x00000000 1229: IDXGIOutput を取得します.... 成功 1230: Graphics Device:NVIDIA GeForce GTX 1660 SUPER 1230: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1230: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です 1231: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です 1231: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です 1231: 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 1233: 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1233: アルファ付き 16bit カラーフォーマットは DXGI_FORMAT_B4G4R4A4_UNORM です 1233: アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1233: アルファテスト用 16bit カラーフォーマットは DXGI_FORMAT_B5G5R5A1_UNORM です 1233: アルファテスト用 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1233: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です 1233: DXT2テクスチャフォーマットは使えません 1233: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です 1235: DXT4テクスチャフォーマットは使えません 1235: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です 1235: BC7_UNORM テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM です 1235: BC7_UNORM_SRGB テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM_SRGB です 1236: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1236: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1236: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1236: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1237: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1237: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1237: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1237: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1237: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1237: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1237: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1237: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 1239: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1239: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1239: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1239: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1240: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1240: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1240: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1240: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1240: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1240: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1240: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1240: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1241: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1241: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1 1241: 同時にレンダリングできるバッファの数:8 1243: 最大テクスチャサイズ 幅:16384 高さ:16384 1243: 標準描画用の頂点バッファの作成.... 成功 1244: シェーダーコード関係の初期化.... 成功 1257: 各種シェーダー用定数バッファの作成.... 成功 1260: 各種 ID3D11InputLayout の作成.... 成功 1284: 画像の単純転送処理の初期化... 成功 1286: 深度バッファを作成します.... 成功 1290: フォントの初期化を行います 1294: フォントの初期化は正常に終了しました 1377: 文字コードバッファの初期化を行います... 完了しました 1394:DXライブラリの初期化処理終了 1538:画像ファイル D:\vs\Armagic\sys\mm\m10002.png がありません 1587:File Open Error : D:\vs\Armagic\sys\se\hit\04.wav 1587:Sound File Load Error : D:\vs\Armagic\sys\se\hit\04.wav 1603:File Open Error : D:\vs\Armagic\sys\se\srg00.wav 1604:Sound File Load Error : D:\vs\Armagic\sys\se\srg00.wav 1604:File Open Error : D:\vs\Armagic\sys\se\srg01.wav 1604:Sound File Load Error : D:\vs\Armagic\sys\se\srg01.wav 1604:File Open Error : D:\vs\Armagic\sys\se\srg02.wav 1604:Sound File Load Error : D:\vs\Armagic\sys\se\srg02.wav 3394:ウインドウを閉じようとしています 3497:フォントの初期化を行います 3497:フォントの初期化は正常に終了しました 3523:d3d11.dll の解放 1 3524:dxgi.dll の解放 1 3525:Direct3D11 のオブジェクト数を出力 3526:Direct3D11 のオブジェクト合計数 : 0 3526:DirectInput 関連の終了処理... 完了 3637:サウンド関連の終了処理... ここでおわりですm(__)m
メンテ

Page: 1 | 2 |

Re: DXライブラリ終了途中?のアクセス違反 ( No.10 )
名前:管理人 日時:2022/09/05 23:46

お試し頂きありがとうございます > Windows によって PC が保護されました > Microsoft Defender SmartScreen は認識されないアプリの起動を停止しました。このアプリを実行すると、PC が危険にさらされる可能性があります。 ありがとうございます そちらの表示はこちらのスレッドでも話題になったのですが、 <危険なファイルに認定される> https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5352 Android や iPhone がストアを通さない野良アプリを基本的に実行できない( or 実行しにくく )しているのに Windows も倣い始めたのか Windows 7 くらいから個人が作成した出処不明の実行ファイルを 実行しようとすると『危険なファイル』扱いされるようになりました 設定で『危険なファイル』表示をしないようにすることもできますが、今後は個人作品は Steam での 配信など、実行しようとしても『危険なファイル』扱いされずに済むプラットフォームで発表しないと いけないかもしれません( まあ昨今は『自作ホームページで自作ゲームソフトを配布』というのはほぼ無くなっていますが ) > 「フレームがモジュールにありません > 読み込まれたモジュールに現在のスタック フレームが見つかりませんでした。この場所のソースは表示できません。」 >  > と出てしまい、それ以上の情報は上記の「例外がスローされました」ウィンドウしかない状態です > visual studioの使い方が悪いのかもしれません。どうやったら表示されるようになるでしょうか? すみません、止まった際に Visual Studio のメニューから 『デバッグ(D)』→『ウィンドウ(W)』→『スレッド(H)』 を選択してスレッド情報を表示して、『カテゴリ』が『メインスレッド』となっているスレッドをダブルクリックすると 表示対象のスレッドがメインスレッドに切り替わり、恐らくDXライブラリのどれかのファイルのどこかの行が 指し示されると思います あと、よろしければ『メインスレッド』に切り替える前に示されていたスレッドの『名前』と『場所』も 教えていただけると助かります m(_ _)m > visualstadioを使わずに、ただ私の作った「A.exe」「B.exe」「C.exe」「D.exe」の4つを同時起動した場合にも > 動きが遅くなったりしませんでしたでしょうか? はい、4つ同時に起動しても4つとも安定して(16)が表示され続けます 環境は以下の通りです OS : Windows10 Pro CPU : Core i7-9700K GPU : GeForce RTX 2080 MEM : 32GB
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.11 )
名前:たろう 日時:2022/09/06 01:02

いつもありがとうございます 「『メインスレッド』に切り替える前に示されていたスレッド」 がよくわからず、伝えるべき内容が間違うといけないので、 エラーが出た時のウィンドウの状態を 画像にして下のアドレスに置きました ttps://file-post.net/ja/s0/d1/1662269745_29787023741_168/?id=hVNXxHlFNtsX ファイル名「img_error.zip」 「2」がエラーが出たときにダブルクリックする前の状態で そのダブルクリック後が「3」です 「1」は「スレッドをダブルクリック」する前の状態を確認せずに表示してしまったもので あとで見たら「3」と内容が違うことに気づいたので念のため添えました。 ※さらにもう一度エラーを出して確認すると、その時は「3」と同じでした 危険なファイルに認定される件、勉強になりました。 それと、4つ同時に起動しても4つとも安定の件ありがとうございます 私の環境では、これを4つ起動すると例外なくスローになるので・・・一体どういうことなんでしょう(-_-;) お手数をおかけいたします。よろしくお願いいたします
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.12 )
名前:管理人 日時:2022/09/07 01:38

スクリーンショットをアップして頂きありがとうございます 2.png で確認できる winmm.dll スレッド内でのエラーということで原因が分かりました 手元の環境で振動機能に対応した DirectInput のコントローラを接続して A.exe, B.exe, C.exe, D.exe を 実行した所、たろうさんの環境と同じように動作が不安定になりました Visual Studio 内でのエラーは再現できませんでしたが、最近 DirectInput の振動に関係する 処理を変更したことが本件の原因となっていたと思われるので、少し改良した所 A.exe, B.exe, C.exe を起動した状態で改良された D.exe を起動しても D.exe は不安定にならなくなりました ( 改良前は D.exe も動作が不安定になっていました ) よろしければその変更を加えたこちらのバージョンをお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 <何故『winmm.dllスレッド内のエラー』から原因がわかったのかご興味がありましたら読んでください> 手元の環境でプログラムを実行した際には winmm.dll スレッドが走っていなかったことと、 たろうさんに載せていただいたログには私の環境では接続していない 振動機能対応 DirectInputコントローラ( JC-U4013S DirectInput Mode )が接続されていたこと、 試しに手元のPCにも振動機能対応 DirectInputコントローラを接続した所 winmm.dll スレッドが 出現したことと、スレッドの『場所』に『joyFF.dll』と書かれていて、 『joy』は joypad や joystick の略、『FF』はForce Feedback の略( 振動機能のこと )だと 推測できたので、振動関係の処理が原因と関係していると分かりました
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.13 )
名前:たろう 日時:2022/09/07 02:33

すみません・・・・ ABCDをいただいた更新版で作り直し起動したところ確かにスローにならなくなったのですが このABCDを起動したうえで、念のためさらにEを追加してvisualstudioでデバッグ起動したところ また×ボタンで閉じるときにエラーが出ました。 (※エラーは20回ほど試してやっと出る感じです) そのときの状態をまた画像にして以下に入れました ttps://file-post.net/ja/s0/d1/1662269745_29787023741_168/?id=hVNXxHlFNtsX ファイル名「img_error_2.zip」 プログラムは単純にEを追加しただけです またなにかご指示いただければ、できる限り実行いたしますので よろしくお願いいたします。 お忙しいところ、本当にすみません。 ---------------------------------------------------------------------------------- #include "DxLib.h" int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow ) { //SetMainWindowClassName("test0903");//A //SetMainWindowClassName("test0903_2");//B //SetMainWindowClassName("test0903_3");//C //SetMainWindowClassName("test0903_4");//D SetMainWindowClassName("test0903_5");//E SetNotSoundFlag( TRUE ); SetAlwaysRunFlag(1); ChangeWindowMode(1); DxLib_Init(); SetDrawScreen( DX_SCREEN_BACK ); int i=0,t=GetNowCount(),t2=0,a=0; while(ProcessMessage()==0) { if(CheckHitKey(KEY_INPUT_F1)){ break; } i++;t2+=GetNowCount()-t; t=GetNowCount(); DrawFormatString( 0,50,GetColor(255,255,255),"(%d)",a); if(i>60){a=(int)(t2/i);i=0;t2=0;} ScreenFlip();ClearDrawScreen(); } DxLib_End(); return 0; }
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.14 )
名前:管理人 日時:2022/09/07 03:24

お試し頂きありがとうございます スローにならなくなっただけでも結果が出て良かったです アップしていただいたスクリーンショットではやはり winmm.dll でエラーになっていますので、 よろしければ DxLib_Init() の呼び出し行の前に SetUseJoypadVibrationFlag( FALSE ); を実行して、振動機能をOFF( 振動機能関連の初期化もOFFになります )にするというのを 試していただけないでしょうか? m(_ _)m もしそれでもダメでしたら、次は DirectInput対応のゲームパッドをPCから取り外した状態で実行する、 というのを試してみてください m(_ _;m
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.15 )
名前:たろう 日時:2022/09/07 13:38

取り急ぎしつれいします SetUseJoypadVibrationFlag( FALSE );を入れてABCDをすべて作り直し、そのうえでEをvisualstudioでデバッグすると やはり今まで同様のエラーが出ました(50回ほど試して2回)。 ttps://file-post.net/ja/s0/d1/1662269745_29787023741_168/?id=hVNXxHlFNtsX ファイル名「img_error_3.zip」 その後ゲームパッドを抜いて試すと50回ほど試してエラーは出ませんでした ただ、エラーが出る確率はもともと低いので、正直微妙ではあります。 m(__)m ------------------------------------------------- #include "DxLib.h" int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow ) { //SetMainWindowClassName("test0903");//A //SetMainWindowClassName("test0903_2");//B //SetMainWindowClassName("test0903_3");//C //SetMainWindowClassName("test0903_4");//D SetMainWindowClassName("test0903_5");//E SetNotSoundFlag( TRUE ); SetAlwaysRunFlag(1); ChangeWindowMode(1); SetUseJoypadVibrationFlag( FALSE ); DxLib_Init(); SetDrawScreen( DX_SCREEN_BACK ); int i=0,t=GetNowCount(),t2=0,a=0; while(ProcessMessage()==0) { if(CheckHitKey(KEY_INPUT_F1)){ break; } i++;t2+=GetNowCount()-t; t=GetNowCount(); DrawFormatString( 0,50,GetColor(255,255,255),"(%d)",a); if(i>60){a=(int)(t2/i);i=0;t2=0;} ScreenFlip();ClearDrawScreen(); } DxLib_End(); return 0; } -------------------------------------------------
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.16 )
名前:たろう 日時:2022/09/07 14:23

追記1 あと一つ気づいたのですが 初めにエラーが出た「Ver3.23c」は8月12日0時頃にダウンロードしたものなので >最近 DirectInput の振動に関係する処理を変更した というのがもし8月27日?の件であれば、それより前からある問題かもしれません また、先月パソコンを買い替えてそれ以降しばらくしてから発生しています。 過去のパソコンの状態は(ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5206)で張り付けたログにありましたので 今のログと比較していただければ、もしかするとヒントがあるかもしれません 追記2 また、DXライブラリ製のソフトを他に一切起動していない状態で もともとの私の制作中のゲームをデバッグして、×ボタンで閉じたときに メモリリークが起きました。ほかに起動していなくても可能性が下がるだけでやはりまれに起こる事が確認できました。 このときvisualstudioはimg_error_3とほぼ同じ表示(保存し忘れましたm(__)m)で、winmm.dllも同様でしたし エラーの位置もDxlib_End()の直後を示していました ※ただしこの場合初めの投稿と同じでフリーズしたウィンドウが残っていました ※その時のログは以下です 0:ファイルアクセス処理の初期化...成功 12:ChangeWindowMode実行 12:ウインドウモードフラグが立てられました 14:DXライブラリの初期化処理開始 14: システムの情報を出力します 14: DXライブラリ Ver3.23e 14: 論理プロセッサの数 : 12 16: OS Windows11 ( Build 22000 ) 116: 現時点のCPU動作速度:大体3.58GHz 116: MMX命令を使用します 116: SSE命令が使用可能です 116: SSE2命令が使用可能です 117: CPUベンダ:AuthenticAMD 118: CPU名:AMD Ryzen 5 4500 6-Core Processor 118: COMの初期化... 成功 121: 非同期読み込み処理の初期化...成功 122: メモリ総量:32640.33MB 空きメモリ領域:23134.04MB 122: タイマーの精度を検査します 122: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 123: パフォーマンスカウンターを使用します タイマー精度 : 10000.000000 KHz 123: ソフトの二重起動検査... 二重起動はされていませんでした 125: ウインドウクラスを登録します... 登録に成功しました 125: ウインドウモード起動用のウインドウを作成します 125: ディスプレイ情報のセットアップ開始 125: モニターの数:2 ディスプレイデバイスの数:4 125: No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 60Hz 96x96dpi 126: No.1 モニター名:\\.\DISPLAY2 1080x1920 32bit 60Hz 96x96dpi 162: ディスプレイ情報のセットアップ完了 163: ウインドウ矩形 ( 671, 3 )-( 1233, 1014 ) 167: ウインドウの作成に成功しました 167: ウインドウを表示します 211: IMEを無効にしました 214: ウインドウスタイルをウインドウモード用に変更します... 完了 250: DirectInput関係初期化処理 250: XInput DLL の読み込み中... 成功 254: DirectInput8 の取得を試みます...成功 337: 引き続き初期化処理... 初期化成功 343: ジョイパッドの初期化... 343: XInput 対応コントローラーのチェックを開始します 344: XInput 対応コントローラー No.0 をチェック 344: XInput 対応コントローラー No.0 の接続は確認できませんでした 344: XInput 対応コントローラー No.1 をチェック 345: XInput 対応コントローラー No.1 の接続は確認できませんでした 345: XInput 対応コントローラー No.2 をチェック 346: XInput 対応コントローラー No.2 の接続は確認できませんでした 346: XInput 対応コントローラー No.3 をチェック 346: XInput 対応コントローラー No.3 の接続は確認できませんでした 347: XInput 対応コントローラーのチェック完了 347: DirectInput 対応ジョイパッドの列挙を開始します 367: DirectInput 対応入力装置を検出しました 368: Device Product GUID : 200f056e,0000,0000,00,00,50,49,44,56,49,44 368: Device Instance GUID : 912fabe0,1db5,11ed,80,03,44,45,53,54,00,00 368: DirectInputDevice8 の作成... 成功 370: DirectInputDevice の情報を取得します... 成功 371: Device Product Name : JC-U4013S DirectInput Mode 371: Device Instance Name : JC-U4013S DirectInput Mode 371: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致 372: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致 372: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... 不一致 751: DirectInputDevice のデータ形式に JOYSTICK 形式を設定... 成功 751: DirectInputDevice の協調レベルに DISCL_FOREGROUND | DISCL_EXCLUSIVE を設定... 成功 753: DirectInputDevice から取得する X軸 の値の範囲を設定... 成功 753: DirectInputDevice から取得する Y軸 の値の範囲を設定... 成功 754: DirectInputDevice から取得する Z軸 の値の範囲を設定... 成功 755: DirectInputDevice から取得する Rx軸 の値の範囲を設定... 成功 755: DirectInputDevice から取得する Ry軸 の値の範囲を設定... 成功 756: DirectInputDevice から取得する Rz軸 の値の範囲を設定... 成功 756: DirectInputDevice のボタンの数を取得... 成功 ボタンの数は 13 個です 776: DirectInputDevice の X軸 のデッドゾーンを設定... 成功 776: DirectInputDevice の Y軸 のデッドゾーンを設定... 成功 777: DirectInputDevice の Z軸 のデッドゾーンを設定... 成功 778: DirectInputDevice の Rx軸 のデッドゾーンを設定... 成功 778: DirectInputDevice の Ry軸 のデッドゾーンを設定... 成功 779: DirectInputDevice の Rz軸 のデッドゾーンを設定... 成功 780: DirectInputDevice の DirectInputEffect No.0 を作成... 成功 780: DirectInputDevice の DirectInputEffect No.1 を作成... 成功 781: DirectInputDevice の通知処理用の Event を作成... 成功 782: DirectInputDevice の通知処理用の Event を DirectInputDevice に設定... 成功 783: DirectInputDevice のアクセス権を取得... 成功 791: 検出した DirectInput 対応入力装置を入力ナンバー 0 で登録します 791: 検出した DirectInput 対応入力装置の初期化は正常に終了しました 841: DirectInput 対応ジョイパッドの列挙終了 842: ジョイパッドの初期化は正常に終了しました 842: マウスデバイスの初期化... 初期化成功 843: キーボードデバイスの初期化... 初期化成功 845: DirectInput 関連の初期化は正常に終了しました 849: WASAPI の初期化を行います 858: デバイス名 : スピーカー (Realtek(R) Audio) 863: デフォルト遅延時間 : 10.000 ms 864: 最小遅延時間 : 3.000 ms 864: 遅延時間 : 10.000 ms 868: チャンネル数   : 2 ch 868: 量子化ビット深度 : 32 bit 869: 有効ビット深度  : 32 bit 869: サンプリングレート : 48000 Hz 869: データ形式 : 浮動小数点型 889: 動作モード : 共有モード 889: WASAPI の初期化は正常に終了しました 892: d3d11.dll の読み込み.... 成功 896: dxgi.dll の読み込み.... 成功 897: API CreateDXGIFactory2 のアドレスを取得します.... 成功 898: IDXGIFactory2 を作成します.... 成功 907: API CreateDXGIFactory6 のアドレスを取得します.... 成功 907: IDXGIAdapter を列挙 908: Adapter No.0 Desc:NVIDIA GeForce GTX 1660 SUPER VRAM:5992MB 908: Output Device No.0 Name:\\.\DISPLAY1 ( 0, 0 )-( 1920, 1080 ) 909: Output Device No.1 Name:\\.\DISPLAY2 ( -2160, -1395 )-( -1080, 525 ) 909: Adapter No.1 Desc:Microsoft Basic Render Driver VRAM:0MB 910: API D3D11CreateDevice のアドレスを取得します.... 成功 910: IDXGIAdapter を取得します.... 成功 911: IDXGIAdapter1 を取得します.... 成功 912: IDXGIAdapter2 を取得します.... 成功 912: IDXGIAdapter3 を取得します.... 成功 913: IDXGIAdapter4 を取得します.... 成功 914: Direct3D 11 FeatureLevel 11_0 以上を対象とします 914: ID3D11Device オブジェクトを取得します.... 成功 1004: IDXGIDevice1 を取得します.... 成功 1005: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました 1005: [ウインドウモード 1080x1920 ( 687, 41 )-( 1233, 1013 )] 1006: IDXGISwapChain2 を作成します.... 成功 1008: IDXGIFactory2->CreateSwapChainForHwnd の戻り値:0x00000000 1008: IDXGIOutput を取得します.... 成功 1009: Graphics Device:NVIDIA GeForce GTX 1660 SUPER 1009: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1009: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です 1010: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です 1010: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です 1010: 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 1011: 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1011: アルファ付き 16bit カラーフォーマットは DXGI_FORMAT_B4G4R4A4_UNORM です 1011: アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1011: アルファテスト用 16bit カラーフォーマットは DXGI_FORMAT_B5G5R5A1_UNORM です 1012: アルファテスト用 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1012: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です 1012: DXT2テクスチャフォーマットは使えません 1013: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です 1013: DXT4テクスチャフォーマットは使えません 1013: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です 1013: BC7_UNORM テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM です 1013: BC7_UNORM_SRGB テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM_SRGB です 1013: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1014: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1014: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1014: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1014: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1015: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1015: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1015: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1015: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1015: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1016: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1016: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 1016: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1016: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1017: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1017: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1017: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1018: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1018: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1018: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1019: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1019: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1019: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1019: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1019: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1020: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1 1020: 同時にレンダリングできるバッファの数:8 1020: 最大テクスチャサイズ 幅:16384 高さ:16384 1021: 標準描画用の頂点バッファの作成.... 成功 1021: シェーダーコード関係の初期化.... 成功 1034: 各種シェーダー用定数バッファの作成.... 成功 1037: 各種 ID3D11InputLayout の作成.... 成功 1061: 画像の単純転送処理の初期化... 成功 1063: 深度バッファを作成します.... 成功 1065: フォントの初期化を行います 1069: フォントの初期化は正常に終了しました 1151: 文字コードバッファの初期化を行います... 完了しました 1169:DXライブラリの初期化処理終了 1326:画像ファイル D:\vs\Yamadain\sys\mm\m10002.png がありません 9015:ウインドウを閉じようとしています 9118:フォントの初期化を行います 9118:フォントの初期化は正常に終了しました 9150:d3d11.dll の解放 1 9151:dxgi.dll の解放 1 9152:Direct3D11 のオブジェクト数を出力 9153:Direct3D11 のオブジェクト合計数 : 0 9153:DirectInput 関連の終了処理... 完了 9259:サウンド関連の終了処理...
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.17 )
名前:たろう 日時:2022/09/07 21:08

追記3 あれから何回も試したので、 ゲームパッドを外せばエラーが出なくなるのは 間違いなさそうですm(__)m
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.18 )
名前:管理人 日時:2022/09/08 00:26

沢山のご情報ありがとうございます PCを変えてからというのは気になりますね… ( AMD製CPUになったことが関連している or コア数が多いCPUになったことが関連している、という可能性はあるかもしれません… ) ゲームパッドが関連しているのは間違いなさそうですが、サウンド関連の終了処理の途中で止まるというのも謎ですね… とりあえず DirectInput を使用しなければ問題が発生しなくなるかもしれませんので、 よろしければ DxLib_Init() の前に SetUseDirectInputFlag( FALSE ); という記述を追加して、DirectInput を使用しないようにしてみてください DirectInput が原因であれば、これでエラーが発生しなくなると思います
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.19 )
名前:たろう 日時:2022/09/08 03:05

いろいろ試していたところ 内容に誤りがあったので修正しています --------------------------------------------------------- いつもありがとうございます SetUseDirectInputFlag( FALSE );を加えて50回ほど試してエラーは出ませんでした。 SetUseDirectInputFlag( FALSE );を使うとXinputも受け付けなくなってしまうようで ゲームパッドを使う前提のゲームを作っているので、この方法では解決できなそうです。 相変わらず無知でよくわからないのですが、今回のエラーは 単純に私のゲームパッドが壊れていて、それが原因でメモリリークが発生する。 なんていう事もあるんでしょうか? そうであれば管理人さんの環境でもスローになるエラーは再現できたようですが 偶然二つの別エラーだった可能性もありそうです 質問ばかりですみませんm(__)m
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.20 )
名前:たろう 日時:2022/09/08 10:54

追記 No7でいただいたプロジェクト(DxLibSourceTest_WithUseCLib)のTest.cppを以下(末尾)のように変えて ABCD(※No15で作ったもの)を起動しながらvisualstudio2020でデバッグを繰り返したところ いろいろなバグが出ましたので、また画像にしてファイルポストに置きました。 これは参考になりませんでしょうか? ttps://file-post.net/ja/s0/d1/1662269745_29787023741_168/?id=hVNXxHlFNtsX ファイル名「img_error_4.zip」 具体的にはTest.cppを「振動や音のオフ」を外して、ReSetupInputSystem();を加えましたが こうするとたまに起動してすぐエラーが出るようになりました。 その時の画面の状態が1,4(※5のクリック前),5です。 5の時のログが「Log(5).txt」です。 2,3は今まで通りウィンドウを閉じるときに発生した時のものです。 2のログは保存忘れましたがNo.0の時と同様にサウンド関連で止まっていたと記憶しています ※ジョイパッドは接続した状態です m(__)m ------------------------------------------------------------------------------------------------------------------------- #include "DxLib.h" int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow ) { //SetMainWindowClassName("test0903");//A //SetMainWindowClassName("test0903_2");//B //SetMainWindowClassName("test0903_3");//C //SetMainWindowClassName("test0903_4");//D SetMainWindowClassName("test0903_5");//E SetAlwaysRunFlag(1); ChangeWindowMode(1); DxLib_Init(); ReSetupInputSystem(); SetDrawScreen( DX_SCREEN_BACK ); int i=0,t=GetNowCount(),t2=0,a=0; while(ProcessMessage()==0) { if(CheckHitKey(KEY_INPUT_F1)){ break; } i++;t2+=GetNowCount()-t; t=GetNowCount(); DrawFormatString( 0,50,GetColor(255,255,255),"(%d)",a); if(i>60){a=(int)(t2/i);i=0;t2=0;} ScreenFlip();ClearDrawScreen(); } DxLib_End(); return 0; }
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.21 )
名前:管理人 日時:2022/09/10 03:20

> 相変わらず無知でよくわからないのですが、今回のエラーは > 単純に私のゲームパッドが壊れていて、それが原因でメモリリークが発生する。 > なんていう事もあるんでしょうか? すみません、今のところ原因不明です ただ、その後私の環境でもたろうさんの環境で発生したエラー( winmm.dll の中でエラー )を 再現することができました > No7でいただいたプロジェクト(DxLibSourceTest_WithUseCLib)のTest.cppを以下(末尾)のように変えて > ABCD(※No15で作ったもの)を起動しながらvisualstudio2020でデバッグを繰り返したところ > いろいろなバグが出ましたので、また画像にしてファイルポストに置きました。 > これは参考になりませんでしょうか? ファイルのアップありがとうございます 画像を拝見する限りでは今までのエラーと同じようにやはり winmm.dll 内でのエラーが原因となっているようです サウンド関連の終了処理でエラーが発生していたので、サウンドの処理を行わないようにしてみたのですが、 それでも同様のエラーが発生するので、サウンドの処理は関係なかったようです winmm.dll 内で発生しているエラーをどうにかするのはかなり難しいと思いますので ( 断言はできませんが、なんとなく DirectInput ( winmm.dll ) のバグのように感じます… ) やはり DirectInput を使用しないようにするのが一番の対処法だと思います SetUseDirectInputFlag( FALSE ); を実行してしまうと XInput も受け付けなくなってしまっていましたが、 SetUseDirectInputFlag( FALSE ); を実行しても XInput は受け付けるようにしましたので、 よろしければこちらの改良バージョンをお試しください m(_ _;m ( そして SetUseDirectInputFlag( FALSE ); を実行して DirectInput は使用しないようにしてください ) https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.22 )
名前:たろう 日時:2022/09/10 10:46

お忙しいところご対応いただきありがとうございます SetUseDirectInputFlag(FALSE);を実行してもXInputを受け付けることを確認いたしました DXライブラリ外の問題だったという事でしょうか 大変なお手数をおかけいたしましたm(__)m 今後もし回避する手立てが見つかりましたら、教えていいただけたらと思います。 最後にお聞きしたいのですが、バグを再現できたのは デバッグを繰り返して運よくバグが発生したという感じでしょうか? それともなにか条件を変えたら起きた感じでしょうか? (もし限られたケースで発生するだけであれば 終了時にまれに起こるバグなので、SetUseDirectInputFlag(FALSE);を使わずに Dinput非推奨という程度でいいのかもしれないので) m(__)m
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.23 )
名前:管理人 日時:2022/09/10 13:08

SetUseDirectInputFlag(FALSE); が正常に動作したようでなによりです > 最後にお聞きしたいのですが、バグを再現できたのは > デバッグを繰り返して運よくバグが発生したという感じでしょうか? > それともなにか条件を変えたら起きた感じでしょうか? 振動機能対応ゲームパッド( JC-U4113S )を接続した状態で たろうさんの No.20 の手順でデバッグ実行を繰り返したところ現象が再現しました ( 起動時のタイミングや、ウィンドウを閉じるタイミングどちらのケースもありました ) 逆に JC-U4113S を接続していなければ現象は発生しません なのでもしかしたら JC-U4113S や JC-U4013S のドライバに原因があるのかもしれません ELECOM製以外の振動機能対応ゲームパッドは所持していないので、 Logicool製の振動機能対応ゲームパッド( F710 )を購入してみました 届いたら試してこちらに結果をご報告します
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.24 )
名前:たろう 日時:2022/09/10 14:28

ご返信ありがとうございますm(__)m 同じシリーズのゲームパッドということであれば ドライバとwindowsの仕様が合わなくなったとかで、 このシリーズでのみ起こる問題だったらうれしいですね ただ最近のアンドロイド&PC両用ゲームパッドなども 調べたら、X-inputだったので D-inputはもう捨てる時期だと、受け入れる 心の準備はできています(-_-;)
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.25 )
名前:管理人 日時:2022/09/11 22:09

Logicool製の振動機能対応ゲームパッド( F710 )を購入して試してみたのですが、 DirectInputモードでは振動せず、『ELECOM以外のメーカーの振動機能対応ゲームパッドでも本件の 現象が発生するか』の検証できませんでした… 確認してみたところ、F710 の発売は 2010年で、一時は Windows10 で正常に使えないことが あったことや、Windows11 での正式対応がなされていないなど、既に時代についていけていない感の あるデバイスでした orz ( XInputモードでは振動するのですが… ) ちょっとこれ以上ゲームパッドを買い足すのは金銭的にも置き場所的にも厳しいので、 申し訳ありませんが検証は断念しようと思います m(_ _;m > ただ最近のアンドロイド&PC両用ゲームパッドなども > 調べたら、X-inputだったので > D-inputはもう捨てる時期だと、受け入れる > 心の準備はできています(-_-;) XInput も登場は 2003年なので今や DirectInput と大差ないくらい古いAPIなんですけどね… (^_^; 使いやすく動作も安定しているのですが、何故か DirectInput より機能が少ないという… XInput2 のような対応ボタン数などが増えた上位互換のAPIが出てきてもおかしくないのですが、何故か無いんですよね… (- -;; ともあれ解決できずすみませんでした DirectInput を使用する場合も振動機能に非対応のゲームパッドであれば本件のエラーは発生しませんので、 DirectInput を使用するかどうかを選択できるオプションなどを付ける形でも良いのではないかと思います m(_ _;m
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.26 )
名前:たろう 日時:2022/09/11 23:02

私の話から始まって、多大なご負担をおかけしてしまいましたm(__)m XInputも相当古いものなんですね、ただ先ほども調べたのですが アマゾンで売っているゲームパッドはXinputかX,D両用以外はよほど潜らないと 存在しないような状態なので、むしろDirectinputを受け入れないほうが スマートでカッコイイ気もします。 あと、しばらくするとウィンドウズの仕様が変わって直るなんてことも あるかもしれませんから、今後定期的に確認しようとおもいますので その点継続します 今回も大変お手数をおかけしてしまいました。 ありがとうございましたm(__)m
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.27 )
名前:たろう 日時:2022/09/12 00:59

すみません、もしかすると解決かもしれません。 結局SetUseDirectInputFlag( FALSE );を使ってDirectInputを使用しないつもりで 大元のゲームのプログラムを書き換えてテストしていたところ、 SetUseDirectInputFlag( FALSE );を使っても、XinputだけでなくDirectInputも 受け付けていることがわかりました。 またテストプログラム(↓)を作りましたが DirectInputのゲームパッドで上を押すと1が表示される仕組みです 問題はこのあとなんですが、 このプログラムで例のABCDを起動しながらデバッグを繰り返しても エラーが出ないようです。 SetUseDirectInputFlag( FALSE );を使っているのに なぜかDirectInputを受け付けて、それでエラーが出ないわけですから 解決してしまっているように見えます・・・(-_-;) 管理人さんの環境ではどうでしょうか? 逆にSetUseDirectInputFlag( FALSE );の機能が働いていないことになりますが 現在これを使うことで内部的に何が変わる状態になっているのでしょうか? (それが分かればこれまでのエラーの原因が分かるのではないかと・・・) すみません、なにか勘違いしているかもしれません ご確認いただけると助かりますm(__)m --------------------------------------------------------------------------- #include "DxLib.h" int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow ) { //SetMainWindowClassName("test0903");//A //SetMainWindowClassName("test0903_2");//B //SetMainWindowClassName("test0903_3");//C //SetMainWindowClassName("test0903_4");//D SetMainWindowClassName("test0903_5");//E SetNotSoundFlag( TRUE ); SetAlwaysRunFlag(1); ChangeWindowMode(1); SetUseJoypadVibrationFlag( FALSE ); SetUseDirectInputFlag( FALSE ); DxLib_Init(); SetDrawScreen( DX_SCREEN_BACK ); int i=0,t=GetNowCount(),t2=0,a=0,di=0; while(ProcessMessage()==0) { int Pad = GetJoypadInputState( DX_INPUT_PAD1 ); di=0;if(Pad & PAD_INPUT_UP ){ di=1;} if(CheckHitKey(KEY_INPUT_F1)){ break; } i++;t2+=GetNowCount()-t; t=GetNowCount(); DrawFormatString( 0,50,GetColor(255,255,255),"(%d) directinput(%d)",a,di); if(i>60){a=(int)(t2/i);i=0;t2=0;} ScreenFlip();ClearDrawScreen(); } ReSetupInputSystem(); ReSetupJoypad(); DxLib_End(); return 0; }
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.28 )
名前:管理人 日時:2022/09/13 00:42

SetUseDirectInputFlag( FALSE ); を実行すると、DirectInput の代わりにマルチメディアAPIを使用して ジョイパッドの入力を取得するようになります( マルチメディアAPIは DirectInput 登場前からある更に古いAPIです ) <マルチメディアジョイスティック関数> https://docs.microsoft.com/ja-jp/windows/win32/multimedia/multimedia-joystick-functions ただ、こちらのAPIには振動機能はありませんので、SetUseDirectInputFlag( FALSE ); を使用した場合は XInput の振動機能は使えますが、DirectInput のみに対応している振動機能対応のジョイパッドの振動機能は 使用できないことになります
メンテ
Re: DXライブラリ終了途中?のアクセス違反 ( No.29 )
名前:たろう(解決) 日時:2022/09/13 01:13

そうだったんですね、またまた無知ですみません・・・いろいろ納得できました(-_-;) 振動は使う予定ですが、Xinputでのみ振動するという事で私は全然OKなので それであれば、No23の時点で、私の問題としては解決になっていました。 どうしてもDirectinputで振動させたいという方もいるかもしれませんし 謎は残った部分もあるかもしれませんが、スレを立てた私の問題としては完全に解決です 今回もまた大変お手数をおかけいたしましたが、大変助かりました。 本当にありがとうございましたm(__)m
メンテ

Page: 1 | 2 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存