来自 rndw32.c:
/* Get disk I/O statistics for all the hard drives */
for (nDrive = 0;; nDrive++) {
char diskPerformance[SIZEOF_DISK_PERFORMANCE_STRUCT];
char szDevice[50];
/* Check whether we can access this device */
sprintf (szDevice, "\\\\.\\PhysicalDrive%d", nDrive);
hDevice = CreateFile (szDevice, 0, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL);
if (hDevice == INVALID_HANDLE_VALUE)
break;
/* Note: This only works if you have turned on the disk performance
* counters with 'diskperf -y'. These counters are off by default */
if (DeviceIoControl (hDevice, IOCTL_DISK_PERFORMANCE, NULL, 0,
diskPerformance, SIZEOF_DISK_PERFORMANCE_STRUCT,
&dwSize, NULL))
{
if ( debug_me )
log_debug ("rndw32#slow_gatherer_nt: iostats drive %d\n",
nDrive );
(*add) (diskPerformance, dwSize, requester );
}
else {
log_info ("NOTE: you should run 'diskperf -y' "
"to enable the disk statistics\n");
}
CloseHandle (hDevice);
}
如果您使用远程连接,似乎解决方案可能是这个:(摘自 microfocus.com)
Enabling Remote Monitoring for Windows XP
An error message might occur when trying to monitor a computer that is running the Windows XP operating system. If so, enable monitoring remotely.
Open Windows Explorer on the target Windows XP computer.
Choose Tools > Folder Options .
Click the View tab.
Uncheck the Use Simple File Sharing check box.
Click OK.
Verify privileges on the target Windows XP computer as follows:
If the system root is on an NTFS partition, you must possess at least READ access to the following files:
%SystemRoot%\System32\Perfc009.dat
%SystemRoot%\System32\Perfh009.dat
You must possess at least READ access to the following registry keys on the remote computer:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
Reboot the Windows XP computer.
A user who possesses administrator rights to the remote computer can now view the remote counters.
如果有人在本地机器上遇到这个问题,也许答案可能是启用它的另一种方式:
检查是否使用此命令启用:
DISKPERF
如果不是,请尝试使用以下方法启用它:
DISKPERF - Y
我知道这篇文章已经有两年的历史了,但是由于我在 Debian 操作系统上使用 GPG 时遇到了类似的问题,而且我在其他网站上找到的完整答案很少,我想它可以为其他人节省一些时间。
顺便说一句,就我而言,我没有陷入困境。也许您提到的循环是因为它试图从安装在系统上的多个磁盘获取静态/报告?