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