; 
; Exports of file IISLOG.DLL
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY IISLOG.DLL
EXPORTS
; public: __cdecl LOGGING::LOGGING(class LOGGING const & __ptr64) __ptr64
??0LOGGING@@QEAA@AEBV0@@Z
; 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 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: class LOGGING & __ptr64 __cdecl LOGGING::operator=(class LOGGING const & __ptr64) __ptr64
??4LOGGING@@QEAAAEAV0@AEBV0@@Z
; public: class ODBC_STATEMENT * __ptr64 __cdecl ODBC_CONNECTION::AllocStatement(void) __ptr64
?AllocStatement@ODBC_CONNECTION@@QEAAPEAVODBC_STATEMENT@@XZ
; public: short __cdecl ODBC_PARAMETER::Bind(void * __ptr64) __ptr64
?Bind@ODBC_PARAMETER@@QEAAFPEAX@Z
; public: int __cdecl ODBC_STATEMENT::BindParameter(class ODBC_PARAMETER * __ptr64) __ptr64
?BindParameter@ODBC_STATEMENT@@QEAAHPEAVODBC_PARAMETER@@@Z
; public: int __cdecl ODBC_CONNECTION::Close(void) __ptr64
?Close@ODBC_CONNECTION@@QEAAHXZ
; 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
; public: static unsigned __int64 __cdecl ODBC_CONNECTION::DisplaySize(short,unsigned __int64)
?DisplaySize@ODBC_CONNECTION@@SA_KF_K@Z
; public: int __cdecl ODBC_STATEMENT::ExecDirect(char const * __ptr64,unsigned long) __ptr64
?ExecDirect@ODBC_STATEMENT@@QEAAHPEBDK@Z
; public: int __cdecl ODBC_STATEMENT::ExecuteStatement(void) __ptr64
?ExecuteStatement@ODBC_STATEMENT@@QEAAHXZ
; public: void __cdecl ODBC_STATEMENT::FreeColumnMemory(void) __ptr64
?FreeColumnMemory@ODBC_STATEMENT@@QEAAXXZ
; public: int __cdecl ODBC_CONNECTION::GetInfo(unsigned long,void * __ptr64,unsigned long,unsigned long * __ptr64) __ptr64
?GetInfo@ODBC_CONNECTION@@QEAAHKPEAXKPEAK@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: 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
; private: void __cdecl LOGGING::LockExclusive(void) __ptr64
?LockExclusive@LOGGING@@AEAAXXZ
; private: void __cdecl LOGGING::LockShared(void) __ptr64
?LockShared@LOGGING@@AEAAXXZ
; public: int __cdecl ODBC_STATEMENT::MoreResults(int * __ptr64) __ptr64
?MoreResults@ODBC_STATEMENT@@QEAAHPEAH@Z
; public: int __cdecl ODBC_CONNECTION::Open(char const * __ptr64,char const * __ptr64,char const * __ptr64,int) __ptr64
?Open@ODBC_CONNECTION@@QEAAHPEBD00H@Z
; public: int __cdecl ODBC_STATEMENT::PrepareStatement(char const * __ptr64) __ptr64
?PrepareStatement@ODBC_STATEMENT@@QEAAHPEBD@Z
; 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: int __cdecl ODBC_STATEMENT::QueryColNames(class STR * __ptr64 * __ptr64,unsigned long * __ptr64,unsigned long,int * __ptr64) __ptr64
?QueryColNames@ODBC_STATEMENT@@QEAAHPEAPEAVSTR@@PEAKKPEAH@Z
; 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: __int64 __cdecl ODBC_PARAMETER::QueryMaxCbValue(void)const  __ptr64
?QueryMaxCbValue@ODBC_PARAMETER@@QEBA_JXZ
; 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: unsigned long __cdecl ODBC_PARAMETER::QueryPrecision(void)const  __ptr64
?QueryPrecision@ODBC_PARAMETER@@QEBAKXZ
; public: int __cdecl ODBC_STATEMENT::QueryRowCount(__int64 * __ptr64) __ptr64
?QueryRowCount@ODBC_STATEMENT@@QEAAHPEA_J@Z
; public: short __cdecl ODBC_PARAMETER::QueryScale(void)const  __ptr64
?QueryScale@ODBC_PARAMETER@@QEBAFXZ
; public: short __cdecl ODBC_PARAMETER::QuerySqlType(void)const  __ptr64
?QuerySqlType@ODBC_PARAMETER@@QEBAFXZ
; public: void * __ptr64 __cdecl ODBC_PARAMETER::QueryValue(void)const  __ptr64
?QueryValue@ODBC_PARAMETER@@QEBAPEAXXZ
; public: int __cdecl ODBC_STATEMENT::QueryValuesAsStr(class STR * __ptr64 * __ptr64,int * __ptr64) __ptr64
?QueryValuesAsStr@ODBC_STATEMENT@@QEAAHPEAPEAVSTR@@PEAH@Z
; public: int __cdecl ODBC_CONNECTION::SetConnectOption(unsigned short,unsigned __int64) __ptr64
?SetConnectOption@ODBC_CONNECTION@@QEAAHG_K@Z
; public: int __cdecl ODBC_PARAMETER::SetValueBuffer(long,long) __ptr64
?SetValueBuffer@ODBC_PARAMETER@@QEAAHJJ@Z
; public: static int __cdecl ODBC_CONNECTION::Success(short)
?Success@ODBC_CONNECTION@@SAHF@Z
; private: void __cdecl LOGGING::Unlock(void) __ptr64
?Unlock@LOGGING@@AEAAXXZ
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
