⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readsector.c

📁 直接读写硬盘扇区
💻 C
字号:
#include <stdio.h>
#include <string.h>
#include <Windows.h>
#include <Windows.h>
#include <Winbase.h>


//以下是读取硬盘扇区函数
int ReadPhysicalSector(unsigned long SectorStart, unsigned long SectorCount, unsigned char *p)
{
    unsigned long BytesPerSector = 512;
    unsigned long nBytes;
    char Drive[] = "\\\\.\\PHYSICALDRIVE0";
    int result = 0;
    HANDLE hDeviceHandle = CreateFile(Drive,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,0);
    if(hDeviceHandle)
    {
        long pointer;
        long phigh;
        pointer = SectorStart;
        pointer = pointer*BytesPerSector;
        phigh = pointer>>32;
        SetFilePointer(hDeviceHandle,(unsigned long)pointer,&phigh,FILE_BEGIN);
        if(ReadFile(hDeviceHandle,p,SectorCount*BytesPerSector,&nBytes,NULL))
            result = 1;
        CloseHandle(hDeviceHandle);
    }
    return result;
}

//主函数调用
int main(int argc, char* argv[])
{
    unsigned long SectorStart = 0;	//比如我要读的是编号为的那个扇区开始的数据,这里写
                                    //如果读的是从第扇区开始后的数据这里就写
    unsigned long SectorCount = 1;  //读多少个扇区,这里是个
    unsigned char p[512];		    //一个扇区数据量是字节呀
	int i;
    ReadPhysicalSector(SectorStart,SectorCount,p);
	//输出的
    for(i=0;i<512;i++)			
    {
        printf("%02X ",p[i]);
        if(i%26 == 0)
		{
            printf(" ");
		}
    }
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -