Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// CheckSymbols.cpp : Implementation of CCheckSymbols
#include "stdafx.h"
#include "CheckSymbolsLib.h"
#include "CheckSymbols.h"
#include "..\symutil.h"
/////////////////////////////////////////////////////////////////////////////
// CCheckSymbols
STDMETHODIMP CCheckSymbols::CheckSymbols(BSTR FilePath, BSTR SymPath, BSTR StripSym, BSTR *OutputString) { // TODO: Add your implementation code here
/* ATL release builds has a macro defined that prevents crt functions from being
included. If you need to call any c runtime functions you'll need to remove the macro _ATL_MIN_CRT first.
*/
TCHAR MyOutputString[MAX_SYM_ERR]; TCHAR MySymPath[_MAX_PATH]; TCHAR MyFilePath[_MAX_PATH];
CComBSTR bstrFilePath = FilePath; CComBSTR bstrSymPath = SymPath; CComBSTR bstrStripSym = StripSym; CComBSTR bstrOutputString;
USES_CONVERSION;
//Make sure buffer is big enough. CComBSTR.Length() doesn't include terminating NULL.
if (bstrFilePath.Length() >= _MAX_PATH) { //Path too long...
Error("The specified file path is too long"); return E_FAIL; } if (bstrSymPath.Length() >= _MAX_PATH) { //Path too long...
Error("The specified symbol path is too long"); return E_FAIL; }
//Might want to validate StripSym parameter here...
lstrcpyn(MyFilePath, OLE2T(bstrFilePath), bstrFilePath.Length() + 1); lstrcpyn(MySymPath, OLE2T(bstrSymPath), bstrSymPath.Length() + 1);
// Input values:
// MySymPath Full path to directory where symbols are located
// MyFilePath Full path and name of file to verify symbols for.
//
// Return values:
// MyOutputString= empty string => Symbol checking passed.
// MyOutputString!= empty string => Symbol checking failed. String has the binary name
// followed by spaces, and then the text reason.
MyCheckSymbols( MyOutputString, MySymPath, MyFilePath, NULL, 0, 0 );
bstrOutputString = T2OLE(MyOutputString); *OutputString = bstrOutputString.Copy(); return S_OK; }
|