2007/02/25

VC2005 & Windows2000 上で _findfirst 実行エラー その1

最初に 今日はプログラマ向けの話題なので、一般の人にはツマラナイ記事かもしれません。
 ( しかも Windows での開発者向け。。 )
 
 
最近 VC2005( Platform SDK )をインストールし VC6.0 から移行していこうかなーと思い色々実験をしていたのですが、
なんとファイルを検索する API  _findfirst で例外が起きてしまうのです。
 
 
僕はこの API 関数は自分ライブラリの一環の中で使用しているのですが、どうも特定ディレクトリを検索すると
落ちてしまう感じです。
 
自分のコーディングを疑ったり、そのフォルダのアクセス権限を疑ったり、気になることすべてを疑いましたが
2台のマシン上で同じ結果だったので、これは VC2005 と Windows2000/SP4 の問題な気がしてしょうがありません。
 
その証拠に
 
 _findfirst系 部分を WinAPI のFindFirst() 系に変えたコードにすると
 
実行エラーにならないのです。
 
 
ちなみに WindowsXP 上ではこの問題は確認できませんでした。
3台のマシン環境( Windows2000 *2  WindowsXP )でVC2003 も含めて試してみたのですが、Windows2000上のみでの
発生確認をしております。
 
 
・正確に言うと、 _findnext() 関数で落ちており C:\Program Files フォルダ内の階層で検索する場合に限り
  落ちてしまいます。
 
・落ちるディレクトリを丸ごとコピーし、別ドライブに持ってて検索した場合は落ちません
 
・試した双方のマシンとも FAT32/NTFS と違うフォーマットでドライブを初期化してあります。
 
 
唯一共通するのは、Windows2000/SP4 と VC2005( PlatformSDK )という事実だけであります( ´д`)
 
 
まぁ FindFirst() 系を使えば良いという話でありますが、
 
Linux 用の Cライブラリ とかも趣味で書いてるので _findfirst
 
使いたいのですよ!!(※1)
 
  ( ゜Д゜)モルァ!!
 
 
さてこの問題は(※2)、このブログの解決すべきテーマとして定期的に扱っていきます。
 
次回 エラーの詳細 発生した実行環境/ソース を例に謎を解いてみようと思います( ´д`)
 
 ※1
linux には findfirst() はありません。
純粋にライブラリで WinAPI を使いたくないというわがままです。
 
 ※2
似たような現象を体感したことがある人は、ぜひお知えてください。
 

0 件のコメント:

コメントを投稿