http://msdn.microsoft.com/en-us/library/ms809016.aspx
BytesWritten
ReadTime
WriteTime
IdleTime
ReadCount
WriteCount
QueueDepth
SplitCount
QueryTime
StorageDeviceNumber
StorageManagerName
Comments
Disk Performance
BytesRead
Contains a cumulative count of bytes read from the disk since the performance counters were enabled.
Contains a cumulative count of bytes written to the disk since the performance counters were enabled.
Contains a cumulative time, expressed in increments of 100 nanoseconds, spent on disk reads since the performance counters were enabled.
Contains a cumulative time, expressed in increments of 100 nanoseconds, spent on disk reads since the performance counters were enabled.
Contains a cumulative time, expressed in increments of 100 nanoseconds, since the performance counters were enabled in which there was no disk activity.
Contains the number of disk accesses for reads since the performance counters were enabled.
Contains the number of disk accesses for writes since the performance counters were enabled.
Contains a snapshot of the number of queued disk I/O requests at the time that the query for performance statistics was performed.
Contains the number of disk accesses by means of an associated IRP since the performance counters were enabled.
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, see KeQuerySystemTime.
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.
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").
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.
http://msdn.microsoft.com/en-us/library/ms809031.aspx
typedef struct _DISK_CACHE_INFORMATION {
BOOLEAN ParametersSavable;
BOOLEAN ReadCacheEnabled;
BOOLEAN WriteCacheEnabled;
DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority;
DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority;
USHORT DisablePrefetchTransferLength;
BOOLEAN PrefetchScalar;
union {
struct {
USHORT Minimum;
USHORT Maximum;
USHORT MaximumBlocks;
} ScalarPrefetch;
struct {
USHORT Minimum;
USHORT Maximum;
} BlockPrefetch;
};
} DISK_CACHE_INFORMATION, *PDISK_CACHE_INFORMATION;
ParametersSavable
ReadCacheEnabled
Indicates, when set to 1, that the read cache is enabled.
WriteCacheEnabled
Indicates, when set to 1, that the write cache is enabled.
ReadRetentionPriority
Determines the likelihood of various types of data remaining in the cache. By means of this value, for instance, data cached from a READ or WRITE operation might be given a different priority than data cached under other circumstances, such as prefetch operations. Thus a value of EqualPriority indicates that no data is held in the cache on a preferential basis. When ReadRetentionPriority is set to EqualPriority, all types of data have equal access to cache memory. On the other hand, a value of KeepPrefetchedData indicates that a preference is to be given to prefetched data while a value of KeepReadData indicates that a preference is to be given to data cached from a READ operation. For more information about the values that can be assigned to this member see the DISK_CACHE_RETENTION_PRIORITY enumeration.
WriteRetentionPriority
See discussion under ReadRetentionPriority.
DisablePrefetchTransferLength
Disables prefetching. Prefetching might be disabled whenever the number of blocks requested exceeds the value in DisablePrefetchTransferLength. When zero, prefetching is disabled no matter what the size of the block request.
PrefetchScalar When TRUE, Indicates that ScalarPrefetch.Maximum should be used together with the transfer length to calculate the amount of data that can be prefetched. When FALSE, BlockPrefetch.Maximum will be the maximum number of disk blocks that can be prefetched.
ScalarPrefetch.Minimum Contains the scalar multiplier of the transfer length of the request when PrefetchScalar is TRUE. If PrefetchScalar is TRUE, the value in ScalarPrefetch.Minimum is multiplied by the transfer length to obtain the minimum amount of data that can be prefetched into the cache on a disk operation.
ScalarPrefetch.Maximum Contains the scalar multiplier of the transfer length of the request when PrefetchScalar is TRUE. If PrefetchScalar is TRUE, the value in ScalarPrefetch.Maximum is multiplied by the transfer length to obtain the maximum amount of data that can be prefetched into the cache on a disk operation.
ScalarPrefetch.MaximumBlocks Contains the maximum size, in blocks, of the transfer length.
BlockPrefetch.Minimum Indicates the minimum amount of data, as an absolute number of disk blocks, that can be prefetched into the cache on a disk operation, when PrefetchScalar is FALSE.
BlockPrefetch.Maximum Indicates the maximum amount of data, as an absolute number of disk blocks, that can be prefetched into the cache on a disk operation, when PrefetchScalar is FALSE.
Syntax
C++
typedef struct _SYSTEM_INFO { union { DWORD dwOemId; struct { WORD wProcessorArchitecture; WORD wReserved; }; }; DWORD dwPageSize; LPVOID lpMinimumApplicationAddress; LPVOID lpMaximumApplicationAddress; DWORD_PTR dwActiveProcessorMask; DWORD dwNumberOfProcessors; DWORD dwProcessorType; DWORD dwAllocationGranularity; WORD wProcessorLevel; WORD wProcessorRevision; }SYSTEM_INFO;
Members
dwOemId
An obsolete member that is retained for compatibility. Applications should use the wProcessorArchitecture branch of the union.
wProcessorArchitecture
The processor architecture of the installed operating system. This member can be one of the following values.
Value | Meaning |
PROCESSOR_ARCHITECTURE_AMD64 9 | x64 (AMD or Intel) |
PROCESSOR_ARCHITECTURE_IA64 6 | Intel Itanium Processor Family (IPF) |
PROCESSOR_ARCHITECTURE_INTEL 0 | x86 |
PROCESSOR_ARCHITECTURE_UNKNOWN 0xffff | Unknown architecture. |
wReserved
This member is reserved for future use.
dwPageSize
The page size and the granularity of page protection and commitment. This is the page size used by the
VirtualAlloc
function.
pMinimumApplicationAddress
A pointer to the lowest memory address accessible to applications and dynamic-link libraries (DLLs).
lpMaximumApplicationAddress
A pointer to the highest memory address accessible to applications and DLLs.
dwActiveProcessorMask
A mask representing the set of processors configured into the system. Bit 0 is processor 0; bit 31 is processor 31.
dwNumberOfProcessors
The number of physical processors in the system. To retrieve the number of logical processors, use the
GetLogicalProcessorInformation function.
dwProcessorType
An obsolete member that is retained for compatibility. Use the wProcessorArchitecture, wProcessorLevel, and
wProcessorRevision members to determine the type of processor.
Name | Value |
PROCESSOR_INTEL_386 | 386 |
PROCESSOR_INTEL_486 | 486 |
PROCESSOR_INTEL_PENTIUM | 586 |
PROCESSOR_INTEL_IA64 | 2200 |
PROCESSOR_AMD_X8664 | 8664 |
dwAllocationGranularity
The granularity for the starting address at which virtual memory can be allocated. For more information, see VirtualAlloc.
wProcessorLevel
The architecture-dependent processor level. It should be used only for display purposes. To determine the feature set of a processor, use the
IsProcessorFeaturePresent function.
If wProcessorArchitecture is PROCESSOR_ARCHITECTURE_INTEL, wProcessorLevel is defined by the CPU vendor.
If wProcessorArchitecture is PROCESSOR_ARCHITECTURE_IA64, wProcessorLevel is set to 1.
wProcessorRevision
The architecture-dependent processor revision. The following table shows how the revision value is assembled for each type of processor architecture.
Processor | Value |
Intel Pentium, Cyrix, or NextGen 586 |
The high byte is the model and the low byte is the stepping. For example, if the value is xxyy, the model number and
stepping can be displayed as follows:
Model xx, Stepping yy |
Intel 80386 or 80486 |
A value of the form xxyz.
If xx is equal to 0xFF, y - 0xA is the model number, and z is the stepping identifier. If xx is not equal to 0xFF, xx + 'A' is the stepping letter and yz is the minor stepping. |
Name | Description |
---|---|
AvailableFreeSpace | Indicates the amount of available free space on a drive. |
DriveFormat | Gets the name of the file system, such as NTFS or FAT32. |
DriveType | Gets the drive type. |
IsReady | Gets a value indicating whether a drive is ready. |
Name | Gets the name of a drive. |
RootDirectory | Gets the root directory of a drive. |
TotalFreeSpace | Gets the total amount of free space available on a drive. |
TotalSize | Gets the total size of storage space on a drive. |
VolumeLabel | Gets or sets the volume label of a drive. |