; 
; Exports of file FTPSVC2.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY FTPSVC2.dll
EXPORTS
; public: __cdecl HASH_TABLE::HASH_TABLE(class HASH_TABLE const & __ptr64) __ptr64
??0HASH_TABLE@@QEAA@AEBV0@@Z
; public: __cdecl HT_ELEMENT::HT_ELEMENT(class HT_ELEMENT const & __ptr64) __ptr64
??0HT_ELEMENT@@QEAA@AEBV0@@Z
; public: __cdecl HT_ELEMENT::HT_ELEMENT(void) __ptr64
??0HT_ELEMENT@@QEAA@XZ
; public: __cdecl IIS_SERVICE::IIS_SERVICE(class IIS_SERVICE const & __ptr64) __ptr64
??0IIS_SERVICE@@QEAA@AEBV0@@Z
; public: __cdecl LOGGING::LOGGING(class LOGGING const & __ptr64) __ptr64
??0LOGGING@@QEAA@AEBV0@@Z
; public: virtual __cdecl HASH_TABLE::~HASH_TABLE(void) __ptr64
??1HASH_TABLE@@UEAA@XZ
; public: virtual __cdecl HT_ELEMENT::~HT_ELEMENT(void) __ptr64
??1HT_ELEMENT@@UEAA@XZ
; public: class HASH_TABLE & __ptr64 __cdecl HASH_TABLE::operator=(class HASH_TABLE const & __ptr64) __ptr64
??4HASH_TABLE@@QEAAAEAV0@AEBV0@@Z
; public: class HT_ELEMENT & __ptr64 __cdecl HT_ELEMENT::operator=(class HT_ELEMENT const & __ptr64) __ptr64
??4HT_ELEMENT@@QEAAAEAV0@AEBV0@@Z
; public: class IIS_SERVICE & __ptr64 __cdecl IIS_SERVICE::operator=(class IIS_SERVICE const & __ptr64) __ptr64
??4IIS_SERVICE@@QEAAAEAV0@AEBV0@@Z
; public: class LOGGING & __ptr64 __cdecl LOGGING::operator=(class LOGGING const & __ptr64) __ptr64
??4LOGGING@@QEAAAEAV0@AEBV0@@Z
; public: class TSVC_CACHE & __ptr64 __cdecl TSVC_CACHE::operator=(class TSVC_CACHE const & __ptr64) __ptr64
??4TSVC_CACHE@@QEAAAEAV0@AEBV0@@Z
; const  HASH_TABLE::`vftable'
??_7HASH_TABLE@@6B@
; const  HT_ELEMENT::`vftable'
??_7HT_ELEMENT@@6B@
; const  IIS_SERVICE::`vftable'
??_7IIS_SERVICE@@6B@
; public: void __cdecl IIS_SERVER_INSTANCE::AcquireFastLock(void) __ptr64
?AcquireFastLock@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: void __cdecl IIS_SERVICE::AcquireServiceLock(int) __ptr64
?AcquireServiceLock@IIS_SERVICE@@QEAAXH@Z
; private: static void __cdecl IIS_VROOT_TABLE::AddRefRecord(void const * __ptr64,int)
?AddRefRecord@IIS_VROOT_TABLE@@CAXPEBXH@Z
; public: virtual unsigned long __cdecl HASH_TABLE::CalculateHash(char const * __ptr64)const  __ptr64
?CalculateHash@HASH_TABLE@@UEBAKPEBD@Z
; public: void __cdecl IIS_SERVER_INSTANCE::CleanupAfterConstructorFailure(void) __ptr64
?CleanupAfterConstructorFailure@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: void __cdecl IIS_SERVER_INSTANCE::DecrementCurrentConnections(void) __ptr64
?DecrementCurrentConnections@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: unsigned long __cdecl IIS_SERVICE::DelayCurrentServiceCtrlOperation(unsigned long) __ptr64
?DelayCurrentServiceCtrlOperation@IIS_SERVICE@@QEAAKK@Z
; public: virtual long __cdecl MIME_MAP_ENTRY::Dereference(void) __ptr64
?Dereference@MIME_MAP_ENTRY@@UEAAJXZ
; public: int __cdecl IIS_SERVER_INSTANCE::DoServerNameCheck(void)const  __ptr64
?DoServerNameCheck@IIS_SERVER_INSTANCE@@QEBAHXZ
; public: virtual int __cdecl COMMON_METADATA::FinishPrivateProperties(class BUFFER * __ptr64,unsigned long,int) __ptr64
?FinishPrivateProperties@COMMON_METADATA@@UEAAHPEAVBUFFER@@KH@Z
; public: unsigned long __cdecl HASH_TABLE::FlushElements(void) __ptr64
?FlushElements@HASH_TABLE@@QEAAKXZ
; public: unsigned long __cdecl TSVC_CACHE::GetInstanceId(void)const  __ptr64
?GetInstanceId@TSVC_CACHE@@QEBAKXZ
; public: void __cdecl IIS_SERVICE::GetMDInstancePath(unsigned long,char * __ptr64) __ptr64
?GetMDInstancePath@IIS_SERVICE@@QEAAXKPEAD@Z
; public: void * __ptr64 __cdecl TSVC_CACHE::GetServerInstance(void)const  __ptr64
?GetServerInstance@TSVC_CACHE@@QEBAPEAXXZ
; private: virtual unsigned long __cdecl IIS_SERVICE::GetServiceConfigInfoSize(unsigned long) __ptr64
?GetServiceConfigInfoSize@IIS_SERVICE@@EEAAKK@Z
; public: unsigned long __cdecl TSVC_CACHE::GetServiceId(void)const  __ptr64
?GetServiceId@TSVC_CACHE@@QEBAKXZ
; public: class CACHED_TOKEN * __ptr64 __cdecl TCP_AUTHENT::GetToken(void)const  __ptr64
?GetToken@TCP_AUTHENT@@QEBAPEAVCACHED_TOKEN@@XZ
; public: class TSVC_CACHE & __ptr64 __cdecl IIS_SERVER_INSTANCE::GetTsvcCache(void) __ptr64
?GetTsvcCache@IIS_SERVER_INSTANCE@@QEAAAEAVTSVC_CACHE@@XZ
; public: void * __ptr64 __cdecl TCP_AUTHENT::GetUserHandle(void) __ptr64
?GetUserHandle@TCP_AUTHENT@@QEAAPEAXXZ
; public: virtual int __cdecl COMMON_METADATA::HandlePrivateProperty(char * __ptr64,class IIS_SERVER_INSTANCE * __ptr64,struct _METADATA_GETALL_INTERNAL_RECORD * __ptr64,void * __ptr64,class BUFFER * __ptr64,unsigned long * __ptr64,struct _METADATA_ERROR_INFO * __ptr64) __ptr64
?HandlePrivateProperty@COMMON_METADATA@@UEAAHPEADPEAVIIS_SERVER_INSTANCE@@PEAU_METADATA_GETALL_INTERNAL_RECORD@@PEAXPEAVBUFFER@@PEAKPEAU_METADATA_ERROR_INFO@@@Z
; public: int __cdecl IIS_SERVER_INSTANCE::HasNormalBindings(void)const  __ptr64
?HasNormalBindings@IIS_SERVER_INSTANCE@@QEBAHXZ
; public: int __cdecl IIS_SERVER_INSTANCE::HasSecureBindings(void)const  __ptr64
?HasSecureBindings@IIS_SERVER_INSTANCE@@QEBAHXZ
; public: void __cdecl IIS_SERVER_INSTANCE::IncrementCurrentConnections(void) __ptr64
?IncrementCurrentConnections@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: int __cdecl IIS_SERVICE::IsActive(void)const  __ptr64
?IsActive@IIS_SERVICE@@QEBAHXZ
; public: int __cdecl IIS_SERVER_INSTANCE::IsAutoStart(void)const  __ptr64
?IsAutoStart@IIS_SERVER_INSTANCE@@QEBAHXZ
; public: int __cdecl IIS_SERVER_INSTANCE::IsClusterEnabled(void)const  __ptr64
?IsClusterEnabled@IIS_SERVER_INSTANCE@@QEBAHXZ
; public: int __cdecl IIS_SERVER_INSTANCE::IsDownLevelInstance(void)const  __ptr64
?IsDownLevelInstance@IIS_SERVER_INSTANCE@@QEBAHXZ
; public: int __cdecl IIS_SERVER_INSTANCE::IsLoggingEnabledA(void)const  __ptr64
?IsLoggingEnabledA@IIS_SERVER_INSTANCE@@QEBAHXZ
; public: virtual int __cdecl MIME_MAP_ENTRY::IsMatch(char const * __ptr64,unsigned long)const  __ptr64
?IsMatch@MIME_MAP_ENTRY@@UEBAHPEBDK@Z
; public: int __cdecl IIS_SERVICE::IsMultiInstance(void)const  __ptr64
?IsMultiInstance@IIS_SERVICE@@QEBAHXZ
; public: int __cdecl IIS_SERVICE::IsSystemDBCS(void)const  __ptr64
?IsSystemDBCS@IIS_SERVICE@@QEBAHXZ
; public: int __cdecl HASH_TABLE::IsValid(void)const  __ptr64
?IsValid@HASH_TABLE@@QEBAHXZ
; public: int __cdecl TS_OPEN_FILE_INFO::IsValid(void)const  __ptr64
?IsValid@TS_OPEN_FILE_INFO@@QEBAHXZ
; public: int __cdecl IIS_SERVER_INSTANCE::LoadStr(class STR & __ptr64,unsigned long,int)const  __ptr64
?LoadStr@IIS_SERVER_INSTANCE@@QEBAHAEAVSTR@@KH@Z
; public: void __cdecl IIS_VROOT_TABLE::LockConvertExclusive(void) __ptr64
?LockConvertExclusive@IIS_VROOT_TABLE@@QEAAXXZ
; public: void __cdecl IIS_VROOT_TABLE::LockExclusive(void) __ptr64
?LockExclusive@IIS_VROOT_TABLE@@QEAAXXZ
; private: void __cdecl LOGGING::LockExclusive(void) __ptr64
?LockExclusive@LOGGING@@AEAAXXZ
; public: void __cdecl IIS_VROOT_TABLE::LockShared(void) __ptr64
?LockShared@IIS_VROOT_TABLE@@QEAAXXZ
; private: void __cdecl LOGGING::LockShared(void) __ptr64
?LockShared@LOGGING@@AEAAXXZ
; public: void __cdecl IIS_SERVER_INSTANCE::LockThisForRead(void) __ptr64
?LockThisForRead@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: void __cdecl IIS_SERVER_INSTANCE::LockThisForWrite(void) __ptr64
?LockThisForWrite@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: void __cdecl IIS_SERVICE::LogEvent(unsigned long,unsigned short,char const * __ptr64 * __ptr64 const,unsigned long) __ptr64
?LogEvent@IIS_SERVICE@@QEAAXKGQEAPEBDK@Z
; public: class HT_ELEMENT * __ptr64 __cdecl HASH_TABLE::Lookup(char const * __ptr64) __ptr64
?Lookup@HASH_TABLE@@QEAAPEAVHT_ELEMENT@@PEBD@Z
; public: void __cdecl MIME_MAP::Print(void) __ptr64
?Print@MIME_MAP@@QEAAXXZ
; public: virtual void __cdecl MIME_MAP_ENTRY::Print(void)const  __ptr64
?Print@MIME_MAP_ENTRY@@UEBAXXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryAcceptExOutstanding(void)const  __ptr64
?QueryAcceptExOutstanding@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryAcceptExTimeout(void)const  __ptr64
?QueryAcceptExTimeout@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: virtual class IIS_SSL_INFO * __ptr64 __cdecl IIS_SERVER_INSTANCE::QueryAndReferenceSSLInfoObj(void) __ptr64
?QueryAndReferenceSSLInfoObj@IIS_SERVER_INSTANCE@@UEAAPEAVIIS_SSL_INFO@@XZ
; public: unsigned long __cdecl TS_OPEN_FILE_INFO::QueryAttributes(void)const  __ptr64
?QueryAttributes@TS_OPEN_FILE_INFO@@QEBAKXZ
; public: void * __ptr64 __cdecl IIS_SERVER_INSTANCE::QueryBandwidthInfo(void)const  __ptr64
?QueryBandwidthInfo@IIS_SERVER_INSTANCE@@QEBAPEAXXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryConnectionTimeout(void)const  __ptr64
?QueryConnectionTimeout@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: struct _SecHandle * __ptr64 __cdecl TCP_AUTHENT::QueryCredHandle(void) __ptr64
?QueryCredHandle@TCP_AUTHENT@@QEAAPEAU_SecHandle@@XZ
; public: struct _SecHandle * __ptr64 __cdecl TCP_AUTHENT::QueryCtxtHandle(void) __ptr64
?QueryCtxtHandle@TCP_AUTHENT@@QEAAPEAU_SecHandle@@XZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryCurrentConnections(void)const  __ptr64
?QueryCurrentConnections@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: unsigned long __cdecl IIS_SERVICE::QueryCurrentServiceError(void)const  __ptr64
?QueryCurrentServiceError@IIS_SERVICE@@QEBAKXZ
; public: unsigned long __cdecl IIS_SERVICE::QueryCurrentServiceState(void)const  __ptr64
?QueryCurrentServiceState@IIS_SERVICE@@QEBAKXZ
; public: unsigned short __cdecl IIS_SERVER_INSTANCE::QueryDefaultPort(void)const  __ptr64
?QueryDefaultPort@IIS_SERVER_INSTANCE@@QEBAGXZ
; public: unsigned long __cdecl IIS_SERVICE::QueryDownLevelInstance(void)const  __ptr64
?QueryDownLevelInstance@IIS_SERVICE@@QEBAKXZ
; public: char * __ptr64 __cdecl TS_OPEN_FILE_INFO::QueryETag(void)const  __ptr64
?QueryETag@TS_OPEN_FILE_INFO@@QEBAPEADXZ
; public: class EVENT_LOG * __ptr64 __cdecl IIS_SERVICE::QueryEventLog(void) __ptr64
?QueryEventLog@IIS_SERVICE@@QEAAPEAVEVENT_LOG@@XZ
; public: unsigned long __cdecl IIS_SERVICE::QueryInstanceCount(void)const  __ptr64
?QueryInstanceCount@IIS_SERVICE@@QEBAKXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryInstanceId(void)const  __ptr64
?QueryInstanceId@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: virtual char const * __ptr64 __cdecl MIME_MAP_ENTRY::QueryKey(void)const  __ptr64
?QueryKey@MIME_MAP_ENTRY@@UEBAPEBDXZ
; public: virtual unsigned long __cdecl MIME_MAP_ENTRY::QueryKeyLen(void)const  __ptr64
?QueryKeyLen@MIME_MAP_ENTRY@@UEBAKXZ
; public: int __cdecl TS_OPEN_FILE_INFO::QueryLastWriteTime(struct _FILETIME * __ptr64)const  __ptr64
?QueryLastWriteTime@TS_OPEN_FILE_INFO@@QEBAHPEAU_FILETIME@@@Z
; public: int __cdecl IIS_SERVER_INSTANCE::QueryLogAnonymous(void)const  __ptr64
?QueryLogAnonymous@IIS_SERVER_INSTANCE@@QEBAHXZ
; public: int __cdecl IIS_SERVER_INSTANCE::QueryLogNonAnonymous(void)const  __ptr64
?QueryLogNonAnonymous@IIS_SERVER_INSTANCE@@QEBAHXZ
; public: char const * __ptr64 __cdecl IIS_SERVER_INSTANCE::QueryMDPath(void)const  __ptr64
?QueryMDPath@IIS_SERVER_INSTANCE@@QEBAPEBDXZ
; public: char const * __ptr64 __cdecl IIS_SERVICE::QueryMDPath(void)const  __ptr64
?QueryMDPath@IIS_SERVICE@@QEBAPEBDXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryMDPathLen(void)const  __ptr64
?QueryMDPathLen@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: char const * __ptr64 __cdecl IIS_SERVER_INSTANCE::QueryMDVRPath(void)const  __ptr64
?QueryMDVRPath@IIS_SERVER_INSTANCE@@QEBAPEBDXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryMDVRPathLen(void)const  __ptr64
?QueryMDVRPathLen@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryMaxConnections(void)const  __ptr64
?QueryMaxConnections@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryMaxEndpointConnections(void)const  __ptr64
?QueryMaxEndpointConnections@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: class MIME_MAP * __ptr64 __cdecl IIS_SERVICE::QueryMimeMap(void)const  __ptr64
?QueryMimeMap@IIS_SERVICE@@QEBAPEAVMIME_MAP@@XZ
; public: char const * __ptr64 __cdecl IIS_SERVICE::QueryModuleName(void)const  __ptr64
?QueryModuleName@IIS_SERVICE@@QEBAPEBDXZ
; public: long * __ptr64 __cdecl RefBlob::QueryRefCount(void) __ptr64
?QueryRefCount@RefBlob@@QEAAPEAJXZ
; public: char const * __ptr64 __cdecl IIS_SERVER_INSTANCE::QueryRegParamKey(void)const  __ptr64
?QueryRegParamKey@IIS_SERVER_INSTANCE@@QEBAPEBDXZ
; public: char const * __ptr64 __cdecl IIS_SERVICE::QueryRegParamKey(void)const  __ptr64
?QueryRegParamKey@IIS_SERVICE@@QEBAPEBDXZ
; public: char * __ptr64 __cdecl IIS_SERVER_INSTANCE::QueryRoot(void)const  __ptr64
?QueryRoot@IIS_SERVER_INSTANCE@@QEBAPEADXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QuerySavedState(void)const  __ptr64
?QuerySavedState@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryServerSize(void)const  __ptr64
?QueryServerSize@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryServerState(void)const  __ptr64
?QueryServerState@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: char const * __ptr64 __cdecl IIS_SERVICE::QueryServiceComment(void)const  __ptr64
?QueryServiceComment@IIS_SERVICE@@QEBAPEBDXZ
; public: unsigned long __cdecl IIS_SERVICE::QueryServiceId(void)const  __ptr64
?QueryServiceId@IIS_SERVICE@@QEBAKXZ
; public: char const * __ptr64 __cdecl IIS_SERVICE::QueryServiceName(void)const  __ptr64
?QueryServiceName@IIS_SERVICE@@QEBAPEBDXZ
; public: unsigned long __cdecl IIS_SERVICE::QueryServiceSpecificExitCode(void)const  __ptr64
?QueryServiceSpecificExitCode@IIS_SERVICE@@QEBAKXZ
; public: unsigned long __cdecl IIS_SERVICE::QueryShutdownScheduleId(void)const  __ptr64
?QueryShutdownScheduleId@IIS_SERVICE@@QEBAKXZ
; public: char const * __ptr64 __cdecl IIS_SERVER_INSTANCE::QuerySiteName(void)const  __ptr64
?QuerySiteName@IIS_SERVER_INSTANCE@@QEBAPEBDXZ
; public: int __cdecl TS_OPEN_FILE_INFO::QuerySize(union _LARGE_INTEGER & __ptr64)const  __ptr64
?QuerySize@TS_OPEN_FILE_INFO@@QEBAHAEAT_LARGE_INTEGER@@@Z
; public: int __cdecl TS_OPEN_FILE_INFO::QuerySize(unsigned long * __ptr64,unsigned long * __ptr64)const  __ptr64
?QuerySize@TS_OPEN_FILE_INFO@@QEBAHPEAK0@Z
; public: struct _SecHandle * __ptr64 __cdecl TCP_AUTHENT::QuerySslCtxtHandle(void) __ptr64
?QuerySslCtxtHandle@TCP_AUTHENT@@QEAAPEAU_SecHandle@@XZ
; public: unsigned long __cdecl IIS_VROOT_TABLE::QueryVrootCount(void) __ptr64
?QueryVrootCount@IIS_VROOT_TABLE@@QEAAKXZ
; public: class IIS_VROOT_TABLE * __ptr64 __cdecl IIS_SERVER_INSTANCE::QueryVrootTable(void) __ptr64
?QueryVrootTable@IIS_SERVER_INSTANCE@@QEAAPEAVIIS_VROOT_TABLE@@XZ
; public: virtual long __cdecl MIME_MAP_ENTRY::Reference(void) __ptr64
?Reference@MIME_MAP_ENTRY@@UEAAJXZ
; public: void __cdecl IIS_SERVER_INSTANCE::ReleaseFastLock(void) __ptr64
?ReleaseFastLock@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: void __cdecl IIS_SERVICE::ReleaseServiceLock(int) __ptr64
?ReleaseServiceLock@IIS_SERVICE@@QEAAXH@Z
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::RemoveNormalBindings(void) __ptr64
?RemoveNormalBindings@IIS_SERVER_INSTANCE@@QEAAKXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::RemoveSecureBindings(void) __ptr64
?RemoveSecureBindings@IIS_SERVER_INSTANCE@@QEAAKXZ
; public: int __cdecl TS_OPEN_FILE_INFO::RetrieveHttpInfo(char * __ptr64,int * __ptr64) __ptr64
?RetrieveHttpInfo@TS_OPEN_FILE_INFO@@QEAAHPEADPEAH@Z
; public: void __cdecl IIS_SERVER_INSTANCE::SaveServerState(void) __ptr64
?SaveServerState@IIS_SERVER_INSTANCE@@QEAAXXZ
ServiceEntry
; public: void __cdecl COMMON_METADATA::SetAccessPerms(unsigned long) __ptr64
?SetAccessPerms@COMMON_METADATA@@QEAAXK@Z
; public: void __cdecl TSVC_CACHE::SetParameters(unsigned long,unsigned long,void * __ptr64) __ptr64
?SetParameters@TSVC_CACHE@@QEAAXKKPEAX@Z
; public: void __cdecl IIS_SERVICE::SetServiceComment(char * __ptr64) __ptr64
?SetServiceComment@IIS_SERVICE@@QEAAXPEAD@Z
; public: void __cdecl IIS_SERVICE::SetServiceSpecificExitCode(unsigned long) __ptr64
?SetServiceSpecificExitCode@IIS_SERVICE@@QEAAXK@Z
; public: void __cdecl IIS_SERVER_INSTANCE::SetZapRegKey(void) __ptr64
?SetZapRegKey@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: virtual void __cdecl IIS_SERVICE::StopInstanceProcs(class IIS_SERVER_INSTANCE * __ptr64) __ptr64
?StopInstanceProcs@IIS_SERVICE@@UEAAXPEAVIIS_SERVER_INSTANCE@@@Z
; public: void __cdecl IIS_VROOT_TABLE::Unlock(void) __ptr64
?Unlock@IIS_VROOT_TABLE@@QEAAXXZ
; private: void __cdecl LOGGING::Unlock(void) __ptr64
?Unlock@LOGGING@@AEAAXXZ
; public: void __cdecl IIS_SERVER_INSTANCE::UnlockThis(void) __ptr64
?UnlockThis@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::UpdateNormalBindings(void) __ptr64
?UpdateNormalBindings@IIS_SERVER_INSTANCE@@QEAAKXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::UpdateSecureBindings(void) __ptr64
?UpdateSecureBindings@IIS_SERVER_INSTANCE@@QEAAKXZ
; public: int __cdecl TS_OPEN_FILE_INFO::WeakETag(void)const  __ptr64
?WeakETag@TS_OPEN_FILE_INFO@@QEBAHXZ
