• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > WIN7初始化格式化磁盘问题

WIN7初始化格式化磁盘问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了win7初始化磁盘,win7初始化,win7怎么初始化电脑,win7系统初始化,win7网络设置初始化等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: WIN7 初始化格式化磁盘问题
描述:

目前在WIN7初始化磁盘遇到问题:
具体代码如下:
bool CreatePartition(int PhysicalDriveNumber)
{
// TODO: Add your control notification handler code here
bool br = false;
HANDLE hDev = NULL;
CString strDev;
DWORD returnedCount = 0;
strDev.Format(_T("\\\\.\\PHYSICALDRIVE%d"), PhysicalDriveNumber);
//strDev.Format(_T("\\\\.\\Disk%d"), PhysicalDriveNumber);
if (!strDev.IsEmpty())
{
hDev = ::CreateFile(strDev, GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hDev != INVALID_HANDLE_VALUE)
{
DISK_GEOMETRY_EX* pDgEx = (DISK_GEOMETRY_EX*) new BYTE[512];
//Get disk size
if (::DeviceIoControl(hDev, 
IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, 
NULL, 
0,
pDgEx, 
512, 
&returnedCount, 
NULL))
{
//MessageBox(_T("GET_DRIVE_GEOMETRY_EX"));
CREATE_DISK cd;
CREATE_DISK* pCd = &cd;
PDISK_PARTITION_INFO pDpi = (PDISK_PARTITION_INFO) pDgEx->Data;   //DiskGeometryGetPartition(pDgEx);
pCd->PartitionStyle = PARTITION_STYLE_MBR;
pCd->Mbr.Signature = pDpi->Mbr.Signature;
//Initialize disk.
if (::DeviceIoControl(hDev, 
IOCTL_DISK_CREATE_DISK, 
pCd, 
sizeof(CREATE_DISK),
NULL, 
0,
&returnedCount, 
NULL))
{
//MessageBox(_T("CREATE_DISK"));
int layoutInfoSize = sizeof(DRIVE_LAYOUT_INFORMATION_EX) + sizeof(PARTITION_INFORMATION_EX) * 3;
DRIVE_LAYOUT_INFORMATION_EX* pDliEx2 = (DRIVE_LAYOUT_INFORMATION_EX*) new BYTE[layoutInfoSize];
pDliEx2->PartitionStyle = PARTITION_STYLE_MBR;
pDliEx2->PartitionCount = 4;
pDliEx2->Mbr.Signature = pDpi->Mbr.Signature;//0xBBF0;//?
pDliEx2->PartitionEntry[0].PartitionStyle = PARTITION_STYLE_MBR;
pDliEx2->PartitionEntry[0].StartingOffset.QuadPart = 32256;
pDliEx2->PartitionEntry[0].PartitionLength.QuadPart = pDgEx->Geometry.Cylinders.QuadPart
* pDgEx->Geometry.TracksPerCylinder
* pDgEx->Geometry.SectorsPerTrack
* pDgEx->Geometry.BytesPerSector
- pDliEx2->PartitionEntry[0].StartingOffset.QuadPart;
pDliEx2->PartitionEntry[0].PartitionNumber = 1;
pDliEx2->PartitionEntry[0].RewritePartition = TRUE;
pDliEx2->PartitionEntry[0].Mbr.PartitionType = PARTITION_IFS;
pDliEx2->PartitionEntry[0].Mbr.BootIndicator = FALSE;
pDliEx2->PartitionEntry[0].Mbr.RecognizedPartition = TRUE;
pDliEx2->PartitionEntry[0].Mbr.HiddenSectors = 63;
pDliEx2->PartitionEntry[1].PartitionStyle = PARTITION_STYLE_MBR;
pDliEx2->PartitionEntry[1].StartingOffset.QuadPart = 0;
pDliEx2->PartitionEntry[1].PartitionLength.QuadPart = 0;
pDliEx2->PartitionEntry[1].PartitionNumber = 0;
pDliEx2->PartitionEntry[1].RewritePartition = FALSE;
pDliEx2->PartitionEntry[1].Mbr.PartitionType = PARTITION_ENTRY_UNUSED;
pDliEx2->PartitionEntry[1].Mbr.BootIndicator = FALSE;
pDliEx2->PartitionEntry[1].Mbr.RecognizedPartition = FALSE;
pDliEx2->PartitionEntry[1].Mbr.HiddenSectors = 0;
pDliEx2->PartitionEntry[2].PartitionStyle = PARTITION_STYLE_MBR;
pDliEx2->PartitionEntry[2].StartingOffset.QuadPart = 0;
pDliEx2->PartitionEntry[2].PartitionLength.QuadPart = 0;
pDliEx2->PartitionEntry[2].PartitionNumber = 0;
pDliEx2->PartitionEntry[2].RewritePartition = FALSE;
pDliEx2->PartitionEntry[2].Mbr.PartitionType = PARTITION_ENTRY_UNUSED;
pDliEx2->PartitionEntry[2].Mbr.BootIndicator = FALSE;
pDliEx2->PartitionEntry[2].Mbr.RecognizedPartition = FALSE;
pDliEx2->PartitionEntry[2].Mbr.HiddenSectors = 0;
pDliEx2->PartitionEntry[3].PartitionStyle = PARTITION_STYLE_MBR;
pDliEx2->PartitionEntry[3].StartingOffset.QuadPart = 0;
pDliEx2->PartitionEntry[3].PartitionLength.QuadPart = 0;
pDliEx2->PartitionEntry[3].PartitionNumber = 0;
pDliEx2->PartitionEntry[3].RewritePartition = FALSE;
pDliEx2->PartitionEntry[3].Mbr.PartitionType = PARTITION_ENTRY_UNUSED;
pDliEx2->PartitionEntry[3].Mbr.BootIndicator = FALSE;
pDliEx2->PartitionEntry[3].Mbr.RecognizedPartition = FALSE;
pDliEx2->PartitionEntry[3].Mbr.HiddenSectors = 0;
//Partitioning disk
if (::DeviceIoControl(hDev, IOCTL_DISK_SET_DRIVE_LAYOUT_EX, pDliEx2, layoutInfoSize,
NULL, 0, &returnedCount, NULL))
{
//MessageBox(_T("SET_DRIVE_LAYOUT_EX"));
VERIFY_INFORMATION vi;
VERIFY_INFORMATION* pVi = &vi;
pVi->StartingOffset.QuadPart = 0;
pVi->Length = (ULONG)pDgEx->DiskSize.QuadPart;
//Verifying
//OVERLAPPED xyz;
if (::DeviceIoControl(hDev, IOCTL_DISK_VERIFY, pVi, sizeof(VERIFY_INFORMATION),
NULL, 0, &returnedCount, NULL))
{
//MessageBox(_T("DISK_VERIFY"));
//Updating
if (::DeviceIoControl(hDev, IOCTL_DISK_UPDATE_PROPERTIES, NULL, 0,
NULL, 0, &returnedCount, NULL))
{
//MessageBox(_T("UPDATE_PROPERTIES"));
br = true;
}
}
}
delete pDliEx2;
}
}
delete pDgEx;
::CloseHandle(hDev);
}
}
return br;
}
XP下是好的,win7下的话一下语句遇到问题:
if (::DeviceIoControl(hDev, IOCTL_DISK_VERIFY, pVi, sizeof(VERIFY_INFORMATION),
NULL, 0, &returnedCount, NULL))
返回lasterror = 1117
不知道怎么解决。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • WIN7初始化格式化磁盘问题

相关文章

  • 2017-06-05 mfc下按excel模板生成文件
  • 2017-06-04 窗口播放ppt?
  • 2017-06-05 程序运行的虚拟内存增长问题。
  • 2017-06-04 VC++60如何动态生成ACTIVEX控件及响应其事件?
  • 2017-06-05 多线程的程序怎么调试?
  • 2017-06-04 MFC有没有这样现成的画图控件?
  • 2017-06-04 docxlspptdwghtml全文检索
  • 2017-06-04 如何判断DLL已注册?
  • 2017-06-04 MFCvs2005基于对话框想移植sqlite3,编译都通不过,是不是库没加进来?
  • 2017-06-04 请问callback函数的实质是什么?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • stl的map在vc里面有这样的问题:<csting,cstringarray>跟pair
    • 单文档或多文档使用ActiveX控件的资料
    • 请问哪里有专业一点的COM论坛?路过请提携!
    • 为什么我的VC菜单Insert没有NewATLObject?
    • activex控件在哪创建对话框//会在资源管理器里加载之后显示,而不是显示椭圆呢?
    • 用VC做一个DLL,供其他编程语言调用
    • 一个有关SetTimer(winapi编程)的问题???急急急急急急急急急急
    • ActiveX控件中如何知道现在处于编辑状态还是程序运行状态
    • ocx中如何加入一个Rectangle??
    • 问一个ATL库的代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有