枚举的结果是 “\\.\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;
}