阅读:1633回复:4
在 W2K下如何实现对主引导区的读出和写入??
在 W2K下如何实现对主引导区的读出和写入??
|
|
沙发#
发布于:2002-12-20 10:49
看MSDN的createfile帮助,里面有!
可以通过createfile(\"\\\\\\\\.\\\\PHYSICALDRIVEx\",....)里面的X就是你的硬盘号,一般的都是0 readfile和writefile来做 |
|
板凳#
发布于:2002-12-20 22:16
看MSDN的createfile帮助,里面有! 挑战者大虾: 具体的参数怎么设置? BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped ); 偶认为只能通过iocontrol才可能??? :( 能否指点一下,谢谢!!! |
|
|
地板#
发布于:2002-12-23 10:01
第一个参数我就不用说了!
第二个参数就是的缓冲区的地址, 第三个参数是读的大小,以512来算,因为扇区都是512为一扇 第四个参数是返回参数,返回读出的字节数 第五个参数设置为NULL |
|
地下室#
发布于:2002-12-23 10:12
// TODO: Add your control notification handler code here
HANDLE hDiskDev = NULL; hDiskDev = CreateFile(\"\\\\\\\\.\\\\PHYSICALDRIVE0\", SYNCHRONIZE|GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, NULL); if(hDiskDev != INVALID_HANDLE_VALUE) { UCHAR ucBuffer[2*512] = {0}; ULONG ulRetByte = 0; ReadFile(hDiskDev,ucBuffer,sizeof(ucBuffer),&ulRetByte,NULL); CloseHandle(hDiskDev); hDiskDev = NULL; } hDiskDev = CreateFile(\"\\\\\\\\.\\\\C:\", SYNCHRONIZE|GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, NULL); if(hDiskDev != INVALID_HANDLE_VALUE) { UCHAR ucBuffer[2*512] = {0}; ULONG ulRetByte = 0; ReadFile(hDiskDev,ucBuffer,sizeof(ucBuffer),&ulRetByte,NULL); CloseHandle(hDiskDev); } d代码如上!已在2K的高级服务器版测试通过 |
|