欢迎来到天天文库
浏览记录
ID:10247729
大小:162.50 KB
页数:5页
时间:2018-06-13
《根据驱动器盘符获得分区号》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、白水绕东城Zhong'sBlog·条新通知·登录·注册·欢迎·退出·我的博客·配置·写文章·文章管理·博客首页····空间·博客·好友·相册·留言用户操作[留言] [发消息] [加为好友] 订阅我的博客 [编辑]felixz的公告用Gtalk和我交谈2、com/urchin.js"type="text/javascript">_uacct="UA-292248-3";urchinTracker();[编辑]文章分类·.netcode·C++Builder·etc·Linux·Philosophic·Symbian·win32code·win32driver[编辑]MyPagesGoogleAnalyticshotmailmobilemyflickrReactOS存档·2008年04月(1)·20083、年03月(1)·2007年09月(1)·2007年06月(6)·2007年05月(5)·2007年03月(3)·2006年10月(3)·2006年08月(2)·2006年07月(3)·2006年06月(4)·2006年05月(10)公告:[意见反馈][官方博客] 根据驱动器盘符获得分区号(ConvertDriverNametoPartitionNumber)收藏 程序里有自动重启Windows系统的功能,当有多个Windows共存的时候C:根目录下的boot.ini文件包含类似下面的内容:[bootloader] timeout=30 def4、ault=multi(0)disk(0)rdisk(0)partition(1)WINNT[operatingsystems] multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows2000Professional" multi(0)disk(0)rdisk(0)partition(2)WINDOWS="Windows XPProfessional"/fastdetect 我们会判断当前系统所在的驱动器,然后改写boot.ini中的default值,以使得程序重启系统后进入当前启动的操作系统5、。例如在拥有以上boot.ini的系统上,用户手工从操作系统列表选择了启动处于partition(2)上的WindowsXP,如果我们不作任何修改的重启系统,那么重启以后将进入当前的缺省操作系统Windows2000而不是先前启动的WindowsXP。GetSystemDirectory()可以获得当前操作系统所在目录。 开始我们想当然的将盘符和分区作了以下映射 C:->partition(1) D:->partition(2) E:->partition(3) 6、 ....... 后来这里被Report了一个Bug,在Dell600m笔记本电脑上,单一操作系统,我们的程序无法正常重启系统。检查后发现这个型号的笔记本电脑有一个隐藏分区,而C:则是partition(2)。我们必须寻找一个途径将驱动器号转换成分区号。 查阅MSDN后得知标准Win32API的解决方法,简单范例: #include#include#include#include#include//Requiredtoensur7、ecorrectPhysicalDriveIOCTLstructuresetup#pragmapack(1)intmain(intargc,char**argv){HANDLEhDrv=CreateFile("\\.\C:",GENERIC_READ,//ReadonlytothedriveFILE_SHARE_READ8、//sharemodeFILE_SHARE_WRITE,NULL,//defaultsecurityattributesOPEN_EXISTING,//disposition0,//fileattributesNULL)9、;if(!hDrv){cout<<"ErrorCannotopentheDriver"<
2、com/urchin.js"type="text/javascript">_uacct="UA-292248-3";urchinTracker();[编辑]文章分类·.netcode·C++Builder·etc·Linux·Philosophic·Symbian·win32code·win32driver[编辑]MyPagesGoogleAnalyticshotmailmobilemyflickrReactOS存档·2008年04月(1)·2008
3、年03月(1)·2007年09月(1)·2007年06月(6)·2007年05月(5)·2007年03月(3)·2006年10月(3)·2006年08月(2)·2006年07月(3)·2006年06月(4)·2006年05月(10)公告:[意见反馈][官方博客] 根据驱动器盘符获得分区号(ConvertDriverNametoPartitionNumber)收藏 程序里有自动重启Windows系统的功能,当有多个Windows共存的时候C:根目录下的boot.ini文件包含类似下面的内容:[bootloader] timeout=30 def
4、ault=multi(0)disk(0)rdisk(0)partition(1)WINNT[operatingsystems] multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows2000Professional" multi(0)disk(0)rdisk(0)partition(2)WINDOWS="Windows XPProfessional"/fastdetect 我们会判断当前系统所在的驱动器,然后改写boot.ini中的default值,以使得程序重启系统后进入当前启动的操作系统
5、。例如在拥有以上boot.ini的系统上,用户手工从操作系统列表选择了启动处于partition(2)上的WindowsXP,如果我们不作任何修改的重启系统,那么重启以后将进入当前的缺省操作系统Windows2000而不是先前启动的WindowsXP。GetSystemDirectory()可以获得当前操作系统所在目录。 开始我们想当然的将盘符和分区作了以下映射 C:->partition(1) D:->partition(2) E:->partition(3)
6、 ....... 后来这里被Report了一个Bug,在Dell600m笔记本电脑上,单一操作系统,我们的程序无法正常重启系统。检查后发现这个型号的笔记本电脑有一个隐藏分区,而C:则是partition(2)。我们必须寻找一个途径将驱动器号转换成分区号。 查阅MSDN后得知标准Win32API的解决方法,简单范例: #include#include#include#include#include//Requiredtoensur
7、ecorrectPhysicalDriveIOCTLstructuresetup#pragmapack(1)intmain(intargc,char**argv){HANDLEhDrv=CreateFile("\\.\C:",GENERIC_READ,//ReadonlytothedriveFILE_SHARE_READ
8、//sharemodeFILE_SHARE_WRITE,NULL,//defaultsecurityattributesOPEN_EXISTING,//disposition0,//fileattributesNULL)
9、;if(!hDrv){cout<<"ErrorCannotopentheDriver"<
此文档下载收益归作者所有