NTFS_STATISTICS_EX structure (winioctl.h)

Contains statistical information from the NTFS file system.Support for this structure started with Windows 10.

Syntax

typedef struct _NTFS_STATISTICS_EX {
  DWORD     LogFileFullExceptions;
  DWORD     OtherExceptions;
  DWORDLONG MftReads;
  DWORDLONG MftReadBytes;
  DWORDLONG MftWrites;
  DWORDLONG MftWriteBytes;
  struct {
    DWORD Write;
    DWORD Create;
    DWORD SetInfo;
    DWORD Flush;
  } MftWritesUserLevel;
  DWORD     MftWritesFlushForLogFileFull;
  DWORD     MftWritesLazyWriter;
  DWORD     MftWritesUserRequest;
  DWORDLONG Mft2Writes;
  DWORDLONG Mft2WriteBytes;
  struct {
    DWORD Write;
    DWORD Create;
    DWORD SetInfo;
    DWORD Flush;
  } Mft2WritesUserLevel;
  DWORD     Mft2WritesFlushForLogFileFull;
  DWORD     Mft2WritesLazyWriter;
  DWORD     Mft2WritesUserRequest;
  DWORDLONG RootIndexReads;
  DWORDLONG RootIndexReadBytes;
  DWORDLONG RootIndexWrites;
  DWORDLONG RootIndexWriteBytes;
  DWORDLONG BitmapReads;
  DWORDLONG BitmapReadBytes;
  DWORDLONG BitmapWrites;
  DWORDLONG BitmapWriteBytes;
  DWORD     BitmapWritesFlushForLogFileFull;
  DWORD     BitmapWritesLazyWriter;
  DWORD     BitmapWritesUserRequest;
  struct {
    DWORD Write;
    DWORD Create;
    DWORD SetInfo;
    DWORD Flush;
  } BitmapWritesUserLevel;
  DWORDLONG MftBitmapReads;
  DWORDLONG MftBitmapReadBytes;
  DWORDLONG MftBitmapWrites;
  DWORDLONG MftBitmapWriteBytes;
  DWORD     MftBitmapWritesFlushForLogFileFull;
  DWORD     MftBitmapWritesLazyWriter;
  DWORD     MftBitmapWritesUserRequest;
  struct {
    DWORD Write;
    DWORD Create;
    DWORD SetInfo;
    DWORD Flush;
  } MftBitmapWritesUserLevel;
  DWORDLONG UserIndexReads;
  DWORDLONG UserIndexReadBytes;
  DWORDLONG UserIndexWrites;
  DWORDLONG UserIndexWriteBytes;
  DWORDLONG LogFileReads;
  DWORDLONG LogFileReadBytes;
  DWORDLONG LogFileWrites;
  DWORDLONG LogFileWriteBytes;
  struct {
    DWORD     Calls;
    DWORD     RunsReturned;
    DWORD     Hints;
    DWORD     HintsHonored;
    DWORD     Cache;
    DWORD     CacheMiss;
    DWORDLONG Clusters;
    DWORDLONG HintsClusters;
    DWORDLONG CacheClusters;
    DWORDLONG CacheMissClusters;
  } Allocate;
  DWORD     DiskResourcesExhausted;
  DWORDLONG VolumeTrimCount;
  DWORDLONG VolumeTrimTime;
  DWORDLONG VolumeTrimByteCount;
  DWORDLONG FileLevelTrimCount;
  DWORDLONG FileLevelTrimTime;
  DWORDLONG FileLevelTrimByteCount;
  DWORDLONG VolumeTrimSkippedCount;
  DWORDLONG VolumeTrimSkippedByteCount;
  DWORDLONG NtfsFillStatInfoFromMftRecordCalledCount;
  DWORDLONG NtfsFillStatInfoFromMftRecordBailedBecauseOfAttributeListCount;
  DWORDLONG NtfsFillStatInfoFromMftRecordBailedBecauseOfNonResReparsePointCount;
} NTFS_STATISTICS_EX, *PNTFS_STATISTICS_EX;

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.

BitmapWritesUserLevel.Flush

The number of bitmap writes due to a flush operation.

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.RunsReturned

The number of runs used to satisfy all the requests.

Allocate.Hints

The number of times a hint was specified.

Allocate.HintsHonored

The number of times the hint was useful.

Allocate.Cache

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

Allocate.CacheMiss

The number of times the cache was not useful.

Allocate.Clusters

The number of clusters allocated.

Allocate.HintsClusters

The number of clusters allocated through the hint.

Allocate.CacheClusters

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

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.

VolumeTrimCount

The number of volume level trim operations issued.

VolumeTrimTime

The total time elapsed during all volume level trim operations. This value, divided by the frequency value from QueryPerformanceFrequency or KeQueryPerformanceCounter, will give the time in seconds.

VolumeTrimByteCount

The total number of bytes issued by all volume level trim operations.

FileLevelTrimCount

The number of file level trim operations issued.

FileLevelTrimTime

The total time elapsed during all file level trim operations. This value, divided by the frequency value from QueryPerformanceFrequency or KeQueryPerformanceCounter, will give the time in seconds.

FileLevelTrimByteCount

The total number of bytes issued by all file level trim operations.

VolumeTrimSkippedCount

The number of times a volume level trim operation was aborted before being sent down through the storage stack.

VolumeTrimSkippedByteCount

The number of bytes that were not sent through a volume level trim operation because they were skipped.

NtfsFillStatInfoFromMftRecordCalledCount

NtfsFillStatInfoFromMftRecordBailedBecauseOfAttributeListCount

NtfsFillStatInfoFromMftRecordBailedBecauseOfNonResReparsePointCount

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.

Requirements

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

See also

FILESYSTEM_STATISTICS

KeQueryPerformanceCounter

QueryPerformanceFrequency