⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 page06ntfileinfo.cpp

📁 This ZIP archive includes the sources (and executable) for the FileTest utility, written by Ladisla
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/*****************************************************************************/
/* Page06NtFileInfo.cpp                   Copyright (c) Ladislav Zezula 2005 */
/*---------------------------------------------------------------------------*/
/* Description :                                                             */
/*---------------------------------------------------------------------------*/
/*   Date    Ver   Who  Comment                                              */
/* --------  ----  ---  -------                                              */
/* 01.11.05  1.00  Lad  The first version of Page06NtFileInfo.cpp            */
/*****************************************************************************/

#include "FileTest.h"
#include "resource.h"

//-----------------------------------------------------------------------------
// Local structures

#define WM_RELOADITEMS (WM_USER + 0x1000)

//-----------------------------------------------------------------------------
// Local variables

TStructMember FileDirectoryInformationMembers[] =
{
    {_T("NextEntryOffset"), TYPE_UINT32,   sizeof(ULONG)},
    {_T("FileIndex"),       TYPE_UINT32,   sizeof(ULONG)},
    {_T("CreationTime"),    TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("LastAccessTime"),  TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("LastWriteTime"),   TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("ChangeTime"),      TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("EndOfFile"),       TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("AllocationSize"),  TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("FileAttributes"),  TYPE_UINT32,   sizeof(ULONG)},
    {_T("FileNameLength"),  TYPE_UINT32,   sizeof(ULONG)},
    {_T("FileName"),        TYPE_FDI_NAME, sizeof(WCHAR)},
    {NULL}
};

TStructMember FileFullDirectoryInformationMembers[] =
{
    {_T("NextEntryOffset"), TYPE_UINT32,   sizeof(ULONG)},
    {_T("FileIndex"),       TYPE_UINT32,   sizeof(ULONG)},
    {_T("CreationTime"),    TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("LastAccessTime"),  TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("LastWriteTime"),   TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("ChangeTime"),      TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("EndOfFile"),       TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("AllocationSize"),  TYPE_UINT64,   sizeof(LARGE_INTEGER)},
    {_T("FileAttributes"),  TYPE_UINT32,   sizeof(ULONG)},
    {_T("FileNameLength"),  TYPE_UINT32,   sizeof(ULONG)},
    {_T("EaSize"),          TYPE_UINT32,   sizeof(ULONG)},
    {_T("FileName"),        TYPE_FFDI_NAME,sizeof(WCHAR)},
    {NULL}
};


TStructMember FileBothDirectoryInformationMembers[] =
{
    {_T("NextEntryOffset"), TYPE_UINT32,     sizeof(ULONG)},
    {_T("FileIndex"),       TYPE_UINT32,     sizeof(ULONG)},
    {_T("CreationTime"),    TYPE_UINT64,     sizeof(LARGE_INTEGER)},
    {_T("LastAccessTime"),  TYPE_UINT64,     sizeof(LARGE_INTEGER)},
    {_T("LastWriteTime"),   TYPE_UINT64,     sizeof(LARGE_INTEGER)},
    {_T("ChangeTime"),      TYPE_UINT64,     sizeof(LARGE_INTEGER)},
    {_T("EndOfFile"),       TYPE_UINT64,     sizeof(LARGE_INTEGER)},
    {_T("AllocationSize"),  TYPE_UINT64,     sizeof(LARGE_INTEGER)},
    {_T("FileAttributes"),  TYPE_UINT32,     sizeof(ULONG)},
    {_T("FileNameLength"),  TYPE_UINT32,     sizeof(ULONG)},
    {_T("EaSize"),          TYPE_UINT32,     sizeof(ULONG)},
    {_T("ShortNameLength"), TYPE_UINT8,      sizeof(USHORT)},  // Although CCHAR, it has 2 bytes because of alignment
    {_T("ShortName"),       TYPE_FBDI_NAME1, sizeof(WCHAR[12])},
    {_T("FileName"),        TYPE_FBDI_NAME2, sizeof(WCHAR)},
    {NULL}
};


TStructMember FileBasicInformationMembers[] =
{
    {_T("CreationTime"),   TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("LastAccessTime"), TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("LastWriteTime"),  TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("ChangeTime"),     TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("FileAttributes"), TYPE_UINT32, sizeof(ULONG)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileStandardInformationMembers[] =
{
    {_T("AllocationSize"), TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("EndOfFile"),      TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("NumberOfLinks"),  TYPE_UINT32, sizeof(ULONG)},
    {_T("DeletePending"),  TYPE_BOOLEAN, sizeof(BOOLEAN)},
    {_T("Directory"),      TYPE_BOOLEAN, sizeof(BOOLEAN)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileInternalInformationMembers[] =
{
    {_T("IndexNumber"), TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileEaInformationMembers[] =
{
    {_T("EaSize"), TYPE_UINT32, sizeof(ULONG)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileNameInformationMembers[] =
{
    {_T("FileNameLength"), TYPE_UINT32,  sizeof(ULONG)},
    {_T("FileName"),       TYPE_FNI_NAME,sizeof(WCHAR)},
    {NULL, TYPE_NONE, 0}
};
#define FileAlternateNameInformationMembers FileNameInformationMembers
#define FileShortNameInformationMembers FileNameInformationMembers


TStructMember FileRenameInformationMembers[] =
{
    {_T("ReplaceIfExists"), TYPE_BOOLEAN, sizeof(ULONG)},
    {_T("RootDirectory"),   TYPE_HANDLE,  sizeof(HANDLE)},
    {_T("FileNameLength"),  TYPE_UINT32,  sizeof(ULONG)},
    {_T("FileName"),        TYPE_FRI_NAME,512},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileNamesInformationMembers[] =
{
    {_T("NextEntryOffset"), TYPE_UINT32,   sizeof(ULONG)},
    {_T("FileIndex"),       TYPE_UINT32,   sizeof(ULONG)},
    {_T("FileNameLength"),  TYPE_UINT32,   sizeof(ULONG)},
    {_T("FileName"),        TYPE_FNS_NAME, sizeof(WCHAR)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileDispositionInformationMembers[] =
{
    {_T("DeleteFile"), TYPE_BOOLEAN, sizeof(BOOLEAN)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileAccessInformationMembers[] =
{
    {_T("AccessFlags"), TYPE_UINT32, sizeof(ACCESS_MASK)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FilePositionInformationMembers[] =
{
    {_T("CurrentByteOffset"), TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {NULL, TYPE_NONE, 0}
};

TStructMember FileFullEaInformationMembers[] =
{
    {_T("NextEntryOffset"), TYPE_UINT32,    sizeof(ULONG)},
    {_T("Flags"),           TYPE_UINT8,     sizeof(UCHAR)},
    {_T("EaNameLength"),    TYPE_UINT8,     sizeof(UCHAR)},
    {_T("EaValueLength"),   TYPE_UINT16,    sizeof(USHORT)},
    {_T("EaName"),          TYPE_FFEA_NAME, sizeof(CHAR)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileModeInformationMembers[] =
{
    {_T("Mode"), TYPE_UINT32, sizeof(ULONG)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileAlignmentInformationMembers[] =
{
    {_T("AlignmentRequirement"), TYPE_UINT32, sizeof(ULONG)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileStreamInformationMembers[] =
{
    {_T("NextEntryOffset"),      TYPE_UINT32, sizeof(ULONG)},
    {_T("StreamNameLength"),     TYPE_UINT32, sizeof(ULONG)},
    {_T("StreamSize"),           TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("StreamAllocationSize"), TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("StreamName"),           TYPE_FSI_NAME, sizeof(WCHAR)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileAllInformationMembers[] =
{
    {_T("FILE_BASIC_INFORMATION"),    TYPE_STRUCT, sizeof(FILE_BASIC_INFORMATION), FileBasicInformationMembers},
    {_T("FILE_STANDARD_INFORMATION"), TYPE_STRUCT, sizeof(FILE_STANDARD_INFORMATION), FileStandardInformationMembers},
    {_T("FILE_INTERNAL_INFORMATION"), TYPE_STRUCT, sizeof(FILE_INTERNAL_INFORMATION), FileInternalInformationMembers},
    {_T("FILE_EA_INFORMATION"),       TYPE_STRUCT, sizeof(FILE_EA_INFORMATION), FileEaInformationMembers},
    {_T("FILE_ACCESS_INFORMATION"),   TYPE_STRUCT, sizeof(FILE_ACCESS_INFORMATION), FileAccessInformationMembers},
    {_T("FILE_POSITION_INFORMATION"), TYPE_STRUCT, sizeof(FILE_POSITION_INFORMATION), FilePositionInformationMembers},
    {_T("FILE_MODE_INFORMATION"),     TYPE_STRUCT, sizeof(FILE_MODE_INFORMATION), FileModeInformationMembers},
    {_T("FILE_ALIGNMENT_INFORMATION"),TYPE_STRUCT, sizeof(FILE_ALIGNMENT_INFORMATION), FileAlignmentInformationMembers},
    {_T("FILE_NAME_INFORMATION"),     TYPE_STRUCT, sizeof(FILE_NAME_INFORMATION), FileNameInformationMembers},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileAllocationInformationMembers[] =
{
    {_T("AllocationSize"), TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileEndOfFileInformationMembers[] =
{
    {_T("EndOfFile"), TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FilePipeInformationMembers[] =
{
    {_T("ReadMode"),       TYPE_UINT32, sizeof(ULONG)},
    {_T("CompletionMode"), TYPE_UINT32, sizeof(ULONG)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FilePipeLocalInformationMembers[] =
{
    {_T("NamedPipeType"),          TYPE_UINT32, sizeof(ULONG)},
    {_T("NamedPipeConfiguration"), TYPE_UINT32, sizeof(ULONG)},
    {_T("MaximumInstances"),       TYPE_UINT32, sizeof(ULONG)},
    {_T("CurrentInstances"),       TYPE_UINT32, sizeof(ULONG)},
    {_T("InboundQuota"),           TYPE_UINT32, sizeof(ULONG)},
    {_T("ReadDataAvailable"),      TYPE_UINT32, sizeof(ULONG)},
    {_T("OutboundQuota"),          TYPE_UINT32, sizeof(ULONG)},
    {_T("WriteQuotaAvailable"),    TYPE_UINT32, sizeof(ULONG)},
    {_T("NamedPipeState"),         TYPE_UINT32, sizeof(ULONG)},
    {_T("NamedPipeEnd"),           TYPE_UINT32, sizeof(ULONG)},
    {NULL, TYPE_NONE, 0}
};

TStructMember FilePipeRemoteInformationMembers[] =
{
    {_T("CollectDataTime"),        TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("MaximumCollectionCount"), TYPE_UINT32, sizeof(ULONG)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileMailslotQueryInformationMembers[] =
{
    {_T("MaximumMessageSize"), TYPE_UINT32, sizeof(ULONG)},
    {_T("MailslotQuota"),      TYPE_UINT32, sizeof(ULONG)},
    {_T("NextMessageSize"),    TYPE_UINT32, sizeof(ULONG)},
    {_T("MessagesAvailable"),  TYPE_UINT32, sizeof(ULONG)},
    {_T("ReadTimeout"),        TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileMailslotSetInformationMembers[] =
{
    {_T("ReadTimeout"), TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileCompressionInformationMembers[] =
{
    {_T("CompressedFileSize"), TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("CompressionFormat"), TYPE_UINT16, sizeof(USHORT)},
    {_T("CompressionUnitShift"), TYPE_UINT8, sizeof(UCHAR)},
    {_T("ChunkShift"),     TYPE_UINT8, sizeof(UCHAR)},
    {_T("ClusterShift"),   TYPE_UINT8, sizeof(UCHAR)},
    {_T("Reserved[0]"),    TYPE_UINT8, sizeof(UCHAR)},
    {_T("Reserved[1]"),    TYPE_UINT8, sizeof(UCHAR)},
    {_T("Reserved[2]"),    TYPE_UINT8, sizeof(UCHAR)},
    {NULL, TYPE_NONE, 0}
};

TStructMember FileObjectIdInformationMembers[] =
{
    {_T("FileReference"),  TYPE_UINT64,  sizeof(LONGLONG)},
    {_T("ObjectId"),       TYPE_UCHAR16, sizeof(UCHAR[16])},
    {_T("BirthVolumeId"),  TYPE_UCHAR16, sizeof(UCHAR[16])},
    {_T("BirthObjectId"),  TYPE_UCHAR16, sizeof(UCHAR[16])},
    {_T("DomainId"),       TYPE_UCHAR16, sizeof(UCHAR[16])},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileCompletionInformationMembers[] =
{
    {_T("Port"),           TYPE_HANDLE,  sizeof(HANDLE)},
    {_T("Key"),            TYPE_POINTER, sizeof(PVOID)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileQuotaInformationMembers[] =
{
    {_T("NextEntryOffset"), TYPE_UINT32, sizeof(ULONG)},
    {_T("SidLength"),       TYPE_UINT32, sizeof(ULONG)},
    {_T("ChangeTime"),      TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("QuotaUsed"),       TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("QuotaThreshold"),  TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("QuotaLimit"),      TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("Sid"),             TYPE_NONE,   sizeof(SID)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileReparsePointInformationMembers[] =
{
    {_T("FileReference"), TYPE_UINT64, sizeof(LONGLONG)},
    {_T("Tag"),           TYPE_UINT32, sizeof(ULONG)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileNetworkOpenInformationMembers[] =
{
    {_T("CreationTime"),   TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("LastAccessTime"), TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("LastWriteTime"),  TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("ChangeTime"),     TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("AllocationSize"), TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("EndOfFile"),      TYPE_UINT64, sizeof(LARGE_INTEGER)},
    {_T("FileAttributes"), TYPE_UINT32, sizeof(ULONG)},
    {NULL, TYPE_NONE, 0}
};

TStructMember FileAttributeTagInformationMembers[] =
{
    {_T("FileAttributes"), TYPE_UINT32, sizeof(ULONG)},
    {_T("ReparseTag"), TYPE_UINT32, sizeof(ULONG)},
    {NULL, TYPE_NONE, 0}
};


TStructMember FileTrackingInformationMembers[] =
{
    {_T("DestinationFile"),         TYPE_HANDLE, sizeof(HANDLE)},

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -