; 
; Exports of file WMICooker.DLL
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY WMICooker.DLL
EXPORTS
; public: __cdecl CArena::CArena(class CArena const & __ptr64) __ptr64
??0CArena@@QEAA@AEBV0@@Z
; public: __cdecl CArena::CArena(void) __ptr64
??0CArena@@QEAA@XZ
; public: __cdecl CCheckedInCritSec::CCheckedInCritSec(class CCritSec * __ptr64) __ptr64
??0CCheckedInCritSec@@QEAA@PEAVCCritSec@@@Z
; public: __cdecl CCritSec::CCritSec(void) __ptr64
??0CCritSec@@QEAA@XZ
; public: __cdecl CEnterWbemCriticalSection::CEnterWbemCriticalSection(class CWbemCriticalSection * __ptr64,unsigned long) __ptr64
??0CEnterWbemCriticalSection@@QEAA@PEAVCWbemCriticalSection@@K@Z
; public: __cdecl CHaltable::CHaltable(class CHaltable const & __ptr64) __ptr64
??0CHaltable@@QEAA@AEBV0@@Z
; public: __cdecl CInCritSec::CInCritSec(struct _RTL_CRITICAL_SECTION * __ptr64) __ptr64
??0CInCritSec@@QEAA@PEAU_RTL_CRITICAL_SECTION@@@Z
; public: __cdecl CWin32DefaultArena::CWin32DefaultArena(class CWin32DefaultArena const & __ptr64) __ptr64
??0CWin32DefaultArena@@QEAA@AEBV0@@Z
; public: __cdecl CWin32DefaultArena::CWin32DefaultArena(void) __ptr64
??0CWin32DefaultArena@@QEAA@XZ
; public: __cdecl WString::WString(class WString const & __ptr64) __ptr64
??0WString@@QEAA@AEBV0@@Z
; public: __cdecl CCheckedInCritSec::~CCheckedInCritSec(void) __ptr64
??1CCheckedInCritSec@@QEAA@XZ
; public: __cdecl CCritSec::~CCritSec(void) __ptr64
??1CCritSec@@QEAA@XZ
; public: __cdecl CEnterWbemCriticalSection::~CEnterWbemCriticalSection(void) __ptr64
??1CEnterWbemCriticalSection@@QEAA@XZ
; public: __cdecl CInCritSec::~CInCritSec(void) __ptr64
??1CInCritSec@@QEAA@XZ
; public: __cdecl CWin32DefaultArena::~CWin32DefaultArena(void) __ptr64
??1CWin32DefaultArena@@QEAA@XZ
; public: __cdecl WString::~WString(void) __ptr64
??1WString@@QEAA@XZ
; public: class CArena & __ptr64 __cdecl CArena::operator=(class CArena const & __ptr64) __ptr64
??4CArena@@QEAAAEAV0@AEBV0@@Z
; public: class CCheckedInCritSec & __ptr64 __cdecl CCheckedInCritSec::operator=(class CCheckedInCritSec const & __ptr64) __ptr64
??4CCheckedInCritSec@@QEAAAEAV0@AEBV0@@Z
; public: class CCritSec & __ptr64 __cdecl CCritSec::operator=(class CCritSec const & __ptr64) __ptr64
??4CCritSec@@QEAAAEAV0@AEBV0@@Z
; public: class CEnterWbemCriticalSection & __ptr64 __cdecl CEnterWbemCriticalSection::operator=(class CEnterWbemCriticalSection const & __ptr64) __ptr64
??4CEnterWbemCriticalSection@@QEAAAEAV0@AEBV0@@Z
; public: class CFlexQueue & __ptr64 __cdecl CFlexQueue::operator=(class CFlexQueue const & __ptr64) __ptr64
??4CFlexQueue@@QEAAAEAV0@AEBV0@@Z
; public: class CHaltable & __ptr64 __cdecl CHaltable::operator=(class CHaltable const & __ptr64) __ptr64
??4CHaltable@@QEAAAEAV0@AEBV0@@Z
; public: class CInCritSec & __ptr64 __cdecl CInCritSec::operator=(class CInCritSec const & __ptr64) __ptr64
??4CInCritSec@@QEAAAEAV0@AEBV0@@Z
; public: class CSmallArrayBlob & __ptr64 __cdecl CSmallArrayBlob::operator=(class CSmallArrayBlob const & __ptr64) __ptr64
??4CSmallArrayBlob@@QEAAAEAV0@AEBV0@@Z
; public: class CWbemCriticalSection & __ptr64 __cdecl CWbemCriticalSection::operator=(class CWbemCriticalSection const & __ptr64) __ptr64
??4CWbemCriticalSection@@QEAAAEAV0@AEBV0@@Z
; public: class CWin32DefaultArena & __ptr64 __cdecl CWin32DefaultArena::operator=(class CWin32DefaultArena const & __ptr64) __ptr64
??4CWin32DefaultArena@@QEAAAEAV0@AEBV0@@Z
; public: void * __ptr64 & __ptr64 __cdecl CFlexArray::operator[](int) __ptr64
??ACFlexArray@@QEAAAEAPEAXH@Z
; public: void * __ptr64 __cdecl CFlexArray::operator[](int)const  __ptr64
??ACFlexArray@@QEBAPEAXH@Z
; public: void * __ptr64 __cdecl CSmallArrayBlob::operator[](int)const  __ptr64
??ACSmallArrayBlob@@QEBAPEAXH@Z
; public: unsigned short * __ptr64 __cdecl CWStringArray::operator[](int)const  __ptr64
??ACWStringArray@@QEBAPEAGH@Z
; public: __cdecl WString::operator unsigned short * __ptr64(void) __ptr64
??BWString@@QEAAPEAGXZ
; public: __cdecl WString::operator unsigned short const * __ptr64(void)const  __ptr64
??BWString@@QEBAPEBGXZ
; public: int __cdecl WString::operator<(unsigned short const * __ptr64)const  __ptr64
??MWString@@QEBAHPEBG@Z
; public: int __cdecl WString::operator<=(unsigned short const * __ptr64)const  __ptr64
??NWString@@QEBAHPEBG@Z
; public: int __cdecl WString::operator>(unsigned short const * __ptr64)const  __ptr64
??OWString@@QEBAHPEBG@Z
; public: int __cdecl WString::operator>=(unsigned short const * __ptr64)const  __ptr64
??PWString@@QEBAHPEBG@Z
; const  CArena::`vftable'
??_7CArena@@6B@
; const  CHaltable::`vftable'
??_7CHaltable@@6B@
; const  CWin32DefaultArena::`vftable'
??_7CWin32DefaultArena@@6B@
; public: void __cdecl CFlexArray::`default constructor closure'(void) __ptr64
??_FCFlexArray@@QEAAXXZ
; public: void __cdecl CFlexQueue::`default constructor closure'(void) __ptr64
??_FCFlexQueue@@QEAAXXZ
; public: void __cdecl CWStringArray::`default constructor closure'(void) __ptr64
??_FCWStringArray@@QEAAXXZ
; public: int __cdecl CFlexArray::Add(void * __ptr64) __ptr64
?Add@CFlexArray@@QEAAHPEAX@Z
; public: virtual void * __ptr64 __cdecl CWin32DefaultArena::Alloc(unsigned __int64) __ptr64
?Alloc@CWin32DefaultArena@@UEAAPEAX_K@Z
; public: void __cdecl WString::BindPtr(unsigned short * __ptr64) __ptr64
?BindPtr@WString@@QEAAXPEAG@Z
; public: void __cdecl CWStringArray::Compress(void) __ptr64
?Compress@CWStringArray@@QEAAXXZ
; protected: void __cdecl CFlexQueue::DecrementIndex(int & __ptr64) __ptr64
?DecrementIndex@CFlexQueue@@IEAAXAEAH@Z
; public: void __cdecl CCheckedInCritSec::Enter(void) __ptr64
?Enter@CCheckedInCritSec@@QEAAXXZ
; public: void __cdecl CCritSec::Enter(void) __ptr64
?Enter@CCritSec@@QEAAXXZ
; public: int __cdecl WString::Equal(unsigned short const * __ptr64)const  __ptr64
?Equal@WString@@QEBAHPEBG@Z
; public: int __cdecl WString::EqualNoCase(unsigned short const * __ptr64)const  __ptr64
?EqualNoCase@WString@@QEBAHPEBG@Z
; public: virtual int __cdecl CWin32DefaultArena::Free(void * __ptr64) __ptr64
?Free@CWin32DefaultArena@@UEAAHPEAX@Z
; public: void * __ptr64 * __ptr64 __cdecl CFlexArray::GetArrayPtr(void) __ptr64
?GetArrayPtr@CFlexArray@@QEAAPEAPEAXXZ
; public: void * __ptr64 const * __ptr64 __cdecl CFlexArray::GetArrayPtr(void)const  __ptr64
?GetArrayPtr@CFlexArray@@QEBAPEBQEAXXZ
; public: void * __ptr64 * __ptr64 __cdecl CSmallArrayBlob::GetArrayPtr(void) __ptr64
?GetArrayPtr@CSmallArrayBlob@@QEAAPEAPEAXXZ
; public: void * __ptr64 const * __ptr64 __cdecl CSmallArrayBlob::GetArrayPtr(void)const  __ptr64
?GetArrayPtr@CSmallArrayBlob@@QEBAPEBQEAXXZ
; public: unsigned short const * __ptr64 * __ptr64 __cdecl CWStringArray::GetArrayPtr(void) __ptr64
?GetArrayPtr@CWStringArray@@QEAAPEAPEBGXZ
; public: void * __ptr64 __cdecl CFlexArray::GetAt(int)const  __ptr64
?GetAt@CFlexArray@@QEBAPEAXH@Z
; public: void * __ptr64 __cdecl CSmallArrayBlob::GetAt(int)const  __ptr64
?GetAt@CSmallArrayBlob@@QEBAPEAXH@Z
; public: unsigned short * __ptr64 __cdecl CWStringArray::GetAt(int)const  __ptr64
?GetAt@CWStringArray@@QEBAPEAGH@Z
; public: long __cdecl CWbemCriticalSection::GetLockCount(void) __ptr64
?GetLockCount@CWbemCriticalSection@@QEAAJXZ
; public: unsigned long __cdecl CWbemCriticalSection::GetOwningThreadId(void) __ptr64
?GetOwningThreadId@CWbemCriticalSection@@QEAAKXZ
; public: int __cdecl CFlexQueue::GetQueueSize(void)const  __ptr64
?GetQueueSize@CFlexQueue@@QEBAHXZ
; public: long __cdecl CWbemCriticalSection::GetRecursionCount(void) __ptr64
?GetRecursionCount@CWbemCriticalSection@@QEAAJXZ
; protected: void __cdecl CFlexQueue::IncrementIndex(int & __ptr64) __ptr64
?IncrementIndex@CFlexQueue@@IEAAXAEAH@Z
; public: int __cdecl CCheckedInCritSec::IsEntered(void) __ptr64
?IsEntered@CCheckedInCritSec@@QEAAHXZ
; public: int __cdecl CEnterWbemCriticalSection::IsEntered(void) __ptr64
?IsEntered@CEnterWbemCriticalSection@@QEAAHXZ
; public: void __cdecl CCheckedInCritSec::Leave(void) __ptr64
?Leave@CCheckedInCritSec@@QEAAXXZ
; public: void __cdecl CCritSec::Leave(void) __ptr64
?Leave@CCritSec@@QEAAXXZ
; public: int __cdecl WString::Length(void)const  __ptr64
?Length@WString@@QEBAHXZ
; public: virtual void * __ptr64 __cdecl CWin32DefaultArena::Realloc(void * __ptr64,unsigned __int64) __ptr64
?Realloc@CWin32DefaultArena@@UEAAPEAXPEAX_K@Z
; public: void __cdecl CFlexArray::SetAt(int,void * __ptr64) __ptr64
?SetAt@CFlexArray@@QEAAXHPEAX@Z
; public: void __cdecl CFlexArray::SetSize(int) __ptr64
?SetSize@CFlexArray@@QEAAXH@Z
; public: int __cdecl CFlexArray::Size(void)const  __ptr64
?Size@CFlexArray@@QEBAHXZ
; public: int __cdecl CSmallArrayBlob::Size(void)const  __ptr64
?Size@CSmallArrayBlob@@QEBAHXZ
; public: int __cdecl CWStringArray::Size(void)const  __ptr64
?Size@CWStringArray@@QEBAHXZ
; public: void * __ptr64 __cdecl CFlexQueue::Unqueue(void) __ptr64
?Unqueue@CFlexQueue@@QEAAPEAXXZ
; public: static void __cdecl CWin32DefaultArena::WbemSysFreeString(unsigned short * __ptr64)
?WbemSysFreeString@CWin32DefaultArena@@SAXPEAG@Z
; public: bool __cdecl CHaltable::isValid(void) __ptr64
?isValid@CHaltable@@QEAA_NXZ
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
