; 
; Exports of file INFOCOMM.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY INFOCOMM.dll
EXPORTS
; public: __cdecl COMMON_METADATA::COMMON_METADATA(void) __ptr64
??0COMMON_METADATA@@QEAA@XZ
; 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_CTL::IIS_CTL(struct IMDCOM * __ptr64,char * __ptr64) __ptr64
??0IIS_CTL@@QEAA@PEAUIMDCOM@@PEAD@Z
; public: __cdecl IIS_SERVER_BINDING::IIS_SERVER_BINDING(unsigned long,unsigned short,char const * __ptr64,class IIS_ENDPOINT * __ptr64) __ptr64
??0IIS_SERVER_BINDING@@QEAA@KGPEBDPEAVIIS_ENDPOINT@@@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_SERVER_CERT::IIS_SERVER_CERT(struct IMDCOM * __ptr64,char * __ptr64) __ptr64
??0IIS_SERVER_CERT@@QEAA@PEAUIMDCOM@@PEAD@Z
; public: __cdecl IIS_SERVER_INSTANCE::IIS_SERVER_INSTANCE(class IIS_SERVICE * __ptr64,unsigned long,unsigned short,char const * __ptr64,unsigned short * __ptr64,unsigned short * __ptr64,int) __ptr64
??0IIS_SERVER_INSTANCE@@QEAA@PEAVIIS_SERVICE@@KGPEBDPEAG2H@Z
; public: __cdecl IIS_SERVICE::IIS_SERVICE(class IIS_SERVICE const & __ptr64) __ptr64
??0IIS_SERVICE@@QEAA@AEBV0@@Z
; public: __cdecl IIS_SERVICE::IIS_SERVICE(char const * __ptr64,char const * __ptr64,char const * __ptr64,unsigned long,unsigned __int64,int,unsigned long,void (__cdecl*)(unsigned __int64,struct sockaddr_in * __ptr64,void * __ptr64,void * __ptr64),void (__cdecl*)(void * __ptr64,unsigned long,unsigned long,struct _OVERLAPPED * __ptr64),void (__cdecl*)(void * __ptr64,unsigned long,unsigned long,struct _OVERLAPPED * __ptr64)) __ptr64
??0IIS_SERVICE@@QEAA@PEBD00K_KHKP6AX1PEAUsockaddr_in@@PEAX3@ZP6AX3KKPEAU_OVERLAPPED@@@Z6@Z
; public: __cdecl IIS_SSL_INFO::IIS_SSL_INFO(class IIS_SSL_INFO const & __ptr64) __ptr64
??0IIS_SSL_INFO@@QEAA@AEBV0@@Z
; public: __cdecl IIS_SSL_INFO::IIS_SSL_INFO(char * __ptr64,struct IMDCOM * __ptr64) __ptr64
??0IIS_SSL_INFO@@QEAA@PEADPEAUIMDCOM@@@Z
; public: __cdecl IIS_VROOT_TABLE::IIS_VROOT_TABLE(void) __ptr64
??0IIS_VROOT_TABLE@@QEAA@XZ
; public: __cdecl INET_PARSER::INET_PARSER(char * __ptr64) __ptr64
??0INET_PARSER@@QEAA@PEAD@Z
; public: __cdecl LOGGING::LOGGING(class LOGGING const & __ptr64) __ptr64
??0LOGGING@@QEAA@AEBV0@@Z
; public: __cdecl LOGGING::LOGGING(void) __ptr64
??0LOGGING@@QEAA@XZ
; public: __cdecl MB::MB(struct IMDCOM * __ptr64) __ptr64
??0MB@@QEAA@PEAUIMDCOM@@@Z
; public: __cdecl MIME_MAP::MIME_MAP(void) __ptr64
??0MIME_MAP@@QEAA@XZ
; public: __cdecl ODBC_CONNECTION::ODBC_CONNECTION(void) __ptr64
??0ODBC_CONNECTION@@QEAA@XZ
; public: __cdecl ODBC_PARAMETER::ODBC_PARAMETER(unsigned short,short,short,short,unsigned long) __ptr64
??0ODBC_PARAMETER@@QEAA@GFFFK@Z
; public: __cdecl RefBlob::RefBlob(void) __ptr64
??0RefBlob@@QEAA@XZ
; public: __cdecl STORE_CHANGE_NOTIFIER::STORE_CHANGE_NOTIFIER(void) __ptr64
??0STORE_CHANGE_NOTIFIER@@QEAA@XZ
; public: __cdecl TCP_AUTHENT::TCP_AUTHENT(unsigned long) __ptr64
??0TCP_AUTHENT@@QEAA@K@Z
; public: virtual __cdecl COMMON_METADATA::~COMMON_METADATA(void) __ptr64
??1COMMON_METADATA@@UEAA@XZ
; 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: __cdecl IIS_CTL::~IIS_CTL(void) __ptr64
??1IIS_CTL@@QEAA@XZ
; public: __cdecl IIS_ENDPOINT::~IIS_ENDPOINT(void) __ptr64
??1IIS_ENDPOINT@@QEAA@XZ
; public: __cdecl IIS_SERVER_BINDING::~IIS_SERVER_BINDING(void) __ptr64
??1IIS_SERVER_BINDING@@QEAA@XZ
; public: __cdecl IIS_SERVER_CERT::~IIS_SERVER_CERT(void) __ptr64
??1IIS_SERVER_CERT@@QEAA@XZ
; public: virtual __cdecl IIS_SERVER_INSTANCE::~IIS_SERVER_INSTANCE(void) __ptr64
??1IIS_SERVER_INSTANCE@@UEAA@XZ
; protected: virtual __cdecl IIS_SERVICE::~IIS_SERVICE(void) __ptr64
??1IIS_SERVICE@@MEAA@XZ
; public: __cdecl IIS_SSL_INFO::~IIS_SSL_INFO(void) __ptr64
??1IIS_SSL_INFO@@QEAA@XZ
; public: __cdecl IIS_VROOT_TABLE::~IIS_VROOT_TABLE(void) __ptr64
??1IIS_VROOT_TABLE@@QEAA@XZ
; public: __cdecl INET_PARSER::~INET_PARSER(void) __ptr64
??1INET_PARSER@@QEAA@XZ
; public: __cdecl LOGGING::~LOGGING(void) __ptr64
??1LOGGING@@QEAA@XZ
; public: __cdecl MB::~MB(void) __ptr64
??1MB@@QEAA@XZ
; public: __cdecl ODBC_CONNECTION::~ODBC_CONNECTION(void) __ptr64
??1ODBC_CONNECTION@@QEAA@XZ
; public: __cdecl ODBC_PARAMETER::~ODBC_PARAMETER(void) __ptr64
??1ODBC_PARAMETER@@QEAA@XZ
; public: __cdecl ODBC_STATEMENT::~ODBC_STATEMENT(void) __ptr64
??1ODBC_STATEMENT@@QEAA@XZ
; public: __cdecl RefBlob::~RefBlob(void) __ptr64
??1RefBlob@@QEAA@XZ
; public: __cdecl STORE_CHANGE_NOTIFIER::~STORE_CHANGE_NOTIFIER(void) __ptr64
??1STORE_CHANGE_NOTIFIER@@QEAA@XZ
; public: __cdecl TCP_AUTHENT::~TCP_AUTHENT(void) __ptr64
??1TCP_AUTHENT@@QEAA@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_SERVER_INSTANCE::`vftable'
??_7IIS_SERVER_INSTANCE@@6B@
; const  IIS_SERVICE::`vftable'
??_7IIS_SERVICE@@6B@
; public: int __cdecl TS_OPEN_FILE_INFO::AccessCheck(void * __ptr64,int) __ptr64
?AccessCheck@TS_OPEN_FILE_INFO@@QEAAHPEAXH@Z
; public: void __cdecl IIS_SERVER_INSTANCE::AcquireFastLock(void) __ptr64
?AcquireFastLock@IIS_SERVER_INSTANCE@@QEAAXXZ
; private: static void __cdecl IIS_SERVICE::AcquireGlobalLock(void)
?AcquireGlobalLock@IIS_SERVICE@@CAXXZ
; public: void __cdecl IIS_SERVICE::AcquireServiceLock(int) __ptr64
?AcquireServiceLock@IIS_SERVICE@@QEAAXH@Z
; private: void __cdecl LOGGING::ActOnChange(void) __ptr64
?ActOnChange@LOGGING@@AEAAXXZ
; public: int __cdecl LOGGING::ActivateLogging(char const * __ptr64,unsigned long,char const * __ptr64,void * __ptr64) __ptr64
?ActivateLogging@LOGGING@@QEAAHPEBDK0PEAX@Z
; protected: int __cdecl IIS_SERVICE::AddInstanceInfoHelper(class IIS_SERVER_INSTANCE * __ptr64) __ptr64
?AddInstanceInfoHelper@IIS_SERVICE@@IEAAHPEAVIIS_SERVER_INSTANCE@@@Z
; private: int __cdecl MIME_MAP::AddMimeMapEntry(class MIME_MAP_ENTRY * __ptr64) __ptr64
?AddMimeMapEntry@MIME_MAP@@AEAAHPEAVMIME_MAP_ENTRY@@@Z
; public: int __cdecl MB::AddObject(char const * __ptr64) __ptr64
?AddObject@MB@@QEAAHPEBD@Z
; public: void __cdecl RefBlob::AddRef(void) __ptr64
?AddRef@RefBlob@@QEAAXXZ
; private: static void __cdecl IIS_VROOT_TABLE::AddRefRecord(void const * __ptr64,int)
?AddRefRecord@IIS_VROOT_TABLE@@CAXPEBXH@Z
; public: int __cdecl IIS_SERVICE::AddServerInstance(class IIS_SERVER_INSTANCE * __ptr64) __ptr64
?AddServerInstance@IIS_SERVICE@@QEAAHPEAVIIS_SERVER_INSTANCE@@@Z
; public: int __cdecl IIS_VROOT_TABLE::AddVirtualRoot(char * __ptr64,char * __ptr64,unsigned long,char * __ptr64,void * __ptr64,unsigned long,int) __ptr64
?AddVirtualRoot@IIS_VROOT_TABLE@@QEAAHPEAD0K0PEAXKH@Z
; public: void __cdecl IIS_SERVICE::AdvertiseServiceInformationInMB(void) __ptr64
?AdvertiseServiceInformationInMB@IIS_SERVICE@@QEAAXXZ
; public: class ODBC_STATEMENT * __ptr64 __cdecl ODBC_CONNECTION::AllocStatement(void) __ptr64
?AllocStatement@ODBC_CONNECTION@@QEAAPEAVODBC_STATEMENT@@XZ
; public: int __cdecl INET_PARSER::AppendToEOL(class STR * __ptr64,int) __ptr64
?AppendToEOL@INET_PARSER@@QEAAHPEAVSTR@@H@Z
; public: int __cdecl IIS_SERVICE::AssociateInstance(class IIS_SERVER_INSTANCE * __ptr64) __ptr64
?AssociateInstance@IIS_SERVICE@@QEAAHPEAVIIS_SERVER_INSTANCE@@@Z
; protected: char * __ptr64 __cdecl INET_PARSER::AuxEatNonWhite(char) __ptr64
?AuxEatNonWhite@INET_PARSER@@IEAAPEADD@Z
; protected: char * __ptr64 __cdecl INET_PARSER::AuxEatWhite(void) __ptr64
?AuxEatWhite@INET_PARSER@@IEAAPEADXZ
; protected: char * __ptr64 __cdecl INET_PARSER::AuxSkipTo(char) __ptr64
?AuxSkipTo@INET_PARSER@@IEAAPEADD@Z
; public: short __cdecl ODBC_PARAMETER::Bind(void * __ptr64) __ptr64
?Bind@ODBC_PARAMETER@@QEAAFPEAX@Z
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::BindInstance(void) __ptr64
?BindInstance@IIS_SERVER_INSTANCE@@QEAAKXZ
; public: int __cdecl ODBC_STATEMENT::BindParameter(class ODBC_PARAMETER * __ptr64) __ptr64
?BindParameter@ODBC_STATEMENT@@QEAAHPEAVODBC_PARAMETER@@@Z
; int __cdecl BuildAnonymousAcctDesc(class TCP_AUTHENT_INFO * __ptr64)
?BuildAnonymousAcctDesc@@YAHPEAVTCP_AUTHENT_INFO@@@Z
; public: int __cdecl COMMON_METADATA::BuildApplPhysicalPath(class MB * __ptr64,class STR * __ptr64)const  __ptr64
?BuildApplPhysicalPath@COMMON_METADATA@@QEBAHPEAVMB@@PEAVSTR@@@Z
; public: int __cdecl COMMON_METADATA::BuildPhysicalPath(char * __ptr64,class STR * __ptr64) __ptr64
?BuildPhysicalPath@COMMON_METADATA@@QEAAHPEADPEAVSTR@@@Z
; public: int __cdecl COMMON_METADATA::BuildPhysicalPathWithAltRoot(char * __ptr64,class STR * __ptr64,char const * __ptr64) __ptr64
?BuildPhysicalPathWithAltRoot@COMMON_METADATA@@QEAAHPEADPEAVSTR@@PEBD@Z
; public: int __cdecl IIS_SSL_INFO::CTLContainsCert(struct _CERT_CONTEXT const * __ptr64,int * __ptr64) __ptr64
?CTLContainsCert@IIS_SSL_INFO@@QEAAHPEBU_CERT_CONTEXT@@PEAH@Z
; private: static unsigned long __cdecl IIS_VROOT_TABLE::CalcKeyHash(unsigned __int64)
?CalcKeyHash@IIS_VROOT_TABLE@@CAK_K@Z
; public: virtual unsigned long __cdecl HASH_TABLE::CalculateHash(char const * __ptr64)const  __ptr64
?CalculateHash@HASH_TABLE@@UEBAKPEBD@Z
; public: int __cdecl IIS_SERVICE::CheckAndReference(void) __ptr64
?CheckAndReference@IIS_SERVICE@@QEAAHXZ
; private: int __cdecl IIS_SSL_INFO::CheckCAPIInfo(int * __ptr64,int * __ptr64,char * __ptr64,unsigned long * __ptr64,unsigned long) __ptr64
?CheckCAPIInfo@IIS_SSL_INFO@@AEAAHPEAH0PEADPEAKK@Z
; unsigned long __cdecl CheckIfShortFileName(unsigned char const * __ptr64,void * __ptr64,int * __ptr64)
?CheckIfShortFileName@@YAKPEBEPEAXPEAH@Z
; private: int __cdecl IIS_SSL_INFO::CheckSignature(void) __ptr64
?CheckSignature@IIS_SSL_INFO@@AEAAHXZ
; public: static void __cdecl IIS_SERVER_INSTANCE::Cleanup(void)
?Cleanup@IIS_SERVER_INSTANCE@@SAXXZ
; public: void __cdecl IIS_SERVER_INSTANCE::CleanupAfterConstructorFailure(void) __ptr64
?CleanupAfterConstructorFailure@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: static int __cdecl IIS_SERVICE::CleanupMetabaseComObject(void)
?CleanupMetabaseComObject@IIS_SERVICE@@SAHXZ
; public: static void __cdecl IIS_SERVICE::CleanupServiceInfo(void)
?CleanupServiceInfo@IIS_SERVICE@@SAXXZ
; public: static int __cdecl IIS_SERVICE::CleanupServiceRpc(void)
?CleanupServiceRpc@IIS_SERVICE@@SAHXZ
; public: unsigned long __cdecl IIS_SERVICE::CleanupSockets(void) __ptr64
?CleanupSockets@IIS_SERVICE@@QEAAKXZ
; public: void __cdecl MIME_MAP::CleanupThis(void) __ptr64
?CleanupThis@MIME_MAP@@QEAAXXZ
; public: void __cdecl TS_DIRECTORY_INFO::CleanupThis(void) __ptr64
?CleanupThis@TS_DIRECTORY_INFO@@QEAAXXZ
; public: int __cdecl IIS_SERVICE::ClearInstanceStatistics(unsigned long) __ptr64
?ClearInstanceStatistics@IIS_SERVICE@@QEAAHK@Z
; public: int __cdecl TCP_AUTHENT::ClearTextLogon(char * __ptr64,char * __ptr64,int * __ptr64,int * __ptr64,class IIS_SERVER_INSTANCE * __ptr64,class TCP_AUTHENT_INFO * __ptr64,char * __ptr64) __ptr64
?ClearTextLogon@TCP_AUTHENT@@QEAAHPEAD0PEAH1PEAVIIS_SERVER_INSTANCE@@PEAVTCP_AUTHENT_INFO@@0@Z
; public: int __cdecl MB::Close(void) __ptr64
?Close@MB@@QEAAHXZ
; public: int __cdecl ODBC_CONNECTION::Close(void) __ptr64
?Close@ODBC_CONNECTION@@QEAAHXZ
; public: void __cdecl TS_OPEN_FILE_INFO::CloseHandle(void) __ptr64
?CloseHandle@TS_OPEN_FILE_INFO@@QEAAXXZ
; public: virtual int __cdecl IIS_SERVER_INSTANCE::CloseInstance(void) __ptr64
?CloseInstance@IIS_SERVER_INSTANCE@@UEAAHXZ
; public: void __cdecl IIS_SERVICE::CloseService(void) __ptr64
?CloseService@IIS_SERVICE@@QEAAXXZ
; public: int __cdecl IIS_SERVER_BINDING::Compare(unsigned long,unsigned short,char const * __ptr64) __ptr64
?Compare@IIS_SERVER_BINDING@@QEAAHKGPEBD@Z
; public: unsigned long __cdecl IIS_SERVER_BINDING::Compare(char const * __ptr64,int * __ptr64) __ptr64
?Compare@IIS_SERVER_BINDING@@QEAAKPEBDPEAH@Z
; public: virtual unsigned long __cdecl IIS_SERVER_INSTANCE::ContinueInstance(void) __ptr64
?ContinueInstance@IIS_SERVER_INSTANCE@@UEAAKXZ
; private: void __cdecl IIS_SERVICE::ContinueService(void) __ptr64
?ContinueService@IIS_SERVICE@@AEAAXXZ
; public: int __cdecl TCP_AUTHENT::Converse(void * __ptr64,unsigned long,class BUFFER * __ptr64,unsigned long * __ptr64,int * __ptr64,class TCP_AUTHENT_INFO * __ptr64,char * __ptr64,char * __ptr64,char * __ptr64,class IIS_SERVER_INSTANCE * __ptr64) __ptr64
?Converse@TCP_AUTHENT@@QEAAHPEAXKPEAVBUFFER@@PEAKPEAHPEAVTCP_AUTHENT_INFO@@PEAD55PEAVIIS_SERVER_INSTANCE@@@Z
; public: int __cdecl TCP_AUTHENT::ConverseEx(struct _SecBufferDesc * __ptr64,class BUFFER * __ptr64,class BUFFER * __ptr64,unsigned long * __ptr64,int * __ptr64,class TCP_AUTHENT_INFO * __ptr64,char * __ptr64,char * __ptr64,char * __ptr64,class IIS_SERVER_INSTANCE * __ptr64) __ptr64
?ConverseEx@TCP_AUTHENT@@QEAAHPEAU_SecBufferDesc@@PEAVBUFFER@@1PEAKPEAHPEAVTCP_AUTHENT_INFO@@PEAD55PEAVIIS_SERVER_INSTANCE@@@Z
; public: int __cdecl INET_PARSER::CopyToEOL(class STR * __ptr64,int) __ptr64
?CopyToEOL@INET_PARSER@@QEAAHPEAVSTR@@H@Z
; public: int __cdecl INET_PARSER::CopyToken(class STR * __ptr64,int) __ptr64
?CopyToken@INET_PARSER@@QEAAHPEAVSTR@@H@Z
; public: int __cdecl ODBC_PARAMETER::CopyValue(unsigned long) __ptr64
?CopyValue@ODBC_PARAMETER@@QEAAHK@Z
; public: int __cdecl ODBC_PARAMETER::CopyValue(struct _SYSTEMTIME * __ptr64) __ptr64
?CopyValue@ODBC_PARAMETER@@QEAAHPEAU_SYSTEMTIME@@@Z
; public: int __cdecl ODBC_PARAMETER::CopyValue(void * __ptr64,long) __ptr64
?CopyValue@ODBC_PARAMETER@@QEAAHPEAXJ@Z
; public: int __cdecl ODBC_PARAMETER::CopyValue(char const * __ptr64) __ptr64
?CopyValue@ODBC_PARAMETER@@QEAAHPEBD@Z
; public: int __cdecl ODBC_PARAMETER::CopyValue(unsigned short const * __ptr64) __ptr64
?CopyValue@ODBC_PARAMETER@@QEAAHPEBG@Z
; private: int __cdecl MIME_MAP::CreateAndAddMimeMapEntry(char const * __ptr64,char const * __ptr64) __ptr64
?CreateAndAddMimeMapEntry@MIME_MAP@@AEAAHPEBD0@Z
; private: int __cdecl IIS_SSL_INFO::CreateEngineRootStore(void) __ptr64
?CreateEngineRootStore@IIS_SSL_INFO@@AEAAHXZ
; private: int __cdecl IIS_SSL_INFO::CreateEngineTrustStore(void) __ptr64
?CreateEngineTrustStore@IIS_SSL_INFO@@AEAAHXZ
; private: unsigned long __cdecl IIS_SERVER_INSTANCE::CreateNewBinding(unsigned long,unsigned short,char const * __ptr64,int,int,class IIS_SERVER_BINDING * __ptr64 * __ptr64) __ptr64
?CreateNewBinding@IIS_SERVER_INSTANCE@@AEAAKKGPEBDHHPEAPEAVIIS_SERVER_BINDING@@@Z
; public: static class IIS_SSL_INFO * __ptr64 __cdecl IIS_SSL_INFO::CreateSSLInfo(char * __ptr64,struct IMDCOM * __ptr64)
?CreateSSLInfo@IIS_SSL_INFO@@SAPEAV1@PEADPEAUIMDCOM@@@Z
; public: void __cdecl IIS_SERVER_INSTANCE::DecrementCurrentConnections(void) __ptr64
?DecrementCurrentConnections@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: static void __cdecl IIS_SERVICE::DeferredGlobalConfig(unsigned long,struct _MD_CHANGE_OBJECT_A * __ptr64 const)
?DeferredGlobalConfig@IIS_SERVICE@@SAXKQEAU_MD_CHANGE_OBJECT_A@@@Z
; public: static void __cdecl IIS_SERVICE::DeferredMDChangeNotify(unsigned long,struct _MD_CHANGE_OBJECT_A * __ptr64 const)
?DeferredMDChangeNotify@IIS_SERVICE@@SAXKQEAU_MD_CHANGE_OBJECT_A@@@Z
; public: unsigned long __cdecl IIS_SERVICE::DelayCurrentServiceCtrlOperation(unsigned long) __ptr64
?DelayCurrentServiceCtrlOperation@IIS_SERVICE@@QEAAKK@Z
; public: int __cdecl TCP_AUTHENT::DeleteCachedTokenOnReset(void) __ptr64
?DeleteCachedTokenOnReset@TCP_AUTHENT@@QEAAHXZ
; public: int __cdecl MB::DeleteData(char const * __ptr64,unsigned long,unsigned long,unsigned long) __ptr64
?DeleteData@MB@@QEAAHPEBDKKK@Z
; public: int __cdecl IIS_SERVICE::DeleteInstanceInfo(unsigned long) __ptr64
?DeleteInstanceInfo@IIS_SERVICE@@QEAAHK@Z
; public: int __cdecl MB::DeleteObject(char const * __ptr64) __ptr64
?DeleteObject@MB@@QEAAHPEBD@Z
; private: void __cdecl IIS_VROOT_TABLE::DeleteVRootEntry(void * __ptr64) __ptr64
?DeleteVRootEntry@IIS_VROOT_TABLE@@AEAAXPEAX@Z
; public: void __cdecl IIS_ENDPOINT::Dereference(void) __ptr64
?Dereference@IIS_ENDPOINT@@QEAAXXZ
; public: void __cdecl IIS_SERVER_INSTANCE::Dereference(void) __ptr64
?Dereference@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: void __cdecl IIS_SERVICE::Dereference(void) __ptr64
?Dereference@IIS_SERVICE@@QEAAXXZ
; public: virtual long __cdecl MIME_MAP_ENTRY::Dereference(void) __ptr64
?Dereference@MIME_MAP_ENTRY@@UEAAJXZ
; public: void __cdecl IIS_SERVICE::DestroyAllServerInstances(void) __ptr64
?DestroyAllServerInstances@IIS_SERVICE@@QEAAXXZ
; public: int __cdecl IIS_SERVICE::DisassociateInstance(class IIS_SERVER_INSTANCE * __ptr64) __ptr64
?DisassociateInstance@IIS_SERVICE@@QEAAHPEAVIIS_SERVER_INSTANCE@@@Z
; public: int __cdecl IIS_SERVICE::DisconnectInstanceUser(unsigned long,unsigned long) __ptr64
?DisconnectInstanceUser@IIS_SERVICE@@QEAAHKK@Z
; public: static unsigned long __cdecl ODBC_CONNECTION::DisplaySize(short,unsigned long)
?DisplaySize@ODBC_CONNECTION@@SAKFK@Z
; public: int __cdecl IIS_SERVER_INSTANCE::DoServerNameCheck(void)const  __ptr64
?DoServerNameCheck@IIS_SERVER_INSTANCE@@QEBAHXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::DoStartInstance(void) __ptr64
?DoStartInstance@IIS_SERVER_INSTANCE@@QEAAKXZ
; 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: int __cdecl TCP_AUTHENT::EnumAuthPackages(class BUFFER * __ptr64) __ptr64
?EnumAuthPackages@TCP_AUTHENT@@QEAAHPEAVBUFFER@@@Z
; public: int __cdecl MB::EnumObjects(char const * __ptr64,char * __ptr64,unsigned long) __ptr64
?EnumObjects@MB@@QEAAHPEBDPEADK@Z
; public: int __cdecl IIS_SERVICE::EnumServiceInstances(void * __ptr64,void * __ptr64,int (__cdecl*)(void * __ptr64,void * __ptr64,class IIS_SERVER_INSTANCE * __ptr64)) __ptr64
?EnumServiceInstances@IIS_SERVICE@@QEAAHPEAX0P6AH00PEAVIIS_SERVER_INSTANCE@@@Z@Z
; public: int __cdecl IIS_SERVICE::EnumerateInstanceUsers(unsigned long,unsigned long * __ptr64,char * __ptr64 * __ptr64) __ptr64
?EnumerateInstanceUsers@IIS_SERVICE@@QEAAHKPEAKPEAPEAD@Z
; private: static bool __cdecl IIS_VROOT_TABLE::EqualKeys(unsigned __int64,unsigned __int64)
?EqualKeys@IIS_VROOT_TABLE@@CA_N_K0@Z
; public: int __cdecl ODBC_STATEMENT::ExecDirect(char const * __ptr64,unsigned long) __ptr64
?ExecDirect@ODBC_STATEMENT@@QEAAHPEBDK@Z
; public: int __cdecl ODBC_STATEMENT::ExecDirect(unsigned short const * __ptr64,unsigned long) __ptr64
?ExecDirect@ODBC_STATEMENT@@QEAAHPEBGK@Z
; public: int __cdecl ODBC_STATEMENT::ExecuteStatement(void) __ptr64
?ExecuteStatement@ODBC_STATEMENT@@QEAAHXZ
; private: static unsigned __int64 const  __cdecl IIS_VROOT_TABLE::ExtractKey(void const * __ptr64)
?ExtractKey@IIS_VROOT_TABLE@@CA?B_KPEBX@Z
; public: int __cdecl TS_DIRECTORY_INFO::FilterFiles(int (__cdecl*)(struct _WIN32_FIND_DATAA const * __ptr64,void * __ptr64),void * __ptr64) __ptr64
?FilterFiles@TS_DIRECTORY_INFO@@QEAAHP6AHPEBU_WIN32_FIND_DATAA@@PEAX@Z1@Z
; public: class IIS_ENDPOINT * __ptr64 __cdecl IIS_SERVICE::FindAndReferenceEndpoint(unsigned short,unsigned long,int,int,int) __ptr64
?FindAndReferenceEndpoint@IIS_SERVICE@@QEAAPEAVIIS_ENDPOINT@@GKHHH@Z
; public: class IIS_SERVER_INSTANCE * __ptr64 __cdecl IIS_ENDPOINT::FindAndReferenceInstance(char const * __ptr64,unsigned long,int * __ptr64) __ptr64
?FindAndReferenceInstance@IIS_ENDPOINT@@QEAAPEAVIIS_SERVER_INSTANCE@@PEBDKPEAH@Z
; public: static class IIS_SERVICE * __ptr64 __cdecl IIS_SERVICE::FindFromServiceInfoList(unsigned long)
?FindFromServiceInfoList@IIS_SERVICE@@SAPEAV1@K@Z
; public: class IIS_SERVER_INSTANCE * __ptr64 __cdecl IIS_SERVICE::FindIISInstance(unsigned long) __ptr64
?FindIISInstance@IIS_SERVICE@@QEAAPEAVIIS_SERVER_INSTANCE@@K@Z
; private: int __cdecl IIS_SSL_INFO::FindTopOfChain(struct _CERT_CONTEXT const * __ptr64,struct _CERT_CONTEXT const * __ptr64 * __ptr64) __ptr64
?FindTopOfChain@IIS_SSL_INFO@@AEAAHPEBU_CERT_CONTEXT@@PEAPEBU2@@Z
; 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: void __cdecl ODBC_STATEMENT::FreeColumnMemory(void) __ptr64
?FreeColumnMemory@ODBC_STATEMENT@@QEAAXXZ
; public: void __cdecl COMMON_METADATA::FreeMdTag(unsigned long) __ptr64
?FreeMdTag@COMMON_METADATA@@QEAAXK@Z
; public: int __cdecl MB::GetAll(char const * __ptr64,unsigned long,unsigned long,class BUFFER * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64) __ptr64
?GetAll@MB@@QEAAHPEBDKKPEAVBUFFER@@PEAK2@Z
; public: class IIS_CTL * __ptr64 __cdecl IIS_SSL_INFO::GetCTL(void) __ptr64
?GetCTL@IIS_SSL_INFO@@QEAAPEAVIIS_CTL@@XZ
; public: int __cdecl IIS_SSL_INFO::GetCertChainEngine(void * __ptr64 * __ptr64) __ptr64
?GetCertChainEngine@IIS_SSL_INFO@@QEAAHPEAPEAX@Z
; public: class IIS_SERVER_CERT * __ptr64 __cdecl IIS_SSL_INFO::GetCertificate(void) __ptr64
?GetCertificate@IIS_SSL_INFO@@QEAAPEAVIIS_SERVER_CERT@@XZ
; public: int __cdecl TCP_AUTHENT::GetClientCertBlob(unsigned long,unsigned long * __ptr64,unsigned char * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64) __ptr64
?GetClientCertBlob@TCP_AUTHENT@@QEAAHKPEAKPEAE00@Z
; public: int __cdecl IIS_SERVER_INSTANCE::GetCommonConfig(char * __ptr64,unsigned long) __ptr64
?GetCommonConfig@IIS_SERVER_INSTANCE@@QEAAHPEADK@Z
; public: unsigned long __cdecl LOGGING::GetConfig(struct _INETLOG_CONFIGURATIONA * __ptr64) __ptr64
?GetConfig@LOGGING@@QEAAKPEAU_INETLOG_CONFIGURATIONA@@@Z
; public: int __cdecl IIS_CTL::GetContainedCertificates(struct _CERT_CONTEXT const * __ptr64 * __ptr64 * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64) __ptr64
?GetContainedCertificates@IIS_CTL@@QEAAHPEAPEAPEBU_CERT_CONTEXT@@PEAK1@Z
; public: int __cdecl MB::GetData(char const * __ptr64,unsigned long,unsigned long,unsigned long,void * __ptr64,unsigned long * __ptr64,unsigned long) __ptr64
?GetData@MB@@QEAAHPEBDKKKPEAXPEAKK@Z
; public: int __cdecl MB::GetDataPaths(char const * __ptr64,unsigned long,unsigned long,class BUFFER * __ptr64) __ptr64
?GetDataPaths@MB@@QEAAHPEBDKKPEAVBUFFER@@@Z
; public: int __cdecl MB::GetDataSetNumber(char const * __ptr64,unsigned long * __ptr64) __ptr64
?GetDataSetNumber@MB@@QEAAHPEBDPEAK@Z
; public: int __cdecl TS_DIRECTORY_INFO::GetDirectoryListingA(char const * __ptr64,void * __ptr64) __ptr64
?GetDirectoryListingA@TS_DIRECTORY_INFO@@QEAAHPEBDPEAX@Z
; public: virtual int __cdecl IIS_SERVICE::GetGlobalStatistics(unsigned long,char * __ptr64 * __ptr64) __ptr64
?GetGlobalStatistics@IIS_SERVICE@@UEAAHKPEAPEAD@Z
; public: int __cdecl ODBC_CONNECTION::GetInfo(unsigned long,void * __ptr64,unsigned long,unsigned long * __ptr64) __ptr64
?GetInfo@ODBC_CONNECTION@@QEAAHKPEAXKPEAK@Z
; private: int __cdecl IIS_SERVICE::GetInstanceConfiguration(unsigned long,unsigned long,int,unsigned long * __ptr64,struct _INET_INFO_CONFIG_INFO * __ptr64 * __ptr64) __ptr64
?GetInstanceConfiguration@IIS_SERVICE@@AEAAHKKHPEAKPEAPEAU_INET_INFO_CONFIG_INFO@@@Z
; public: unsigned long __cdecl TSVC_CACHE::GetInstanceId(void)const  __ptr64
?GetInstanceId@TSVC_CACHE@@QEBAKXZ
; public: int __cdecl IIS_SERVICE::GetInstanceStatistics(unsigned long,unsigned long,char * __ptr64 * __ptr64) __ptr64
?GetInstanceStatistics@IIS_SERVICE@@QEAAHKKPEAPEAD@Z
; public: int __cdecl ODBC_CONNECTION::GetLastErrorText(class STR * __ptr64,void * __ptr64,short)const  __ptr64
?GetLastErrorText@ODBC_CONNECTION@@QEBAHPEAVSTR@@PEAXF@Z
; public: int __cdecl ODBC_CONNECTION::GetLastErrorTextAsHtml(class STR * __ptr64,void * __ptr64,short)const  __ptr64
?GetLastErrorTextAsHtml@ODBC_CONNECTION@@QEBAHPEAVSTR@@PEAXF@Z
; public: void __cdecl IIS_SERVICE::GetMDInstancePath(unsigned long,char * __ptr64) __ptr64
?GetMDInstancePath@IIS_SERVICE@@QEAAXKPEAD@Z
; public: void * __ptr64 __cdecl IIS_CTL::GetMemoryStore(void) __ptr64
?GetMemoryStore@IIS_CTL@@QEAAPEAXXZ
; public: int __cdecl MB::GetMultisz(char const * __ptr64,unsigned long,unsigned long,class MULTISZ * __ptr64,unsigned long) __ptr64
?GetMultisz@MB@@QEAAHPEBDKKPEAVMULTISZ@@K@Z
; public: unsigned long __cdecl IIS_SERVICE::GetNewInstanceId(void) __ptr64
?GetNewInstanceId@IIS_SERVICE@@QEAAKXZ
; private: int __cdecl IIS_SSL_INFO::GetRootStoreCertificates(struct _CERT_CONTEXT const * __ptr64 * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?GetRootStoreCertificates@IIS_SSL_INFO@@AEAAHPEAPEAPEBU_CERT_CONTEXT@@PEAK@Z
; public: void * __ptr64 __cdecl TSVC_CACHE::GetServerInstance(void)const  __ptr64
?GetServerInstance@TSVC_CACHE@@QEBAPEAXXZ
; public: static int __cdecl IIS_SERVICE::GetServiceAdminInfo(unsigned long,unsigned long,unsigned long,int,unsigned long * __ptr64,struct _INET_INFO_CONFIG_INFO * __ptr64 * __ptr64)
?GetServiceAdminInfo@IIS_SERVICE@@SAHKKKHPEAKPEAPEAU_INET_INFO_CONFIG_INFO@@@Z
; 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: static int __cdecl IIS_SERVICE::GetServiceSiteInfo(unsigned long,struct _INET_INFO_SITE_LIST * __ptr64 * __ptr64)
?GetServiceSiteInfo@IIS_SERVICE@@SAHKPEAPEAU_INET_INFO_SITE_LIST@@@Z
; public: int __cdecl MB::GetStr(char const * __ptr64,unsigned long,unsigned long,class STR * __ptr64,unsigned long,char const * __ptr64) __ptr64
?GetStr@MB@@QEAAHPEBDKKPEAVSTR@@K0@Z
; public: int __cdecl MB::GetSystemChangeNumber(unsigned long * __ptr64) __ptr64
?GetSystemChangeNumber@MB@@QEAAHPEAK@Z
; public: class CACHED_TOKEN * __ptr64 __cdecl TCP_AUTHENT::GetToken(void)const  __ptr64
?GetToken@TCP_AUTHENT@@QEBAPEAVCACHED_TOKEN@@XZ
; public: int __cdecl IIS_SSL_INFO::GetTrustedIssuerCerts(struct _CERT_CONTEXT const * __ptr64 * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?GetTrustedIssuerCerts@IIS_SSL_INFO@@QEAAHPEAPEAPEBU_CERT_CONTEXT@@PEAK@Z
; public: int __cdecl IIS_SSL_INFO::GetTrustedIssuerStore(void * __ptr64 * __ptr64) __ptr64
?GetTrustedIssuerStore@IIS_SSL_INFO@@QEAAHPEAPEAX@Z
; 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
; private: int __cdecl IIS_SSL_INFO::HasCTL(int * __ptr64,int * __ptr64) __ptr64
?HasCTL@IIS_SSL_INFO@@AEAAHPEAH0@Z
; private: int __cdecl IIS_SSL_INFO::HasCertificate(int * __ptr64,int * __ptr64) __ptr64
?HasCertificate@IIS_SSL_INFO@@AEAAHPEAH0@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
; int __cdecl IISDuplicateTokenEx(void * __ptr64,unsigned long,struct _SECURITY_ATTRIBUTES * __ptr64,enum _SECURITY_IMPERSONATION_LEVEL,enum _TOKEN_TYPE,void * __ptr64 * __ptr64)
?IISDuplicateTokenEx@@YAHPEAXKPEAU_SECURITY_ATTRIBUTES@@W4_SECURITY_IMPERSONATION_LEVEL@@W4_TOKEN_TYPE@@PEAPEAX@Z
; public: int __cdecl TCP_AUTHENT::Impersonate(void) __ptr64
?Impersonate@TCP_AUTHENT@@QEAAHXZ
; public: void __cdecl IIS_SERVER_INSTANCE::IncrementCurrentConnections(void) __ptr64
?IncrementCurrentConnections@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: void __cdecl IIS_SERVICE::IndicateShutdownComplete(void) __ptr64
?IndicateShutdownComplete@IIS_SERVICE@@QEAAXXZ
; public: int __cdecl RefBlob::Init(void * __ptr64,unsigned long,void (__cdecl*)(void * __ptr64)) __ptr64
?Init@RefBlob@@QEAAHPEAXKP6AX0@Z@Z
; private: unsigned long __cdecl MIME_MAP::InitFromMetabase(void) __ptr64
?InitFromMetabase@MIME_MAP@@AEAAKXZ
; private: unsigned long __cdecl MIME_MAP::InitFromRegistryChicagoStyle(void) __ptr64
?InitFromRegistryChicagoStyle@MIME_MAP@@AEAAKXZ
; public: unsigned long __cdecl MIME_MAP::InitMimeMap(void) __ptr64
?InitMimeMap@MIME_MAP@@QEAAKXZ
; public: static int __cdecl IIS_SERVER_INSTANCE::Initialize(void)
?Initialize@IIS_SERVER_INSTANCE@@SAHXZ
; public: static unsigned long __cdecl LOGGING::Initialize(void)
?Initialize@LOGGING@@SAKXZ
; public: unsigned long __cdecl IIS_SERVICE::InitializeDiscovery(void) __ptr64
?InitializeDiscovery@IIS_SERVICE@@QEAAKXZ
; public: static int __cdecl IIS_SERVICE::InitializeMetabaseComObject(void)
?InitializeMetabaseComObject@IIS_SERVICE@@SAHXZ
; public: static int __cdecl IIS_SERVICE::InitializeServiceInfo(void)
?InitializeServiceInfo@IIS_SERVICE@@SAHXZ
; public: static int __cdecl IIS_SERVICE::InitializeServiceRpc(char const * __ptr64,void * __ptr64)
?InitializeServiceRpc@IIS_SERVICE@@SAHPEBDPEAX@Z
; public: unsigned long __cdecl IIS_SERVICE::InitializeSockets(void) __ptr64
?InitializeSockets@IIS_SERVICE@@QEAAKXZ
; private: void __cdecl IIS_SERVICE::InterrogateService(void) __ptr64
?InterrogateService@IIS_SERVICE@@AEAAXXZ
; 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
; private: int __cdecl IIS_SERVER_INSTANCE::IsBindingInMultiSz(class IIS_SERVER_BINDING * __ptr64,class MULTISZ const & __ptr64) __ptr64
?IsBindingInMultiSz@IIS_SERVER_INSTANCE@@AEAAHPEAVIIS_SERVER_BINDING@@AEBVMULTISZ@@@Z
; 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 TCP_AUTHENT::IsForwardable(void)const  __ptr64
?IsForwardable@TCP_AUTHENT@@QEBAHXZ
; public: int __cdecl TCP_AUTHENT::IsGuest(int) __ptr64
?IsGuest@TCP_AUTHENT@@QEAAHH@Z
; private: int __cdecl IIS_SERVER_INSTANCE::IsInCurrentBindingList(struct _LIST_ENTRY * __ptr64,unsigned long,unsigned short,char const * __ptr64) __ptr64
?IsInCurrentBindingList@IIS_SERVER_INSTANCE@@AEAAHPEAU_LIST_ENTRY@@KGPEBD@Z
; 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
IsNameInRegExpressionA
; public: int __cdecl LOGGING::IsRequiredExtraLoggingFields(void) __ptr64
?IsRequiredExtraLoggingFields@LOGGING@@QEAAHXZ
; public: int __cdecl IIS_SERVICE::IsService(void) __ptr64
?IsService@IIS_SERVICE@@QEAAHXZ
; public: int __cdecl TCP_AUTHENT::IsSslCertPresent(void) __ptr64
?IsSslCertPresent@TCP_AUTHENT@@QEAAHXZ
; public: int __cdecl STORE_CHANGE_NOTIFIER::IsStoreRegisteredForChange(char * __ptr64,void (__cdecl*)(void * __ptr64),void * __ptr64) __ptr64
?IsStoreRegisteredForChange@STORE_CHANGE_NOTIFIER@@QEAAHPEADP6AXPEAX@Z1@Z
; public: int __cdecl IIS_SERVICE::IsSystemDBCS(void)const  __ptr64
?IsSystemDBCS@IIS_SERVICE@@QEBAHXZ
; private: int __cdecl IIS_SSL_INFO::IsTrustedRoot(struct _CERT_CONTEXT const * __ptr64,int * __ptr64) __ptr64
?IsTrustedRoot@IIS_SSL_INFO@@AEAAHPEBU_CERT_CONTEXT@@PEAH@Z
; public: int __cdecl HASH_TABLE::IsValid(void)const  __ptr64
?IsValid@HASH_TABLE@@QEBAHXZ
; public: int __cdecl IIS_CTL::IsValid(void) __ptr64
?IsValid@IIS_CTL@@QEAAHXZ
; public: int __cdecl IIS_SERVER_CERT::IsValid(void) __ptr64
?IsValid@IIS_SERVER_CERT@@QEAAHXZ
; public: int __cdecl ODBC_CONNECTION::IsValid(void)const  __ptr64
?IsValid@ODBC_CONNECTION@@QEBAHXZ
; public: int __cdecl ODBC_STATEMENT::IsValid(void)const  __ptr64
?IsValid@ODBC_STATEMENT@@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: int __cdecl IIS_SERVICE::LoadStr(class STR & __ptr64,unsigned long,int)const  __ptr64
?LoadStr@IIS_SERVICE@@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: unsigned long __cdecl LOGGING::LogCustomInformation(unsigned long,struct _CUSTOM_LOG_DATA * __ptr64,char * __ptr64) __ptr64
?LogCustomInformation@LOGGING@@QEAAKKPEAU_CUSTOM_LOG_DATA@@PEAD@Z
; public: void __cdecl IIS_SERVICE::LogEvent(unsigned long,unsigned short,char const * __ptr64 * __ptr64 const,unsigned long) __ptr64
?LogEvent@IIS_SERVICE@@QEAAXKGQEAPEBDK@Z
; public: unsigned long __cdecl LOGGING::LogInformation(struct _INETLOG_INFORMATION const * __ptr64) __ptr64
?LogInformation@LOGGING@@QEAAKPEBU_INETLOG_INFORMATION@@@Z
; int __cdecl LogonDigestUserA(void * __ptr64,unsigned long,void * __ptr64 * __ptr64)
?LogonDigestUserA@@YAHPEAXKPEAPEAX@Z
; int __cdecl LogonNetUserA(char * __ptr64,char * __ptr64,char * __ptr64,char * __ptr64,unsigned long,unsigned long,unsigned long,void * __ptr64 * __ptr64,union _LARGE_INTEGER * __ptr64)
?LogonNetUserA@@YAHPEAD000KKKPEAPEAXPEAT_LARGE_INTEGER@@@Z
; int __cdecl LogonNetUserW(unsigned short * __ptr64,unsigned short * __ptr64,char * __ptr64,unsigned short * __ptr64,unsigned long,unsigned long,unsigned long,void * __ptr64 * __ptr64,union _LARGE_INTEGER * __ptr64)
?LogonNetUserW@@YAHPEAG0PEAD0KKKPEAPEAXPEAT_LARGE_INTEGER@@@Z
; public: class HT_ELEMENT * __ptr64 __cdecl HASH_TABLE::Lookup(char const * __ptr64) __ptr64
?Lookup@HASH_TABLE@@QEAAPEAVHT_ELEMENT@@PEBD@Z
; public: class MIME_MAP_ENTRY const * __ptr64 __cdecl MIME_MAP::LookupMimeEntryForFileExt(char const * __ptr64) __ptr64
?LookupMimeEntryForFileExt@MIME_MAP@@QEAAPEBVMIME_MAP_ENTRY@@PEBD@Z
; public: unsigned long __cdecl MIME_MAP::LookupMimeEntryForMimeType(class STR const & __ptr64,class MIME_MAP_ENTRY const * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?LookupMimeEntryForMimeType@MIME_MAP@@QEAAKAEBVSTR@@PEAPEBVMIME_MAP_ENTRY@@PEAK@Z
; public: int __cdecl IIS_VROOT_TABLE::LookupVirtualRoot(char const * __ptr64,char * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64,void * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?LookupVirtualRoot@IIS_VROOT_TABLE@@QEAAHPEBDPEADPEAK222PEAPEAX2@Z
; public: virtual void __cdecl IIS_SERVER_INSTANCE::MDChangeNotify(struct _MD_CHANGE_OBJECT_A * __ptr64) __ptr64
?MDChangeNotify@IIS_SERVER_INSTANCE@@UEAAXPEAU_MD_CHANGE_OBJECT_A@@@Z
; protected: virtual void __cdecl IIS_SERVICE::MDChangeNotify(struct _MD_CHANGE_OBJECT_A * __ptr64) __ptr64
?MDChangeNotify@IIS_SERVICE@@MEAAXPEAU_MD_CHANGE_OBJECT_A@@@Z
; public: static void __cdecl IIS_SERVICE::MDChangeNotify(unsigned long,struct _MD_CHANGE_OBJECT_A * __ptr64 const)
?MDChangeNotify@IIS_SERVICE@@SAXKQEAU_MD_CHANGE_OBJECT_A@@@Z
; public: void __cdecl IIS_SERVER_INSTANCE::MDMirrorVirtualRoots(void) __ptr64
?MDMirrorVirtualRoots@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: void __cdecl TS_OPEN_FILE_INFO::MakeStrongETag(void) __ptr64
?MakeStrongETag@TS_OPEN_FILE_INFO@@QEAAXXZ
; public: int __cdecl ODBC_STATEMENT::MoreResults(int * __ptr64) __ptr64
?MoreResults@ODBC_STATEMENT@@QEAAHPEAH@Z
; public: int __cdecl IIS_SERVER_INSTANCE::MoveMDVroots2Registry(void) __ptr64
?MoveMDVroots2Registry@IIS_SERVER_INSTANCE@@QEAAHXZ
; public: int __cdecl IIS_SERVER_INSTANCE::MoveVrootFromRegToMD(void) __ptr64
?MoveVrootFromRegToMD@IIS_SERVER_INSTANCE@@QEAAHXZ
; int __cdecl NetUserCookieA(char * __ptr64,unsigned long,char * __ptr64,unsigned long)
?NetUserCookieA@@YAHPEADK0K@Z
; public: char * __ptr64 __cdecl INET_PARSER::NextItem(void) __ptr64
?NextItem@INET_PARSER@@QEAAPEADXZ
; public: char * __ptr64 __cdecl INET_PARSER::NextLine(void) __ptr64
?NextLine@INET_PARSER@@QEAAPEADXZ
; public: char * __ptr64 __cdecl INET_PARSER::NextParam(void) __ptr64
?NextParam@INET_PARSER@@QEAAPEADXZ
; public: char * __ptr64 __cdecl INET_PARSER::NextToken(char) __ptr64
?NextToken@INET_PARSER@@QEAAPEADD@Z
; public: char * __ptr64 __cdecl INET_PARSER::NextToken(void) __ptr64
?NextToken@INET_PARSER@@QEAAPEADXZ
; public: static void __cdecl STORE_CHANGE_NOTIFIER::NotifFncCaller(void * __ptr64,unsigned char)
?NotifFncCaller@STORE_CHANGE_NOTIFIER@@SAXPEAXE@Z
; public: int __cdecl LOGGING::NotifyChange(unsigned long) __ptr64
?NotifyChange@LOGGING@@QEAAHK@Z
; unsigned long __cdecl NullCloseLocator(struct _HMAPPER * __ptr64,unsigned __int64)
?NullCloseLocator@@YAKPEAU_HMAPPER@@_K@Z
; long __cdecl NullDeReferenceMapper(struct _HMAPPER * __ptr64)
?NullDeReferenceMapper@@YAJPEAU_HMAPPER@@@Z
; unsigned long __cdecl NullGetAccessToken(struct _HMAPPER * __ptr64,unsigned __int64,void * __ptr64 * __ptr64)
?NullGetAccessToken@@YAKPEAU_HMAPPER@@_KPEAPEAX@Z
; unsigned long __cdecl NullGetChallenge(struct _HMAPPER * __ptr64,unsigned char * __ptr64,unsigned long,unsigned char * __ptr64,unsigned long * __ptr64)
?NullGetChallenge@@YAKPEAU_HMAPPER@@PEAEK1PEAK@Z
; unsigned long __cdecl NullGetIssuerList(struct _HMAPPER * __ptr64,void * __ptr64,unsigned char * __ptr64,unsigned long * __ptr64)
?NullGetIssuerList@@YAKPEAU_HMAPPER@@PEAXPEAEPEAK@Z
; unsigned long __cdecl NullMapCredential(struct _HMAPPER * __ptr64,unsigned long,void const * __ptr64,void const * __ptr64,unsigned __int64 * __ptr64)
?NullMapCredential@@YAKPEAU_HMAPPER@@KPEBX1PEA_K@Z
; unsigned long __cdecl NullQueryMappedCredentialAttributes(struct _HMAPPER * __ptr64,unsigned __int64,unsigned long,void * __ptr64,unsigned long * __ptr64)
?NullQueryMappedCredentialAttributes@@YAKPEAU_HMAPPER@@_KKPEAXPEAK@Z
; long __cdecl NullReferenceMapper(struct _HMAPPER * __ptr64)
?NullReferenceMapper@@YAJPEAU_HMAPPER@@@Z
; public: int __cdecl MB::Open(unsigned long,char const * __ptr64,unsigned long) __ptr64
?Open@MB@@QEAAHKPEBDK@Z
; public: int __cdecl ODBC_CONNECTION::Open(char const * __ptr64,char const * __ptr64,char const * __ptr64) __ptr64
?Open@ODBC_CONNECTION@@QEAAHPEBD00@Z
; public: int __cdecl ODBC_CONNECTION::Open(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
?Open@ODBC_CONNECTION@@QEAAHPEBG00@Z
; public: int __cdecl TCP_AUTHENT::PackageSupportsEncoding(char * __ptr64) __ptr64
?PackageSupportsEncoding@TCP_AUTHENT@@QEAAHPEAD@Z
; public: static unsigned long __cdecl IIS_SERVER_BINDING::ParseDescriptor(char const * __ptr64,unsigned long * __ptr64,unsigned short * __ptr64,char const * __ptr64 * __ptr64)
?ParseDescriptor@IIS_SERVER_BINDING@@SAKPEBDPEAKPEAGPEAPEBD@Z
; public: virtual unsigned long __cdecl IIS_SERVER_INSTANCE::PauseInstance(void) __ptr64
?PauseInstance@IIS_SERVER_INSTANCE@@UEAAKXZ
; private: void __cdecl IIS_SERVICE::PauseService(void) __ptr64
?PauseService@IIS_SERVICE@@AEAAXXZ
; public: void __cdecl IIS_SERVER_INSTANCE::PdcHackVRReg2MD(void) __ptr64
?PdcHackVRReg2MD@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::PerformClusterModeChange(void) __ptr64
?PerformClusterModeChange@IIS_SERVER_INSTANCE@@QEAAKXZ
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::PerformStateChange(void) __ptr64
?PerformStateChange@IIS_SERVER_INSTANCE@@QEAAKXZ
; public: int __cdecl ODBC_STATEMENT::PrepareStatement(char const * __ptr64) __ptr64
?PrepareStatement@ODBC_STATEMENT@@QEAAHPEBD@Z
; public: int __cdecl ODBC_STATEMENT::PrepareStatement(unsigned short const * __ptr64) __ptr64
?PrepareStatement@ODBC_STATEMENT@@QEAAHPEBG@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: void __cdecl TS_OPEN_FILE_INFO::Print(void)const  __ptr64
?Print@TS_OPEN_FILE_INFO@@QEBAXXZ
; void __cdecl PrintIGatewayRequest(struct _IGATEWAY_REQUEST const * __ptr64)
?PrintIGatewayRequest@@YAXPEBU_IGATEWAY_REQUEST@@@Z
; 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: short __cdecl ODBC_PARAMETER::QueryCType(void)const  __ptr64
?QueryCType@ODBC_PARAMETER@@QEBAFXZ
; public: __int64 __cdecl ODBC_PARAMETER::QueryCbValue(void)const  __ptr64
?QueryCbValue@ODBC_PARAMETER@@QEBA_JXZ
; public: __int64 & __ptr64 __cdecl ODBC_PARAMETER::QueryCbValueRef(void) __ptr64
?QueryCbValueRef@ODBC_PARAMETER@@QEAAAEA_JXZ
; 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: int __cdecl IIS_SSL_INFO::QueryCertValidity(unsigned long * __ptr64) __ptr64
?QueryCertValidity@IIS_SSL_INFO@@QEAAHPEAK@Z
; public: class IIS_SERVER_CERT * __ptr64 __cdecl IIS_SSL_INFO::QueryCertificate(void) __ptr64
?QueryCertificate@IIS_SSL_INFO@@QEAAPEAVIIS_SERVER_CERT@@XZ
; public: int __cdecl TCP_AUTHENT::QueryCertificateFlags(unsigned long * __ptr64,int * __ptr64) __ptr64
?QueryCertificateFlags@TCP_AUTHENT@@QEAAHPEAKPEAH@Z
; public: int __cdecl TCP_AUTHENT::QueryCertificateIssuer(char * __ptr64,unsigned long,int * __ptr64) __ptr64
?QueryCertificateIssuer@TCP_AUTHENT@@QEAAHPEADKPEAH@Z
; public: int __cdecl TCP_AUTHENT::QueryCertificateSerialNumber(unsigned char * __ptr64 * __ptr64,unsigned long * __ptr64,int * __ptr64) __ptr64
?QueryCertificateSerialNumber@TCP_AUTHENT@@QEAAHPEAPEAEPEAKPEAH@Z
; public: int __cdecl TCP_AUTHENT::QueryCertificateSubject(char * __ptr64,unsigned long,int * __ptr64) __ptr64
?QueryCertificateSubject@TCP_AUTHENT@@QEAAHPEADKPEAH@Z
; public: int __cdecl ODBC_STATEMENT::QueryColNames(class STR * __ptr64 * __ptr64,unsigned long * __ptr64,unsigned long,int * __ptr64) __ptr64
?QueryColNames@ODBC_STATEMENT@@QEAAHPEAPEAVSTR@@PEAKKPEAH@Z
; 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: void * __ptr64 __cdecl TS_OPEN_FILE_INFO::QueryContext(void)const  __ptr64
?QueryContext@TS_OPEN_FILE_INFO@@QEBAPEAXXZ
; 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: int __cdecl TCP_AUTHENT::QueryEncryptionKeySize(unsigned long * __ptr64,int * __ptr64) __ptr64
?QueryEncryptionKeySize@TCP_AUTHENT@@QEAAHPEAKPEAH@Z
; public: int __cdecl TCP_AUTHENT::QueryEncryptionServerPrivateKeySize(unsigned long * __ptr64,int * __ptr64) __ptr64
?QueryEncryptionServerPrivateKeySize@TCP_AUTHENT@@QEAAHPEAKPEAH@Z
; public: class IIS_ENDPOINT * __ptr64 __cdecl IIS_SERVER_BINDING::QueryEndpoint(void) __ptr64
?QueryEndpoint@IIS_SERVER_BINDING@@QEAAPEAVIIS_ENDPOINT@@XZ
; public: short __cdecl ODBC_CONNECTION::QueryErrorCode(void)const  __ptr64
?QueryErrorCode@ODBC_CONNECTION@@QEBAFXZ
; public: short __cdecl ODBC_STATEMENT::QueryErrorCode(void)const  __ptr64
?QueryErrorCode@ODBC_STATEMENT@@QEBAFXZ
; public: class EVENT_LOG * __ptr64 __cdecl IIS_SERVICE::QueryEventLog(void) __ptr64
?QueryEventLog@IIS_SERVICE@@QEAAPEAVEVENT_LOG@@XZ
; public: int __cdecl TCP_AUTHENT::QueryExpiry(union _LARGE_INTEGER * __ptr64) __ptr64
?QueryExpiry@TCP_AUTHENT@@QEAAHPEAT_LARGE_INTEGER@@@Z
; public: char * __ptr64 __cdecl LOGGING::QueryExtraLoggingFields(void) __ptr64
?QueryExtraLoggingFields@LOGGING@@QEAAPEADXZ
; public: void * __ptr64 __cdecl TS_OPEN_FILE_INFO::QueryFileHandle(void) __ptr64
?QueryFileHandle@TS_OPEN_FILE_INFO@@QEAAPEAXXZ
; public: int __cdecl TCP_AUTHENT::QueryFullyQualifiedUserName(char * __ptr64,class STR * __ptr64,class IIS_SERVER_INSTANCE * __ptr64,class TCP_AUTHENT_INFO * __ptr64) __ptr64
?QueryFullyQualifiedUserName@TCP_AUTHENT@@QEAAHPEADPEAVSTR@@PEAVIIS_SERVER_INSTANCE@@PEAVTCP_AUTHENT_INFO@@@Z
; public: char const * __ptr64 __cdecl IIS_SERVER_BINDING::QueryHostName(void) __ptr64
?QueryHostName@IIS_SERVER_BINDING@@QEAAPEBDXZ
; public: void * __ptr64 __cdecl TCP_AUTHENT::QueryImpersonationToken(void) __ptr64
?QueryImpersonationToken@TCP_AUTHENT@@QEAAPEAXXZ
; public: static class ISRPC * __ptr64 __cdecl IIS_SERVICE::QueryInetInfoRpc(void)
?QueryInetInfoRpc@IIS_SERVICE@@SAPEAVISRPC@@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: unsigned long __cdecl IIS_SERVER_BINDING::QueryIpAddress(void) __ptr64
?QueryIpAddress@IIS_SERVER_BINDING@@QEAAKXZ
; public: unsigned short __cdecl IIS_SERVER_BINDING::QueryIpPort(void) __ptr64
?QueryIpPort@IIS_SERVER_BINDING@@QEAAGXZ
; 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: char * __ptr64 __cdecl INET_PARSER::QueryLine(void) __ptr64
?QueryLine@INET_PARSER@@QEAAPEADXZ
; 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: struct IUnknown * __ptr64 __cdecl IIS_SERVICE::QueryMDNseObject(void) __ptr64
?QueryMDNseObject@IIS_SERVICE@@QEAAPEAUIUnknown@@XZ
; public: static struct IUnknown * __ptr64 __cdecl IIS_SERVICE::QueryMDObject(void)
?QueryMDObject@IIS_SERVICE@@SAPEAUIUnknown@@XZ
; 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: __int64 __cdecl ODBC_PARAMETER::QueryMaxCbValue(void)const  __ptr64
?QueryMaxCbValue@ODBC_PARAMETER@@QEBA_JXZ
; 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: unsigned short __cdecl ODBC_PARAMETER::QueryParamNumber(void)const  __ptr64
?QueryParamNumber@ODBC_PARAMETER@@QEBAGXZ
; public: short __cdecl ODBC_PARAMETER::QueryParamType(void)const  __ptr64
?QueryParamType@ODBC_PARAMETER@@QEBAFXZ
; public: char * __ptr64 __cdecl INET_PARSER::QueryPos(void) __ptr64
?QueryPos@INET_PARSER@@QEAAPEADXZ
; public: unsigned long __cdecl ODBC_PARAMETER::QueryPrecision(void)const  __ptr64
?QueryPrecision@ODBC_PARAMETER@@QEBAKXZ
; public: void * __ptr64 __cdecl TCP_AUTHENT::QueryPrimaryToken(void) __ptr64
?QueryPrimaryToken@TCP_AUTHENT@@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: void * __ptr64 __cdecl RefBlob::QueryPtr(void) __ptr64
?QueryPtr@RefBlob@@QEAAPEAXXZ
; 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: int __cdecl ODBC_STATEMENT::QueryRowCount(__int64 * __ptr64) __ptr64
?QueryRowCount@ODBC_STATEMENT@@QEAAHPEA_J@Z
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::QuerySavedState(void)const  __ptr64
?QuerySavedState@IIS_SERVER_INSTANCE@@QEBAKXZ
; public: short __cdecl ODBC_PARAMETER::QueryScale(void)const  __ptr64
?QueryScale@ODBC_PARAMETER@@QEBAFXZ
; public: int __cdecl TCP_AUTHENT::QueryServerCertificateIssuer(char * __ptr64 * __ptr64,int * __ptr64) __ptr64
?QueryServerCertificateIssuer@TCP_AUTHENT@@QEAAHPEAPEADPEAH@Z
; public: int __cdecl TCP_AUTHENT::QueryServerCertificateSubject(char * __ptr64 * __ptr64,int * __ptr64) __ptr64
?QueryServerCertificateSubject@TCP_AUTHENT@@QEAAHPEAPEADPEAH@Z
; 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: int __cdecl IIS_CTL::QuerySignerCert(struct _CERT_CONTEXT const * __ptr64 * __ptr64) __ptr64
?QuerySignerCert@IIS_CTL@@QEAAHPEAPEBU_CERT_CONTEXT@@@Z
; int __cdecl QuerySingleAccessToken(void)
?QuerySingleAccessToken@@YAHXZ
; public: char const * __ptr64 __cdecl IIS_SERVER_INSTANCE::QuerySiteName(void)const  __ptr64
?QuerySiteName@IIS_SERVER_INSTANCE@@QEBAPEBDXZ
; public: unsigned long __cdecl RefBlob::QuerySize(void) __ptr64
?QuerySize@RefBlob@@QEAAKXZ
; 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: short __cdecl ODBC_PARAMETER::QuerySqlType(void)const  __ptr64
?QuerySqlType@ODBC_PARAMETER@@QEBAFXZ
; 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: char * __ptr64 __cdecl INET_PARSER::QueryToken(void) __ptr64
?QueryToken@INET_PARSER@@QEAAPEADXZ
; public: int __cdecl TCP_AUTHENT::QueryUserName(class STR * __ptr64,int) __ptr64
?QueryUserName@TCP_AUTHENT@@QEAAHPEAVSTR@@H@Z
; public: void * __ptr64 __cdecl ODBC_PARAMETER::QueryValue(void)const  __ptr64
?QueryValue@ODBC_PARAMETER@@QEBAPEAXXZ
; public: int __cdecl ODBC_STATEMENT::QueryValuesAsStr(class STR * __ptr64 * __ptr64,unsigned long * __ptr64 * __ptr64,int * __ptr64) __ptr64
?QueryValuesAsStr@ODBC_STATEMENT@@QEAAHPEAPEAVSTR@@PEAPEAKPEAH@Z
; 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: int __cdecl COMMON_METADATA::ReadMetaData(class IIS_SERVER_INSTANCE * __ptr64,class MB * __ptr64,char * __ptr64,struct _METADATA_ERROR_INFO * __ptr64) __ptr64
?ReadMetaData@COMMON_METADATA@@QEAAHPEAVIIS_SERVER_INSTANCE@@PEAVMB@@PEADPEAU_METADATA_ERROR_INFO@@@Z
; public: int __cdecl IIS_SERVICE::RecordInstanceStart(void) __ptr64
?RecordInstanceStart@IIS_SERVICE@@QEAAHXZ
; public: void __cdecl IIS_SERVICE::RecordInstanceStop(void) __ptr64
?RecordInstanceStop@IIS_SERVICE@@QEAAXXZ
; public: void __cdecl IIS_ENDPOINT::Reference(void) __ptr64
?Reference@IIS_ENDPOINT@@QEAAXXZ
; public: void __cdecl IIS_SERVER_INSTANCE::Reference(void) __ptr64
?Reference@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: unsigned long __cdecl IIS_SSL_INFO::Reference(void) __ptr64
?Reference@IIS_SSL_INFO@@QEAAKXZ
; public: virtual long __cdecl MIME_MAP_ENTRY::Reference(void) __ptr64
?Reference@MIME_MAP_ENTRY@@UEAAJXZ
; public: int __cdecl MB::ReferenceData(char const * __ptr64,unsigned long,unsigned long,unsigned long,void * __ptr64 * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64,unsigned long) __ptr64
?ReferenceData@MB@@QEAAHPEBDKKKPEAPEAXPEAK2K@Z
; public: int __cdecl IIS_SERVER_INSTANCE::RegReadCommonParams(int,int) __ptr64
?RegReadCommonParams@IIS_SERVER_INSTANCE@@QEAAHHH@Z
; public: int __cdecl STORE_CHANGE_NOTIFIER::RegisterStoreForChange(char * __ptr64,void * __ptr64,void (__cdecl*)(void * __ptr64),void * __ptr64) __ptr64
?RegisterStoreForChange@STORE_CHANGE_NOTIFIER@@QEAAHPEADPEAXP6AX1@Z1@Z
; public: static unsigned long __cdecl IIS_SSL_INFO::Release(void * __ptr64)
?Release@IIS_SSL_INFO@@SAKPEAX@Z
; public: void __cdecl RefBlob::Release(void) __ptr64
?Release@RefBlob@@QEAAXXZ
; public: void __cdecl IIS_SERVER_INSTANCE::ReleaseFastLock(void) __ptr64
?ReleaseFastLock@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: void __cdecl IIS_SSL_INFO::ReleaseFortezzaHandlers(void) __ptr64
?ReleaseFortezzaHandlers@IIS_SSL_INFO@@QEAAXXZ
; private: static void __cdecl IIS_SERVICE::ReleaseGlobalLock(void)
?ReleaseGlobalLock@IIS_SERVICE@@CAXXZ
; public: int __cdecl MB::ReleaseReferenceData(unsigned long) __ptr64
?ReleaseReferenceData@MB@@QEAAHK@Z
; public: void __cdecl STORE_CHANGE_NOTIFIER::ReleaseRegisteredStores(void) __ptr64
?ReleaseRegisteredStores@STORE_CHANGE_NOTIFIER@@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 IIS_SERVICE::RemoveServerInstance(class IIS_SERVER_INSTANCE * __ptr64) __ptr64
?RemoveServerInstance@IIS_SERVICE@@QEAAHPEAVIIS_SERVER_INSTANCE@@@Z
; public: int __cdecl IIS_VROOT_TABLE::RemoveVirtualRoot(char * __ptr64) __ptr64
?RemoveVirtualRoot@IIS_VROOT_TABLE@@QEAAHPEAD@Z
; public: int __cdecl IIS_VROOT_TABLE::RemoveVirtualRoots(void) __ptr64
?RemoveVirtualRoots@IIS_VROOT_TABLE@@QEAAHXZ
; private: unsigned long __cdecl IIS_SERVICE::ReportServiceStatus(void) __ptr64
?ReportServiceStatus@IIS_SERVICE@@AEAAKXZ
; public: int __cdecl TCP_AUTHENT::Reset(int) __ptr64
?Reset@TCP_AUTHENT@@QEAAHH@Z
; public: void __cdecl INET_PARSER::RestoreBuffer(void) __ptr64
?RestoreBuffer@INET_PARSER@@QEAAXXZ
; protected: void __cdecl INET_PARSER::RestoreLine(void) __ptr64
?RestoreLine@INET_PARSER@@IEAAXXZ
; protected: void __cdecl INET_PARSER::RestoreToken(void) __ptr64
?RestoreToken@INET_PARSER@@IEAAXXZ
; public: int __cdecl TS_OPEN_FILE_INFO::RetrieveHttpInfo(char * __ptr64,int * __ptr64) __ptr64
?RetrieveHttpInfo@TS_OPEN_FILE_INFO@@QEAAHPEADPEAH@Z
; private: int __cdecl IIS_SERVER_CERT::RetrievePINInfo(class MB * __ptr64,char * __ptr64 * __ptr64,char * __ptr64 * __ptr64,char * __ptr64 * __ptr64) __ptr64
?RetrievePINInfo@IIS_SERVER_CERT@@AEAAHPEAVMB@@PEAPEAD11@Z
; public: int __cdecl TCP_AUTHENT::RevertToSelf(void) __ptr64
?RevertToSelf@TCP_AUTHENT@@QEAAHXZ
; public: int __cdecl MB::Save(void) __ptr64
?Save@MB@@QEAAHXZ
; public: void __cdecl IIS_SERVER_INSTANCE::SaveServerState(void) __ptr64
?SaveServerState@IIS_SERVER_INSTANCE@@QEAAXXZ
; int __cdecl SelectMimeMappingForFileExt(class IIS_SERVICE * __ptr64 const,char const * __ptr64,class STR * __ptr64,class STR * __ptr64)
?SelectMimeMappingForFileExt@@YAHQEAVIIS_SERVICE@@PEBDPEAVSTR@@2@Z
; int __cdecl ServerAddressHasCAPIInfo(class MB * __ptr64,char * __ptr64,unsigned long * __ptr64,unsigned long)
?ServerAddressHasCAPIInfo@@YAHPEAVMB@@PEADPEAKK@Z
; public: void __cdecl IIS_SERVICE::ServiceCtrlHandler(unsigned long) __ptr64
?ServiceCtrlHandler@IIS_SERVICE@@QEAAXK@Z
; public: void __cdecl COMMON_METADATA::SetAccessPerms(unsigned long) __ptr64
?SetAccessPerms@COMMON_METADATA@@QEAAXK@Z
; public: int __cdecl TCP_AUTHENT::SetAccessToken(void * __ptr64,void * __ptr64) __ptr64
?SetAccessToken@TCP_AUTHENT@@QEAAHPEAX0@Z
; public: int __cdecl IIS_SERVER_INSTANCE::SetBandwidthThrottle(class MB * __ptr64) __ptr64
?SetBandwidthThrottle@IIS_SERVER_INSTANCE@@QEAAHPEAVMB@@@Z
; public: int __cdecl IIS_SERVER_INSTANCE::SetBandwidthThrottleMaxBlocked(class MB * __ptr64) __ptr64
?SetBandwidthThrottleMaxBlocked@IIS_SERVER_INSTANCE@@QEAAHPEAVMB@@@Z
; public: int __cdecl IIS_SERVER_INSTANCE::SetCommonConfig(struct _INET_INFO_CONFIG_INFO * __ptr64,int) __ptr64
?SetCommonConfig@IIS_SERVER_INSTANCE@@QEAAHPEAU_INET_INFO_CONFIG_INFO@@H@Z
; public: unsigned long __cdecl LOGGING::SetConfig(struct _INETLOG_CONFIGURATIONA * __ptr64) __ptr64
?SetConfig@LOGGING@@QEAAKPEAU_INETLOG_CONFIGURATIONA@@@Z
; public: int __cdecl ODBC_CONNECTION::SetConnectOption(unsigned short,unsigned long) __ptr64
?SetConnectOption@ODBC_CONNECTION@@QEAAHGK@Z
; public: int __cdecl TS_OPEN_FILE_INFO::SetContext(void * __ptr64,int (__cdecl*)(void * __ptr64)) __ptr64
?SetContext@TS_OPEN_FILE_INFO@@QEAAHPEAXP6AH0@Z@Z
; public: int __cdecl MB::SetData(char const * __ptr64,unsigned long,unsigned long,unsigned long,void * __ptr64,unsigned long,unsigned long) __ptr64
?SetData@MB@@QEAAHPEBDKKKPEAXKK@Z
; public: int __cdecl TS_OPEN_FILE_INFO::SetHttpInfo(char * __ptr64,int) __ptr64
?SetHttpInfo@TS_OPEN_FILE_INFO@@QEAAHPEADH@Z
; private: int __cdecl IIS_SERVICE::SetInstanceConfiguration(unsigned long,unsigned long,int,struct _INET_INFO_CONFIG_INFO * __ptr64) __ptr64
?SetInstanceConfiguration@IIS_SERVICE@@AEAAHKKHPEAU_INET_INFO_CONFIG_INFO@@@Z
; public: void __cdecl INET_PARSER::SetListMode(int) __ptr64
?SetListMode@INET_PARSER@@QEAAXH@Z
; public: void __cdecl TSVC_CACHE::SetParameters(unsigned long,unsigned long,void * __ptr64) __ptr64
?SetParameters@TSVC_CACHE@@QEAAXKKPEAX@Z
; public: void __cdecl INET_PARSER::SetPtr(char * __ptr64) __ptr64
?SetPtr@INET_PARSER@@QEAAXPEAD@Z
; public: int __cdecl TCP_AUTHENT::SetSecurityContextToken(struct _SecHandle * __ptr64,void * __ptr64,int (__cdecl*)(struct _SecHandle * __ptr64,void * __ptr64),void * __ptr64,class IIS_SSL_INFO * __ptr64) __ptr64
?SetSecurityContextToken@TCP_AUTHENT@@QEAAHPEAU_SecHandle@@PEAXP6AH01@Z1PEAVIIS_SSL_INFO@@@Z
; public: void __cdecl IIS_SERVER_INSTANCE::SetServerState(unsigned long,unsigned long) __ptr64
?SetServerState@IIS_SERVER_INSTANCE@@QEAAXKK@Z
; public: static int __cdecl IIS_SERVICE::SetServiceAdminInfo(unsigned long,unsigned long,unsigned long,int,struct _INET_INFO_CONFIG_INFO * __ptr64)
?SetServiceAdminInfo@IIS_SERVICE@@SAHKKKHPEAU_INET_INFO_CONFIG_INFO@@@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: int __cdecl TCP_AUTHENT::SetTargetName(char * __ptr64) __ptr64
?SetTargetName@TCP_AUTHENT@@QEAAHPEAD@Z
; public: int __cdecl ODBC_PARAMETER::SetValueBuffer(long,long) __ptr64
?SetValueBuffer@ODBC_PARAMETER@@QEAAHJJ@Z
; public: void __cdecl IIS_SERVER_INSTANCE::SetWin32Error(unsigned long) __ptr64
?SetWin32Error@IIS_SERVER_INSTANCE@@QEAAXK@Z
; public: void __cdecl IIS_SERVER_INSTANCE::SetZapRegKey(void) __ptr64
?SetZapRegKey@IIS_SERVER_INSTANCE@@QEAAXXZ
; public: int __cdecl LOGGING::ShutdownLogging(void) __ptr64
?ShutdownLogging@LOGGING@@QEAAHXZ
; public: unsigned long __cdecl IIS_SERVICE::ShutdownScheduleCallback(void) __ptr64
?ShutdownScheduleCallback@IIS_SERVICE@@QEAAKXZ
; public: int __cdecl IIS_SERVICE::ShutdownService(void) __ptr64
?ShutdownService@IIS_SERVICE@@QEAAHXZ
; public: char * __ptr64 __cdecl INET_PARSER::SkipTo(char) __ptr64
?SkipTo@INET_PARSER@@QEAAPEADD@Z
; public: int __cdecl TS_DIRECTORY_INFO::SortFileInfoPointers(int (__cdecl*)(void const * __ptr64,void const * __ptr64)) __ptr64
?SortFileInfoPointers@TS_DIRECTORY_INFO@@QEAAHP6AHPEBX0@Z@Z
; public: virtual unsigned long __cdecl IIS_SERVER_INSTANCE::StartInstance(void) __ptr64
?StartInstance@IIS_SERVER_INSTANCE@@UEAAKXZ
; public: int __cdecl TCP_AUTHENT::StartProcessAsUser(char const * __ptr64,char * __ptr64,int,unsigned long,void * __ptr64,char const * __ptr64,struct _STARTUPINFOA * __ptr64,struct _PROCESS_INFORMATION * __ptr64) __ptr64
?StartProcessAsUser@TCP_AUTHENT@@QEAAHPEBDPEADHKPEAX0PEAU_STARTUPINFOA@@PEAU_PROCESS_INFORMATION@@@Z
; public: unsigned long __cdecl IIS_SERVICE::StartServiceOperation(void (__cdecl*)(unsigned long),unsigned long (__cdecl*)(void * __ptr64),unsigned long (__cdecl*)(void * __ptr64)) __ptr64
?StartServiceOperation@IIS_SERVICE@@QEAAKP6AXK@ZP6AKPEAX@Z2@Z
; public: void __cdecl IIS_SERVICE::StartUpIndicateClientActivity(void) __ptr64
?StartUpIndicateClientActivity@IIS_SERVICE@@QEAAXXZ
; public: unsigned long __cdecl IIS_SERVER_CERT::Status(void) __ptr64
?Status@IIS_SERVER_CERT@@QEAAKXZ
; public: int __cdecl IIS_SERVER_INSTANCE::StopEndpoints(void) __ptr64
?StopEndpoints@IIS_SERVER_INSTANCE@@QEAAHXZ
; private: int __cdecl IIS_SERVER_INSTANCE::StopEndpointsHelper(struct _LIST_ENTRY * __ptr64) __ptr64
?StopEndpointsHelper@IIS_SERVER_INSTANCE@@AEAAHPEAU_LIST_ENTRY@@@Z
; public: virtual unsigned long __cdecl IIS_SERVER_INSTANCE::StopInstance(void) __ptr64
?StopInstance@IIS_SERVER_INSTANCE@@UEAAKXZ
; public: virtual void __cdecl IIS_SERVICE::StopInstanceProcs(class IIS_SERVER_INSTANCE * __ptr64) __ptr64
?StopInstanceProcs@IIS_SERVICE@@UEAAXPEAVIIS_SERVER_INSTANCE@@@Z
; private: void __cdecl IIS_SERVICE::StopService(void) __ptr64
?StopService@IIS_SERVICE@@AEAAXXZ
; public: static int __cdecl ODBC_CONNECTION::Success(short)
?Success@ODBC_CONNECTION@@SAHF@Z
; public: static unsigned long __cdecl LOGGING::Terminate(void)
?Terminate@LOGGING@@SAKXZ
; public: unsigned long __cdecl IIS_SERVICE::TerminateDiscovery(void) __ptr64
?TerminateDiscovery@IIS_SERVICE@@QEAAKXZ
; protected: void __cdecl INET_PARSER::TerminateLine(void) __ptr64
?TerminateLine@INET_PARSER@@IEAAXXZ
; protected: void __cdecl INET_PARSER::TerminateToken(char) __ptr64
?TerminateToken@INET_PARSER@@IEAAXD@Z
TsAddMetaData
; void __cdecl TsAddRefMetaData(void * __ptr64)
?TsAddRefMetaData@@YAXPEAX@Z
TsAllocate
TsAllocateEx
; unsigned long __cdecl TsApiAccessCheck(unsigned long)
?TsApiAccessCheck@@YAKK@Z
TsCacheDirectoryBlob
TsCacheFlush
TsCacheFlushDemux
TsCheckInCachedBlob
TsCheckInOrFree
TsCheckOutCachedBlob
TsCloseHandle
TsCloseURIFile
TsCreateETagFromHandle
TsCreateFile
TsCreateFileFromURI
TsDeCacheCachedBlob
TsDeleteOnClose
; int __cdecl TsDeleteUserToken(class CACHED_TOKEN * __ptr64)
?TsDeleteUserToken@@YAHPEAVCACHED_TOKEN@@@Z
TsDerefURIFile
TsDumpCacheToHtml
; public: int __cdecl IIS_SERVER_INSTANCE::TsEnumVirtualRoots(int (__cdecl*)(void * __ptr64,class MB * __ptr64,struct _VIRTUAL_ROOT * __ptr64),void * __ptr64,class MB * __ptr64) __ptr64
?TsEnumVirtualRoots@IIS_SERVER_INSTANCE@@QEAAHP6AHPEAXPEAVMB@@PEAU_VIRTUAL_ROOT@@@Z01@Z
TsExpireCachedBlob
TsFindMetaData
TsFlushFilesWithContext
TsFlushMetaCache
TsFlushURL
TsFree
; int __cdecl TsFreeDirectoryListing(class TSVC_CACHE const & __ptr64,class TS_DIRECTORY_HEADER * __ptr64)
?TsFreeDirectoryListing@@YAHAEBVTSVC_CACHE@@PEAVTS_DIRECTORY_HEADER@@@Z
TsFreeMetaData
; int __cdecl TsGetDirectoryListing(class TSVC_CACHE const & __ptr64,char const * __ptr64,void * __ptr64,class TS_DIRECTORY_HEADER * __ptr64 * __ptr64)
?TsGetDirectoryListing@@YAHAEBVTSVC_CACHE@@PEBDPEAXPEAPEAVTS_DIRECTORY_HEADER@@@Z
TsGetFileSecDesc
; int __cdecl TsGetSecretW(unsigned short * __ptr64,class BUFFER * __ptr64)
?TsGetSecretW@@YAHPEAGPEAVBUFFER@@@Z
; int __cdecl TsImpersonateUser(class CACHED_TOKEN * __ptr64)
?TsImpersonateUser@@YAHPEAVCACHED_TOKEN@@@Z
TsLastWriteTimeFromHandle
; class CACHED_TOKEN * __ptr64 __cdecl TsLogonUser(char * __ptr64,char * __ptr64,int * __ptr64,int * __ptr64,class IIS_SERVER_INSTANCE * __ptr64,class TCP_AUTHENT_INFO * __ptr64,char * __ptr64,union _LARGE_INTEGER * __ptr64,int * __ptr64)
?TsLogonUser@@YAPEAVCACHED_TOKEN@@PEAD0PEAH1PEAVIIS_SERVER_INSTANCE@@PEAVTCP_AUTHENT_INFO@@0PEAT_LARGE_INTEGER@@1@Z
TsMakeWidePath
; public: void __cdecl IIS_SERVER_INSTANCE::TsMirrorVirtualRoots(struct _INET_INFO_CONFIG_INFO * __ptr64) __ptr64
?TsMirrorVirtualRoots@IIS_SERVER_INSTANCE@@QEAAXPEAU_INET_INFO_CONFIG_INFO@@@Z
; int __cdecl TsProcessGatewayRequest(void * __ptr64,struct _IGATEWAY_REQUEST * __ptr64,int (__cdecl*)(void * __ptr64,unsigned long,unsigned char * __ptr64,unsigned long))
?TsProcessGatewayRequest@@YAHPEAXPEAU_IGATEWAY_REQUEST@@P6AH0KPEAEK@Z@Z
; public: int __cdecl IIS_SERVER_INSTANCE::TsReadVirtualRoots(struct _MD_CHANGE_OBJECT_A * __ptr64) __ptr64
?TsReadVirtualRoots@IIS_SERVER_INSTANCE@@QEAAHPEAU_MD_CHANGE_OBJECT_A@@@Z
; public: int __cdecl IIS_SERVER_INSTANCE::TsRecursiveEnumVirtualRoots(int (__cdecl*)(void * __ptr64,class MB * __ptr64,struct _VIRTUAL_ROOT * __ptr64),void * __ptr64,char * __ptr64,unsigned long,void * __ptr64,int) __ptr64
?TsRecursiveEnumVirtualRoots@IIS_SERVER_INSTANCE@@QEAAHP6AHPEAXPEAVMB@@PEAU_VIRTUAL_ROOT@@@Z0PEADK0H@Z
TsReferenceMetaData
; unsigned long __cdecl TsSetSecretW(unsigned short * __ptr64,unsigned short * __ptr64,unsigned long)
?TsSetSecretW@@YAKPEAG0K@Z
; public: int __cdecl IIS_SERVER_INSTANCE::TsSetVirtualRoots(struct _INET_INFO_CONFIG_INFO * __ptr64) __ptr64
?TsSetVirtualRoots@IIS_SERVER_INSTANCE@@QEAAHPEAU_INET_INFO_CONFIG_INFO@@@Z
; void * __ptr64 __cdecl TsTokenToHandle(class CACHED_TOKEN * __ptr64)
?TsTokenToHandle@@YAPEAXPEAVCACHED_TOKEN@@@Z
; void * __ptr64 __cdecl TsTokenToImpHandle(class CACHED_TOKEN * __ptr64)
?TsTokenToImpHandle@@YAPEAXPEAVCACHED_TOKEN@@@Z
Tsunami_Initialize
; private: unsigned long __cdecl IIS_SERVER_INSTANCE::UnbindHelper(struct _LIST_ENTRY * __ptr64) __ptr64
?UnbindHelper@IIS_SERVER_INSTANCE@@AEAAKPEAU_LIST_ENTRY@@@Z
; public: unsigned long __cdecl IIS_SERVER_INSTANCE::UnbindInstance(void) __ptr64
?UnbindInstance@IIS_SERVER_INSTANCE@@QEAAKXZ
; 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: void __cdecl STORE_CHANGE_NOTIFIER::UnregisterStore(char * __ptr64,void (__cdecl*)(void * __ptr64),void * __ptr64) __ptr64
?UnregisterStore@STORE_CHANGE_NOTIFIER@@QEAAXPEADP6AXPEAX@Z1@Z
; private: unsigned long __cdecl IIS_SERVER_INSTANCE::UpdateBindingsHelper(int) __ptr64
?UpdateBindingsHelper@IIS_SERVER_INSTANCE@@AEAAKH@Z
; public: int __cdecl TCP_AUTHENT::UpdateClientCertFlags(unsigned long,int * __ptr64,unsigned char * __ptr64,unsigned long) __ptr64
?UpdateClientCertFlags@TCP_AUTHENT@@QEAAHKPEAHPEAEK@Z
; 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: unsigned long __cdecl IIS_SERVICE::UpdateServiceStatus(unsigned long,unsigned long,unsigned long,unsigned long) __ptr64
?UpdateServiceStatus@IIS_SERVICE@@QEAAKKKKK@Z
; public: int __cdecl IIS_SSL_INFO::UseDSMapper(void) __ptr64
?UseDSMapper@IIS_SSL_INFO@@QEAAHXZ
; private: int __cdecl IIS_SERVER_CERT::UseProgrammaticPINEntry(class MB * __ptr64) __ptr64
?UseProgrammaticPINEntry@IIS_SERVER_CERT@@AEAAHPEAVMB@@@Z
; public: int __cdecl IIS_CTL::VerifySignature(void * __ptr64 * __ptr64,unsigned long,int * __ptr64) __ptr64
?VerifySignature@IIS_CTL@@QEAAHPEAPEAXKPEAH@Z
; public: int __cdecl TS_OPEN_FILE_INFO::WeakETag(void)const  __ptr64
?WeakETag@TS_OPEN_FILE_INFO@@QEBAHXZ
; public: void __cdecl IIS_SERVER_INSTANCE::ZapInstanceMBTree(void) __ptr64
?ZapInstanceMBTree@IIS_SERVER_INSTANCE@@QEAAXXZ
; void __cdecl _TsValidateMetaCache(void)
?_TsValidateMetaCache@@YAXXZ
; private: static unsigned long (__cdecl* __ptr64 LOGGING::m_ComLogCustomInformation)(void * __ptr64,unsigned long,struct _CUSTOM_LOG_DATA * __ptr64,char * __ptr64)
?m_ComLogCustomInformation@LOGGING@@0P6AKPEAXKPEAU_CUSTOM_LOG_DATA@@PEAD@ZEA DATA
; private: static unsigned long (__cdecl* __ptr64 LOGGING::m_ComLogDllCleanUp)(void)
?m_ComLogDllCleanUp@LOGGING@@0P6AKXZEA DATA
; private: static unsigned long (__cdecl* __ptr64 LOGGING::m_ComLogDllStartup)(void)
?m_ComLogDllStartup@LOGGING@@0P6AKXZEA DATA
; private: static unsigned long (__cdecl* __ptr64 LOGGING::m_ComLogGetConfig)(void * __ptr64,struct _INETLOG_CONFIGURATIONA * __ptr64)
?m_ComLogGetConfig@LOGGING@@0P6AKPEAXPEAU_INETLOG_CONFIGURATIONA@@@ZEA DATA
; private: static void * __ptr64 (__cdecl* __ptr64 LOGGING::m_ComLogInitializeLog)(char const * __ptr64,char const * __ptr64,void * __ptr64)
?m_ComLogInitializeLog@LOGGING@@0P6APEAXPEBD0PEAX@ZEA DATA
; private: static unsigned long (__cdecl* __ptr64 LOGGING::m_ComLogLogInformation)(void * __ptr64,struct _INETLOG_INFORMATION const * __ptr64)
?m_ComLogLogInformation@LOGGING@@0P6AKPEAXPEBU_INETLOG_INFORMATION@@@ZEA DATA
; private: static unsigned long (__cdecl* __ptr64 LOGGING::m_ComLogNotifyChange)(void * __ptr64)
?m_ComLogNotifyChange@LOGGING@@0P6AKPEAX@ZEA DATA
; private: static unsigned long (__cdecl* __ptr64 LOGGING::m_ComLogQueryExtraLogFields)(void * __ptr64,char * __ptr64,unsigned long * __ptr64)
?m_ComLogQueryExtraLogFields@LOGGING@@0P6AKPEAXPEADPEAK@ZEA DATA
; private: static unsigned long (__cdecl* __ptr64 LOGGING::m_ComLogSetConfig)(void * __ptr64,struct _INETLOG_CONFIGURATIONA const * __ptr64)
?m_ComLogSetConfig@LOGGING@@0P6AKPEAXPEBU_INETLOG_CONFIGURATIONA@@@ZEA DATA
; private: static unsigned long (__cdecl* __ptr64 LOGGING::m_ComLogTerminateLog)(void * __ptr64)
?m_ComLogTerminateLog@LOGGING@@0P6AKPEAX@ZEA DATA
; private: static struct HINSTANCE__ * __ptr64  __ptr64 LOGGING::m_hComLogDLL
?m_hComLogDLL@LOGGING@@0PEAUHINSTANCE__@@EA DATA
; public: static unsigned __int64  IIS_SERVER_CERT::m_hFortezzaCSP
?m_hFortezzaCSP@IIS_SERVER_CERT@@2_KA DATA
; public: static void * __ptr64  __ptr64 IIS_SERVER_CERT::m_hFortezzaCtxt
?m_hFortezzaCtxt@IIS_SERVER_CERT@@2PEAXEA DATA
; private: static struct IUnknown * __ptr64  __ptr64 IIS_SERVICE::sm_MDNseObject
?sm_MDNseObject@IIS_SERVICE@@0PEAUIUnknown@@EA DATA
; private: static struct IUnknown * __ptr64  __ptr64 IIS_SERVICE::sm_MDObject
?sm_MDObject@IIS_SERVICE@@0PEAUIUnknown@@EA DATA
; private: static struct _LIST_ENTRY  IIS_SERVICE::sm_ServiceInfoListHead
?sm_ServiceInfoListHead@IIS_SERVICE@@0U_LIST_ENTRY@@A DATA
; private: static struct _RTL_CRITICAL_SECTION  IIS_SERVICE::sm_csLock
?sm_csLock@IIS_SERVICE@@0U_RTL_CRITICAL_SECTION@@A DATA
; private: static int  IIS_SERVICE::sm_fInitialized
?sm_fInitialized@IIS_SERVICE@@0HA DATA
; private: static class ISRPC * __ptr64  __ptr64 IIS_SERVICE::sm_isrpc
?sm_isrpc@IIS_SERVICE@@0PEAVISRPC@@EA DATA
; public: static struct _TRACE_LOG * __ptr64  __ptr64 IIS_SERVER_INSTANCE::sm_pDbgRefTraceLog
?sm_pDbgRefTraceLog@IIS_SERVER_INSTANCE@@2PEAU_TRACE_LOG@@EA DATA
; public: static struct _TRACE_LOG * __ptr64  __ptr64 IIS_SERVICE::sm_pDbgRefTraceLog
?sm_pDbgRefTraceLog@IIS_SERVICE@@2PEAU_TRACE_LOG@@EA DATA
; 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
ConvertStringToRpc
ConvertUnicodeToAnsi
DoSynchronousReadFile
FreeRpcString
InetNtoa
InitCommonDlls
KludgeMultiSz
ReadRegString
ReadRegistryDwordA
ReadRegistryStr
ReadRegistryString
TcpSockRecv
TcpSockSend
TcpSockTest
TerminateCommonDlls
TsDumpCacheCounters
WaitForSocketWorker
WriteRegistryDwordA
WriteRegistryStringA
WriteRegistryStringW
