; 
; Exports of file UNTFS.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY UNTFS.dll
EXPORTS
; public: __cdecl NTFS_ATTRIBUTE::NTFS_ATTRIBUTE(void) __ptr64
??0NTFS_ATTRIBUTE@@QEAA@XZ
; public: __cdecl NTFS_ATTRIBUTE_DEFINITION_TABLE::NTFS_ATTRIBUTE_DEFINITION_TABLE(void) __ptr64
??0NTFS_ATTRIBUTE_DEFINITION_TABLE@@QEAA@XZ
; public: __cdecl NTFS_ATTRIBUTE_LIST::NTFS_ATTRIBUTE_LIST(void) __ptr64
??0NTFS_ATTRIBUTE_LIST@@QEAA@XZ
; public: __cdecl NTFS_ATTRIBUTE_RECORD::NTFS_ATTRIBUTE_RECORD(void) __ptr64
??0NTFS_ATTRIBUTE_RECORD@@QEAA@XZ
; public: __cdecl NTFS_BAD_CLUSTER_FILE::NTFS_BAD_CLUSTER_FILE(void) __ptr64
??0NTFS_BAD_CLUSTER_FILE@@QEAA@XZ
; public: __cdecl NTFS_BITMAP::NTFS_BITMAP(void) __ptr64
??0NTFS_BITMAP@@QEAA@XZ
; public: __cdecl NTFS_BITMAP_FILE::NTFS_BITMAP_FILE(void) __ptr64
??0NTFS_BITMAP_FILE@@QEAA@XZ
; public: __cdecl NTFS_BOOT_FILE::NTFS_BOOT_FILE(void) __ptr64
??0NTFS_BOOT_FILE@@QEAA@XZ
; public: __cdecl NTFS_CLUSTER_RUN::NTFS_CLUSTER_RUN(void) __ptr64
??0NTFS_CLUSTER_RUN@@QEAA@XZ
; public: __cdecl NTFS_EXTENT_LIST::NTFS_EXTENT_LIST(void) __ptr64
??0NTFS_EXTENT_LIST@@QEAA@XZ
; public: __cdecl NTFS_FILE_RECORD_SEGMENT::NTFS_FILE_RECORD_SEGMENT(void) __ptr64
??0NTFS_FILE_RECORD_SEGMENT@@QEAA@XZ
; public: __cdecl NTFS_FRS_STRUCTURE::NTFS_FRS_STRUCTURE(void) __ptr64
??0NTFS_FRS_STRUCTURE@@QEAA@XZ
; public: __cdecl NTFS_INDEX_TREE::NTFS_INDEX_TREE(void) __ptr64
??0NTFS_INDEX_TREE@@QEAA@XZ
; public: __cdecl NTFS_LOG_FILE::NTFS_LOG_FILE(void) __ptr64
??0NTFS_LOG_FILE@@QEAA@XZ
; public: __cdecl NTFS_MFT_FILE::NTFS_MFT_FILE(void) __ptr64
??0NTFS_MFT_FILE@@QEAA@XZ
; public: __cdecl NTFS_MFT_INFO::NTFS_MFT_INFO(void) __ptr64
??0NTFS_MFT_INFO@@QEAA@XZ
; public: __cdecl NTFS_REFLECTED_MASTER_FILE_TABLE::NTFS_REFLECTED_MASTER_FILE_TABLE(void) __ptr64
??0NTFS_REFLECTED_MASTER_FILE_TABLE@@QEAA@XZ
; public: __cdecl NTFS_SA::NTFS_SA(void) __ptr64
??0NTFS_SA@@QEAA@XZ
; public: __cdecl NTFS_UPCASE_FILE::NTFS_UPCASE_FILE(void) __ptr64
??0NTFS_UPCASE_FILE@@QEAA@XZ
; public: __cdecl NTFS_UPCASE_TABLE::NTFS_UPCASE_TABLE(void) __ptr64
??0NTFS_UPCASE_TABLE@@QEAA@XZ
; public: __cdecl RA_PROCESS_FILE::RA_PROCESS_FILE(void) __ptr64
??0RA_PROCESS_FILE@@QEAA@XZ
; public: __cdecl RA_PROCESS_SD::RA_PROCESS_SD(void) __ptr64
??0RA_PROCESS_SD@@QEAA@XZ
; public: virtual __cdecl NTFS_ATTRIBUTE::~NTFS_ATTRIBUTE(void) __ptr64
??1NTFS_ATTRIBUTE@@UEAA@XZ
; public: virtual __cdecl NTFS_ATTRIBUTE_DEFINITION_TABLE::~NTFS_ATTRIBUTE_DEFINITION_TABLE(void) __ptr64
??1NTFS_ATTRIBUTE_DEFINITION_TABLE@@UEAA@XZ
; public: virtual __cdecl NTFS_ATTRIBUTE_LIST::~NTFS_ATTRIBUTE_LIST(void) __ptr64
??1NTFS_ATTRIBUTE_LIST@@UEAA@XZ
; public: virtual __cdecl NTFS_ATTRIBUTE_RECORD::~NTFS_ATTRIBUTE_RECORD(void) __ptr64
??1NTFS_ATTRIBUTE_RECORD@@UEAA@XZ
; public: virtual __cdecl NTFS_BAD_CLUSTER_FILE::~NTFS_BAD_CLUSTER_FILE(void) __ptr64
??1NTFS_BAD_CLUSTER_FILE@@UEAA@XZ
; public: virtual __cdecl NTFS_BITMAP::~NTFS_BITMAP(void) __ptr64
??1NTFS_BITMAP@@UEAA@XZ
; public: virtual __cdecl NTFS_BITMAP_FILE::~NTFS_BITMAP_FILE(void) __ptr64
??1NTFS_BITMAP_FILE@@UEAA@XZ
; public: virtual __cdecl NTFS_BOOT_FILE::~NTFS_BOOT_FILE(void) __ptr64
??1NTFS_BOOT_FILE@@UEAA@XZ
; public: virtual __cdecl NTFS_CLUSTER_RUN::~NTFS_CLUSTER_RUN(void) __ptr64
??1NTFS_CLUSTER_RUN@@UEAA@XZ
; public: virtual __cdecl NTFS_EXTENT_LIST::~NTFS_EXTENT_LIST(void) __ptr64
??1NTFS_EXTENT_LIST@@UEAA@XZ
; public: virtual __cdecl NTFS_FILE_RECORD_SEGMENT::~NTFS_FILE_RECORD_SEGMENT(void) __ptr64
??1NTFS_FILE_RECORD_SEGMENT@@UEAA@XZ
; public: virtual __cdecl NTFS_FRS_STRUCTURE::~NTFS_FRS_STRUCTURE(void) __ptr64
??1NTFS_FRS_STRUCTURE@@UEAA@XZ
; public: virtual __cdecl NTFS_INDEX_TREE::~NTFS_INDEX_TREE(void) __ptr64
??1NTFS_INDEX_TREE@@UEAA@XZ
; public: virtual __cdecl NTFS_LOG_FILE::~NTFS_LOG_FILE(void) __ptr64
??1NTFS_LOG_FILE@@UEAA@XZ
; public: virtual __cdecl NTFS_MFT_FILE::~NTFS_MFT_FILE(void) __ptr64
??1NTFS_MFT_FILE@@UEAA@XZ
; public: virtual __cdecl NTFS_MFT_INFO::~NTFS_MFT_INFO(void) __ptr64
??1NTFS_MFT_INFO@@UEAA@XZ
; public: virtual __cdecl NTFS_REFLECTED_MASTER_FILE_TABLE::~NTFS_REFLECTED_MASTER_FILE_TABLE(void) __ptr64
??1NTFS_REFLECTED_MASTER_FILE_TABLE@@UEAA@XZ
; public: virtual __cdecl NTFS_SA::~NTFS_SA(void) __ptr64
??1NTFS_SA@@UEAA@XZ
; public: virtual __cdecl NTFS_UPCASE_FILE::~NTFS_UPCASE_FILE(void) __ptr64
??1NTFS_UPCASE_FILE@@UEAA@XZ
; public: virtual __cdecl NTFS_UPCASE_TABLE::~NTFS_UPCASE_TABLE(void) __ptr64
??1NTFS_UPCASE_TABLE@@UEAA@XZ
; public: virtual __cdecl RA_PROCESS_FILE::~RA_PROCESS_FILE(void) __ptr64
??1RA_PROCESS_FILE@@UEAA@XZ
; public: virtual __cdecl RA_PROCESS_SD::~RA_PROCESS_SD(void) __ptr64
??1RA_PROCESS_SD@@UEAA@XZ
; public: unsigned char __cdecl NTFS_EXTENT_LIST::AddExtent(class BIG_INT,class BIG_INT,class BIG_INT) __ptr64
?AddExtent@NTFS_EXTENT_LIST@@QEAAEVBIG_INT@@00@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::AddFileNameAttribute(struct _FILE_NAME * __ptr64) __ptr64
?AddFileNameAttribute@NTFS_FILE_RECORD_SEGMENT@@QEAAEPEAU_FILE_NAME@@@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::AddSecurityDescriptor(enum _CANNED_SECURITY_TYPE,class NTFS_BITMAP * __ptr64) __ptr64
?AddSecurityDescriptor@NTFS_FILE_RECORD_SEGMENT@@QEAAEW4_CANNED_SECURITY_TYPE@@PEAVNTFS_BITMAP@@@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::AddSecurityDescriptorData(class NTFS_ATTRIBUTE * __ptr64,void * __ptr64,struct _SECURITY_ENTRY * __ptr64 * __ptr64,unsigned long,enum _CANNED_SECURITY_TYPE,class NTFS_BITMAP * __ptr64,unsigned char) __ptr64
?AddSecurityDescriptorData@NTFS_FILE_RECORD_SEGMENT@@QEAAEPEAVNTFS_ATTRIBUTE@@PEAXPEAPEAU_SECURITY_ENTRY@@KW4_CANNED_SECURITY_TYPE@@PEAVNTFS_BITMAP@@E@Z
; public: unsigned char __cdecl NTFS_MASTER_FILE_TABLE::AllocateFileRecordSegment(class BIG_INT * __ptr64,unsigned char) __ptr64
?AllocateFileRecordSegment@NTFS_MASTER_FILE_TABLE@@QEAAEPEAVBIG_INT@@E@Z
; public: static unsigned char __cdecl NTFS_MFT_INFO::CompareDupInfo(void * __ptr64,struct _FILE_NAME * __ptr64)
?CompareDupInfo@NTFS_MFT_INFO@@SAEPEAXPEAU_FILE_NAME@@@Z
; public: static unsigned char __cdecl NTFS_MFT_INFO::CompareFileName(void * __ptr64,unsigned long,struct _FILE_NAME * __ptr64,unsigned short * __ptr64)
?CompareFileName@NTFS_MFT_INFO@@SAEPEAXKPEAU_FILE_NAME@@PEAG@Z
; private: static void __cdecl NTFS_MFT_INFO::ComputeDupInfoSignature(struct _DUPLICATED_INFORMATION * __ptr64,unsigned char * __ptr64 const)
?ComputeDupInfoSignature@NTFS_MFT_INFO@@CAXPEAU_DUPLICATED_INFORMATION@@QEAE@Z
; private: static void __cdecl NTFS_MFT_INFO::ComputeFileNameSignature(unsigned long,struct _FILE_NAME * __ptr64,unsigned char * __ptr64 const)
?ComputeFileNameSignature@NTFS_MFT_INFO@@CAXKPEAU_FILE_NAME@@QEAE@Z
; public: unsigned char __cdecl NTFS_INDEX_TREE::CopyIterator(class NTFS_INDEX_TREE * __ptr64) __ptr64
?CopyIterator@NTFS_INDEX_TREE@@QEAAEPEAV1@@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::Create(struct _STANDARD_INFORMATION const * __ptr64,unsigned short) __ptr64
?Create@NTFS_FILE_RECORD_SEGMENT@@QEAAEPEBU_STANDARD_INFORMATION@@G@Z
; public: unsigned char __cdecl NTFS_LOG_FILE::CreateDataAttribute(class BIG_INT,unsigned long,class NTFS_BITMAP * __ptr64) __ptr64
?CreateDataAttribute@NTFS_LOG_FILE@@QEAAEVBIG_INT@@KPEAVNTFS_BITMAP@@@Z
; public: unsigned char __cdecl NTFS_SA::CreateElementaryStructures(class NTFS_BITMAP * __ptr64,unsigned long,unsigned long,unsigned long,unsigned long,class NUMBER_SET const * __ptr64,unsigned char,unsigned char,class MESSAGE * __ptr64,struct BIOS_PARAMETER_BLOCK * __ptr64,class WSTRING const * __ptr64) __ptr64
?CreateElementaryStructures@NTFS_SA@@QEAAEPEAVNTFS_BITMAP@@KKKKPEBVNUMBER_SET@@EEPEAVMESSAGE@@PEAUBIOS_PARAMETER_BLOCK@@PEBVWSTRING@@@Z
; public: unsigned char __cdecl NTFS_MASTER_FILE_TABLE::Extend(unsigned long) __ptr64
?Extend@NTFS_MASTER_FILE_TABLE@@QEAAEK@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::Flush(class NTFS_BITMAP * __ptr64,class NTFS_INDEX_TREE * __ptr64,unsigned char) __ptr64
?Flush@NTFS_FILE_RECORD_SEGMENT@@QEAAEPEAVNTFS_BITMAP@@PEAVNTFS_INDEX_TREE@@E@Z
; public: unsigned char __cdecl NTFS_MFT_FILE::Flush(void) __ptr64
?Flush@NTFS_MFT_FILE@@QEAAEXZ
; public: struct _INDEX_ENTRY const * __ptr64 __cdecl NTFS_INDEX_TREE::GetNext(unsigned long * __ptr64,unsigned char * __ptr64,unsigned char) __ptr64
?GetNext@NTFS_INDEX_TREE@@QEAAPEBU_INDEX_ENTRY@@PEAKPEAEE@Z
; public: struct _ATTRIBUTE_LIST_ENTRY const * __ptr64 __cdecl NTFS_ATTRIBUTE_LIST::GetNextAttributeListEntry(struct _ATTRIBUTE_LIST_ENTRY const * __ptr64)const  __ptr64
?GetNextAttributeListEntry@NTFS_ATTRIBUTE_LIST@@QEBAPEBU_ATTRIBUTE_LIST_ENTRY@@PEBU2@@Z
; public: void * __ptr64 __cdecl NTFS_FRS_STRUCTURE::GetNextAttributeRecord(void const * __ptr64,class MESSAGE * __ptr64,unsigned char * __ptr64) __ptr64
?GetNextAttributeRecord@NTFS_FRS_STRUCTURE@@QEAAPEAXPEBXPEAVMESSAGE@@PEAE@Z
; public: unsigned char __cdecl NTFS_ATTRIBUTE::Initialize(class LOG_IO_DP_DRIVE * __ptr64,unsigned long,class NTFS_EXTENT_LIST const * __ptr64,class BIG_INT,class BIG_INT,unsigned long,class WSTRING const * __ptr64,unsigned short) __ptr64
?Initialize@NTFS_ATTRIBUTE@@QEAAEPEAVLOG_IO_DP_DRIVE@@KPEBVNTFS_EXTENT_LIST@@VBIG_INT@@2KPEBVWSTRING@@G@Z
; public: unsigned char __cdecl NTFS_ATTRIBUTE::Initialize(class LOG_IO_DP_DRIVE * __ptr64,unsigned long,void const * __ptr64,unsigned long,unsigned long,class WSTRING const * __ptr64,unsigned short) __ptr64
?Initialize@NTFS_ATTRIBUTE@@QEAAEPEAVLOG_IO_DP_DRIVE@@KPEBXKKPEBVWSTRING@@G@Z
; public: unsigned char __cdecl NTFS_ATTRIBUTE_DEFINITION_TABLE::Initialize(class NTFS_MASTER_FILE_TABLE * __ptr64,unsigned char) __ptr64
?Initialize@NTFS_ATTRIBUTE_DEFINITION_TABLE@@QEAAEPEAVNTFS_MASTER_FILE_TABLE@@E@Z
; public: unsigned char __cdecl NTFS_ATTRIBUTE_RECORD::Initialize(class IO_DP_DRIVE * __ptr64,void * __ptr64) __ptr64
?Initialize@NTFS_ATTRIBUTE_RECORD@@QEAAEPEAVIO_DP_DRIVE@@PEAX@Z
; public: unsigned char __cdecl NTFS_BAD_CLUSTER_FILE::Initialize(class NTFS_MASTER_FILE_TABLE * __ptr64) __ptr64
?Initialize@NTFS_BAD_CLUSTER_FILE@@QEAAEPEAVNTFS_MASTER_FILE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_BITMAP::Initialize(class BIG_INT,unsigned char,class LOG_IO_DP_DRIVE * __ptr64,unsigned long) __ptr64
?Initialize@NTFS_BITMAP@@QEAAEVBIG_INT@@EPEAVLOG_IO_DP_DRIVE@@K@Z
; public: unsigned char __cdecl NTFS_BITMAP_FILE::Initialize(class NTFS_MASTER_FILE_TABLE * __ptr64) __ptr64
?Initialize@NTFS_BITMAP_FILE@@QEAAEPEAVNTFS_MASTER_FILE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_BOOT_FILE::Initialize(class NTFS_MASTER_FILE_TABLE * __ptr64) __ptr64
?Initialize@NTFS_BOOT_FILE@@QEAAEPEAVNTFS_MASTER_FILE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_CLUSTER_RUN::Initialize(class MEM * __ptr64,class LOG_IO_DP_DRIVE * __ptr64,class BIG_INT,unsigned long,unsigned long) __ptr64
?Initialize@NTFS_CLUSTER_RUN@@QEAAEPEAVMEM@@PEAVLOG_IO_DP_DRIVE@@VBIG_INT@@KK@Z
; public: unsigned char __cdecl NTFS_EXTENT_LIST::Initialize(class BIG_INT,class BIG_INT) __ptr64
?Initialize@NTFS_EXTENT_LIST@@QEAAEVBIG_INT@@0@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::Initialize(class BIG_INT,unsigned long,class NTFS_MASTER_FILE_TABLE * __ptr64) __ptr64
?Initialize@NTFS_FILE_RECORD_SEGMENT@@QEAAEVBIG_INT@@KPEAVNTFS_MASTER_FILE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::Initialize(class BIG_INT,class NTFS_MASTER_FILE_TABLE * __ptr64) __ptr64
?Initialize@NTFS_FILE_RECORD_SEGMENT@@QEAAEVBIG_INT@@PEAVNTFS_MASTER_FILE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::Initialize(class BIG_INT,class NTFS_MFT_FILE * __ptr64) __ptr64
?Initialize@NTFS_FILE_RECORD_SEGMENT@@QEAAEVBIG_INT@@PEAVNTFS_MFT_FILE@@@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::Initialize(void) __ptr64
?Initialize@NTFS_FILE_RECORD_SEGMENT@@QEAAEXZ
; public: unsigned char __cdecl NTFS_FRS_STRUCTURE::Initialize(class MEM * __ptr64,class LOG_IO_DP_DRIVE * __ptr64,class BIG_INT,unsigned long,class BIG_INT,unsigned long,class NTFS_UPCASE_TABLE * __ptr64,unsigned long) __ptr64
?Initialize@NTFS_FRS_STRUCTURE@@QEAAEPEAVMEM@@PEAVLOG_IO_DP_DRIVE@@VBIG_INT@@K2KPEAVNTFS_UPCASE_TABLE@@K@Z
; public: unsigned char __cdecl NTFS_FRS_STRUCTURE::Initialize(class MEM * __ptr64,class NTFS_ATTRIBUTE * __ptr64,class BIG_INT,unsigned long,class BIG_INT,unsigned long,class NTFS_UPCASE_TABLE * __ptr64) __ptr64
?Initialize@NTFS_FRS_STRUCTURE@@QEAAEPEAVMEM@@PEAVNTFS_ATTRIBUTE@@VBIG_INT@@K2KPEAVNTFS_UPCASE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_FRS_STRUCTURE::Initialize(class MEM * __ptr64,class NTFS_ATTRIBUTE * __ptr64,class BIG_INT,unsigned long,unsigned long,class BIG_INT,unsigned long,class NTFS_UPCASE_TABLE * __ptr64) __ptr64
?Initialize@NTFS_FRS_STRUCTURE@@QEAAEPEAVMEM@@PEAVNTFS_ATTRIBUTE@@VBIG_INT@@KK2KPEAVNTFS_UPCASE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_INDEX_TREE::Initialize(unsigned long,class LOG_IO_DP_DRIVE * __ptr64,unsigned long,class NTFS_BITMAP * __ptr64,class NTFS_UPCASE_TABLE * __ptr64,unsigned long,unsigned long,unsigned long,class WSTRING const * __ptr64) __ptr64
?Initialize@NTFS_INDEX_TREE@@QEAAEKPEAVLOG_IO_DP_DRIVE@@KPEAVNTFS_BITMAP@@PEAVNTFS_UPCASE_TABLE@@KKKPEBVWSTRING@@@Z
; public: unsigned char __cdecl NTFS_INDEX_TREE::Initialize(class LOG_IO_DP_DRIVE * __ptr64,unsigned long,class NTFS_BITMAP * __ptr64,class NTFS_UPCASE_TABLE * __ptr64,unsigned long,class NTFS_FILE_RECORD_SEGMENT * __ptr64,class WSTRING const * __ptr64) __ptr64
?Initialize@NTFS_INDEX_TREE@@QEAAEPEAVLOG_IO_DP_DRIVE@@KPEAVNTFS_BITMAP@@PEAVNTFS_UPCASE_TABLE@@KPEAVNTFS_FILE_RECORD_SEGMENT@@PEBVWSTRING@@@Z
; public: unsigned char __cdecl NTFS_LOG_FILE::Initialize(class NTFS_MASTER_FILE_TABLE * __ptr64) __ptr64
?Initialize@NTFS_LOG_FILE@@QEAAEPEAVNTFS_MASTER_FILE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_MFT_FILE::Initialize(class LOG_IO_DP_DRIVE * __ptr64,class BIG_INT,unsigned long,unsigned long,class BIG_INT,class NTFS_BITMAP * __ptr64,class NTFS_UPCASE_TABLE * __ptr64) __ptr64
?Initialize@NTFS_MFT_FILE@@QEAAEPEAVLOG_IO_DP_DRIVE@@VBIG_INT@@KK1PEAVNTFS_BITMAP@@PEAVNTFS_UPCASE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_MFT_INFO::Initialize(class BIG_INT,class NTFS_UPCASE_TABLE * __ptr64,unsigned char,unsigned char,unsigned __int64) __ptr64
?Initialize@NTFS_MFT_INFO@@QEAAEVBIG_INT@@PEAVNTFS_UPCASE_TABLE@@EE_K@Z
; public: unsigned char __cdecl NTFS_MFT_INFO::Initialize(void) __ptr64
?Initialize@NTFS_MFT_INFO@@QEAAEXZ
; public: unsigned char __cdecl NTFS_REFLECTED_MASTER_FILE_TABLE::Initialize(class NTFS_MASTER_FILE_TABLE * __ptr64) __ptr64
?Initialize@NTFS_REFLECTED_MASTER_FILE_TABLE@@QEAAEPEAVNTFS_MASTER_FILE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_SA::Initialize(class LOG_IO_DP_DRIVE * __ptr64,class MESSAGE * __ptr64,class BIG_INT,class BIG_INT) __ptr64
?Initialize@NTFS_SA@@QEAAEPEAVLOG_IO_DP_DRIVE@@PEAVMESSAGE@@VBIG_INT@@2@Z
; public: unsigned char __cdecl NTFS_UPCASE_FILE::Initialize(class NTFS_MASTER_FILE_TABLE * __ptr64) __ptr64
?Initialize@NTFS_UPCASE_FILE@@QEAAEPEAVNTFS_MASTER_FILE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_UPCASE_TABLE::Initialize(class NTFS_ATTRIBUTE * __ptr64) __ptr64
?Initialize@NTFS_UPCASE_TABLE@@QEAAEPEAVNTFS_ATTRIBUTE@@@Z
; public: static unsigned char __cdecl RA_PROCESS_FILE::Initialize(class NTFS_SA * __ptr64,class BIG_INT,class BIG_INT * __ptr64,unsigned long * __ptr64,class NTFS_FRS_STRUCTURE * __ptr64,class NTFS_FRS_STRUCTURE * __ptr64,class HMEM * __ptr64,class HMEM * __ptr64,void * __ptr64,void * __ptr64,class NTFS_ATTRIBUTE * __ptr64,class NTFS_UPCASE_TABLE * __ptr64)
?Initialize@RA_PROCESS_FILE@@SAEPEAVNTFS_SA@@VBIG_INT@@PEAV3@PEAKPEAVNTFS_FRS_STRUCTURE@@4PEAVHMEM@@5PEAX6PEAVNTFS_ATTRIBUTE@@PEAVNTFS_UPCASE_TABLE@@@Z
; public: static unsigned char __cdecl RA_PROCESS_SD::Initialize(class NTFS_SA * __ptr64,class BIG_INT,class BIG_INT * __ptr64,unsigned long * __ptr64,class NTFS_FILE_RECORD_SEGMENT * __ptr64,class NTFS_FILE_RECORD_SEGMENT * __ptr64,void * __ptr64,void * __ptr64,class NTFS_MASTER_FILE_TABLE * __ptr64)
?Initialize@RA_PROCESS_SD@@SAEPEAVNTFS_SA@@VBIG_INT@@PEAV3@PEAKPEAVNTFS_FILE_RECORD_SEGMENT@@4PEAX5PEAVNTFS_MASTER_FILE_TABLE@@@Z
; public: unsigned char __cdecl NTFS_INDEX_TREE::InsertEntry(unsigned long,void * __ptr64,struct _MFT_SEGMENT_REFERENCE,unsigned char) __ptr64
?InsertEntry@NTFS_INDEX_TREE@@QEAAEKPEAXU_MFT_SEGMENT_REFERENCE@@E@Z
; public: virtual unsigned char __cdecl NTFS_ATTRIBUTE::InsertIntoFile(class NTFS_FILE_RECORD_SEGMENT * __ptr64,class NTFS_BITMAP * __ptr64) __ptr64
?InsertIntoFile@NTFS_ATTRIBUTE@@UEAAEPEAVNTFS_FILE_RECORD_SEGMENT@@PEAVNTFS_BITMAP@@@Z
; public: unsigned char __cdecl NTFS_BITMAP::IsAllocated(class BIG_INT,class BIG_INT)const  __ptr64
?IsAllocated@NTFS_BITMAP@@QEBAEVBIG_INT@@0@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::IsAttributePresent(unsigned long,class WSTRING const * __ptr64,unsigned char) __ptr64
?IsAttributePresent@NTFS_FILE_RECORD_SEGMENT@@QEAAEKPEBVWSTRING@@E@Z
; public: static unsigned char __cdecl NTFS_SA::IsDosName(struct _FILE_NAME const * __ptr64)
?IsDosName@NTFS_SA@@SAEPEBU_FILE_NAME@@@Z
; public: unsigned char __cdecl NTFS_BITMAP::IsFree(class BIG_INT,class BIG_INT)const  __ptr64
?IsFree@NTFS_BITMAP@@QEBAEVBIG_INT@@0@Z
; public: static unsigned char __cdecl NTFS_SA::IsNtfsName(struct _FILE_NAME const * __ptr64)
?IsNtfsName@NTFS_SA@@SAEPEBU_FILE_NAME@@@Z
; public: virtual unsigned char __cdecl NTFS_ATTRIBUTE::MakeNonresident(class NTFS_BITMAP * __ptr64) __ptr64
?MakeNonresident@NTFS_ATTRIBUTE@@UEAAEPEAVNTFS_BITMAP@@@Z
; long __cdecl NtfsUpcaseCompare(unsigned short const * __ptr64,unsigned long,unsigned short const * __ptr64,unsigned long,class NTFS_UPCASE_TABLE const * __ptr64,unsigned char)
?NtfsUpcaseCompare@@YAJPEBGK0KPEBVNTFS_UPCASE_TABLE@@E@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::QueryAttribute(class NTFS_ATTRIBUTE * __ptr64,unsigned char * __ptr64,unsigned long,class WSTRING const * __ptr64) __ptr64
?QueryAttribute@NTFS_FILE_RECORD_SEGMENT@@QEAAEPEAVNTFS_ATTRIBUTE@@PEAEKPEBVWSTRING@@@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::QueryAttributeByOrdinal(class NTFS_ATTRIBUTE * __ptr64,unsigned char * __ptr64,unsigned long,unsigned long) __ptr64
?QueryAttributeByOrdinal@NTFS_FILE_RECORD_SEGMENT@@QEAAEPEAVNTFS_ATTRIBUTE@@PEAEKK@Z
; public: unsigned char __cdecl NTFS_FRS_STRUCTURE::QueryAttributeList(class NTFS_ATTRIBUTE_LIST * __ptr64) __ptr64
?QueryAttributeList@NTFS_FRS_STRUCTURE@@QEAAEPEAVNTFS_ATTRIBUTE_LIST@@@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::QueryAttributeListAttribute(class NTFS_ATTRIBUTE * __ptr64,unsigned char * __ptr64) __ptr64
?QueryAttributeListAttribute@NTFS_FILE_RECORD_SEGMENT@@QEAAEPEAVNTFS_ATTRIBUTE@@PEAE@Z
; public: unsigned char __cdecl NTFS_SA::QueryClusterFactor(void)const  __ptr64
?QueryClusterFactor@NTFS_SA@@QEBAEXZ
; public: static unsigned long __cdecl NTFS_SA::QueryDefaultClustersPerIndexBuffer(class DP_DRIVE const * __ptr64,unsigned long)
?QueryDefaultClustersPerIndexBuffer@NTFS_SA@@SAKPEBVDP_DRIVE@@K@Z
; public: unsigned char __cdecl NTFS_INDEX_TREE::QueryEntry(unsigned long,void * __ptr64,unsigned long,struct _INDEX_ENTRY * __ptr64 * __ptr64,class NTFS_INDEX_BUFFER * __ptr64 * __ptr64,unsigned char * __ptr64) __ptr64
?QueryEntry@NTFS_INDEX_TREE@@QEAAEKPEAXKPEAPEAU_INDEX_ENTRY@@PEAPEAVNTFS_INDEX_BUFFER@@PEAE@Z
; public: unsigned char __cdecl NTFS_EXTENT_LIST::QueryExtent(unsigned long,class BIG_INT * __ptr64,class BIG_INT * __ptr64,class BIG_INT * __ptr64)const  __ptr64
?QueryExtent@NTFS_EXTENT_LIST@@QEBAEKPEAVBIG_INT@@00@Z
; public: unsigned char __cdecl NTFS_ATTRIBUTE_RECORD::QueryExtentList(class NTFS_EXTENT_LIST * __ptr64)const  __ptr64
?QueryExtentList@NTFS_ATTRIBUTE_RECORD@@QEBAEPEAVNTFS_EXTENT_LIST@@@Z
; public: unsigned char __cdecl NTFS_INDEX_TREE::QueryFileReference(unsigned long,void * __ptr64,unsigned long,struct _MFT_SEGMENT_REFERENCE * __ptr64,unsigned char * __ptr64) __ptr64
?QueryFileReference@NTFS_INDEX_TREE@@QEAAEKPEAXKPEAU_MFT_SEGMENT_REFERENCE@@PEAE@Z
; public: unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::QueryFileSizes(class BIG_INT * __ptr64,class BIG_INT * __ptr64,unsigned char * __ptr64) __ptr64
?QueryFileSizes@NTFS_FILE_RECORD_SEGMENT@@QEAAEPEAVBIG_INT@@0PEAE@Z
; public: static unsigned char __cdecl NTFS_MFT_INFO::QueryFlags(void * __ptr64,unsigned short)
?QueryFlags@NTFS_MFT_INFO@@SAEPEAXG@Z
; public: unsigned char __cdecl NTFS_SA::QueryFrsFromPath(class WSTRING const * __ptr64,class NTFS_MASTER_FILE_TABLE * __ptr64,class NTFS_BITMAP * __ptr64,class NTFS_FILE_RECORD_SEGMENT * __ptr64,unsigned char * __ptr64,unsigned char * __ptr64) __ptr64
?QueryFrsFromPath@NTFS_SA@@QEAAEPEBVWSTRING@@PEAVNTFS_MASTER_FILE_TABLE@@PEAVNTFS_BITMAP@@PEAVNTFS_FILE_RECORD_SEGMENT@@PEAE4@Z
; public: unsigned char __cdecl NTFS_EXTENT_LIST::QueryLcnFromVcn(class BIG_INT,class BIG_INT * __ptr64,class BIG_INT * __ptr64)const  __ptr64
?QueryLcnFromVcn@NTFS_EXTENT_LIST@@QEBAEVBIG_INT@@PEAV2@1@Z
; public: unsigned char __cdecl NTFS_ATTRIBUTE_RECORD::QueryName(class WSTRING * __ptr64)const  __ptr64
?QueryName@NTFS_ATTRIBUTE_RECORD@@QEBAEPEAVWSTRING@@@Z
; public: unsigned char __cdecl NTFS_ATTRIBUTE_LIST::QueryNextEntry(struct _ATTR_LIST_CURR_ENTRY * __ptr64,unsigned long * __ptr64,class BIG_INT * __ptr64,struct _MFT_SEGMENT_REFERENCE * __ptr64,unsigned short * __ptr64,class WSTRING * __ptr64)const  __ptr64
?QueryNextEntry@NTFS_ATTRIBUTE_LIST@@QEBAEPEAU_ATTR_LIST_CURR_ENTRY@@PEAKPEAVBIG_INT@@PEAU_MFT_SEGMENT_REFERENCE@@PEAGPEAVWSTRING@@@Z
; public: unsigned long __cdecl NTFS_EXTENT_LIST::QueryNumberOfExtents(void)const  __ptr64
?QueryNumberOfExtents@NTFS_EXTENT_LIST@@QEBAKXZ
; public: static unsigned long __cdecl NTFS_SA::QuerySectorsInElementaryStructures(class DP_DRIVE const * __ptr64,unsigned long,unsigned long,unsigned long,unsigned long)
?QuerySectorsInElementaryStructures@NTFS_SA@@SAKPEBVDP_DRIVE@@KKKK@Z
; public: static struct _MFT_SEGMENT_REFERENCE  __cdecl NTFS_MFT_INFO::QuerySegmentReference(void * __ptr64)
?QuerySegmentReference@NTFS_MFT_INFO@@SA?AU_MFT_SEGMENT_REFERENCE@@PEAX@Z
; public: unsigned short __cdecl NTFS_SA::QueryVolumeFlagsAndLabel(unsigned char * __ptr64,unsigned char * __ptr64,unsigned char * __ptr64,class WSTRING * __ptr64) __ptr64
?QueryVolumeFlagsAndLabel@NTFS_SA@@QEAAGPEAE00PEAVWSTRING@@@Z
; public: unsigned char __cdecl NTFS_ATTRIBUTE::Read(void * __ptr64,class BIG_INT,unsigned long,unsigned long * __ptr64) __ptr64
?Read@NTFS_ATTRIBUTE@@QEAAEPEAXVBIG_INT@@KPEAK@Z
; public: virtual unsigned char __cdecl NTFS_FRS_STRUCTURE::Read(void) __ptr64
?Read@NTFS_FRS_STRUCTURE@@UEAAEXZ
; public: virtual unsigned char __cdecl NTFS_MFT_FILE::Read(void) __ptr64
?Read@NTFS_MFT_FILE@@UEAAEXZ
; public: unsigned char __cdecl NTFS_SA::Read(class MESSAGE * __ptr64) __ptr64
?Read@NTFS_SA@@QEAAEPEAVMESSAGE@@@Z
; public: virtual unsigned char __cdecl NTFS_SA::Read(void) __ptr64
?Read@NTFS_SA@@UEAAEXZ
; public: unsigned char __cdecl NTFS_FRS_STRUCTURE::ReadAgain(class BIG_INT) __ptr64
?ReadAgain@NTFS_FRS_STRUCTURE@@QEAAEVBIG_INT@@@Z
; public: unsigned char __cdecl NTFS_ATTRIBUTE_LIST::ReadList(void) __ptr64
?ReadList@NTFS_ATTRIBUTE_LIST@@QEAAEXZ
; public: unsigned char __cdecl NTFS_FRS_STRUCTURE::ReadNext(class BIG_INT) __ptr64
?ReadNext@NTFS_FRS_STRUCTURE@@QEAAEVBIG_INT@@@Z
; public: unsigned char __cdecl NTFS_FRS_STRUCTURE::ReadSet(class TLINK * __ptr64) __ptr64
?ReadSet@NTFS_FRS_STRUCTURE@@QEAAEPEAVTLINK@@@Z
; public: void __cdecl NTFS_CLUSTER_RUN::Relocate(class BIG_INT) __ptr64
?Relocate@NTFS_CLUSTER_RUN@@QEAAXVBIG_INT@@@Z
; public: void __cdecl NTFS_INDEX_TREE::ResetIterator(void) __ptr64
?ResetIterator@NTFS_INDEX_TREE@@QEAAXXZ
; public: virtual unsigned char __cdecl NTFS_ATTRIBUTE::Resize(class BIG_INT,class NTFS_BITMAP * __ptr64) __ptr64
?Resize@NTFS_ATTRIBUTE@@UEAAEVBIG_INT@@PEAVNTFS_BITMAP@@@Z
; public: unsigned char __cdecl NTFS_FRS_STRUCTURE::SafeQueryAttribute(unsigned long,class NTFS_ATTRIBUTE * __ptr64,class NTFS_ATTRIBUTE * __ptr64) __ptr64
?SafeQueryAttribute@NTFS_FRS_STRUCTURE@@QEAAEKPEAVNTFS_ATTRIBUTE@@0@Z
; public: unsigned char __cdecl NTFS_INDEX_TREE::Save(class NTFS_FILE_RECORD_SEGMENT * __ptr64) __ptr64
?Save@NTFS_INDEX_TREE@@QEAAEPEAVNTFS_FILE_RECORD_SEGMENT@@@Z
; public: virtual unsigned char __cdecl NTFS_ATTRIBUTE::SetSparse(class BIG_INT,class NTFS_BITMAP * __ptr64) __ptr64
?SetSparse@NTFS_ATTRIBUTE@@UEAAEVBIG_INT@@PEAVNTFS_BITMAP@@@Z
; public: unsigned char __cdecl NTFS_SA::SetVolumeFlag(unsigned short,unsigned char * __ptr64) __ptr64
?SetVolumeFlag@NTFS_SA@@QEAAEGPEAE@Z
; public: unsigned char __cdecl NTFS_SA::TakeCensus(class NTFS_MASTER_FILE_TABLE * __ptr64,unsigned long,struct NTFS_CENSUS_INFO * __ptr64) __ptr64
?TakeCensus@NTFS_SA@@QEAAEPEAVNTFS_MASTER_FILE_TABLE@@KPEAUNTFS_CENSUS_INFO@@@Z
; public: virtual unsigned char __cdecl NTFS_ATTRIBUTE::Write(void const * __ptr64,class BIG_INT,unsigned long,unsigned long * __ptr64,class NTFS_BITMAP * __ptr64) __ptr64
?Write@NTFS_ATTRIBUTE@@UEAAEPEBXVBIG_INT@@KPEAKPEAVNTFS_BITMAP@@@Z
; public: unsigned char __cdecl NTFS_BITMAP::Write(class NTFS_ATTRIBUTE * __ptr64,class NTFS_BITMAP * __ptr64) __ptr64
?Write@NTFS_BITMAP@@QEAAEPEAVNTFS_ATTRIBUTE@@PEAV1@@Z
; public: virtual unsigned char __cdecl NTFS_FILE_RECORD_SEGMENT::Write(void) __ptr64
?Write@NTFS_FILE_RECORD_SEGMENT@@UEAAEXZ
; public: unsigned char __cdecl NTFS_FRS_STRUCTURE::Write(void) __ptr64
?Write@NTFS_FRS_STRUCTURE@@QEAAEXZ
; public: unsigned char __cdecl NTFS_SA::WriteRemainingBootCode(void) __ptr64
?WriteRemainingBootCode@NTFS_SA@@QEAAEXZ
Chkdsk
ChkdskEx
Extend
Format
FormatEx
Recover
