古いソースを修正してわからないことがありまして – プログラミング – Home

古いソースを修正してわからないことがあ...
 
通知
すべてクリア

古いソースを修正してわからないことがありまして


パッパラー
 パッパラー
(@パッパラー)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

古いVC++6.0のソースを修正することになりまして、わからないことが有りますので教え
てください。
あるハードディスク内のバイナリファイルをMOディスクへ分割してコピーするプログ
ラムがあります。MOディスクへコピーするときは約500KB(正確には1024*1024/2)ず
つコピーするようなプログラムになっているのですが、書き込み先ファイルを
CreateFile()で作成し、元ファイルを読み込むときは、fopenでファイルを開いていま
す。
あとはfread()でファイルを読み込み、WriteFileでファイルを出力しているようです。
この場合のWriteFileとはどういったメソッドなのかわかりません。
fwriteではだめなのか・・と思っています。

ご存じの方お教え願えないでしょうか。


引用解決済
トピックタグ
team3
 team3
(@team3)
ゲスト
結合: 22年前
投稿: 4
 

CreateFile,WriteFileはWindowsのAPI、
fopen,fread,fwriteは標準Cライブラリの関数
です。
この2つは、全く関係ないものなので、
CreateFileでファイルを開いたならWriteFile等を
fopenで開いたならfwrite等を
使うべきでしょう。
実際には,fopen,fread,fwriteも内部でWindowsAPIを呼んでいるはずなので、
混在も無理やりにはできるのでしょうが。

そのソースの作成者がどのように考えて、2つを使い分けたのか正確には分かりませんが、
>MOディスクへコピーするときは約500KBコピー
するには、標準ライブラリより、細かい挙動が定義されているWindowsAPIを使ったのだと
思われます。


返信引用
ライオン
 ライオン
(@ライオン)
ゲスト
結合: 22年前
投稿: 16
 

CreateFileのファイル名の指定はデバイス名ですか?
もし、そうであれば・・・

(1)CreateFile(MOデバイス)
使用するデバイス指定

(2)fopen(コピー元ファイル名)
コピー元ファイルオープン

(3)fread(コピー元ファイル名)
コピー元データ読み取り

(4)WriteFile(MOデバイス)
デバイスへ書き込み

というプログラムになってるのかな?って思いますが。

デバイスへのアクセスは、CreateFile/WriteFile/ReadFile・・・
ファイルへのアクセスは、fopen/fread/fwrite・・・
と使い分けているだけだと思います。

デバイスの書き込みは、WriteFileで可能ですが、fwriteではほぼ不可能です。
ただしfwriteで可能なことは、WriteFileでは、ほぼ可能です。


返信引用
パッパラー
 パッパラー
(@パッパラー)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

回答ありがとうございます。

WriteFileにてデバイスへの書き込みではなく、ファイルへの書き込みでした。

やりたいことは数百MBのバイナリファイルをMOドライブに分割して保存することで
す。
 WindowsAPIについて調べてみます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました