给我一个例子1000分相送 BCB_FANS(四大名捕之追杀令):你看W2K的磁盘管理就知道了这个是有确定值的,不像你说的那样 hjd_cw() :谢谢,请发给我吧 [email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BCB_FANS(四大名捕之追杀令) :和主不主分区没有关系的啊Win2000/控制面版/管理工具/计算机管理/磁盘管理请看这个“磁盘0”“磁盘1”Windows肯定知道某个逻辑盘是在哪个物理盘上另外在W2K以上的系统里逻辑盘符是可以设置的,这个你知道吗?D:可以改成Z:按照你的方法根本行不通呀 这个贴子,微软的人在上面提到了一点:http://groups.google.com/groups?hl=zh-CN&lr=&ie=UTF-8&inlang=zh-CN&threadm=0AQmrrz2BHA.1512%40cpmsftngxa09&rnum=2&prev=/groups%3Fq%3DIOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS%26hl%3Dzh-CN%26lr%3D%26ie%3DUTF-8%26inlang%3Dzh-CN%26sa%3DN%26tab%3Dwg Sorry,我倒没有想到W2K以上的逻辑盘可以更改盘符,刚才试了一下,的确可以改,这个问题有待研究! 看了你提供的那个URL,还真复杂! 呵呵,你提供的那篇文章已经说得很清楚了,我用C++Builder实现了一下。 AnsiString DiskNumberStr; HANDLE hFile; DWORD dwByteReturn; STORAGE_DEVICE_NUMBER StgDevNum; //"F"是分区符号,你想查哪个分区对应的物理盘序号,就传哪个分区 DiskNumberStr = "\\\\.\\F:"; hFile = CreateFile(DiskNumberStr.c_str(),GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if(hFile == NULL) { Memo1->Lines->Add("Error Create File. Err = " + SysErrorMessage(GetLastError())); return; } if(DeviceIoControl(hFile,IOCTL_STORAGE_GET_DEVICE_NUMBER,NULL,0,&StgDevNum, sizeof(STORAGE_DEVICE_NUMBER),&dwByteReturn,NULL)) { Memo1->Lines->Add("DeviceType = " + IntToStr(StgDevNum.DeviceType)); Memo1->Lines->Add("DeviceNumber = " + IntToStr(StgDevNum.DeviceNumber)); Memo1->Lines->Add("PartitionNumber = " + IntToStr(StgDevNum.PartitionNumber)); } else { Memo1->Lines->Add("Error Call DeviceIoControl. Err = " + SysErrorMessage(GetLastError())); } CloseHandle(hFile);以上面例子为例,结果如下(我的平台:Windows 2000 SP3):DeviceType = 7 (硬盘,FILE_DEVICE_DISK)DeviceNumber = 0 (第一个物理硬盘)PartitionNumber = 4 (第四个分区)我这里没有两个硬盘,没法帮你测试有多个硬盘的情况了,抱歉。 就算在2000中使用重新定义的盘符作为参数也应该可以得到结果。我把H:盘重新定义为W:盘,结果是:DiskNumberStr = "\\\\.\\W:";.........DeviceType = 7 (硬盘,FILE_DEVICE_DISK)DeviceNumber = 0 (第一个物理硬盘)PartitionNumber = 6 (第四个分区) hjd_cw() :你好,你的代码我已收到,不过刚才看了BCB_FANS(四大名捕之追杀令)的代码比较简单,我先试了他的并已通过,我就不再试你的了。当然还是谢谢你,这个贴子的200分就给你吧。BCB_FANS(四大名捕之追杀令):你好,你的代码我已试过,结果是正确的。我在VC和ASM栏里还有两个一样的贴子,我会另外再在Delphi栏里开3个200分的贴子,请你来拿分 ^________^ 散分 向各位大大请教一个字符串的处理问题(在 SQL SERVER 2000 中),谢谢! 一个小问题,非技术问题。 求paradox公用密码 菜鸟问:如何用idhttp打开网页? "NO actionband style unit present in the uses clause" 请教数据库密码存储问题 为啥会有这个问题?。。。在线等 我的问题怎么没人回答!高分啊!哥们!! 今天下载了indy控件,请问哪里有indy的DEMO啊? 请问怎样分别得到一个TDateTime中的日期和时间? ORACLE 数据库的自动登录?
和主不主分区没有关系的啊
Win2000/控制面版/管理工具/计算机管理/磁盘管理
请看这个
“磁盘0”
“磁盘1”Windows肯定知道某个逻辑盘是在哪个物理盘上另外在W2K以上的系统里逻辑盘符是可以设置的,这个你知道吗?
D:可以改成Z:
按照你的方法根本行不通呀
http://groups.google.com/groups?hl=zh-CN&lr=&ie=UTF-8&inlang=zh-CN&threadm=0AQmrrz2BHA.1512%40cpmsftngxa09&rnum=2&prev=/groups%3Fq%3DIOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS%26hl%3Dzh-CN%26lr%3D%26ie%3DUTF-8%26inlang%3Dzh-CN%26sa%3DN%26tab%3Dwg
HANDLE hFile;
DWORD dwByteReturn;
STORAGE_DEVICE_NUMBER StgDevNum; //"F"是分区符号,你想查哪个分区对应的物理盘序号,就传哪个分区
DiskNumberStr = "\\\\.\\F:";
hFile = CreateFile(DiskNumberStr.c_str(),GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, 0, NULL);
if(hFile == NULL)
{
Memo1->Lines->Add("Error Create File. Err = " + SysErrorMessage(GetLastError()));
return;
} if(DeviceIoControl(hFile,IOCTL_STORAGE_GET_DEVICE_NUMBER,NULL,0,&StgDevNum,
sizeof(STORAGE_DEVICE_NUMBER),&dwByteReturn,NULL))
{
Memo1->Lines->Add("DeviceType = " + IntToStr(StgDevNum.DeviceType));
Memo1->Lines->Add("DeviceNumber = " + IntToStr(StgDevNum.DeviceNumber));
Memo1->Lines->Add("PartitionNumber = " + IntToStr(StgDevNum.PartitionNumber));
}
else
{
Memo1->Lines->Add("Error Call DeviceIoControl. Err = " + SysErrorMessage(GetLastError()));
}
CloseHandle(hFile);以上面例子为例,结果如下(我的平台:Windows 2000 SP3):DeviceType = 7 (硬盘,FILE_DEVICE_DISK)
DeviceNumber = 0 (第一个物理硬盘)
PartitionNumber = 4 (第四个分区)我这里没有两个硬盘,没法帮你测试有多个硬盘的情况了,抱歉。
DiskNumberStr = "\\\\.\\W:";.........DeviceType = 7 (硬盘,FILE_DEVICE_DISK)
DeviceNumber = 0 (第一个物理硬盘)
PartitionNumber = 6 (第四个分区)
你好,你的代码我已收到,不过刚才看了BCB_FANS(四大名捕之追杀令)的代码比较简单,我先试了他的并已通过,我就不再试你的了。
当然还是谢谢你,这个贴子的200分就给你吧。BCB_FANS(四大名捕之追杀令):
你好,你的代码我已试过,结果是正确的。
我在VC和ASM栏里还有两个一样的贴子,我会另外再在Delphi栏里开3个200分的贴子,请你来拿分 ^________^