○フロッピーディスクの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;
}




▲トップページ > プログラミングの実験