; 
; Exports of file IISLOG.DLL
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY IISLOG.DLL
EXPORTS
; public: __thiscall LOGGING::LOGGING(class LOGGING const &)
??0LOGGING@@QAE@ABV0@@Z
; public: __thiscall ODBC_CONNECTION::ODBC_CONNECTION(void)
??0ODBC_CONNECTION@@QAE@XZ
; public: __thiscall ODBC_PARAMETER::ODBC_PARAMETER(unsigned short,short,short,short,unsigned long)
??0ODBC_PARAMETER@@QAE@GFFFK@Z
; public: __thiscall ODBC_CONNECTION::~ODBC_CONNECTION(void)
??1ODBC_CONNECTION@@QAE@XZ
; public: __thiscall ODBC_PARAMETER::~ODBC_PARAMETER(void)
??1ODBC_PARAMETER@@QAE@XZ
; public: __thiscall ODBC_STATEMENT::~ODBC_STATEMENT(void)
??1ODBC_STATEMENT@@QAE@XZ
; public: class LOGGING & __thiscall LOGGING::operator=(class LOGGING const &)
??4LOGGING@@QAEAAV0@ABV0@@Z
; public: class ODBC_STATEMENT * __thiscall ODBC_CONNECTION::AllocStatement(void)
?AllocStatement@ODBC_CONNECTION@@QAEPAVODBC_STATEMENT@@XZ
; public: short __thiscall ODBC_PARAMETER::Bind(void *)
?Bind@ODBC_PARAMETER@@QAEFPAX@Z
; public: int __thiscall ODBC_STATEMENT::BindParameter(class ODBC_PARAMETER *)
?BindParameter@ODBC_STATEMENT@@QAEHPAVODBC_PARAMETER@@@Z
; public: int __thiscall ODBC_CONNECTION::Close(void)
?Close@ODBC_CONNECTION@@QAEHXZ
; public: int __thiscall ODBC_PARAMETER::CopyValue(unsigned long)
?CopyValue@ODBC_PARAMETER@@QAEHK@Z
; public: int __thiscall ODBC_PARAMETER::CopyValue(struct _SYSTEMTIME *)
?CopyValue@ODBC_PARAMETER@@QAEHPAU_SYSTEMTIME@@@Z
; public: int __thiscall ODBC_PARAMETER::CopyValue(void *,long)
?CopyValue@ODBC_PARAMETER@@QAEHPAXJ@Z
; public: int __thiscall ODBC_PARAMETER::CopyValue(char const *)
?CopyValue@ODBC_PARAMETER@@QAEHPBD@Z
; public: int __thiscall ODBC_PARAMETER::CopyValue(unsigned short const *)
?CopyValue@ODBC_PARAMETER@@QAEHPBG@Z
; public: static unsigned long __stdcall ODBC_CONNECTION::DisplaySize(short,unsigned long)
?DisplaySize@ODBC_CONNECTION@@SGKFK@Z
; public: int __thiscall ODBC_STATEMENT::ExecDirect(char const *,unsigned long)
?ExecDirect@ODBC_STATEMENT@@QAEHPBDK@Z
; public: int __thiscall ODBC_STATEMENT::ExecuteStatement(void)
?ExecuteStatement@ODBC_STATEMENT@@QAEHXZ
; public: void __thiscall ODBC_STATEMENT::FreeColumnMemory(void)
?FreeColumnMemory@ODBC_STATEMENT@@QAEXXZ
; public: int __thiscall ODBC_CONNECTION::GetInfo(unsigned long,void *,unsigned long,unsigned long *)
?GetInfo@ODBC_CONNECTION@@QAEHKPAXKPAK@Z
; public: int __thiscall ODBC_CONNECTION::GetLastErrorText(class STR *,void *,short)const 
?GetLastErrorText@ODBC_CONNECTION@@QBEHPAVSTR@@PAXF@Z
; public: int __thiscall ODBC_CONNECTION::GetLastErrorTextAsHtml(class STR *,void *,short)const 
?GetLastErrorTextAsHtml@ODBC_CONNECTION@@QBEHPAVSTR@@PAXF@Z
; public: int __thiscall ODBC_CONNECTION::IsValid(void)const 
?IsValid@ODBC_CONNECTION@@QBEHXZ
; public: int __thiscall ODBC_STATEMENT::IsValid(void)const 
?IsValid@ODBC_STATEMENT@@QBEHXZ
; private: void __thiscall LOGGING::LockExclusive(void)
?LockExclusive@LOGGING@@AAEXXZ
; private: void __thiscall LOGGING::LockShared(void)
?LockShared@LOGGING@@AAEXXZ
; public: int __thiscall ODBC_STATEMENT::MoreResults(int *)
?MoreResults@ODBC_STATEMENT@@QAEHPAH@Z
; public: int __thiscall ODBC_CONNECTION::Open(char const *,char const *,char const *,int)
?Open@ODBC_CONNECTION@@QAEHPBD00H@Z
; public: int __thiscall ODBC_STATEMENT::PrepareStatement(char const *)
?PrepareStatement@ODBC_STATEMENT@@QAEHPBD@Z
; public: short __thiscall ODBC_PARAMETER::QueryCType(void)const 
?QueryCType@ODBC_PARAMETER@@QBEFXZ
; public: long __thiscall ODBC_PARAMETER::QueryCbValue(void)const 
?QueryCbValue@ODBC_PARAMETER@@QBEJXZ
; public: long & __thiscall ODBC_PARAMETER::QueryCbValueRef(void)
?QueryCbValueRef@ODBC_PARAMETER@@QAEAAJXZ
; public: int __thiscall ODBC_STATEMENT::QueryColNames(class STR * *,unsigned long *,unsigned long,int *)
?QueryColNames@ODBC_STATEMENT@@QAEHPAPAVSTR@@PAKKPAH@Z
; public: short __thiscall ODBC_CONNECTION::QueryErrorCode(void)const 
?QueryErrorCode@ODBC_CONNECTION@@QBEFXZ
; public: short __thiscall ODBC_STATEMENT::QueryErrorCode(void)const 
?QueryErrorCode@ODBC_STATEMENT@@QBEFXZ
; public: long __thiscall ODBC_PARAMETER::QueryMaxCbValue(void)const 
?QueryMaxCbValue@ODBC_PARAMETER@@QBEJXZ
; public: unsigned short __thiscall ODBC_PARAMETER::QueryParamNumber(void)const 
?QueryParamNumber@ODBC_PARAMETER@@QBEGXZ
; public: short __thiscall ODBC_PARAMETER::QueryParamType(void)const 
?QueryParamType@ODBC_PARAMETER@@QBEFXZ
; public: unsigned long __thiscall ODBC_PARAMETER::QueryPrecision(void)const 
?QueryPrecision@ODBC_PARAMETER@@QBEKXZ
; public: int __thiscall ODBC_STATEMENT::QueryRowCount(long *)
?QueryRowCount@ODBC_STATEMENT@@QAEHPAJ@Z
; public: short __thiscall ODBC_PARAMETER::QueryScale(void)const 
?QueryScale@ODBC_PARAMETER@@QBEFXZ
; public: short __thiscall ODBC_PARAMETER::QuerySqlType(void)const 
?QuerySqlType@ODBC_PARAMETER@@QBEFXZ
; public: void * __thiscall ODBC_PARAMETER::QueryValue(void)const 
?QueryValue@ODBC_PARAMETER@@QBEPAXXZ
; public: int __thiscall ODBC_STATEMENT::QueryValuesAsStr(class STR * *,int *)
?QueryValuesAsStr@ODBC_STATEMENT@@QAEHPAPAVSTR@@PAH@Z
; public: int __thiscall ODBC_CONNECTION::SetConnectOption(unsigned short,unsigned long)
?SetConnectOption@ODBC_CONNECTION@@QAEHGK@Z
; public: int __thiscall ODBC_PARAMETER::SetValueBuffer(long,long)
?SetValueBuffer@ODBC_PARAMETER@@QAEHJJ@Z
; public: static int __stdcall ODBC_CONNECTION::Success(short)
?Success@ODBC_CONNECTION@@SGHF@Z
; private: void __thiscall LOGGING::Unlock(void)
?Unlock@LOGGING@@AAEXXZ
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
