|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 2000
//
// File: auxml.cpp
//
// About: source file for AU related XML and schema data structure and functions
//--------------------------------------------------------------------------
#include "pch.h"
#if 0
HRESULT MYLoadXMLDoc(BSTR bstrXml, IXMLDOMDocument** ppDoc) //always offline
{ HRESULT hr; VARIANT_BOOL fSuccess ;
// DEBUGMSG("MYLoadXMLDoc starts");
hr = CoCreateInstance(__uuidof(DOMDocument), NULL, CLSCTX_INPROC_SERVER, __uuidof( IXMLDOMDocument), (void **) ppDoc); if (FAILED(hr)) { DEBUGMSG("Warning: Fail to create DOM document with error %#lx", hr); goto done; } if (FAILED(hr = (*ppDoc)->put_validateOnParse(VARIANT_FALSE)) || FAILED(hr = (*ppDoc)->put_resolveExternals(VARIANT_FALSE)) || FAILED(hr = (*ppDoc)->put_async(VARIANT_FALSE))) { DEBUGMSG("Warning: Fail to set document properties with error %#lx", hr); SafeRelease(*ppDoc); goto done; }
//
// load the XML Doc from input string
//
if (S_OK != (hr = (*ppDoc)->loadXML(bstrXml, &fSuccess))) { DEBUGMSG("Warning: Fail to load document with error %#lx", hr); SafeRelease(*ppDoc); }
if (S_FALSE == hr) { hr = E_FAIL; }
done: // DEBUGMSG("MYLoadXMLDoc ends");
return hr; } #endif
#ifdef DBG
void LOGFILE(LPTSTR szFileName, BSTR bstrMessage) { // USES_CONVERSION;
TCHAR szLogFile[MAX_PATH] ; AUASSERT(_T('\0') != g_szWUDir[0]); if (FAILED(StringCchCopyEx(szLogFile, ARRAYSIZE(szLogFile), g_szWUDir, NULL, NULL, MISTSAFE_STRING_FLAGS)) || FAILED(StringCchCatEx(szLogFile, ARRAYSIZE(szLogFile), szFileName, NULL, NULL, MISTSAFE_STRING_FLAGS))) { DEBUGMSG("file name and path too long"); return; } HANDLE hFile = CreateFile(szLogFile, GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, NULL, NULL); if (INVALID_HANDLE_VALUE == hFile) { DEBUGMSG("Fail to create file %S", T2W(szLogFile)); return; } DWORD dwBytesWritten; BYTE bMagic1 = 0xff; BYTE bMagic2 = 0xfe; if (!WriteFile(hFile, &bMagic1, sizeof(bMagic1), &dwBytesWritten, NULL) || !WriteFile(hFile, &bMagic2, sizeof(bMagic2), &dwBytesWritten, NULL) || !WriteFile(hFile, bstrMessage, SysStringByteLen(bstrMessage), &dwBytesWritten, NULL)) { DEBUGMSG("Fail to write to file %S with error %d", T2W(szLogFile), GetLastError()); } CloseHandle(hFile); return; } #endif
HRESULT LOGXMLFILE(LPCTSTR szFileName, BSTR bstrMessage) { IXMLDOMDocument *pxml; HRESULT hr ; TCHAR szLogFile[MAX_PATH] ;
if (NULL == szFileName) { //no logging needed
return E_INVALIDARG; }
AUASSERT(_T('\0') != g_szWUDir[0]); if (FAILED(hr = StringCchCopyEx(szLogFile, ARRAYSIZE(szLogFile), g_szWUDir, NULL, NULL, MISTSAFE_STRING_FLAGS)) || FAILED(hr = StringCchCatEx(szLogFile, ARRAYSIZE(szLogFile), szFileName, NULL, NULL, MISTSAFE_STRING_FLAGS))) { return hr; }
CAU_BSTR aubsTmp; if (!aubsTmp.append(T2W(szLogFile))) { return E_OUTOFMEMORY; } if (SUCCEEDED(hr = LoadXMLDoc(bstrMessage, &pxml))) { if (FAILED(hr = SaveDocument(pxml, aubsTmp))) { DEBUGMSG("Warning: Fail to save xml file %S", T2W(szLogFile)); } pxml->Release(); } else { DEBUGMSG("Warning: fail to load ill formated xml with error %#lx", hr); #ifdef DBG
TCHAR szBadFileName[MAX_PATH+1]; if (SUCCEEDED(StringCchCopyEx(szBadFileName, ARRAYSIZE(szBadFileName), szFileName, NULL, NULL, MISTSAFE_STRING_FLAGS)) && SUCCEEDED(StringCchCatEx(szBadFileName, ARRAYSIZE(szBadFileName), _T(".xml"), NULL, NULL, MISTSAFE_STRING_FLAGS))) { LOGFILE(szBadFileName, bstrMessage); } #endif
} return hr; }
|