一回も披露したことのない豆知識

Windowsプログラミングにおいて、デフラグ用のAPIが用意されていないようですが、
http://www.atmarkit.co.jp/fwin2k/win2ktips/079re …
のようなツール(Diskpeer 5.0)はどのように実行しているのでしょうか?
また、バックグランドで実行も可能なようですが、GUI画面を出さずにこんなことが可能なのでしょうか?
ご存知の方、アドバイスをお願いします。

A 回答 (2件)

No.1です。


以下、引用回答で。
>>・DiskpeerはWindows標準のデフラグを使っているわけではありません。
>独自にデフラグ作業をプログラミングしているという認識で正しいでしょうか?
はい。

>>デフラグと言うのはディスク内でのファイルの配置を強制的に変更するような強力な処理です。
>・この手のプログラミングは主にどんな言語を使用するまたはしなければならないのでしょうか?
まぁ、C/C++で書くことが多いでしょうね。Delphiという選択肢もあったかもしれませんが。

>・C言語などでDLLを作成し、それをC#のような言語で実行するような形なのでしょうか?
C#を使うと.Net frameworkというランタイムモジュールが別途必要になるので、
(フリーソフトなどの)配布ソフトウェアでは嫌われるようです。
また、CとC#で連携するくらいならC++で全部書いた方が手っ取り早いと思います。

>・作成手段としていくつぐらいその方法がありますでしょうか?
後述。

>・C言語でデフラグのような低級プログラミングする場合はVisual Studioでも作成可能でしょうか?
充分可能です。

デフラグのようなツールを作るときに考えるべき点は、
GUI部とディスクアクセス部があることですね。
後者はAPIを使えばいいので(細かい問題を除けば)余り
使用言語に拘る必要はないでしょう。
前者はどこまで凝るかにもよりますが、.Netを使うまでもないので
MFCやAPI直接呼び出しでも充分でしょう。
その辺りは、製作者の経験と好みで宜しいかと。

というわけで作ろうと試みること自体はそれほど難しくありませんが、
安全にデフラグ処理を行なうには数多くの問題点を解決していかなければなりません。
慣れたプログラマが作るとしても、専業で携わっても(デバッグ、運用試験を含めると)一年で終わるかどうか。
ましてその間に何度ファイルシステムを飛ばすことになるやら。
そういったことを考えると、VisualStudioの使い方を他人に聞くレベルでは全くお勧めできません。

単に定期的にデフラグしたいだけでしたら「システムツール」の「タスク」でも使ってみたらどうでしょう。
    • good
    • 0

・デフラグは、APIレベルでやるような処理ではありません。


APIというものは一般的に、単純な作業を行なうために用意されています。

・DiskpeerはWindows標準のデフラグを使っているわけではありません。
GUIを出す、出さないは単にそのプログラムの設計次第と言うことになります。

デフラグと言うのはディスク内でのファイルの配置を強制的に変更するような強力な処理です。
ですからドライバのインストール作業同様、一般ユーザ権限では実行できないようになっているわけです。

この回答への補足

charmer29-2さん、ご返答ありがとうございます。
できるところまでいいのですが、もう少し質問させてください。


>・DiskpeerはWindows標準のデフラグを使っているわけではありません。
独自にデフラグ作業をプログラミングしているという認識で正しいでしょうか?


>デフラグと言うのはディスク内でのファイルの配置を強制的に変更するような強力な処理です。
・この手のプログラミングは主にどんな言語を使用するまたはしなければならないのでしょうか?
よくドライバ等はVC++でないと作成できないとお聞きしますが。。。
・C言語などでDLLを作成し、それをC#のような言語で実行するような形なのでしょうか?
・作成手段としていくつぐらいその方法がありますでしょうか?

・C言語でデフラグのような低級プログラミングする場合はVisual Studioでも作成可能でしょうか?
可能であれば、具体的にVS.netを立ち上げ【新しいプロジェクト】ですすみ、テンプレート欄でどのアプリケーション(Windowsアプリケーションなどのアイコン)を選択すればよいでしょうか?


もし、ご存知でしたらご教授お願い致します。

補足日時:2006/09/20 01:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!