DXライブラリを使用してゲームを製作しているのですが、
GetJoypadDirectInputStateを使用してスティックタイプの方向キーに対応しました。
その後、ジョイパッド等を一切PCに接続せずに(キーボード操作のみ)で実行しプレイしようとした所、
ゲーム起動後に表示されるタイトルメニュー画面にて、頻繁に「勝手に上キーが押された」様な動作をしました。
タイトルメニューまではキーボードからも操作しておりません。
そこで、デバッグ機能を使って調査したところ、
GetJoypadDirectInputStateで取得した「POV[0]」に「0」が入っていました。
それ以降もGetJoypadDirectInputState関数に入る度に「0」、そして他に「30」や「4579532」等、
まるで乱数のような値が入ってきていました。
(この間、入力装置による入力はしていません)
上記の現象が起こる条件は以下の通りです。
・「Release」でビルドした実行ファイル。「Debug」では起こらず。
・ジョイパッド等をPCに接続していない時のみ。
尚、その時のログを貼っておきます。
0:システムの情報を出力します
2: DXライブラリ Ver3.07a
3: 論理プロセッサの数 : 2
5: OS Windows7 ( Build 7601 Service Pack 1 )
108: CPU動作速度:大体2.88GHz
110: MMX命令を使用します
112: SSE命令が使用可能です
134: SSE2命令が使用可能です
134: CPUベンダ:AuthenticAMD
138: CPU名:AMD Athlon(tm) II X2 245 Processor
139:COMの初期化... 成功しました
140:メモリ総量:3838.98MB 空きメモリ領域:974.82MB
145:タイマーの精度を検査します
146:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
149: パフォーマンスカウンターを使用します タイマー精度 : 2832.070000 KHz
150: ソフトの二重起動検査... 二重起動はされていませんでした
151:ウインドウクラスを登録します... 登録に成功しました
152:ウインドウモード起動用のウインドウを作成します
153:ウインドウの作成に成功しました
239:IMEを無効にしました
240:ウインドウスタイルをウインドウモード用に変更します... 完了
245:DirectInput関係初期化処理
245: DirectInput7 の取得中... 成功
256: 引き続き初期化処理... 初期化成功
258: ジョイパッドの初期化...
262: ジョイパッドの初期化は正常に終了しました
263: マウスデバイスの初期化... 初期化成功
263: キーボードデバイスの初期化... 初期化成功
265:DirectInput 関連の初期化は正常に終了しました
266:DirectSound の初期化を行います
266:DirectSound インターフェースの取得を行います.... 成功
269:引き続きインターフェースの初期化処理... 成功
360: DirectSound デバイスを列挙します
361: モジュール名: ドライバ記述:プライマリ サウンド ドライバー
361: モジュール名:{0.0.0.00000000}.{315c3820-dc39-4a47-8cd4-3af79636d5d0} ドライバ記述:スピーカー (Realtek High Definition Audio)
361: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz
361: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB
362: 利用可能サンプリング精度
362: プライマリ 16bit = OK 8bit = OK
362: セカンダリ 16bit = OK 8bit = OK
362: 利用可能チャンネル
362: プライマリ MONO = OK STEREO = OK
363: セカンダリ MONO = OK STEREO = OK
363:DirectSound の初期化は正常に終了しました
365:DirectDraw オブジェクトの取得を行います.... 成功
369:引き続き初期化処理... 初期化に成功しました
387:IDirect3D9Ex オブジェクトを取得します.... 成功
394:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します
691:成功
692:Driver:atiumdag.dll Description:ATI Radeon HD 4200
692:画面のフォーマットは D3DFMT_X8R8G8B8 です
692:Zバッファのフォーマットは D3DFMT_D16 です
692:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です
693:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
693:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です
693:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
693:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です
693:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
694:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です
694:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です
694:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です
694:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です
694:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です
695:描画用 16bit カラーフォーマットは D_D3DFMT_R5G5B5 です
695:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
695:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
695:描画用ABGR浮動小数点16ビット型カラーフォーマットは D_D3DFMT_A16B16G16R16F です
695:描画用ABGR浮動小数点32ビット型カラーフォーマットは D_D3DFMT_A32B32G32R32F です
696:最大テクスチャサイズ 幅:8192 高さ:8192
696:テクスチャステージテンポラリレジスタ:使用可
696:減算合成のハードウェア対応:ネイティブ
696:頂点シェーダーバージョンコード:300
696:ピクセルシェーダーバージョンコード:300
1018:バックバッファロック転送の時間:109020nsec 一時的な描画可能バッファを使用した転送の時間:1071nsec
1019:バックバッファロックを使用しません
1019:Zバッファを作成します.... 成功
1031:プログラマブルシェーダーを使用します
1171:フォントの初期化を行います
1172:フォントの初期化は正常に終了しました
1177:文字コードバッファの初期化を行います... 完了しました
1185:フォントの初期化を行います
1185:フォントの初期化は正常に終了しました
1186:Direct3DDevice9 の解放 3
1194:Direct3D9 DLL の解放 4
1196:DirectInput 関連の終了処理... 完了
1214:DirectSound の終了処理は正常に終了しました
1220:ウインドウを閉じようとしています
1227:ウインドウが破棄されようとしています
1228:ソフトを終了する準備が整いました
1267:
1267:Alloc memory dump
1267: Total size:0(0.000kb) Alloc num:0
1267:
開発・実行環境はWindows7、VisualC++ 2010 Expressです。
以上、こちらからはバグなのかどうかは判断できませんので、報告させて頂きました。