其实这个问题也很多人问过的了
我想知道电脑上(A)有多少个物理的硬盘(B)每个物理硬盘上有多少个分区(C)每个分区的逻辑盘符是什么。
怎样实现呢?WMI方法也行,最好是能在win98下也可以的,或者有相关的资料吗?
我想知道电脑上(A)有多少个物理的硬盘(B)每个物理硬盘上有多少个分区(C)每个分区的逻辑盘符是什么。
怎样实现呢?WMI方法也行,最好是能在win98下也可以的,或者有相关的资料吗?
解决方案 »
- 请问:在EDIT控件中(多行的)加有垂直滚动条,当用鼠标拖动垂直滚动条的滑动块时响应的是哪个消息?
- CDialog 怎样用程序来增加最小化、最大化按钮以及Resizing?
- 常数CString 也会发生内存泄漏,请问怎么办?
- 从"Project->add to project"中加入的rc文件后,如何删除这个rc?
- 请问,写一个类似QQ那样的软件,技术难度高吗?
- 【调查】各位兄弟的程序设计学习历程...
- 我有CRecordSet和CRecordView 时,删除一些记录后都在原来数据处显示“已经删除”。怎么不显示这个
- 执行到这为什么会死机
- 怎样知道COM内部又调用了哪些COM?急
- 怎样在窗口中显示等待光
- 因手头没有资料参照,请给出一个用FILE结构和fopen,fread进行文件操作的例子,谢了
- 大家一般是如何来估计一个项目所需的开发时间的?
getLogicalDrives() 只能取得所有的逻辑驱动器的盘符,不能判断这些逻辑驱动器是属于那个物理盘的(假设有多个硬盘)。
高手们,HELP!!!!~~~~~~
[email protected]
//功能:取驱动器信息
//参数描述: driveInfo存放取得的驱动器统计信息数组,
// length为数组实际存放项的
//返回值描述:返回值1表示正常,-1表示出错
short Fresource_driveinfo( Fdrive_info driveInfo[MAX1],int& length )
{
Fdrive_info DriveInfo;
memset( &DriveInfo, 0, sizeof( Fdrive_info ) );
DWORD dwBuffer=256;
char szBuffer[256];
memset( szBuffer, 0, dwBuffer );
int nSize = GetLogicalDriveStrings( dwBuffer, szBuffer );
if( nSize == 0 )
{
return -1;
} char szDrivers[32][5];
memset( szDrivers, 0, 160 );
char szTemp[4];
memset( szTemp, 0, 4 );
int j=0;
int nLength=0; // 有几个盘符
for( int i=0; i<nSize; i++ )
{
if( szBuffer[i] == '\0' )
{
szTemp[j]='\0';
strcpy( szDrivers[nLength], szTemp ); UINT nDriver = GetDriveType( szDrivers[nLength] );
// 得到驱动器的信息
switch( nDriver )
{
case DRIVE_REMOVABLE: // 是否是软驱
break;
case DRIVE_CDROM:
break;
case DRIVE_FIXED:
strcpy( DriveInfo.drive_type, "硬盘" );
strcat( DriveInfo.drive_type, "DRIVE_FIXED" ); //GetVolumeInformation();
//DriveInfo.Partitiontype = ;
//strcpy( DriveInfo.drive_id, szDrivers[nLength] );
//DriveInfo.drive_size = ;
//GetDiskFreeSpace( szDrivers );
break; case DRIVE_REMOTE:
break;
case DRIVE_RAMDISK:
break;
}
nLength++;
j=0;
continue;
}
szTemp[j]=szBuffer[i];
j++;
} length = nLength;
return 1;
}
因为WMI可以用下面的方法查询出一个逻辑盘的归属:如Query:
ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"}
WHERE RequiredAssocQualifier = Association
Results:
Win32_Directory.Name="C:\\"
Win32_ComputerSystem.Name="mycomputer"
Win32_DiskPartition.DeviceID="Disk #0, Partition #0"
只要将 DeviceID="C:" D: E: F:....... 下去就得到一个表格了。
但是在VB了怎样调用WMI以及怎样获取返回的信息呢????上面的方法只能在Win2000/xp下工作,在win98呢?????????5555555关于WMI,在MSDN里面有。
Platform SDK: Windows Management Instrumentation
asm.yeah.net