DISK_PERFORMANCE structure (ntdddisk.h)

The DISK_PERFORMANCE structure is used in conjunction with the IOCTL_DISK_PERFORMANCE request to collect summary disk statistics for purposes of measuring disk performance.

Syntax

typedef struct _DISK_PERFORMANCE {
  LARGE_INTEGER BytesRead;
  LARGE_INTEGER BytesWritten;
  LARGE_INTEGER ReadTime;
  LARGE_INTEGER WriteTime;
  LARGE_INTEGER IdleTime;
  ULONG         ReadCount;
  ULONG         WriteCount;
  ULONG         QueueDepth;
  ULONG         SplitCount;
  LARGE_INTEGER QueryTime;
  ULONG         StorageDeviceNumber;
  WCHAR         StorageManagerName[8];
} DISK_PERFORMANCE, *PDISK_PERFORMANCE;

Members

BytesRead

Contains a cumulative count of bytes read from the disk since the performance counters were enabled.

BytesWritten

Contains a cumulative count of bytes written to the disk since the performance counters were enabled.

ReadTime

Contains a cumulative time, expressed in increments of 100 nanoseconds, spent on disk reads since the performance counters were enabled.

WriteTime

Contains a cumulative time, expressed in increments of 100 nanoseconds, spent on disk reads since the performance counters were enabled.

IdleTime

Contains a cumulative time, expressed in increments of 100 nanoseconds, since the performance counters were enabled in which there was no disk activity.

ReadCount

Contains the number of disk accesses for reads since the performance counters were enabled.

WriteCount

Contains the number of disk accesses for writes since the performance counters were enabled.

QueueDepth

Contains a snapshot of the number of queued disk I/O requests at the time that the query for performance statistics was performed.

SplitCount

Contains the number of disk accesses by means of an associated IRP since the performance counters were enabled.

QueryTime

Contains a timestamp indicating the system time at the moment that the query took place. System time is a count of 100-nanosecond intervals since January 1, 1601. System time is typically updated approximately every ten milliseconds. For more information about system time, seeKeQuerySystemTime.

StorageDeviceNumber

Contains a unique number assigned to every disk or volume across a particular storage type. The storage types are disk.sys, ftdisk.sys, and dmio.sys.

StorageManagerName[8]

Contains an 8-character string that indicates which device driver provided the performance statistics.

  • In Windows 2000, this can be either "LogiDisk" for the driver logidisk.sys or "PhysDisk" for the driver physdisk.sys. These drivers collect performance statistics for devices and physical disks respectively.

  • In Windows XP and later operating systems, this can be any of the following three strings: "FTDISK" for the driver ftdisk.sys, "DMIO" for the driver dmio.sys, or "PARTMGR" for the driver partmgr.sys. These three drivers collect performance statistics for basic disk volumes, dynamic disk volumes, and physical disks respectively. Note that these strings are 8-character case-sensitive strings with blank fill. For example, in the case of the string "FTDISK", the StorageManagerName character array should contain two trailing blanks ("FTDISK  "), and in the case of the string "DMIO", the array should contain four trailing blanks ("DMIO    ").

Remarks

Counting halts whenever the performance counters are disabled, but the counters are not reset, so the cumulative values assigned to the structure members might potentially reflect disk activity across several enablings and disablings of the counters.

Requirements

Requirement Value
Header ntdddisk.h (include Ntdddisk.h)

See also

IOCTL_DISK_PERFORMANCE

IOCTL_DISK_PERFORMANCE_OFF