我想实现如下功能:
1)当前的分区是第几个磁盘第几个分区,比方如果只有一个磁盘,
则d:应该是第二个分区;
2)把一个文件写入硬盘的绝对地址,比方MBR后512个字节;
应该怎么办?希望大家多指点.
1)当前的分区是第几个磁盘第几个分区,比方如果只有一个磁盘,
则d:应该是第二个分区;
2)把一个文件写入硬盘的绝对地址,比方MBR后512个字节;
应该怎么办?希望大家多指点.
解决方案 »
- VC如何实现单击对话框窗口时,对话框窗口更新,而单击对话框窗口上的按钮时,不更新
- 在编译Release版程序的时候,C的运行时库是被静态链接了呢,还是要再发布一个MS的C运行时库?
- 求救!
- 请问如何根据文件句柄获取文件名?
- 关于 R2VSDK
- iMail 怎样在本机上配置成 SMTP 服务器,发送邮件,我是拨号上网的~~~
- 嗨!请各位朋友!!初次用InstallShield,出现一些小问题,请各位帮手!!!!
- 请问怎样得到当前程序所在的目录?
- WinExec和ShellExecutex有什么区别呢?
- 在已建好的property sheet中如何添加页?
- 高分求助! 画图最基本的知识! 晚上结帖! 要分的快来~
- 我在一个窗口类添加了一个 CMenu, 然后点击某个按钮弹出一个菜单,可为什么点击菜单它不响应啊?
HANDLE hDevice;
DWORD bytesReturned;
char rawDiskName[] = "\\\\.\\C:";
hDevice = CreateFile(rawDiskName, GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);if (hDevice == INVALID_HANDLE_VALUE) return FALSE;STORAGE_DEVICE_NUMBER deviceInfo;
BOOL retcode=DeviceIoControl(hDevice,
IOCTL_STORAGE_GET_DEVICE_NUMBER,
NULL,
0,
&deviceInfo,
sizeof(deviceInfo),
&bytesReturned,
NULL);if(retcode==FALSE)
{
CloseHandle(hDevice);
return FALSE;
}*diskNumberPtr = deviceInfo.DeviceNumber; //c PARTITION BELONG TO WHICH DISK
2.读写硬盘api:
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);DWORD SetFilePointer(
HANDLE hFile,
LONG lDistanceToMove,
PLONG lpDistanceToMoveHigh,
DWORD dwMoveMethod
);BOOL ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped
);BOOL WriteFile(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped
);
//你的要求可以这样写,前提是你把文件内容已经放到了buffer里。
int bufferlen=100,
writed = 0;
HANDLE hDev = CreateFile("\\\\.\\PHYSICALDRIVE0",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//打开物理硬盘0
SetFilePointer(hDev,512,NULL,FILE_BEGIN);//移动到需要写的位置
WriteFile(hDev,buffer,bufferlen,&writed,NULL);//写buffer中的数据到物理硬盘
CloseHandle(hDev);//关闭不能用在win9x下。