NTFS_STATISTICS structure (winioctl.h)

Contains statistical information from the NTFS file system.

Tip  Applications targeting Windows 10 can access additional statistics through NTFS_STATISTICS_EX.
 

Syntax

typedef struct _NTFS_STATISTICS {
  DWORD  LogFileFullExceptions;
  DWORD  OtherExceptions;
  DWORD  MftReads;
  DWORD  MftReadBytes;
  DWORD  MftWrites;
  DWORD  MftWriteBytes;
  struct {
    WORD Write;
    WORD Create;
    WORD SetInfo;
    WORD Flush;
  } MftWritesUserLevel;
  WORD   MftWritesFlushForLogFileFull;
  WORD   MftWritesLazyWriter;
  WORD   MftWritesUserRequest;
  DWORD  Mft2Writes;
  DWORD  Mft2WriteBytes;
  struct {
    WORD Write;
    WORD Create;
    WORD SetInfo;
    WORD Flush;
  } Mft2WritesUserLevel;
  WORD   Mft2WritesFlushForLogFileFull;
  WORD   Mft2WritesLazyWriter;
  WORD   Mft2WritesUserRequest;
  DWORD  RootIndexReads;
  DWORD  RootIndexReadBytes;
  DWORD  RootIndexWrites;
  DWORD  RootIndexWriteBytes;
  DWORD  BitmapReads;
  DWORD  BitmapReadBytes;
  DWORD  BitmapWrites;
  DWORD  BitmapWriteBytes;
  WORD   BitmapWritesFlushForLogFileFull;
  WORD   BitmapWritesLazyWriter;
  WORD   BitmapWritesUserRequest;
  struct {
    WORD Write;
    WORD Create;
    WORD SetInfo;
  } BitmapWritesUserLevel;
  DWORD  MftBitmapReads;
  DWORD  MftBitmapReadBytes;
  DWORD  MftBitmapWrites;
  DWORD  MftBitmapWriteBytes;
  WORD   MftBitmapWritesFlushForLogFileFull;
  WORD   MftBitmapWritesLazyWriter;
  WORD   MftBitmapWritesUserRequest;
  struct {
    WORD Write;
    WORD Create;
    WORD SetInfo;
    WORD Flush;
  } MftBitmapWritesUserLevel;
  DWORD  UserIndexReads;
  DWORD  UserIndexReadBytes;
  DWORD  UserIndexWrites;
  DWORD  UserIndexWriteBytes;
  DWORD  LogFileReads;
  DWORD  LogFileReadBytes;
  DWORD  LogFileWrites;
  DWORD  LogFileWriteBytes;
  struct {
    DWORD Calls;
    DWORD Clusters;
    DWORD Hints;
    DWORD RunsReturned;
    DWORD HintsHonored;
    DWORD HintsClusters;
    DWORD Cache;
    DWORD CacheClusters;
    DWORD CacheMiss;
    DWORD CacheMissClusters;
  } Allocate;
  DWORD  DiskResourcesExhausted;
} NTFS_STATISTICS, *PNTFS_STATISTICS;

Members

LogFileFullExceptions

The number of exceptions generated due to the log file being full.

OtherExceptions

The number of other exceptions generated.

MftReads

The number of read operations on the master file table (MFT).

MftReadBytes

The number of bytes read from the MFT.

MftWrites

The number of write operations on the MFT.

MftWriteBytes

The number of bytes written to the MFT.

MftWritesUserLevel

MftWritesUserLevel.Write

The number of MFT writes due to a write operation.

MftWritesUserLevel.Create

The number of MFT writes due to a create operation.

MftWritesUserLevel.SetInfo

The number of MFT writes due to setting file information.

MftWritesUserLevel.Flush

The number of MFT writes due to a flush operation.

MftWritesFlushForLogFileFull

The number of flushes of the MFT performed because the log file was full.

MftWritesLazyWriter

The number of MFT write operations performed by the lazy writer thread.

MftWritesUserRequest

Reserved.

Mft2Writes

The number of write operations on the MFT mirror.

Mft2WriteBytes

The number of bytes written to the MFT mirror.

Mft2WritesUserLevel

Mft2WritesUserLevel.Write

The number of MFT mirror writes due to a write operation.

Mft2WritesUserLevel.Create

The number of MFT mirror writes due to a create operation.

Mft2WritesUserLevel.SetInfo

The number of MFT mirror writes due to setting file information.

Mft2WritesUserLevel.Flush

The number of MFT mirror writes due to a flush operation.

Mft2WritesFlushForLogFileFull

The number of flushes of the MFT mirror performed because the log file was full.

Mft2WritesLazyWriter

The number of MFT mirror write operations performed by the lazy writer thread.

Mft2WritesUserRequest

Reserved.

RootIndexReads

The number of read operations on the root index.

RootIndexReadBytes

The number of bytes read from the root index.

RootIndexWrites

The number of write operations on the root index.

RootIndexWriteBytes

The number of bytes written to the root index.

BitmapReads

The number of read operations on the cluster allocation bitmap.

BitmapReadBytes

The number of bytes read from the cluster allocation bitmap.

BitmapWrites

The number of write operations on the cluster allocation bitmap.

BitmapWriteBytes

The number of bytes written to the cluster allocation bitmap.

BitmapWritesFlushForLogFileFull

The number of flushes of the bitmap performed because the log file was full.

BitmapWritesLazyWriter

The number of bitmap write operations performed by the lazy writer thread.

BitmapWritesUserRequest

Reserved.

BitmapWritesUserLevel

BitmapWritesUserLevel.Write

The number of bitmap writes due to a write operation.

BitmapWritesUserLevel.Create

The number of bitmap writes due to a create operation.

BitmapWritesUserLevel.SetInfo

The number of bitmap writes due to setting file information.

MftBitmapReads

The number of read operations on the MFT bitmap.

MftBitmapReadBytes

The number of bytes read from the MFT bitmap.

MftBitmapWrites

The number of write operations on the MFT bitmap.

MftBitmapWriteBytes

The number of bytes written to the MFT bitmap.

MftBitmapWritesFlushForLogFileFull

The number of flushes of the MFT bitmap performed because the log file was full.

MftBitmapWritesLazyWriter

The number of MFT bitmap write operations performed by the lazy writer thread.

MftBitmapWritesUserRequest

Reserved.

MftBitmapWritesUserLevel

MftBitmapWritesUserLevel.Write

The number of MFT bitmap writes due to a write operation.

MftBitmapWritesUserLevel.Create

The number of bitmap writes due to a create operation.

MftBitmapWritesUserLevel.SetInfo

The number of bitmap writes due to setting file information.

MftBitmapWritesUserLevel.Flush

The number of bitmap writes due to a flush operation.

UserIndexReads

The number of read operations on the user index.

UserIndexReadBytes

The number of bytes read from the user index.

UserIndexWrites

The number of write operations on the user index.

UserIndexWriteBytes

The number of bytes written to the user index.

LogFileReads

The number of read operations on the log file.

LogFileReadBytes

The number of bytes read from the log file.

LogFileWrites

The number of write operations on the log file.

LogFileWriteBytes

The number of bytes written to the log file.

Allocate

Allocate.Calls

The number of individual calls to allocate clusters.

Allocate.Clusters

The number of clusters allocated.

Allocate.Hints

The number of times a hint was specified.

Allocate.RunsReturned

The number of runs used to satisfy all the requests.

Allocate.HintsHonored

The number of times the hint was useful.

Allocate.HintsClusters

The number of clusters allocated through the hint.

Allocate.Cache

The number of times the cache was useful other than the hint.

Allocate.CacheClusters

The number of clusters allocated through the cache other than the hint.

Allocate.CacheMiss

The number of times the cache was not useful.

Allocate.CacheMissClusters

The number of clusters allocated without the cache.

DiskResourcesExhausted

The number of failed attempts made to acquire a slab of storage for use on the current thinly provisioned volume.

Support for this member started with Windows 8.1.

Remarks

The MFT, MFT mirror, root index, user index, bitmap, and MFT bitmap are counted as metadata files. The log file is not counted as a metadata file.

The number of read and write operations measured is the number of paging operations.

For additional statistics that are only available with Windows 10, use NTFS_STATISTICS_EX.

Requirements

Requirement Value
Minimum supported client Windows XP [desktop apps only]
Minimum supported server Windows Server 2003 [desktop apps only]
Header winioctl.h (include Windows.h)

See also

FILESYSTEM_STATISTICS

KeQueryPerformanceCounter

NTFS_STATISTICS_EX

QueryPerformanceFrequency