;
; Definition file of vsstrace.dll
; Automatic generated by gendef
; written by Kai Tietz 2008
;
LIBRARY "vsstrace.dll"
EXPORTS
; public: __thiscall CBsAutoLock::CBsAutoLock(class CBsCritSec &)
??0CBsAutoLock@@QAE@AAVCBsCritSec@@@Z ; has WINAPI (@4)
; public: __thiscall CBsAutoLock::CBsAutoLock(class CBsAutoLock const &)
??0CBsAutoLock@@QAE@ABV0@@Z ; has WINAPI (@4)
; public: __thiscall CBsAutoLock::CBsAutoLock(struct _RTL_CRITICAL_SECTION *)
??0CBsAutoLock@@QAE@PAU_RTL_CRITICAL_SECTION@@@Z ; has WINAPI (@4)
; public: __thiscall CBsAutoLock::CBsAutoLock(void *)
??0CBsAutoLock@@QAE@PAX@Z ; has WINAPI (@4)
; public: __thiscall CBsCritSec::CBsCritSec(class CBsCritSec const &)
??0CBsCritSec@@QAE@ABV0@@Z ; has WINAPI (@4)
; public: __thiscall CBsCritSec::CBsCritSec(void)
??0CBsCritSec@@QAE@XZ ; has WINAPI (@0)
; public: __thiscall CBsDbgTrace::CBsDbgTrace(void)
??0CBsDbgTrace@@QAE@XZ ; has WINAPI (@0)
; public: __thiscall CVssDebugInfo::CVssDebugInfo(struct CVssDebugInfo const &)
??0CVssDebugInfo@@QAE@ABU0@@Z ; has WINAPI (@4)
; public: __thiscall CVssDebugInfo::CVssDebugInfo(unsigned short const *,char const *,unsigned long,unsigned long,unsigned long)
??0CVssDebugInfo@@QAE@PBGPBDKKK@Z ; has WINAPI (@20)
; public: __thiscall CVssFunctionTracer::CVssFunctionTracer(struct CVssDebugInfo,unsigned short const *)
??0CVssFunctionTracer@@QAE@UCVssDebugInfo@@PBG@Z ; has WINAPI (@88)
; public: virtual __thiscall CBsAutoLock::~CBsAutoLock(void)
??1CBsAutoLock@@UAE@XZ ; has WINAPI (@0)
; public: virtual __thiscall CBsCritSec::~CBsCritSec(void)
??1CBsCritSec@@UAE@XZ ; has WINAPI (@0)
; public: __thiscall CBsDbgTrace::~CBsDbgTrace(void)
??1CBsDbgTrace@@QAE@XZ ; has WINAPI (@0)
; public: __thiscall CVssDebugInfo::~CVssDebugInfo(void)
??1CVssDebugInfo@@QAE@XZ ; has WINAPI (@0)
; public: __thiscall CVssFunctionTracer::~CVssFunctionTracer(void)
??1CVssFunctionTracer@@QAE@XZ ; has WINAPI (@0)
; public: class CBsAutoLock &__thiscall CBsAutoLock::operator =(class CBsAutoLock const &)
??4CBsAutoLock@@QAEAAV0@ABV0@@Z ; has WINAPI (@4)
; public: class CBsCritSec &__thiscall CBsCritSec::operator =(class CBsCritSec const &)
??4CBsCritSec@@QAEAAV0@ABV0@@Z ; has WINAPI (@4)
; public: class CBsDbgTrace &__thiscall CBsDbgTrace::operator =(class CBsDbgTrace const &)
??4CBsDbgTrace@@QAEAAV0@ABV0@@Z ; has WINAPI (@4)
; public: struct CVssDebugInfo &__thiscall CVssDebugInfo::operator =(struct CVssDebugInfo const &)
??4CVssDebugInfo@@QAEAAU0@ABU0@@Z ; has WINAPI (@4)
; public: class CVssFunctionTracer &__thiscall CVssFunctionTracer::operator =(class CVssFunctionTracer const &)
??4CVssFunctionTracer@@QAEAAV0@ABV0@@Z ; has WINAPI (@4)
; public: class CVssSKU &__thiscall CVssSKU::operator =(class CVssSKU const &)
??4CVssSKU@@QAEAAV0@ABV0@@Z ; has WINAPI (@4)
; public: struct CVssDebugInfo __thiscall CVssDebugInfo::operator <<(int)
??6CVssDebugInfo@@QAE?AU0@H@Z ; has WINAPI (@8)
; public: struct CVssDebugInfo __thiscall CVssDebugInfo::operator <<(long)
??6CVssDebugInfo@@QAE?AU0@J@Z ; has WINAPI (@8)
; public: struct CVssDebugInfo __thiscall CVssDebugInfo::operator <<(unsigned long)
??6CVssDebugInfo@@QAE?AU0@K@Z ; has WINAPI (@8)
; public: struct CVssDebugInfo __thiscall CVssDebugInfo::operator <<(char *)
??6CVssDebugInfo@@QAE?AU0@PAD@Z ; has WINAPI (@8)
; public: struct CVssDebugInfo __thiscall CVssDebugInfo::operator <<(unsigned short const *)
??6CVssDebugInfo@@QAE?AU0@PBG@Z ; has WINAPI (@8)
; public: struct CVssDebugInfo __thiscall CVssDebugInfo::operator <<(struct _GUID)
??6CVssDebugInfo@@QAE?AU0@U_GUID@@@Z ; has WINAPI (@20)
; public: struct CVssDebugInfo __thiscall CVssDebugInfo::operator <<(__int64)
??6CVssDebugInfo@@QAE?AU0@_J@Z ; has WINAPI (@12)
; const CBsAutoLock::$vftable
??_7CBsAutoLock@@6B@ DATA
; const CBsCritSec::$vftable
??_7CBsCritSec@@6B@ DATA
; public: void __thiscall CVssFunctionTracer::AddContext(struct CVssDebugInfo,unsigned int,unsigned short const *)
?AddContext@CVssFunctionTracer@@QAEXUCVssDebugInfo@@IPBG@Z ; has WINAPI (@92)
; public: void __thiscall CVssFunctionTracer::AddContext(struct CVssDebugInfo,unsigned short const *,unsigned short const *)
?AddContext@CVssFunctionTracer@@QAEXUCVssDebugInfo@@PBG1@Z ; has WINAPI (@92)
; public: void __cdecl CVssFunctionTracer::AddContextEx(struct CVssDebugInfo,unsigned int,unsigned short const *,...)
?AddContextEx@CVssFunctionTracer@@QAAXUCVssDebugInfo@@IPBGZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::AddContextEx(struct CVssDebugInfo,unsigned short const *,unsigned short const *,...)
?AddContextEx@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBG1ZZ ; has WINAPI (@0)
; public: void __thiscall CVssFunctionTracer::AddContextInternal(struct CVssDebugInfo,enum _VssContextType,unsigned short const *,unsigned short const *)
?AddContextInternal@CVssFunctionTracer@@QAEXUCVssDebugInfo@@W4_VssContextType@@PBG2@Z ; has WINAPI (@96)
; public: void __cdecl CVssFunctionTracer::AddErrorSpecificContext(struct CVssDebugInfo,unsigned int,unsigned int,...)
?AddErrorSpecificContext@CVssFunctionTracer@@QAAXUCVssDebugInfo@@IIZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::AddErrorSpecificContext(struct CVssDebugInfo,unsigned int,unsigned short const *,...)
?AddErrorSpecificContext@CVssFunctionTracer@@QAAXUCVssDebugInfo@@IPBGZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::AddErrorSpecificContext(struct CVssDebugInfo,unsigned short const *,unsigned short const *,...)
?AddErrorSpecificContext@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBG1ZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::AddFailureAndCorrectiveAction(struct CVssDebugInfo,unsigned int,unsigned int,...)
?AddFailureAndCorrectiveAction@CVssFunctionTracer@@QAAXUCVssDebugInfo@@IIZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::AddFailureAndCorrectiveAction(struct CVssDebugInfo,unsigned short const *,unsigned short const *,...)
?AddFailureAndCorrectiveAction@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBG1ZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::AddGenericErrorContext(struct CVssDebugInfo,long,unsigned int,...)
?AddGenericErrorContext@CVssFunctionTracer@@QAAXUCVssDebugInfo@@JIZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::AddGenericErrorContext(struct CVssDebugInfo,long,unsigned short const *,...)
?AddGenericErrorContext@CVssFunctionTracer@@QAAXUCVssDebugInfo@@JPBGZZ ; has WINAPI (@0)
; public: void __thiscall CVssFunctionTracer::AddGenericErrorContext(struct CVssDebugInfo,long)
?AddGenericErrorContext@CVssFunctionTracer@@QAEXUCVssDebugInfo@@J@Z ; has WINAPI (@88)
; public: void __cdecl CVssFunctionTracer::AddOperation(struct CVssDebugInfo,unsigned int,...)
?AddOperation@CVssFunctionTracer@@QAAXUCVssDebugInfo@@IZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::AddOperation(struct CVssDebugInfo,unsigned short const *,...)
?AddOperation@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBGZZ ; has WINAPI (@0)
; void __stdcall AssertFail(char const *,unsigned int,char const *)
?AssertFail@@YGXPBDI0@Z ; has WINAPI (@12)
; public: void __cdecl CVssFunctionTracer::CheckForError(struct CVssDebugInfo,unsigned short const *)
?CheckForError@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBG@Z ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::CheckForErrorInternal(struct CVssDebugInfo,unsigned short const *)
?CheckForErrorInternal@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBG@Z ; has WINAPI (@0)
; public: void __thiscall CVssFunctionTracer::CoCreateInstanceWithLog(struct CVssDebugInfo,struct _GUID,unsigned short const *,unsigned long,struct _GUID,struct IUnknown **)
?CoCreateInstanceWithLog@CVssFunctionTracer@@QAEXUCVssDebugInfo@@U_GUID@@PBGK1PAPAUIUnknown@@@Z ; has WINAPI (@128)
; public: void __thiscall CVssFunctionTracer::ComDisableSEH(struct CVssDebugInfo)
?ComDisableSEH@CVssFunctionTracer@@QAEXUCVssDebugInfo@@@Z ; has WINAPI (@84)
; public: void __thiscall CBsCritSec::Enter(void)
?Enter@CBsCritSec@@QAEXXZ ; has WINAPI (@0)
; public: void __thiscall CBsDbgTrace::EnterCachedMode(void)
?EnterCachedMode@CBsDbgTrace@@QAEXXZ ; has WINAPI (@0)
; public: void __thiscall CVssFunctionTracer::EraseInsertionStringsFromText(unsigned short *)
?EraseInsertionStringsFromText@CVssFunctionTracer@@QAEXPAG@Z ; has WINAPI (@4)
; public: void __cdecl CVssFunctionTracer::Err(struct CVssDebugInfo,long,unsigned short const *,...)
?Err@CVssFunctionTracer@@QAAXUCVssDebugInfo@@JPBGZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::ErrBox(struct CVssDebugInfo,long,unsigned short const *,...)
?ErrBox@CVssFunctionTracer@@QAAXUCVssDebugInfo@@JPBGZZ ; has WINAPI (@0)
; public: long __thiscall CVssFunctionTracer::Exit(long)
?Exit@CVssFunctionTracer@@QAEJJ@Z ; has WINAPI (@4)
; public: unsigned short *__thiscall CVssFunctionTracer::Exit(unsigned short *)
?Exit@CVssFunctionTracer@@QAEPAGPAG@Z ; has WINAPI (@4)
; public: bool __thiscall CVssFunctionTracer::Exit(bool)
?Exit@CVssFunctionTracer@@QAE_N_N@Z ; has WINAPI (@4)
; public: void __thiscall CBsDbgTrace::ExitCachedMode(void)
?ExitCachedMode@CBsDbgTrace@@QAEXXZ ; has WINAPI (@0)
; public: void __thiscall CBsDbgTrace::FlushCache(void)
?FlushCache@CBsDbgTrace@@QAEXXZ ; has WINAPI (@0)
; public: struct _RTL_CRITICAL_SECTION *__thiscall CBsCritSec::GetCritSec(void)
?GetCritSec@CBsCritSec@@QAEPAU_RTL_CRITICAL_SECTION@@XZ ; has WINAPI (@0)
; public: unsigned short *__thiscall CVssFunctionTracer::GetCurrentContexts(void)
?GetCurrentContexts@CVssFunctionTracer@@QAEPAGXZ ; has WINAPI (@0)
; public: long __thiscall CVssFunctionTracer::GetHr(void)
?GetHr@CVssFunctionTracer@@QAEJXZ ; has WINAPI (@0)
; public: unsigned int __thiscall CVssFunctionTracer::GetPrefixForContextType(enum _VssContextType)
?GetPrefixForContextType@CVssFunctionTracer@@QAEIW4_VssContextType@@@Z ; has WINAPI (@4)
; public: static enum CVssSKU::EVssSKUType __stdcall CVssSKU::GetSKU(void)
?GetSKU@CVssSKU@@SG?AW4EVssSKUType@1@XZ ; has WINAPI (@0)
; public: unsigned long __thiscall CBsDbgTrace::GetTraceEnterExit(void)
?GetTraceEnterExit@CBsDbgTrace@@QAEKXZ ; has WINAPI (@0)
; public: unsigned short *__thiscall CBsDbgTrace::GetTraceFileVolume(void)
?GetTraceFileVolume@CBsDbgTrace@@QAEPAGXZ ; has WINAPI (@0)
; public: unsigned long __thiscall CBsDbgTrace::GetTraceLevel(void)
?GetTraceLevel@CBsDbgTrace@@QAEKXZ ; has WINAPI (@0)
; public: bool __thiscall CVssFunctionTracer::HrFailed(void)
?HrFailed@CVssFunctionTracer@@QAE_NXZ ; has WINAPI (@0)
; public: bool __thiscall CVssFunctionTracer::HrInFacility(int)
?HrInFacility@CVssFunctionTracer@@QAE_NH@Z ; has WINAPI (@4)
; public: bool __thiscall CVssFunctionTracer::HrSucceeded(void)
?HrSucceeded@CVssFunctionTracer@@QAE_NXZ ; has WINAPI (@0)
; public: void __thiscall CBsDbgTrace::Initialize(int)
?Initialize@CBsDbgTrace@@QAEXH@Z ; has WINAPI (@4)
; private: static void __stdcall CVssSKU::Initialize(void)
?Initialize@CVssSKU@@CGXXZ ; has WINAPI (@0)
; public: void __thiscall CVssFunctionTracer::InterpretWaitForMultipleObjects(unsigned long)
?InterpretWaitForMultipleObjects@CVssFunctionTracer@@QAEXK@Z ; has WINAPI (@4)
; public: static int __stdcall CVssSKU::IsClient(void)
?IsClient@CVssSKU@@SGHXZ ; has WINAPI (@0)
; public: int __thiscall CBsDbgTrace::IsConditonalDebugBreakEnabled(void)
?IsConditonalDebugBreakEnabled@CBsDbgTrace@@QAEHXZ ; has WINAPI (@0)
; public: int __thiscall CBsDbgTrace::IsDuringSetup(void)
?IsDuringSetup@CBsDbgTrace@@QAEHXZ ; has WINAPI (@0)
; public: int __thiscall CVssFunctionTracer::IsDuringSetup(void)
?IsDuringSetup@CVssFunctionTracer@@QAEHXZ ; has WINAPI (@0)
; public: bool __thiscall CVssFunctionTracer::IsHwDiagEnabled(void)
?IsHwDiagEnabled@CVssFunctionTracer@@QAE_NXZ ; has WINAPI (@0)
; public: int __thiscall CVssFunctionTracer::IsInSoftwareProvider(void)
?IsInSoftwareProvider@CVssFunctionTracer@@QAEHXZ ; has WINAPI (@0)
; public: static int __stdcall CVssSKU::IsNAS(void)
?IsNAS@CVssSKU@@SGHXZ ; has WINAPI (@0)
; public: static int __stdcall CVssSKU::IsServer(void)
?IsServer@CVssSKU@@SGHXZ ; has WINAPI (@0)
; public: int __thiscall CBsDbgTrace::IsTracingEnabled(void)
?IsTracingEnabled@CBsDbgTrace@@QAEHXZ ; has WINAPI (@0)
; public: static int __stdcall CVssSKU::IsTransportableAllowed(void)
?IsTransportableAllowed@CVssSKU@@SGHXZ ; has WINAPI (@0)
; public: void __thiscall CBsCritSec::Leave(void)
?Leave@CBsCritSec@@QAEXXZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::LogError(unsigned long,struct CVssDebugInfo,unsigned short,unsigned short *)
?LogError@CVssFunctionTracer@@QAAXKUCVssDebugInfo@@GPAG@Z ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::LogGenericInfo(struct CVssDebugInfo,unsigned short const *,...)
?LogGenericInfo@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBGZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::LogGenericWarning(struct CVssDebugInfo,unsigned short const *,...)
?LogGenericWarning@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBGZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::LogSecurityAudit(unsigned long,struct CVssDebugInfo)
?LogSecurityAudit@CVssFunctionTracer@@QAAXKUCVssDebugInfo@@@Z ; has WINAPI (@0)
; public: void __thiscall CVssFunctionTracer::LogVssStartupAttempt(void)
?LogVssStartupAttempt@CVssFunctionTracer@@QAEXXZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::Msg(unsigned short const *,...)
?Msg@CVssFunctionTracer@@QAAXPBGZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::MsgBox(unsigned short const *,unsigned short const *,...)
?MsgBox@CVssFunctionTracer@@QAAXPBG0ZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::MsgNoCR(unsigned short const *,...)
?MsgNoCR@CVssFunctionTracer@@QAAXPBGZZ ; has WINAPI (@0)
; private: long __thiscall CBsDbgTrace::OpenAndLock(void)
?OpenAndLock@CBsDbgTrace@@AAEJXZ ; has WINAPI (@0)
; private: long __thiscall CBsDbgTrace::OutputString(bool)
?OutputString@CBsDbgTrace@@AAEJ_N@Z ; has WINAPI (@4)
; public: long __thiscall CBsDbgTrace::PostPrint(unsigned long)
?PostPrint@CBsDbgTrace@@QAEJK@Z ; has WINAPI (@4)
; public: long __thiscall CBsDbgTrace::PrePrint(unsigned short const *,unsigned long,unsigned long,unsigned long,unsigned short const *,int)
?PrePrint@CBsDbgTrace@@QAEJPBGKKK0H@Z ; has WINAPI (@24)
; public: long __cdecl CBsDbgTrace::Print(unsigned short const *,...)
?Print@CBsDbgTrace@@QAAJPBGZZ ; has WINAPI (@0)
; public: long __cdecl CBsDbgTrace::PrintEnterExit(unsigned short const *,...)
?PrintEnterExit@CBsDbgTrace@@QAAJPBGZZ ; has WINAPI (@0)
; public: void __thiscall CVssFunctionTracer::ReThrow(void)
?ReThrow@CVssFunctionTracer@@QAEXXZ ; Check!!! Couldn't determine function argument count. Function doesn't return. 
; public: long __thiscall CBsDbgTrace::ReadRegistry(void)
?ReadRegistry@CBsDbgTrace@@QAEJXZ ; has WINAPI (@0)
; public: static bool __cdecl CVssFunctionTracer::SafeLogEvent(unsigned long,unsigned short,int,...)
?SafeLogEvent@CVssFunctionTracer@@SA_NKGHZZ ; has WINAPI (@0)
; public: long __thiscall CVssFunctionTracer::SetHr(long)
?SetHr@CVssFunctionTracer@@QAEJJ@Z ; has WINAPI (@4)
; public: static void __cdecl CVssFunctionTracer::StaticTrace(unsigned short const *,unsigned short const *,...)
?StaticTrace@CVssFunctionTracer@@SAXPBG0ZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::Throw(struct CVssDebugInfo,long,unsigned short const *,...)
?Throw@CVssFunctionTracer@@QAAXUCVssDebugInfo@@JPBGZZ ; Check!!! Couldn't determine function argument count. Function doesn't return. 
; public: void __cdecl CVssFunctionTracer::ThrowIf(int,struct CVssDebugInfo,long,unsigned short const *,...)
?ThrowIf@CVssFunctionTracer@@QAAXHUCVssDebugInfo@@JPBGZZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::ThrowOutOfMemory(struct CVssDebugInfo)
?ThrowOutOfMemory@CVssFunctionTracer@@QAAXUCVssDebugInfo@@@Z ; Check!!! Couldn't determine function argument count. Function doesn't return. 
; public: void __cdecl CVssFunctionTracer::Trace(struct CVssDebugInfo,unsigned short const *,...)
?Trace@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBGZZ ; has WINAPI (@0)
; public: void __thiscall CVssFunctionTracer::TraceBuffer(struct CVssDebugInfo,unsigned long,unsigned char *)
?TraceBuffer@CVssFunctionTracer@@QAEXUCVssDebugInfo@@KPAE@Z ; has WINAPI (@92)
; public: void __thiscall CVssFunctionTracer::TraceComError(void)
?TraceComError@CVssFunctionTracer@@QAEXXZ ; has WINAPI (@0)
; public: void __cdecl CVssFunctionTracer::TranslateComError(struct CVssDebugInfo,unsigned short const *,...)
?TranslateComError@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBGZZ ; Check!!! Couldn't determine function argument count. Function doesn't return. 
; public: void __cdecl CVssFunctionTracer::TranslateError(struct CVssDebugInfo,long,unsigned short const *)
?TranslateError@CVssFunctionTracer@@QAAXUCVssDebugInfo@@JPBG@Z ; Check!!! Couldn't determine function argument count. Function doesn't return. 
; public: void __cdecl CVssFunctionTracer::TranslateGenericError(struct CVssDebugInfo,long,unsigned short const *,...)
?TranslateGenericError@CVssFunctionTracer@@QAAXUCVssDebugInfo@@JPBGZZ ; Check!!! Couldn't determine function argument count. Function doesn't return. 
; public: void __cdecl CVssFunctionTracer::TranslateInternalLovelaceError(struct CVssDebugInfo,long,int,unsigned short const *,...)
?TranslateInternalLovelaceError@CVssFunctionTracer@@QAAXUCVssDebugInfo@@JHPBGZZ ; Check!!! Couldn't determine function argument count. Function doesn't return. 
; public: void __cdecl CVssFunctionTracer::TranslateInternalProviderError(struct CVssDebugInfo,long,long,unsigned short const *,...)
?TranslateInternalProviderError@CVssFunctionTracer@@QAAXUCVssDebugInfo@@JJPBGZZ ; Check!!! Couldn't determine function argument count. Function doesn't return. 
; public: void __cdecl CVssFunctionTracer::TranslateProviderError(struct CVssDebugInfo,struct _GUID,unsigned short const *,...)
?TranslateProviderError@CVssFunctionTracer@@QAAXUCVssDebugInfo@@U_GUID@@PBGZZ ; Check!!! Couldn't determine function argument count. Function doesn't return. 
; public: void __cdecl CVssFunctionTracer::TranslateWin32Error(struct CVssDebugInfo,unsigned short const *,...)
?TranslateWin32Error@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBGZZ ; Check!!! Couldn't determine function argument count. Function doesn't return. 
; public: void __cdecl CVssFunctionTracer::TranslateWriterReturnCode(struct CVssDebugInfo,unsigned short const *,...)
?TranslateWriterReturnCode@CVssFunctionTracer@@QAAXUCVssDebugInfo@@PBGZZ ; has WINAPI (@0)
; private: long __thiscall CBsDbgTrace::UnlockAndClose(void)
?UnlockAndClose@CBsDbgTrace@@AAEJXZ ; has WINAPI (@0)
; void __stdcall VssSetDebugReport(long)
?VssSetDebugReport@@YGXJ@Z ; has WINAPI (@4)
; class CBsDbgTrace g_cDbgTrace
?g_cDbgTrace@@3VCBsDbgTrace@@A DATA
; private: static int CVssSKU::ms_bInitialized
?ms_bInitialized@CVssSKU@@0HA DATA
; private: static int CVssSKU::ms_bTransportableShadowsAllowed
?ms_bTransportableShadowsAllowed@CVssSKU@@0HA DATA
; private: static enum CVssSKU::EVssSKUType CVssSKU::ms_eSKU
?ms_eSKU@CVssSKU@@0W4EVssSKUType@1@A DATA
