; 
; Exports of file W3TP.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY W3TP.dll
EXPORTS
; private: __cdecl THREAD_POOL::THREAD_POOL(void) __ptr64
??0THREAD_POOL@@AEAA@XZ
; private: __cdecl THREAD_POOL::~THREAD_POOL(void) __ptr64
??1THREAD_POOL@@AEAA@XZ
; public: int __cdecl THREAD_POOL::BindIoCompletionCallback(void * __ptr64,void (__cdecl*)(unsigned long,unsigned long,struct _OVERLAPPED * __ptr64),unsigned long) __ptr64
?BindIoCompletionCallback@THREAD_POOL@@QEAAHPEAXP6AXKKPEAU_OVERLAPPED@@@ZK@Z
; public: static int __cdecl THREAD_POOL::CreateThreadPool(class THREAD_POOL * __ptr64 * __ptr64,struct THREAD_POOL_CONFIG * __ptr64)
?CreateThreadPool@THREAD_POOL@@SAHPEAPEAV1@PEAUTHREAD_POOL_CONFIG@@@Z
; public: void __cdecl THREAD_POOL::GetStats(unsigned long * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64) __ptr64
?GetStats@THREAD_POOL@@QEAAXPEAK00@Z
; public: int __cdecl THREAD_POOL::PostCompletion(unsigned long,void (__cdecl*)(unsigned long,unsigned long,struct _OVERLAPPED * __ptr64),struct _OVERLAPPED * __ptr64) __ptr64
?PostCompletion@THREAD_POOL@@QEAAHKP6AXKKPEAU_OVERLAPPED@@@Z0@Z
; public: unsigned __int64 __cdecl THREAD_POOL::SetInfo(enum THREAD_POOL_INFO,unsigned __int64) __ptr64
?SetInfo@THREAD_POOL@@QEAA_KW4THREAD_POOL_INFO@@_K@Z
; public: void __cdecl THREAD_POOL::TerminateThreadPool(void) __ptr64
?TerminateThreadPool@THREAD_POOL@@QEAAXXZ
ThreadPoolBindIoCompletionCallback
ThreadPoolGetStats
ThreadPoolInitialize
ThreadPoolPostCompletion
ThreadPoolSetInfo
ThreadPoolTerminate
DllMain
