; 
; Exports of file SMTPSVC.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY SMTPSVC.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_CTL::IIS_CTL(class IIS_CTL const & __ptr64) __ptr64
??0IIS_CTL@@QEAA@AEBV0@@Z
; public: __cdecl IIS_SERVER_CERT::IIS_SERVER_CERT(class IIS_SERVER_CERT const & __ptr64) __ptr64
??0IIS_SERVER_CERT@@QEAA@AEBV0@@Z
; public: __cdecl IIS_SERVICE::IIS_SERVICE(class IIS_SERVICE const & __ptr64) __ptr64
??0IIS_SERVICE@@QEAA@AEBV0@@Z
; public: __cdecl IIS_SSL_INFO::IIS_SSL_INFO(class IIS_SSL_INFO const & __ptr64) __ptr64
??0IIS_SSL_INFO@@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_CTL & __ptr64 __cdecl IIS_CTL::operator=(class IIS_CTL const & __ptr64) __ptr64
??4IIS_CTL@@QEAAAEAV0@AEBV0@@Z
; public: class IIS_SERVER_CERT & __ptr64 __cdecl IIS_SERVER_CERT::operator=(class IIS_SERVER_CERT const & __ptr64) __ptr64
??4IIS_SERVER_CERT@@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 IIS_SSL_INFO & __ptr64 __cdecl IIS_SSL_INFO::operator=(class IIS_SSL_INFO const & __ptr64) __ptr64
??4IIS_SSL_INFO@@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
; public: void __cdecl INET_PARSER::operator+=(int) __ptr64
??YINET_PARSER@@QEAAXH@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
; private: int __cdecl IIS_SSL_INFO::CheckSignature(void) __ptr64
?CheckSignature@IIS_SSL_INFO@@AEAAHXZ
; 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: char * __ptr64 __cdecl INET_PARSER::EatNonWhite(void) __ptr64
?EatNonWhite@INET_PARSER@@QEAAPEADXZ
; public: char * __ptr64 __cdecl INET_PARSER::EatWhite(void) __ptr64
?EatWhite@INET_PARSER@@QEAAPEADXZ
; 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
; private: int __cdecl IIS_SSL_INFO::IsDefaultCTL(void) __ptr64
?IsDefaultCTL@IIS_SSL_INFO@@AEAAHXZ
; public: int __cdecl IIS_SSL_INFO::IsDefaultCertificate(void) __ptr64
?IsDefaultCertificate@IIS_SSL_INFO@@QEAAHXZ
; public: int __cdecl IIS_SERVER_INSTANCE::IsDownLevelInstance(void)const  __ptr64
?IsDownLevelInstance@IIS_SERVER_INSTANCE@@QEBAHXZ
; public: int __cdecl IIS_SERVER_CERT::IsFortezzaCert(void) __ptr64
?IsFortezzaCert@IIS_SERVER_CERT@@QEAAHXZ
; 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_SSL_INFO::Lock(void) __ptr64
?Lock@IIS_SSL_INFO@@QEAAXXZ
; 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: char * __ptr64 __cdecl INET_PARSER::NextItem(void) __ptr64
?NextItem@INET_PARSER@@QEAAPEADXZ
; public: char * __ptr64 __cdecl INET_PARSER::NextParam(void) __ptr64
?NextParam@INET_PARSER@@QEAAPEADXZ
; 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: class IIS_CTL * __ptr64 __cdecl IIS_SSL_INFO::QueryCTL(void) __ptr64
?QueryCTL@IIS_SSL_INFO@@QEAAPEAVIIS_CTL@@XZ
; public: struct _CTL_CONTEXT const * __ptr64 __cdecl IIS_CTL::QueryCTLContext(void) __ptr64
?QueryCTLContext@IIS_CTL@@QEAAPEBU_CTL_CONTEXT@@XZ
; public: struct _CERT_CONTEXT const * __ptr64 __cdecl IIS_SERVER_CERT::QueryCertContext(void) __ptr64
?QueryCertContext@IIS_SERVER_CERT@@QEAAPEBU_CERT_CONTEXT@@XZ
; public: struct _CERT_CONTEXT const * __ptr64 * __ptr64 __cdecl IIS_SERVER_CERT::QueryCertContextAddr(void) __ptr64
?QueryCertContextAddr@IIS_SERVER_CERT@@QEAAPEAPEBU_CERT_CONTEXT@@XZ
; public: class IIS_SERVER_CERT * __ptr64 __cdecl IIS_SSL_INFO::QueryCertificate(void) __ptr64
?QueryCertificate@IIS_SSL_INFO@@QEAAPEAVIIS_SERVER_CERT@@XZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QueryConnectionTimeout(void)const  __ptr64
?QueryConnectionTimeout@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: char * __ptr64 __cdecl IIS_SERVER_CERT::QueryContainer(void) __ptr64
?QueryContainer@IIS_SERVER_CERT@@QEAAPEADXZ
; 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: unsigned short * __ptr64 __cdecl IIS_CTL::QueryListIdentifier(void) __ptr64
?QueryListIdentifier@IIS_CTL@@QEAAPEAGXZ
; 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 * __ptr64 __cdecl IIS_CTL::QueryMBPath(void) __ptr64
?QueryMBPath@IIS_CTL@@QEAAPEADXZ
; public: char * __ptr64 __cdecl IIS_SERVER_CERT::QueryMBPath(void) __ptr64
?QueryMBPath@IIS_SERVER_CERT@@QEAAPEADXZ
; 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: unsigned long __cdecl IIS_SERVER_CERT::QueryOpenFlags(void) __ptr64
?QueryOpenFlags@IIS_SERVER_CERT@@QEAAKXZ
; public: void * __ptr64 __cdecl IIS_CTL::QueryOriginalStore(void) __ptr64
?QueryOriginalStore@IIS_CTL@@QEAAPEAXXZ
; public: char * __ptr64 __cdecl IIS_SERVER_CERT::QueryProviderName(void) __ptr64
?QueryProviderName@IIS_SERVER_CERT@@QEAAPEADXZ
; public: unsigned long __cdecl IIS_SERVER_CERT::QueryProviderType(void) __ptr64
?QueryProviderType@IIS_SERVER_CERT@@QEAAKXZ
; 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_CTL::QueryStatus(void) __ptr64
?QueryStatus@IIS_CTL@@QEAAKXZ
; public: void * __ptr64 __cdecl IIS_SERVER_CERT::QueryStoreHandle(void) __ptr64
?QueryStoreHandle@IIS_SERVER_CERT@@QEAAPEAXXZ
; public: char * __ptr64 __cdecl IIS_CTL::QueryStoreName(void) __ptr64
?QueryStoreName@IIS_CTL@@QEAAPEADXZ
; public: char * __ptr64 __cdecl IIS_SERVER_CERT::QueryStoreName(void) __ptr64
?QueryStoreName@IIS_SERVER_CERT@@QEAAPEADXZ
; 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: void __cdecl INET_PARSER::RestoreBuffer(void) __ptr64
?RestoreBuffer@INET_PARSER@@QEAAXXZ
; 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: unsigned long __cdecl IIS_SERVER_CERT::Status(void) __ptr64
?Status@IIS_SERVER_CERT@@QEAAKXZ
; public: virtual void __cdecl IIS_SERVICE::StopInstanceProcs(class IIS_SERVER_INSTANCE * __ptr64) __ptr64
?StopInstanceProcs@IIS_SERVICE@@UEAAXPEAVIIS_SERVER_INSTANCE@@@Z
; public: void __cdecl IIS_SSL_INFO::Unlock(void) __ptr64
?Unlock@IIS_SSL_INFO@@QEAAXXZ
; 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
; private: int __cdecl IIS_SERVER_CERT::UseProgrammaticPINEntry(class MB * __ptr64) __ptr64
?UseProgrammaticPINEntry@IIS_SERVER_CERT@@AEAAHPEAVMB@@@Z
; public: int __cdecl TS_OPEN_FILE_INFO::WeakETag(void)const  __ptr64
?WeakETag@TS_OPEN_FILE_INFO@@QEBAHXZ
; int __cdecl uudecode(char * __ptr64,class BUFFER * __ptr64,unsigned long * __ptr64,int)
?uudecode@@YAHPEADPEAVBUFFER@@PEAKH@Z
; int __cdecl uuencode(unsigned char * __ptr64,unsigned long,class BUFFER * __ptr64,int)
?uuencode@@YAHPEAEKPEAVBUFFER@@H@Z
