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.
 
 
 
 
 
 

108 lines
2.5 KiB

#pragma once
//
// Per BryanT, either do not use #import, or checkin what it produces.
//
//#pragma warning(disable:4192) // automatically excluding 'IErrorInfo' while importing type library 'msxml3.dll'
//#import "msxml3.dll"
#include "fusion_msxml3.tlh"
#include "fusioncoinitialize.h"
#include "filestream.h"
#include "fusionbuffer.h"
namespace F
{
template <typename T>
void ThrCreateInstance(T& t, PCWSTR s)
{
FN_PROLOG_VOID_THROW
IFCOMFAILED_EXIT(t.CreateInstance(const_cast<PWSTR>(s)));
FN_EPILOG_THROW;
}
class CXmlWriter
// It'd be nice to have a class that provided the union of all the member functions
// and forwarded it to the appropriate vtable..
{
public:
CXmlWriter()
{
ThrCreateInstance(this->IMXWriter, L"Msxml2.MXXMLWriter.3.0");
this->ISAXContentHandler = this->IMXWriter;
}
void Release()
{
this->IMXWriter.Release();
this->ISAXContentHandler.Release();
}
MSXML2::IMXWriterPtr IMXWriter;
MSXML2::ISAXContentHandlerPtr ISAXContentHandler;
};
class CXmlAttributes
{
public:
CXmlAttributes()
{
ThrCreateInstance(this->IMXAttributes, L"Msxml2.SAXAttributes.3.0");
this->ISAXAttributes = this->IMXAttributes;
}
void Release()
{
this->IMXAttributes.Release();
this->ISAXAttributes.Release();
}
MSXML2::IMXAttributesPtr IMXAttributes;
MSXML2::ISAXAttributesPtr ISAXAttributes;
};
class CRegKey2;
class CRegToXml2
{
public:
void ThrRegToXml();
CRegToXml2(int argc, PWSTR* argv);
void Release()
{
this->Writer.Release();
this->Attributes.Release();
}
int argc;
PWSTR* argv;
protected:
void ThrInit(int argc, PWSTR* argv);
void Usage();
F::CThrCoInitialize Coinit;
CXmlWriter Writer;
CXmlAttributes Attributes;
CFileStream OutFileStream;
F::CStringBuffer ValueDataTextBuffer;
_bstr_t Bstr_name;
_bstr_t Bstr_value;
_bstr_t Bstr_CDATA;
_bstr_t Bstr_data;
_bstr_t Bstr_type;
_bstr_t EmptyBstr;
void ThrDumpKey(ULONG Depth, HKEY Key, PCWSTR Name);
void ThrDumpBuiltinRoot(HKEY PseudoHandle, PCWSTR Name);
void ThrDumpBuiltinRoots();
};
}