; 
; 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
