; 
; Exports of file qmgr.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY qmgr.dll
EXPORTS
; public: __cdecl CNestedImpersonation::CNestedImpersonation(class TokenHandle & __ptr64) __ptr64
??0CNestedImpersonation@@QEAA@AEAVTokenHandle@@@Z
; public: __cdecl CNestedImpersonation::CNestedImpersonation(void * __ptr64) __ptr64
??0CNestedImpersonation@@QEAA@PEAX@Z
; public: __cdecl CNestedImpersonation::CNestedImpersonation(void) __ptr64
??0CNestedImpersonation@@QEAA@XZ
; public: __cdecl PROXY_SETTINGS_CONTAINER::PROXY_SETTINGS_CONTAINER(unsigned short const * __ptr64,struct PROXY_SETTINGS const * __ptr64) __ptr64
??0PROXY_SETTINGS_CONTAINER@@QEAA@PEBGPEBUPROXY_SETTINGS@@@Z
; void * __ptr64 __cdecl BITSAlloc(unsigned __int64)
?BITSAlloc@@YAPEAX_K@Z
; void __cdecl BITSFree(void * __ptr64)
?BITSFree@@YAXPEAX@Z
; public: unsigned __int64 __cdecl CRangeCollection::BytesRemainingInCurrentRange(void) __ptr64
?BytesRemainingInCurrentRange@CRangeCollection@@QEAA_KXZ
; protected: bool __cdecl CRangeCollection::CalculateBytesTotal(void) __ptr64
?CalculateBytesTotal@CRangeCollection@@IEAA_NXZ
; public: long __cdecl CCredentialsContainer::Find(enum __MIDL_IBackgroundCopyJob2_0001,enum __MIDL_IBackgroundCopyJob2_0002,struct __MIDL_IBackgroundCopyJob2_0005 * __ptr64 * __ptr64)const  __ptr64
?Find@CCredentialsContainer@@QEBAJW4__MIDL_IBackgroundCopyJob2_0001@@W4__MIDL_IBackgroundCopyJob2_0002@@PEAPEAU__MIDL_IBackgroundCopyJob2_0005@@@Z
; unsigned long __cdecl FindInterfaceIndex(unsigned short const * __ptr64)
?FindInterfaceIndex@@YAKPEBG@Z
; public: long __cdecl CRangeCollection::GetSubRanges(unsigned __int64,unsigned __int64,unsigned __int64,unsigned int,class CRangeCollection * __ptr64 * __ptr64) __ptr64
?GetSubRanges@CRangeCollection@@QEAAJ_K00IPEAPEAV1@@Z
; class std::auto_ptr<unsigned short>  __cdecl HostFromProxyDescription(unsigned short * __ptr64)
?HostFromProxyDescription@@YA?AV?$auto_ptr@G@std@@PEAG@Z
ServiceMain
; private: static struct GenericStringHandle<unsigned short>::StringData  GenericStringHandle<unsigned short>::s_EmptyString
?s_EmptyString@?$GenericStringHandle@G@@0UStringData@1@A DATA
BITSServiceMain
DllRegisterServer
DllUnregisterServer
