📄 page06ntfileinfo.cpp
字号:
/*****************************************************************************/
/* 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 + -