私はC++とC#の知識がありますが、COMは私にとってエイリアンです。startElement()、endElement、processingInstructions()、characters()などのインターフェイスISAXContentHandler(msxml6.DLLの)のすべてのメソッドが実装されているVC ++COMDLLがあります。つまり、これらのインターフェイスメソッドは、VC ++COMDLLで実装されています。このVC++COM DLLをC#DLLに変換して、この変換されたC#DLLをC#アプリケーションから呼び出すことができるようにします。
私は、これらのインターフェース方法がどこから呼び出されているのか理解していません。VC ++COMDLL内から「関数呼び出しステートメント」が作成されていないためです。
例:----- VC ++COMDLLに実装されているインターフェイスメソッドの1つは次のように始まります--->
**HRESULT STDMETHODCALLTYPE ContentHandler_SAX::startElement(
/* [in] */ wchar_t __RPC_FAR *pwchNamespaceUri,
/* [in] */ int cchNamespaceUri,
/* [in] */ wchar_t __RPC_FAR *pwchLocalName,
/* [in] */ int cchLocalName,
/* [in] */ wchar_t __RPC_FAR *pwchRawName,
/* [in] */ int cchRawName,
/* [in] */ ISAXAttributes __RPC_FAR *pAttributes)**
クラスは、msxml6.dllからISAXContentHAndlerインターフェイスを実装しています。
SAXContentHandlerがXMLパーサーであることを知っています。この関数のこれらのパラメーターが何であるかわかりません。また、dパラメーター名とともに_RPCキーワードを使用しています。そして、私は理解していません、FROMどこでこれらの関数が呼び出されているのですか。