通过文件的方式对硬盘扇区进行直接读写操作

CreateFile("\\\\.\\Physicaldrive0",GENERIC_READ,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);


功能:让物理磁盘0以文件,只读,共享写的方式打开,打开后会返回一个文件句柄,其实就是物理磁盘的句柄。

ReadFile(hDev,Buffer,512,&dwRet,0);
功能:然后以读文件的方式,把硬盘当成文件进行读取数值存放到Buffer中。


关于文件指针的情况未进行试验:



#include "stdafx.h"
#include 
#include 
#include 
#include 
#include 
#include 


// 以CreateFile方式读取扇区开关
//#define SECTOR 




int __cdecl _tmain (INT Argc, _TCHAR *Argv[])
{
	int i = 0;


	HANDLE hDev;
	hDev=CreateFile("\\\\.\\Physicaldrive0",GENERIC_READ,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
	if (hDev == INVALID_HANDLE_VALUE)
	{
		printf("CreatFile Error\n");
		DWORD ret = GetLastError();
		printf("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%x\n",ret);
		scanf("%d",&i);
		goto error_return;
	}


	char Buffer[512] = {0};
	DWORD dwRet = 0;
	ReadFile(hDev,Buffer,512,&dwRet,0);
	if (dwRet < 0)
	{
		printf("ReadFile Error\n");
		DWORD ret = GetLastError();
		printf("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%x\n",ret);
		scanf("%d",&i);
		goto error_return;
	}


	for(int i=0; i< 512; i++)
	{
		printf("%x     " ,Buffer[i]);
	}


	CloseHandle(hDev);
	scanf("%d",&i);
error_return:
	return 1;
}
执行结果如下图:

通过文件的方式对硬盘扇区进行直接读写操作_第1张图片




你可能感兴趣的:(Winodws应用)