○フロッピーディスクのMBR読み書き
■FDのMBRをファイルに保存
#include <stdio.h>
#include <windows.h>
#define BUFF_SIZE 512
int main(){
//フロッピー ディスクドライブは a:\ ドライブ
char*filename="\\\\.\\a:";
char buff[BUFF_SIZE];
//先頭セクタから512バイト読み出す
HANDLE hFile;
hFile = CreateFile(filename, GENERIC_READ,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
if( hFile != INVALID_HANDLE_VALUE ){
DWORD len;
ReadFile( hFile, buff, BUFF_SIZE, &len, NULL );
}
CloseHandle( hFile );
//バッファの内容をファイルに保存
FILE * fp;
if((fp=fopen("c:/test.txt","wb"))==NULL){
//エラー処理
}else{
unsigned int WriteLen = BUFF_SIZE;//書き込むサイズを求める
if(WriteLen!=fwrite(buff,sizeof(char),WriteLen,fp)){
printf("書き込みエラー%dバイト書き込まれました",WriteLen);
}
fclose(fp);
}
return 0;
}
■ファイルをFDのMBRに書き込み
#include <stdio.h>
#include <windows.h>
#define BUFF_SIZE 512
int main(){
char buff[BUFF_SIZE]="";
//ファイルを開いて内容を配列に入れる
FILE * fp;
if((fp=fopen("c:/test.txt","rb"))==NULL){
//エラー処理
}else{
printf("%d バイトファイルから読み込み\n",fread(buff,sizeof(char),BUFF_SIZE,fp));
fclose(fp);
}
//フロッピー ディスクドライブはa:\ドライブ
char*filename="\\\\.\\a:";
//先頭セクタに書き込み
HANDLE hFile;
hFile = CreateFile(filename, GENERIC_WRITE,FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
if( hFile != INVALID_HANDLE_VALUE ){
DWORD len;
WriteFile( hFile, buff,BUFF_SIZE, &len, NULL );
}else printf("err\n");
CloseHandle( hFile );
return 0;
}
▲トップページ
>
プログラミングの実験