获取磁盘示例代码的旋转速度
Get Rotation Speed of Disk Sample Code
我不太擅长vc++,但有没有人有一个示例代码来获得计算机中磁盘的旋转速度?我一直在研究检测SSD驱动器和一个解决方案,从研究一整天是得到旋转速度,因为SSD有0 rpm这可能是检测SSD驱动器的唯一方法。
From google wmi ssd detect
有一个NV缓存管理器接口用于ReadyDrive,这是新的Vista。我认为它正在测试NV_FEATURE_PARAMETER的NVReadSpeed和NVWrtSpeed值。
Windows 7使用ATA8-ACS识别字217:标称介质旋转速率,值0001h为非旋转介质,如固态设备。但并不是所有的ssd都符合ATA8-ACS1规范7.16.7.77,有些可能需要固件更新。
如果你想了解更多关于在Windows中发送ATA命令的信息,我建议你去查看存储平台ATA论坛。本论坛正在存档,请尽快行动。
也很有启发性:
http://blogs.msdn.com/b/e7/archive/2009/05/05/support-and-q-a-for-solid-state-drives-and.aspx硬盘碎片整理是否默认禁用?
是的。碎片整理的自动调度将排除声明自己为ssd的设备上的分区。此外,如果系统磁盘的随机读取性能特征高于8 MB/秒的阈值,那么它也将被排除在外。阈值由内部分析确定。
您最好查找TRIM命令。
BOOL IsDriveSSD(){
DWORD dwBytesReturned;
HANDLE volhand = INVALID_HANDLE_VALUE;
try{
volhand = CreateFile("\\.\PHYSICALDRIVE0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
}
catch(...){
volhand = INVALID_HANDLE_VALUE;
}
if (volhand == INVALID_HANDLE_VALUE) return FALSE;
// Test 1: See if we have a TRIM command, if so, we're SSD.
STORAGE_PROPERTY_QUERY spq;
DEVICE_TRIM_DESCRIPTOR dtr;
memset(&dtr,0,sizeof(DEVICE_TRIM_DESCRIPTOR));
memset(&spq,0,sizeof(STORAGE_PROPERTY_QUERY));
spq.PropertyId=StorageDeviceTrimProperty;
spq.QueryType=PropertyStandardQuery;
BOOL ret = DeviceIoControl(volhand, IOCTL_STORAGE_QUERY_PROPERTY,
&spq,sizeof(spq),
&dtr,sizeof(dtr),
&dwBytesReturned,FALSE);
if(ret){
ret = dtr.TrimEnabled;
}
CloseHandle(volhand);
return ret;
}
我知道这是一个旧的线程,但这将在Windows 10上工作
ManagementScope scope = new ManagementScope(@"\.rootmicrosoftwindowsstorage");
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM MSFT_PhysicalDisk");
scope.Connect();
searcher.Scope = scope;
string type = "";
foreach (ManagementObject queryObj in searcher.Get())
{
switch (Convert.ToInt16(queryObj["MediaType"]))
{
case 1:
type = "Unspecified";
break;
case 3:
type = "HDD";
break;
case 4:
type = "SSD";
break;
case 5:
type = "SCM";
break;
default:
type = "Unspecified";
break;
}
}
searcher.Dispose();
相关文章:
- 与互斥锁相比,旋转锁可以保证上下文切换
- 为什么在读取文件大小时文件IO速度会发生变化
- 绘制旋转的三角形
- 旋转模型矩阵时的形状失真
- 四边形的 2D 旋转
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- 文件系统:复制功能的速度秘诀是什么
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 发布旋转矩阵(openGL/glm)
- 顺时针迭代旋转 3 位数字
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 在C++中使用并行化的预期速度是多少(不是 OpenMp,而是 <thread>)
- 如何有效地计算将单位立方体映射到自身的反射和旋转?
- 两个连续的 OpenMP 并行区域会相互减慢速度
- 子轴围绕父轴而不是他自己的轴旋转
- OpenGL对象在PC上以正常速度旋转,但在笔记本电脑上非常快
- Open GL增加对象的旋转速度
- 获取磁盘示例代码的旋转速度