枚举的结果是 "\\.\PhysicalDriveX"这样的形式。
需要注意的是:程序必须在 Administrator 权限下运行。即运行时,要求 "Run as Administrator"。同样在VS2008中编译时,由于权限不够,可能无法看到运行结果。本程序使用的是最传统的方法,使用CreateFile尝试不同的 PhysicalDirve+Number如果能够打开就是存在的。
#include "stdafx.h" #include <windows.h> #include <stdio.h> #include <conio.h> int _tmain(int argc, _TCHAR* argv[]) { int i; TCHAR Device[0x20]; HANDLE hDevice; for (i=0;i<10;i++) { wsprintf(Device,TEXT("\\\\.\\PhysicalDrive%d"), i); hDevice = CreateFile(Device, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); if (hDevice!=INVALID_HANDLE_VALUE) {printf("%ws \n",Device); } CloseHandle( hDevice ); } _getch(); return 0; }