Sunday 3 June 2018

VBA - Python - Python COM Class has own process (if executable architectures mismatch)

So after having to resolve issues getting a Python COM class to work, I was curious as to how Python implements and hosts COM classes. It seemed unlikely it would create a DLL so I went looking for a separate process.

Place a Stop in the client code

So we need to adjust the client code, if we place a Stop statement then we can hold the class in limbo and then investigate. Here is the adjusted client code. Run the code and it will Stop on the Stop line (obvs) and it will be highlighted with yellow background.

Option Explicit

Sub Test()

    Dim obj As Object
    Set obj = CreateObject("SciPyInVBA.QuadEqfactorizer")
    
    Debug.Print obj.greeting
    Stop
End Sub

Python COM Class has own pythonw.exe process

So whilst the Excel VBA code was stopped, I used Process Monitor from sysinternals.com to see if Python was launched and I found the following entry with some editing...

"%pythondir%\pythonw.exe"  "%pythondir%\lib\site-packages\win32com\server\localserver.py" {CAAA6723-6A89-4BCD-A375-43BF4C06B01B} -Embedding

Where %pythondir% is one of my environment variables, (the full text is given by process monitor by the way).

Focussing on the executable first, pythonw.exe. Googling, I found that pythonw.exe is very much like python.exe with some differences like no console window. A Stack Overflow answer has a good breakdown on further differences.

Python COM Class's pythonw.exe process runs localserver.py

Moving onto the command line parameters we can see that pythonw.exe is running the python script localserver.py, the following parameter is the classid which we defined and the final parameter says -Embedding which I suppose is a reference to OLE (Object Linking and Embedding) which is a COM related technology.

Localserver.py rings a bell, localserver is one of the three hosting patterns for a COM class, they are (i) in-process server, (ii) local server - a separate process on same machine and (iii) remote server - a separate process on a remote machine.

A Python's COM Class Registration in full

This provoke me to look in the registry at thee full details and here is what I found.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{CAAA6723-6A89-4BCD-A375-43BF4C06B01B}]
@="SciPyInVBA.QuadEqFactorizer"

[HKEY_CLASSES_ROOT\CLSID\{CAAA6723-6A89-4BCD-A375-43BF4C06B01B}\Debugging]
@="0"

[HKEY_CLASSES_ROOT\CLSID\{CAAA6723-6A89-4BCD-A375-43BF4C06B01B}\Implemented Categories]

[HKEY_CLASSES_ROOT\CLSID\{CAAA6723-6A89-4BCD-A375-43BF4C06B01B}\Implemented Categories\{B3EF80D0-68E2-11D0-A689-00C04FD658FF}]

[HKEY_CLASSES_ROOT\CLSID\{CAAA6723-6A89-4BCD-A375-43BF4C06B01B}\InprocServer32]
@="pythoncom36.dll"
"ThreadingModel"="both"

[HKEY_CLASSES_ROOT\CLSID\{CAAA6723-6A89-4BCD-A375-43BF4C06B01B}\LocalServer32]
@="C:\\Progra~2\\Micros~4\\Shared\\Python~1\\pythonw.exe \"C:\\Progra~2\\Micros~4\\Shared\\Python~1\\lib\\site-packages\\win32com\\server\\localserver.py\" {CAAA6723-6A89-4BCD-A375-43BF4C06B01B}"

[HKEY_CLASSES_ROOT\CLSID\{CAAA6723-6A89-4BCD-A375-43BF4C06B01B}\ProgID]
@="SciPyInVBA.QuadEqFactorizer"

[HKEY_CLASSES_ROOT\CLSID\{CAAA6723-6A89-4BCD-A375-43BF4C06B01B}\PythonCOM]
@="QuadEqFactorizer.QuadEqFactorizer"

[HKEY_CLASSES_ROOT\CLSID\{CAAA6723-6A89-4BCD-A375-43BF4C06B01B}\PythonCOMPath]
@="C:\\Users\\Simon\\source\\repos\\QuadEqFactorizer\\QuadEqFactorizer"

So Python's COM Class DOES have an In-Process Mode

So the real revelation from the above registry details in that a Python COM Class DOES have an in-process mode as is evidenced by the InprocServer32 key. I said at the top it was unlikely that Python would compiled its own DLL and this is true but it looks like Python has an inprocess DLL that I speculate could run python scripts in-process. I must ask StackOverflow but must try a few things first to show initiative.

Fiddling with the Registry

So I change the registry key called LocalServer32 to LocalServer32_Suspended so as to thwart any attempt down that route and force the COM service control manager to create an in-process component. That didn't work.

So now focusing on the InprocServer32 key. Firstly, it is not a full path so let's see if rectifying that helps. I need to find where it lives within the Visual Studio folders, so using

C:\Program Files (x86)\Microsoft Visual Studio>DIR PYTHONcom36.dll /s
...
 Directory of C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Lib\site-packages\pywin32_system32

02/06/2018  14:26           553,472 pythoncom36.dll
               1 File(s)        553,472 bytes
...

So I try changing the InprocServer32 key to C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Lib\site-packages\pywin32_system32\pythoncom36.dll but it still fails with (429) ActiveX component can't create object.

Next we need to debug the cycle of loading the Dll and finding the entry point of DllGetClassObject. First, I use Dependency Walker to see what pythoncom36.dll is made of, a dump of its exports is given in Appendix A below. The dump shows that pythoncom36.dll exports DllGetClassObject so now we can run experiments to call into that entry point and attempt to create the COM class very low-level.

Ok, after some digging my Excel VBA must be 32-bit and pythoncom36.dll must be 64-bit and so I cannot load the dll in process.

How to tell if an executable is 64-bit

So there are two ways to tell if an executable, exe or dll, is 32-bit or 64-bit. Firstly, use DUMPBIN.exe with the /HEADERS option and the look for machine.

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\Hostx86\x86>dumpbin "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Lib\site-packages\pywin32_system32\pythoncom36.dll" /HEADERS
Microsoft (R) COFF/PE Dumper Version 14.12.25835.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Lib\site-packages\pywin32_system32\pythoncom36.dll

PE signature found

File Type: DLL

FILE HEADER VALUES
            8664 machine (x64)
               7 number of sections
        5A924C75 time date stamp Sun Feb 25 05:41:09 2018
               0 file pointer to symbol table
               0 number of symbols
              F0 size of optional header
            2022 characteristics
                   Executable
                   Application can handle large (>2GB) addresses
                   DLL

The second method is to use Depends.exe and look for the 64-bit icon, below is an example ringed in green.

Final Thoughts

So I wonder if it possible to re-run the experiment after having discovered a 32-bit edition of Python. This matters because in-process dlls are faster than cross process calls.

Appendix A - pythoncom36.dll exports dump

This dump was acheived with this blog post and also running the file through undname.exe found in same folder as dumpbin.exe.


Microsoft (R) COFF/PE Dumper Version 14.12.25835.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Lib\site-packages\pywin32_system32\pythoncom36.dll

File Type: DLL

  Section contains the following exports for pythoncom36.dll

    00000000 characteristics
    5A924C75 time date stamp Sun Feb 25 05:41:09 2018
        0.00 version
           1 ordinal base
         459 number of functions
         459 number of names

    ordinal hint RVA      name

          3    0 0000A4A0 public: __cdecl CPyFactory::CPyFactory(struct _GUID const & __ptr64) __ptr64
          4    1 00002810 public: __cdecl CPyFactory::CPyFactory(class CPyFactory const & __ptr64) __ptr64
          5    2 000061F0 public: __cdecl PyComEnumProviderTypeObject::PyComEnumProviderTypeObject(char const * __ptr64,class PyComTypeObject * __ptr64,int,struct PyMethodDef * __ptr64,class PyIUnknown * __ptr64 (__cdecl*)(struct IUnknown * __ptr64),char const * __ptr64) __ptr64
          6    3 00006570 public: __cdecl PyComEnumTypeObject::PyComEnumTypeObject(char const * __ptr64,class PyComTypeObject * __ptr64,int,struct PyMethodDef * __ptr64,class PyIUnknown * __ptr64 (__cdecl*)(struct IUnknown * __ptr64)) __ptr64
          7    4 00006100 public: __cdecl PyComTypeObject::PyComTypeObject(char const * __ptr64,class PyComTypeObject * __ptr64,int,struct PyMethodDef * __ptr64,class PyIUnknown * __ptr64 (__cdecl*)(struct IUnknown * __ptr64)) __ptr64
          8    5 0001CB40 protected: __cdecl PyGOleWindow::PyGOleWindow(struct _object * __ptr64) __ptr64
          9    6 0001CB90 public: __cdecl PyGOleWindow::PyGOleWindow(class PyGOleWindow && __ptr64) __ptr64
         10    7 0001CC00 public: __cdecl PyGOleWindow::PyGOleWindow(class PyGOleWindow const & __ptr64) __ptr64
         11    8 0001CC70 protected: __cdecl PyGPersist::PyGPersist(struct _object * __ptr64) __ptr64
         12    9 0001CCC0 public: __cdecl PyGPersist::PyGPersist(class PyGPersist && __ptr64) __ptr64
         13    A 0001CD30 public: __cdecl PyGPersist::PyGPersist(class PyGPersist const & __ptr64) __ptr64
         14    B 0000A930 protected: __cdecl PyGatewayBase::PyGatewayBase(struct _object * __ptr64) __ptr64
         15    C 00002890 public: __cdecl PyGatewayBase::PyGatewayBase(class PyGatewayBase const & __ptr64) __ptr64
         16    D 0000C700 protected: __cdecl PyIBase::PyIBase(void) __ptr64
         17    E 000028D0 public: __cdecl PyIBase::PyIBase(class PyIBase const & __ptr64) __ptr64
         18    F 00025D40 protected: __cdecl PyIBindCtx::PyIBindCtx(struct IUnknown * __ptr64) __ptr64
         19   10 0001D170 public: __cdecl PyIBindCtx::PyIBindCtx(class PyIBindCtx const & __ptr64) __ptr64
         20   11 0000CBC0 protected: __cdecl PyIClassFactory::PyIClassFactory(struct IUnknown * __ptr64) __ptr64
         21   12 000028F0 public: __cdecl PyIClassFactory::PyIClassFactory(class PyIClassFactory const & __ptr64) __ptr64
         22   13 00027390 protected: __cdecl PyIConnectionPoint::PyIConnectionPoint(struct IUnknown * __ptr64) __ptr64
         23   14 00002930 public: __cdecl PyIConnectionPoint::PyIConnectionPoint(class PyIConnectionPoint const & __ptr64) __ptr64
         24   15 000275A0 protected: __cdecl PyIConnectionPointContainer::PyIConnectionPointContainer(struct IUnknown * __ptr64) __ptr64
         25   16 00002970 public: __cdecl PyIConnectionPointContainer::PyIConnectionPointContainer(class PyIConnectionPointContainer const & __ptr64) __ptr64
         26   17 0000DA80 protected: __cdecl PyIDispatch::PyIDispatch(struct IUnknown * __ptr64) __ptr64
         27   18 000029B0 public: __cdecl PyIDispatch::PyIDispatch(class PyIDispatch const & __ptr64) __ptr64
         28   19 0000E280 protected: __cdecl PyIDispatchEx::PyIDispatchEx(struct IUnknown * __ptr64) __ptr64
         29   1A 000029F0 public: __cdecl PyIDispatchEx::PyIDispatchEx(class PyIDispatchEx const & __ptr64) __ptr64
         30   1B 00032850 protected: __cdecl PyIEnumMoniker::PyIEnumMoniker(struct IUnknown * __ptr64) __ptr64
         31   1C 0001D1B0 public: __cdecl PyIEnumMoniker::PyIEnumMoniker(class PyIEnumMoniker const & __ptr64) __ptr64
         32   1D 00030C20 protected: __cdecl PyIEnumVARIANT::PyIEnumVARIANT(struct IUnknown * __ptr64) __ptr64
         33   1E 0001D1F0 public: __cdecl PyIEnumVARIANT::PyIEnumVARIANT(class PyIEnumVARIANT const & __ptr64) __ptr64
         34   1F 000331D0 protected: __cdecl PyIMoniker::PyIMoniker(struct IUnknown * __ptr64) __ptr64
         35   20 0001D230 public: __cdecl PyIMoniker::PyIMoniker(class PyIMoniker const & __ptr64) __ptr64
         36   21 000333A0 protected: __cdecl PyIOleWindow::PyIOleWindow(struct IUnknown * __ptr64) __ptr64
         37   22 0001D270 public: __cdecl PyIOleWindow::PyIOleWindow(class PyIOleWindow const & __ptr64) __ptr64
         38   23 000335F0 protected: __cdecl PyIPersist::PyIPersist(struct IUnknown * __ptr64) __ptr64
         39   24 0001D2B0 public: __cdecl PyIPersist::PyIPersist(class PyIPersist const & __ptr64) __ptr64
         40   25 00034BC0 protected: __cdecl PyIPersistStream::PyIPersistStream(struct IUnknown * __ptr64) __ptr64
         41   26 0001D2F0 public: __cdecl PyIPersistStream::PyIPersistStream(class PyIPersistStream const & __ptr64) __ptr64
         42   27 00034CE0 protected: __cdecl PyIPersistStreamInit::PyIPersistStreamInit(struct IUnknown * __ptr64) __ptr64
         43   28 0001D330 public: __cdecl PyIPersistStreamInit::PyIPersistStreamInit(class PyIPersistStreamInit const & __ptr64) __ptr64
         44   29 00038F60 protected: __cdecl PyIProvideClassInfo2::PyIProvideClassInfo2(struct IUnknown * __ptr64) __ptr64
         45   2A 00002A30 public: __cdecl PyIProvideClassInfo2::PyIProvideClassInfo2(class PyIProvideClassInfo2 const & __ptr64) __ptr64
         46   2B 00038E30 protected: __cdecl PyIProvideClassInfo::PyIProvideClassInfo(struct IUnknown * __ptr64) __ptr64
         47   2C 00002A70 public: __cdecl PyIProvideClassInfo::PyIProvideClassInfo(class PyIProvideClassInfo const & __ptr64) __ptr64
         48   2D 00039670 protected: __cdecl PyIServiceProvider::PyIServiceProvider(struct IUnknown * __ptr64) __ptr64
         49   2E 0001D370 public: __cdecl PyIServiceProvider::PyIServiceProvider(class PyIServiceProvider const & __ptr64) __ptr64
         50   2F 0003C3C0 protected: __cdecl PyIStream::PyIStream(struct IUnknown * __ptr64) __ptr64
         51   30 0001D3B0 public: __cdecl PyIStream::PyIStream(class PyIStream const & __ptr64) __ptr64
         52   31 0003CE00 protected: __cdecl PyITypeComp::PyITypeComp(struct IUnknown * __ptr64) __ptr64
         53   32 00002AB0 public: __cdecl PyITypeComp::PyITypeComp(class PyITypeComp const & __ptr64) __ptr64
         54   33 0003CC50 protected: __cdecl PyITypeInfo::PyITypeInfo(struct IUnknown * __ptr64) __ptr64
         55   34 00002AF0 public: __cdecl PyITypeInfo::PyITypeInfo(class PyITypeInfo const & __ptr64) __ptr64
         56   35 0003D3E0 protected: __cdecl PyITypeLib::PyITypeLib(struct IUnknown * __ptr64) __ptr64
         57   36 00002B30 public: __cdecl PyITypeLib::PyITypeLib(class PyITypeLib const & __ptr64) __ptr64
         58   37 0000EC60 protected: __cdecl PyIUnknown::PyIUnknown(struct IUnknown * __ptr64) __ptr64
         59   38 00002B70 public: __cdecl PyIUnknown::PyIUnknown(class PyIUnknown const & __ptr64) __ptr64
         60   39 00006740 public: __cdecl PyOleArgNotFound::PyOleArgNotFound(void) __ptr64
         61   3A 00006700 public: __cdecl PyOleEmpty::PyOleEmpty(void) __ptr64
         62   3B 00006720 public: __cdecl PyOleMissing::PyOleMissing(void) __ptr64
         63   3C 00006760 public: __cdecl PyOleNothing::PyOleNothing(void) __ptr64
         64   3D 00010560 public: __cdecl PySTGMEDIUM::PySTGMEDIUM(struct tagSTGMEDIUM * __ptr64) __ptr64
         65   3E 00007500 public: __cdecl PythonOleArgHelper::PythonOleArgHelper(void) __ptr64
         66   3F 0000A4D0 public: __cdecl CPyFactory::~CPyFactory(void) __ptr64
         67   40 00002BF0 public: __cdecl PyComEnumProviderTypeObject::~PyComEnumProviderTypeObject(void) __ptr64
         68   41 00002C00 public: __cdecl PyComEnumTypeObject::~PyComEnumTypeObject(void) __ptr64
         69   42 000061C0 public: __cdecl PyComTypeObject::~PyComTypeObject(void) __ptr64
         70   43 0001D520 public: virtual __cdecl PyGOleWindow::~PyGOleWindow(void) __ptr64
         71   44 0001D530 public: virtual __cdecl PyGPersist::~PyGPersist(void) __ptr64
         72   45 0000A990 protected: virtual __cdecl PyGatewayBase::~PyGatewayBase(void) __ptr64
         73   46 0000C720 protected: virtual __cdecl PyIBase::~PyIBase(void) __ptr64
         74   47 00025D80 protected: virtual __cdecl PyIBindCtx::~PyIBindCtx(void) __ptr64
         75   48 0000CC10 protected: virtual __cdecl PyIClassFactory::~PyIClassFactory(void) __ptr64
         76   49 000273D0 protected: virtual __cdecl PyIConnectionPoint::~PyIConnectionPoint(void) __ptr64
         77   4A 000275E0 protected: virtual __cdecl PyIConnectionPointContainer::~PyIConnectionPointContainer(void) __ptr64
         78   4B 0000DAC0 protected: virtual __cdecl PyIDispatch::~PyIDispatch(void) __ptr64
         79   4C 0000E2C0 protected: virtual __cdecl PyIDispatchEx::~PyIDispatchEx(void) __ptr64
         80   4D 00032890 protected: virtual __cdecl PyIEnumMoniker::~PyIEnumMoniker(void) __ptr64
         81   4E 00030C60 protected: virtual __cdecl PyIEnumVARIANT::~PyIEnumVARIANT(void) __ptr64
         82   4F 00033210 protected: virtual __cdecl PyIMoniker::~PyIMoniker(void) __ptr64
         83   50 000333E0 protected: virtual __cdecl PyIOleWindow::~PyIOleWindow(void) __ptr64
         84   51 00033630 protected: virtual __cdecl PyIPersist::~PyIPersist(void) __ptr64
         85   52 00034C00 protected: virtual __cdecl PyIPersistStream::~PyIPersistStream(void) __ptr64
         86   53 00034D20 protected: virtual __cdecl PyIPersistStreamInit::~PyIPersistStreamInit(void) __ptr64
         87   54 00038FA0 protected: virtual __cdecl PyIProvideClassInfo2::~PyIProvideClassInfo2(void) __ptr64
         88   55 00038E70 protected: virtual __cdecl PyIProvideClassInfo::~PyIProvideClassInfo(void) __ptr64
         89   56 000396B0 protected: virtual __cdecl PyIServiceProvider::~PyIServiceProvider(void) __ptr64
         90   57 0003C400 protected: virtual __cdecl PyIStream::~PyIStream(void) __ptr64
         91   58 0003CE40 protected: virtual __cdecl PyITypeComp::~PyITypeComp(void) __ptr64
         92   59 0003CC90 protected: virtual __cdecl PyITypeInfo::~PyITypeInfo(void) __ptr64
         93   5A 0003D420 protected: virtual __cdecl PyITypeLib::~PyITypeLib(void) __ptr64
         94   5B 0000ECC0 protected: virtual __cdecl PyIUnknown::~PyIUnknown(void) __ptr64
         95   5C 000105B0 public: __cdecl PySTGMEDIUM::~PySTGMEDIUM(void) __ptr64
         96   5D 00007530 public: __cdecl PythonOleArgHelper::~PythonOleArgHelper(void) __ptr64
         97   5E 00002C10 public: class CPyFactory & __ptr64 __cdecl CPyFactory::operator=(class CPyFactory const & __ptr64) __ptr64
         98   5F 00002C90 public: class PyComEnumProviderTypeObject & __ptr64 __cdecl PyComEnumProviderTypeObject::operator=(class PyComEnumProviderTypeObject && __ptr64) __ptr64
         99   60 00002D20 public: class PyComEnumProviderTypeObject & __ptr64 __cdecl PyComEnumProviderTypeObject::operator=(class PyComEnumProviderTypeObject const & __ptr64) __ptr64
        100   61 00002DA0 public: class PyComEnumTypeObject & __ptr64 __cdecl PyComEnumTypeObject::operator=(class PyComEnumTypeObject && __ptr64) __ptr64
        101   62 00002E20 public: class PyComEnumTypeObject & __ptr64 __cdecl PyComEnumTypeObject::operator=(class PyComEnumTypeObject const & __ptr64) __ptr64
        102   63 00002EA0 public: class PyComTypeObject & __ptr64 __cdecl PyComTypeObject::operator=(class PyComTypeObject const & __ptr64) __ptr64
        103   64 0001D650 public: class PyGOleWindow & __ptr64 __cdecl PyGOleWindow::operator=(class PyGOleWindow && __ptr64) __ptr64
        104   65 0001D670 public: class PyGOleWindow & __ptr64 __cdecl PyGOleWindow::operator=(class PyGOleWindow const & __ptr64) __ptr64
        105   66 0001D690 public: class PyGPersist & __ptr64 __cdecl PyGPersist::operator=(class PyGPersist && __ptr64) __ptr64
        106   67 0001D6B0 public: class PyGPersist & __ptr64 __cdecl PyGPersist::operator=(class PyGPersist const & __ptr64) __ptr64
        107   68 00002F20 public: class PyGatewayBase & __ptr64 __cdecl PyGatewayBase::operator=(class PyGatewayBase const & __ptr64) __ptr64
        108   69 00002F40 public: class PyIBase & __ptr64 __cdecl PyIBase::operator=(class PyIBase const & __ptr64) __ptr64
        109   6A 0001D6D0 public: class PyIBindCtx & __ptr64 __cdecl PyIBindCtx::operator=(class PyIBindCtx const & __ptr64) __ptr64
        110   6B 00002F70 public: class PyIClassFactory & __ptr64 __cdecl PyIClassFactory::operator=(class PyIClassFactory const & __ptr64) __ptr64
        111   6C 00002FB0 public: class PyIConnectionPoint & __ptr64 __cdecl PyIConnectionPoint::operator=(class PyIConnectionPoint const & __ptr64) __ptr64
        112   6D 00002FF0 public: class PyIConnectionPointContainer & __ptr64 __cdecl PyIConnectionPointContainer::operator=(class PyIConnectionPointContainer const & __ptr64) __ptr64
        113   6E 00003030 public: class PyIDispatch & __ptr64 __cdecl PyIDispatch::operator=(class PyIDispatch const & __ptr64) __ptr64
        114   6F 00003070 public: class PyIDispatchEx & __ptr64 __cdecl PyIDispatchEx::operator=(class PyIDispatchEx const & __ptr64) __ptr64
        115   70 0001D710 public: class PyIEnumMoniker & __ptr64 __cdecl PyIEnumMoniker::operator=(class PyIEnumMoniker const & __ptr64) __ptr64
        116   71 0001D750 public: class PyIEnumVARIANT & __ptr64 __cdecl PyIEnumVARIANT::operator=(class PyIEnumVARIANT const & __ptr64) __ptr64
        117   72 0001D790 public: class PyIMoniker & __ptr64 __cdecl PyIMoniker::operator=(class PyIMoniker const & __ptr64) __ptr64
        118   73 0001D7D0 public: class PyIOleWindow & __ptr64 __cdecl PyIOleWindow::operator=(class PyIOleWindow const & __ptr64) __ptr64
        119   74 0001D810 public: class PyIPersist & __ptr64 __cdecl PyIPersist::operator=(class PyIPersist const & __ptr64) __ptr64
        120   75 0001D850 public: class PyIPersistStream & __ptr64 __cdecl PyIPersistStream::operator=(class PyIPersistStream const & __ptr64) __ptr64
        121   76 0001D890 public: class PyIPersistStreamInit & __ptr64 __cdecl PyIPersistStreamInit::operator=(class PyIPersistStreamInit const & __ptr64) __ptr64
        122   77 000030B0 public: class PyIProvideClassInfo2 & __ptr64 __cdecl PyIProvideClassInfo2::operator=(class PyIProvideClassInfo2 const & __ptr64) __ptr64
        123   78 000030F0 public: class PyIProvideClassInfo & __ptr64 __cdecl PyIProvideClassInfo::operator=(class PyIProvideClassInfo const & __ptr64) __ptr64
        124   79 0001D8D0 public: class PyIServiceProvider & __ptr64 __cdecl PyIServiceProvider::operator=(class PyIServiceProvider const & __ptr64) __ptr64
        125   7A 0001D910 public: class PyIStream & __ptr64 __cdecl PyIStream::operator=(class PyIStream const & __ptr64) __ptr64
        126   7B 00003130 public: class PyITypeComp & __ptr64 __cdecl PyITypeComp::operator=(class PyITypeComp const & __ptr64) __ptr64
        127   7C 00003170 public: class PyITypeInfo & __ptr64 __cdecl PyITypeInfo::operator=(class PyITypeInfo const & __ptr64) __ptr64
        128   7D 000031B0 public: class PyITypeLib & __ptr64 __cdecl PyITypeLib::operator=(class PyITypeLib const & __ptr64) __ptr64
        129   7E 000031F0 public: class PyIUnknown & __ptr64 __cdecl PyIUnknown::operator=(class PyIUnknown const & __ptr64) __ptr64
        130   7F 00003230 public: class PyOleArgNotFound & __ptr64 __cdecl PyOleArgNotFound::operator=(class PyOleArgNotFound && __ptr64) __ptr64
        131   80 00003240 public: class PyOleArgNotFound & __ptr64 __cdecl PyOleArgNotFound::operator=(class PyOleArgNotFound const & __ptr64) __ptr64
        132   81 00003250 public: class PyOleEmpty & __ptr64 __cdecl PyOleEmpty::operator=(class PyOleEmpty && __ptr64) __ptr64
        133   82 00003260 public: class PyOleEmpty & __ptr64 __cdecl PyOleEmpty::operator=(class PyOleEmpty const & __ptr64) __ptr64
        134   83 00003270 public: class PyOleMissing & __ptr64 __cdecl PyOleMissing::operator=(class PyOleMissing && __ptr64) __ptr64
        135   84 00003280 public: class PyOleMissing & __ptr64 __cdecl PyOleMissing::operator=(class PyOleMissing const & __ptr64) __ptr64
        136   85 00003290 public: class PyOleNothing & __ptr64 __cdecl PyOleNothing::operator=(class PyOleNothing && __ptr64) __ptr64
        137   86 000032A0 public: class PyOleNothing & __ptr64 __cdecl PyOleNothing::operator=(class PyOleNothing const & __ptr64) __ptr64
        138   87 00010EF0 public: class PySTGMEDIUM & __ptr64 __cdecl PySTGMEDIUM::operator=(class PySTGMEDIUM const & __ptr64) __ptr64
        139   88 000032B0 public: class PythonOleArgHelper & __ptr64 __cdecl PythonOleArgHelper::operator=(class PythonOleArgHelper const & __ptr64) __ptr64
        140   89 00046678 const CPyFactory::`vftable'
        141   8A 00054A28 const PyGOleWindow::`vftable'
        142   8B 00054938 const PyGOleWindow::`vftable'{for `IDispatchEx'}
        143   8C 00054A00 const PyGOleWindow::`vftable'{for `IInternalUnwrapPythonObject'}
        144   8D 000549D8 const PyGOleWindow::`vftable'{for `ISupportErrorInfo'}
        145   8E 00052670 const PyGPersist::`vftable'
        146   8F 00052580 const PyGPersist::`vftable'{for `IDispatchEx'}
        147   90 00052648 const PyGPersist::`vftable'{for `IInternalUnwrapPythonObject'}
        148   91 00052620 const PyGPersist::`vftable'{for `ISupportErrorInfo'}
        149   92 00046588 const PyGatewayBase::`vftable'{for `IDispatchEx'}
        150   93 00046650 const PyGatewayBase::`vftable'{for `IInternalUnwrapPythonObject'}
        151   94 00046628 const PyGatewayBase::`vftable'{for `ISupportErrorInfo'}
        152   95 00046260 const PyIBase::`vftable'
        153   96 00052F08 const PyIBindCtx::`vftable'
        154   97 00046360 const PyIClassFactory::`vftable'
        155   98 000464E0 const PyIConnectionPoint::`vftable'
        156   99 00046520 const PyIConnectionPointContainer::`vftable'
        157   9A 000462E0 const PyIDispatch::`vftable'
        158   9B 00046320 const PyIDispatchEx::`vftable'
        159   9C 00052E88 const PyIEnumMoniker::`vftable'
        160   9D 00053078 const PyIEnumVARIANT::`vftable'
        161   9E 00052EC8 const PyIMoniker::`vftable'
        162   9F 000548F8 const PyIOleWindow::`vftable'
        163   A0 00052540 const PyIPersist::`vftable'
        164   A1 00052AF8 const PyIPersistStream::`vftable'
        165   A2 00052C98 const PyIPersistStreamInit::`vftable'
        166   A3 000463E0 const PyIProvideClassInfo2::`vftable'
        167   A4 000463A0 const PyIProvideClassInfo::`vftable'
        168   A5 00053B68 const PyIServiceProvider::`vftable'
        169   A6 00052398 const PyIStream::`vftable'
        170   A7 00046460 const PyITypeComp::`vftable'
        171   A8 00046420 const PyITypeInfo::`vftable'
        172   A9 000464A0 const PyITypeLib::`vftable'
        173   AA 000462A0 const PyIUnknown::`vftable'
        174   AB 00010F10 public: void __cdecl PySTGMEDIUM::`default constructor closure'(void) __ptr64
        175   AC 0000A550 public: virtual unsigned long __cdecl CPyFactory::AddRef(void) __ptr64
        176   AD 0001EE60 protected: virtual unsigned long __cdecl PyGOleWindow::AddRef(void) __ptr64
        177   AE 0001EE90 protected: virtual unsigned long __cdecl PyGPersist::AddRef(void) __ptr64
        178   AF 0000AAE0 public: virtual unsigned long __cdecl PyGatewayBase::AddRef(void) __ptr64
        179   B0 00027100 public: static struct _object * __ptr64 __cdecl PyIConnectionPoint::Advise(struct _object * __ptr64,struct _object * __ptr64)
        180   B1 0003CCC0 public: struct _object * __ptr64 __cdecl PyITypeComp::Bind(wchar_t * __ptr64,unsigned short) __ptr64
        181   B2 000328C0 public: static struct _object * __ptr64 __cdecl PyIMoniker::BindToObject(struct _object * __ptr64,struct _object * __ptr64)
        182   B3 00032A90 public: static struct _object * __ptr64 __cdecl PyIMoniker::BindToStorage(struct _object * __ptr64,struct _object * __ptr64)
        183   B4 0003CD00 public: struct _object * __ptr64 __cdecl PyITypeComp::BindType(wchar_t * __ptr64) __ptr64
        184   B5 00032790 public: static struct _object * __ptr64 __cdecl PyIEnumMoniker::Clone(struct _object * __ptr64,struct _object * __ptr64)
        185   B6 00030B70 public: static struct _object * __ptr64 __cdecl PyIEnumVARIANT::Clone(struct _object * __ptr64,struct _object * __ptr64)
        186   B7 0003C300 public: static struct _object * __ptr64 __cdecl PyIStream::Clone(struct _object * __ptr64,struct _object * __ptr64)
        187   B8 00010610 public: void __cdecl PySTGMEDIUM::Close(void) __ptr64
        188   B9 0003BE50 public: static struct _object * __ptr64 __cdecl PyIStream::Commit(struct _object * __ptr64,struct _object * __ptr64)
        189   BA 00032C60 public: static struct _object * __ptr64 __cdecl PyIMoniker::ComposeWith(struct _object * __ptr64,struct _object * __ptr64)
        190   BB 000334C0 protected: virtual long __cdecl PyGOleWindow::ContextSensitiveHelp(int) __ptr64
        191   BC 000332E0 public: static struct _object * __ptr64 __cdecl PyIOleWindow::ContextSensitiveHelp(struct _object * __ptr64,struct _object * __ptr64)
        192   BD 0003BD40 public: static struct _object * __ptr64 __cdecl PyIStream::CopyTo(struct _object * __ptr64,struct _object * __ptr64)
        193   BE 00010650 public: int __cdecl PySTGMEDIUM::CopyTo(struct tagSTGMEDIUM * __ptr64) __ptr64
        194   BF 0000A5B0 public: virtual long __cdecl CPyFactory::CreateInstance(struct IUnknown * __ptr64,struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
        195   C0 0000C9F0 public: static struct _object * __ptr64 __cdecl PyIClassFactory::CreateInstance(struct _object * __ptr64,struct _object * __ptr64)
        196   C1 0000A6E0 protected: long __cdecl CPyFactory::CreateNewPythonInstance(struct _GUID const & __ptr64,struct _GUID const & __ptr64,struct _object * __ptr64 * __ptr64) __ptr64
        197   C2 0000B4D0 public: virtual long __cdecl PyGatewayBase::DeleteMemberByDispID(long) __ptr64
        198   C3 0000DF40 public: static struct _object * __ptr64 __cdecl PyIDispatchEx::DeleteMemberByDispID(struct _object * __ptr64,struct _object * __ptr64)
        199   C4 0000B410 public: virtual long __cdecl PyGatewayBase::DeleteMemberByName(wchar_t * __ptr64,unsigned long) __ptr64
        200   C5 0000DE30 public: static struct _object * __ptr64 __cdecl PyIDispatchEx::DeleteMemberByName(struct _object * __ptr64,struct _object * __ptr64)
        201   C6 000105F0 public: void __cdecl PySTGMEDIUM::DropOwnership(void) __ptr64
        202   C7 00032D70 public: static struct _object * __ptr64 __cdecl PyIMoniker::Enum(struct _object * __ptr64,struct _object * __ptr64)
        203   C8 000273F0 public: static struct _object * __ptr64 __cdecl PyIConnectionPointContainer::EnumConnectionPoints(struct _object * __ptr64,struct _object * __ptr64)
        204   C9 000272C0 public: static struct _object * __ptr64 __cdecl PyIConnectionPoint::EnumConnections(struct _object * __ptr64,struct _object * __ptr64)
        205   CA 00025C80 public: static struct _object * __ptr64 __cdecl PyIBindCtx::EnumObjectParam(struct _object * __ptr64,struct _object * __ptr64)
        206   CB 000274C0 public: static struct _object * __ptr64 __cdecl PyIConnectionPointContainer::FindConnectionPoint(struct _object * __ptr64,struct _object * __ptr64)
        207   CC 00025790 public: static struct _object * __ptr64 __cdecl PyIBindCtx::GetBindOptions(struct _object * __ptr64,struct _object * __ptr64)
        208   CD 00023FD0 protected: virtual long __cdecl PyGPersist::GetClassID(struct _GUID * __ptr64) __ptr64
        209   CE 00033530 public: static struct _object * __ptr64 __cdecl PyIPersist::GetClassID(struct _object * __ptr64,struct _object * __ptr64)
        210   CF 00038D60 public: static struct _object * __ptr64 __cdecl PyIProvideClassInfo::GetClassInfoW(struct _object * __ptr64,struct _object * __ptr64)
        211   D0 00026F70 public: static struct _object * __ptr64 __cdecl PyIConnectionPoint::GetConnectionInterface(struct _object * __ptr64,struct _object * __ptr64)
        212   D1 00027030 public: static struct _object * __ptr64 __cdecl PyIConnectionPoint::GetConnectionPointContainer(struct _object * __ptr64,struct _object * __ptr64)
        213   D2 0003C420 public: struct _object * __ptr64 __cdecl PyITypeInfo::GetContainingTypeLib(void) __ptr64
        214   D3 0000B160 public: virtual long __cdecl PyGatewayBase::GetDispID(wchar_t * __ptr64,unsigned long,long * __ptr64) __ptr64
        215   D4 0000DAF0 public: static struct _object * __ptr64 __cdecl PyIDispatchEx::GetDispID(struct _object * __ptr64,struct _object * __ptr64)
        216   D5 00032FB0 public: static struct _object * __ptr64 __cdecl PyIMoniker::GetDisplayName(struct _object * __ptr64,struct _object * __ptr64)
        217   D6 0003C500 public: struct _object * __ptr64 __cdecl PyITypeInfo::GetDocumentation(long) __ptr64
        218   D7 0003CF90 public: struct _object * __ptr64 __cdecl PyITypeLib::GetDocumentation(int) __ptr64
        219   D8 0003C7D0 public: struct _object * __ptr64 __cdecl PyITypeInfo::GetFuncDesc(int) __ptr64
        220   D9 00038EA0 public: static struct _object * __ptr64 __cdecl PyIProvideClassInfo2::GetGUID(struct _object * __ptr64,struct _object * __ptr64)
        221   DA 000256C0 public: static struct IBindCtx * __ptr64 __cdecl PyIBindCtx::GetI(struct _object * __ptr64)
        222   DB 0000C9E0 public: static struct IClassFactory * __ptr64 __cdecl PyIClassFactory::GetI(struct _object * __ptr64)
        223   DC 00026F60 public: static struct IConnectionPoint * __ptr64 __cdecl PyIConnectionPoint::GetI(struct _object * __ptr64)
        224   DD 000273E0 public: static struct IConnectionPointContainer * __ptr64 __cdecl PyIConnectionPointContainer::GetI(struct _object * __ptr64)
        225   DE 0000CC40 public: static struct IDispatch * __ptr64 __cdecl PyIDispatch::GetI(struct _object * __ptr64)
        226   DF 0000DAE0 public: static struct IDispatchEx * __ptr64 __cdecl PyIDispatchEx::GetI(struct _object * __ptr64)
        227   E0 00032420 public: static struct IEnumMoniker * __ptr64 __cdecl PyIEnumMoniker::GetI(struct _object * __ptr64)
        228   E1 00030830 public: static struct IEnumVARIANT * __ptr64 __cdecl PyIEnumVARIANT::GetI(struct _object * __ptr64)
        229   E2 000328B0 public: static struct IMoniker * __ptr64 __cdecl PyIMoniker::GetI(struct _object * __ptr64)
        230   E3 00033220 public: static struct IOleWindow * __ptr64 __cdecl PyIOleWindow::GetI(struct _object * __ptr64)
        231   E4 00033520 public: static struct IPersist * __ptr64 __cdecl PyIPersist::GetI(struct _object * __ptr64)
        232   E5 00034860 public: static struct IPersistStream * __ptr64 __cdecl PyIPersistStream::GetI(struct _object * __ptr64)
        233   E6 00034C10 public: static struct IPersistStreamInit * __ptr64 __cdecl PyIPersistStreamInit::GetI(struct _object * __ptr64)
        234   E7 00038E90 public: static struct IProvideClassInfo2 * __ptr64 __cdecl PyIProvideClassInfo2::GetI(struct _object * __ptr64)
        235   E8 00038D50 public: static struct IProvideClassInfo * __ptr64 __cdecl PyIProvideClassInfo::GetI(struct _object * __ptr64)
        236   E9 00039560 public: static struct IServiceProvider * __ptr64 __cdecl PyIServiceProvider::GetI(struct _object * __ptr64)
        237   EA 0003B980 public: static struct IStream * __ptr64 __cdecl PyIStream::GetI(struct _object * __ptr64)
        238   EB 0003CCB0 public: static struct ITypeComp * __ptr64 __cdecl PyITypeComp::GetI(struct _object * __ptr64)
        239   EC 0003C410 public: static struct ITypeInfo * __ptr64 __cdecl PyITypeInfo::GetI(struct _object * __ptr64)
        240   ED 0003CE60 public: static struct ITypeLib * __ptr64 __cdecl PyITypeLib::GetI(struct _object * __ptr64)
        241   EE 0000EA00 public: static struct IUnknown * __ptr64 __cdecl PyIUnknown::GetI(struct _object * __ptr64)
        242   EF 0000AEC0 public: virtual long __cdecl PyGatewayBase::GetIDsOfNames(struct _GUID const & __ptr64,wchar_t * __ptr64 * __ptr64,unsigned int,unsigned long,long * __ptr64) __ptr64
        243   F0 0000D630 public: static struct _object * __ptr64 __cdecl PyIDispatch::GetIDsOfNames(struct _object * __ptr64,struct _object * __ptr64)
        244   F1 0001F330 protected: virtual struct _GUID __cdecl PyGOleWindow::GetIID(void) __ptr64
        245   F2 0001F340 protected: virtual struct _GUID __cdecl PyGPersist::GetIID(void) __ptr64
        246   F3 00003D70 public: virtual struct _GUID __cdecl PyGatewayBase::GetIID(void) __ptr64
        247   F4 0003CB10 public: struct _object * __ptr64 __cdecl PyITypeInfo::GetImplTypeFlags(int) __ptr64
        248   F5 0003CE70 public: struct _object * __ptr64 __cdecl PyITypeLib::GetLibAttr(void) __ptr64
        249   F6 0000B630 public: virtual long __cdecl PyGatewayBase::GetMemberName(long,wchar_t * __ptr64 * __ptr64) __ptr64
        250   F7 0000E0E0 public: static struct _object * __ptr64 __cdecl PyIDispatchEx::GetMemberName(struct _object * __ptr64,struct _object * __ptr64)
        251   F8 0000B550 public: virtual long __cdecl PyGatewayBase::GetMemberProperties(long,unsigned long,unsigned long * __ptr64) __ptr64
        252   F9 0000E010 public: static struct _object * __ptr64 __cdecl PyIDispatchEx::GetMemberProperties(struct _object * __ptr64,struct _object * __ptr64)
        253   FA 0000B7B0 public: virtual long __cdecl PyGatewayBase::GetNameSpaceParent(struct IUnknown * __ptr64 * __ptr64) __ptr64
        254   FB 0003C870 public: struct _object * __ptr64 __cdecl PyITypeInfo::GetNames(long) __ptr64
        255   FC 0000B6D0 public: virtual long __cdecl PyGatewayBase::GetNextDispID(unsigned long,long,long * __ptr64) __ptr64
        256   FD 0000E1B0 public: static struct _object * __ptr64 __cdecl PyIDispatchEx::GetNextDispID(struct _object * __ptr64,struct _object * __ptr64)
        257   FE 00025B90 public: static struct _object * __ptr64 __cdecl PyIBindCtx::GetObjectParam(struct _object * __ptr64,struct _object * __ptr64)
        258   FF 0003C650 public: struct _object * __ptr64 __cdecl PyITypeInfo::GetRefTypeInfo(unsigned long) __ptr64
        259  100 0003C730 public: struct _object * __ptr64 __cdecl PyITypeInfo::GetRefTypeOfImplType(int) __ptr64
        260  101 000256D0 public: static struct _object * __ptr64 __cdecl PyIBindCtx::GetRunningObjectTable(struct _object * __ptr64,struct _object * __ptr64)
        261  102 00034B00 public: static struct _object * __ptr64 __cdecl PyIPersistStream::GetSizeMax(struct _object * __ptr64,struct _object * __ptr64)
        262  103 0003C980 public: struct _object * __ptr64 __cdecl PyITypeInfo::GetTypeAttr(void) __ptr64
        263  104 0003CBB0 public: struct _object * __ptr64 __cdecl PyITypeInfo::GetTypeComp(void) __ptr64
        264  105 0003D340 public: struct _object * __ptr64 __cdecl PyITypeLib::GetTypeComp(void) __ptr64
        265  106 0000ADA0 public: virtual long __cdecl PyGatewayBase::GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo * __ptr64 * __ptr64) __ptr64
        266  107 0000D8D0 public: static struct _object * __ptr64 __cdecl PyIDispatch::GetTypeInfo(struct _object * __ptr64,struct _object * __ptr64)
        267  108 0003D0E0 public: struct _object * __ptr64 __cdecl PyITypeLib::GetTypeInfo(int) __ptr64
        268  109 0000ACF0 public: virtual long __cdecl PyGatewayBase::GetTypeInfoCount(unsigned int * __ptr64) __ptr64
        269  10A 0000D9C0 public: static struct _object * __ptr64 __cdecl PyIDispatch::GetTypeInfoCount(struct _object * __ptr64,struct _object * __ptr64)
        270  10B 0003D190 public: struct _object * __ptr64 __cdecl PyITypeLib::GetTypeInfoCount(void) __ptr64
        271  10C 0003D1F0 public: struct _object * __ptr64 __cdecl PyITypeLib::GetTypeInfoOfGuid(struct _GUID const & __ptr64) __ptr64
        272  10D 0003D2A0 public: struct _object * __ptr64 __cdecl PyITypeLib::GetTypeInfoType(int) __ptr64
        273  10E 0003CA40 public: struct _object * __ptr64 __cdecl PyITypeInfo::GetVarDesc(int) __ptr64
        274  10F 00033400 protected: virtual long __cdecl PyGOleWindow::GetWindow(struct HWND__ * __ptr64 * __ptr64) __ptr64
        275  110 00033230 public: static struct _object * __ptr64 __cdecl PyIOleWindow::GetWindow(struct _object * __ptr64,struct _object * __ptr64)
        276  111 00032EF0 public: static struct _object * __ptr64 __cdecl PyIMoniker::Hash(struct _object * __ptr64,struct _object * __ptr64)
        277  112 00034C20 public: static struct _object * __ptr64 __cdecl PyIPersistStreamInit::InitNew(struct _object * __ptr64,struct _object * __ptr64)
        278  113 0000B840 public: virtual long __cdecl PyGatewayBase::InterfaceSupportsErrorInfo(struct _GUID const & __ptr64) __ptr64
        279  114 0000B010 public: virtual long __cdecl PyGatewayBase::Invoke(long,struct _GUID const & __ptr64,unsigned long,unsigned short,struct tagDISPPARAMS * __ptr64,struct tagVARIANT * __ptr64,struct tagEXCEPINFO * __ptr64,unsigned int * __ptr64) __ptr64
        280  115 0000CC50 public: static struct _object * __ptr64 __cdecl PyIDispatch::Invoke(struct _object * __ptr64,struct _object * __ptr64)
        281  116 0000B260 public: virtual long __cdecl PyGatewayBase::InvokeEx(long,unsigned long,unsigned short,struct tagDISPPARAMS * __ptr64,struct tagVARIANT * __ptr64,struct tagEXCEPINFO * __ptr64,struct IServiceProvider * __ptr64) __ptr64
        282  117 0000DC00 public: static struct _object * __ptr64 __cdecl PyIDispatchEx::InvokeEx(struct _object * __ptr64,struct _object * __ptr64)
        283  118 0000CEC0 public: static struct _object * __ptr64 __cdecl PyIDispatch::InvokeTypes(struct _object * __ptr64,struct _object * __ptr64)
        284  119 0000AA20 protected: virtual long __cdecl PyGatewayBase::InvokeViaPolicy(char const * __ptr64,struct _object * __ptr64 * __ptr64,char const * __ptr64,...) __ptr64
        285  11A 00034870 public: static struct _object * __ptr64 __cdecl PyIPersistStream::IsDirty(struct _object * __ptr64,struct _object * __ptr64)
        286  11B 00032E10 public: static struct _object * __ptr64 __cdecl PyIMoniker::IsEqual(struct _object * __ptr64,struct _object * __ptr64)
        287  11C 00033110 public: static struct _object * __ptr64 __cdecl PyIMoniker::IsSystemMoniker(struct _object * __ptr64,struct _object * __ptr64)
        288  11D 00034930 public: static struct _object * __ptr64 __cdecl PyIPersistStream::Load(struct _object * __ptr64,struct _object * __ptr64)
        289  11E 0003BFE0 public: static struct _object * __ptr64 __cdecl PyIStream::LockRegion(struct _object * __ptr64,struct _object * __ptr64)
        290  11F 0000A6B0 public: virtual long __cdecl CPyFactory::LockServer(int) __ptr64
        291  120 0000CB00 public: static struct _object * __ptr64 __cdecl PyIClassFactory::LockServer(struct _object * __ptr64,struct _object * __ptr64)
        292  121 0000A250 struct _object * __ptr64 __cdecl MakeBstrToObj(wchar_t * __ptr64 const)
        293  122 0000A270 struct _object * __ptr64 __cdecl MakeOLECHARToObj(wchar_t const * __ptr64)
        294  123 0000A260 struct _object * __ptr64 __cdecl MakeOLECHARToObj(wchar_t const * __ptr64,int)
        295  124 000076E0 public: int __cdecl PythonOleArgHelper::MakeObjToVariant(struct _object * __ptr64,struct tagVARIANT * __ptr64,struct _object * __ptr64) __ptr64
        296  125 00008300 int __cdecl MakePythonArgumentTuples(struct _object * __ptr64 * __ptr64,class PythonOleArgHelper * __ptr64 * __ptr64,struct _object * __ptr64 * __ptr64,class PythonOleArgHelper * __ptr64 * __ptr64,struct tagDISPPARAMS * __ptr64)
        297  126 00008270 public: struct _object * __ptr64 __cdecl PythonOleArgHelper::MakeVariantToObj(struct tagVARIANT * __ptr64) __ptr64
        298  127 00032430 public: static struct _object * __ptr64 __cdecl PyIEnumMoniker::Next(struct _object * __ptr64,struct _object * __ptr64)
        299  128 00030840 public: static struct _object * __ptr64 __cdecl PyIEnumVARIANT::Next(struct _object * __ptr64,struct _object * __ptr64)
        300  129 00007620 public: int __cdecl PythonOleArgHelper::ParseTypeInformation(struct _object * __ptr64) __ptr64
        301  12A 0000A240 int __cdecl PyCom_BstrFromPyObject(struct _object * __ptr64,wchar_t * __ptr64 * __ptr64,int)
        302  12B 00004560 struct _object * __ptr64 __cdecl PyCom_BuildInternalPyException(char * __ptr64)
        303  12C 00004250 struct _object * __ptr64 __cdecl PyCom_BuildPyException(long,struct IUnknown * __ptr64,struct _GUID const & __ptr64)
        304  12D 000043D0 struct _object * __ptr64 __cdecl PyCom_BuildPyExceptionFromEXCEPINFO(long,struct tagEXCEPINFO * __ptr64,unsigned int)
        308  12E 00002500 void __cdecl PyCom_DLLAddRef(void)
        309  12F 00002620 void __cdecl PyCom_DLLReleaseRef(void)
        310  130 00002660 void __cdecl PyCom_EnableQuitMessage(unsigned long)
        311  131 00004870 void __cdecl PyCom_ExcepInfoFromPyException(struct tagEXCEPINFO * __ptr64)
        312  132 00004A10 int __cdecl PyCom_ExcepInfoFromPyObject(struct _object * __ptr64,struct tagEXCEPINFO * __ptr64,long * __ptr64)
        313  133 000097B0 int __cdecl PyCom_InterfaceFromPyInstanceOrObject(struct _object * __ptr64,struct _GUID const & __ptr64,void * __ptr64 * __ptr64,int)
        315  134 0001BE60 int __cdecl PyCom_IsGatewayRegistered(struct _GUID const & __ptr64)
        316  135 00004D70 void __cdecl PyCom_LogF(char const * __ptr64,...)
        317  136 000045E0 void __cdecl PyCom_LoggerException(struct _object * __ptr64,char const * __ptr64,...)
        318  137 00004590 void __cdecl PyCom_LoggerNonServerException(struct _object * __ptr64,char const * __ptr64,...)
        319  138 00004620 void __cdecl PyCom_LoggerWarning(struct _object * __ptr64,char const * __ptr64,...)
        321  139 0000A000 int __cdecl PyCom_PyObjectAsSTATPROPSETSTG(struct _object * __ptr64,struct tagSTATPROPSETSTG * __ptr64)
        322  13A 00009BA0 int __cdecl PyCom_PyObjectAsSTATSTG(struct _object * __ptr64,struct tagSTATSTG * __ptr64,unsigned long)
        323  13B 00009D30 int __cdecl PyCom_PyObjectAsSTGOPTIONS(struct _object * __ptr64,struct tagSTGOPTIONS * __ptr64 * __ptr64)
        324  13C 00004C60 struct _object * __ptr64 __cdecl PyCom_PyObjectFromExcepInfo(struct tagEXCEPINFO const * __ptr64)
        326  13D 000071C0 struct _object * __ptr64 __cdecl PyCom_PyObjectFromSAFEARRAY(struct tagSAFEARRAY * __ptr64,enum VARENUM)
        327  13E 00009EC0 struct _object * __ptr64 __cdecl PyCom_PyObjectFromSTATPROPSETSTG(struct tagSTATPROPSETSTG * __ptr64)
        328  13F 000099F0 struct _object * __ptr64 __cdecl PyCom_PyObjectFromSTATSTG(struct tagSTATSTG * __ptr64)
        330  140 0001BC10 int __cdecl PyCom_RegisterClientType(struct _typeobject * __ptr64,struct _GUID const * __ptr64)
        331  141 0001BBB0 int __cdecl PyCom_RegisterExtensionSupport(struct _object * __ptr64,struct PyCom_InterfaceSupportInfo const * __ptr64,int)
        332  142 0001BC90 long __cdecl PyCom_RegisterGatewayObject(struct _GUID const & __ptr64,long (__cdecl*)(struct _object * __ptr64,class PyGatewayBase * __ptr64,void * __ptr64 * __ptr64,struct _GUID const & __ptr64),char const * __ptr64)
        333  143 000071A0 int __cdecl PyCom_SAFEARRAYFromPyObject(struct _object * __ptr64,struct tagSAFEARRAY * __ptr64 * __ptr64,enum VARENUM)
        334  144 00004660 long __cdecl PyCom_SetAndLogCOMErrorFromPyException(char const * __ptr64,struct _GUID const & __ptr64)
        335  145 000046B0 long __cdecl PyCom_SetAndLogCOMErrorFromPyExceptionEx(struct _object * __ptr64,char const * __ptr64,struct _GUID const & __ptr64)
        336  146 000047D0 long __cdecl PyCom_SetCOMErrorFromPyException(struct _GUID const & __ptr64)
        337  147 00004720 long __cdecl PyCom_SetCOMErrorFromSimple(long,struct _GUID const & __ptr64,char const * __ptr64)
        338  148 000051D0 void __cdecl PyCom_StreamMessage(char const * __ptr64)
        340  149 0001A350 public: static long __cdecl PyGOleWindow::PyGatewayConstruct(struct _object * __ptr64,class PyGatewayBase * __ptr64,void * __ptr64 * __ptr64,struct _GUID const & __ptr64)
        341  14A 00019F90 public: static long __cdecl PyGPersist::PyGatewayConstruct(struct _object * __ptr64,class PyGatewayBase * __ptr64,void * __ptr64 * __ptr64,struct _GUID const & __ptr64)
        342  14B 00003D80 public: static long __cdecl PyGatewayBase::PyGatewayConstruct(struct _object * __ptr64,class PyGatewayBase * __ptr64,void * __ptr64 * __ptr64,struct _GUID const & __ptr64)
        343  14C 0001F470 public: static class PyIUnknown * __ptr64 __cdecl PyIBindCtx::PyObConstruct(struct IUnknown * __ptr64)
        344  14D 00003E00 public: static class PyIUnknown * __ptr64 __cdecl PyIClassFactory::PyObConstruct(struct IUnknown * __ptr64)
        345  14E 00003E40 public: static class PyIUnknown * __ptr64 __cdecl PyIConnectionPoint::PyObConstruct(struct IUnknown * __ptr64)
        346  14F 00003E80 public: static class PyIUnknown * __ptr64 __cdecl PyIConnectionPointContainer::PyObConstruct(struct IUnknown * __ptr64)
        347  150 00003EC0 public: static class PyIUnknown * __ptr64 __cdecl PyIDispatch::PyObConstruct(struct IUnknown * __ptr64)
        348  151 00003F00 public: static class PyIUnknown * __ptr64 __cdecl PyIDispatchEx::PyObConstruct(struct IUnknown * __ptr64)
        349  152 0001F4B0 public: static class PyIUnknown * __ptr64 __cdecl PyIEnumMoniker::PyObConstruct(struct IUnknown * __ptr64)
        350  153 0001F4F0 public: static class PyIUnknown * __ptr64 __cdecl PyIEnumVARIANT::PyObConstruct(struct IUnknown * __ptr64)
        351  154 0001F530 public: static class PyIUnknown * __ptr64 __cdecl PyIMoniker::PyObConstruct(struct IUnknown * __ptr64)
        352  155 0001F570 public: static class PyIUnknown * __ptr64 __cdecl PyIOleWindow::PyObConstruct(struct IUnknown * __ptr64)
        353  156 0001F5B0 public: static class PyIUnknown * __ptr64 __cdecl PyIPersist::PyObConstruct(struct IUnknown * __ptr64)
        354  157 0001F5F0 public: static class PyIUnknown * __ptr64 __cdecl PyIPersistStream::PyObConstruct(struct IUnknown * __ptr64)
        355  158 0001F630 public: static class PyIUnknown * __ptr64 __cdecl PyIPersistStreamInit::PyObConstruct(struct IUnknown * __ptr64)
        356  159 00003F40 public: static class PyIUnknown * __ptr64 __cdecl PyIProvideClassInfo2::PyObConstruct(struct IUnknown * __ptr64)
        357  15A 00003F80 public: static class PyIUnknown * __ptr64 __cdecl PyIProvideClassInfo::PyObConstruct(struct IUnknown * __ptr64)
        358  15B 0001F670 public: static class PyIUnknown * __ptr64 __cdecl PyIServiceProvider::PyObConstruct(struct IUnknown * __ptr64)
        359  15C 0001F6B0 public: static class PyIUnknown * __ptr64 __cdecl PyIStream::PyObConstruct(struct IUnknown * __ptr64)
        360  15D 00003FC0 public: static class PyIUnknown * __ptr64 __cdecl PyITypeComp::PyObConstruct(struct IUnknown * __ptr64)
        361  15E 00004000 public: static class PyIUnknown * __ptr64 __cdecl PyITypeInfo::PyObConstruct(struct IUnknown * __ptr64)
        362  15F 00004040 public: static class PyIUnknown * __ptr64 __cdecl PyITypeLib::PyObConstruct(struct IUnknown * __ptr64)
        363  160 00004080 public: static class PyIUnknown * __ptr64 __cdecl PyIUnknown::PyObConstruct(struct IUnknown * __ptr64)
        364  161 0000A120 int __cdecl PyObject_AsCurrency(struct _object * __ptr64,union tagCY * __ptr64)
        365  162 00006650 int __cdecl PyObject_AsOLEMENUGROUPWIDTHS(struct _object * __ptr64,struct tagOleMenuGroupWidths * __ptr64)
        366  163 000360A0 int __cdecl PyObject_AsPROPVARIANT(struct _object * __ptr64,struct tagPROPVARIANT * __ptr64)
        367  164 0000A080 struct _object * __ptr64 __cdecl PyObject_FromCurrency(union tagCY & __ptr64)
        368  165 000066A0 struct _object * __ptr64 __cdecl PyObject_FromOLEMENUGROUPWIDTHS(struct tagOleMenuGroupWidths const * __ptr64)
        369  166 00035A30 struct _object * __ptr64 __cdecl PyObject_FromPROPVARIANT(struct tagPROPVARIANT * __ptr64)
        370  167 00035FF0 struct _object * __ptr64 __cdecl PyObject_FromPROPVARIANTs(struct tagPROPVARIANT * __ptr64,unsigned long)
        371  168 00010B50 class PySTGMEDIUM * __ptr64 __cdecl PyObject_FromSTGMEDIUM(struct tagSTGMEDIUM * __ptr64)
        372  169 000793C0 struct _typeobject PyOleArgNotFoundType
        373  16A 000790A0 struct _typeobject PyOleEmptyType
        374  16B 00079230 struct _typeobject PyOleMissingType
        375  16C 00079550 struct _typeobject PyOleNothingType
        376  16D 0000A4F0 public: virtual long __cdecl CPyFactory::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
        377  16E 0001FA80 protected: virtual long __cdecl PyGOleWindow::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
        378  16F 0001FAB0 protected: virtual long __cdecl PyGPersist::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
        379  170 0000AB30 public: virtual long __cdecl PyGatewayBase::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
        380  171 0000EAD0 public: static struct _object * __ptr64 __cdecl PyIUnknown::QueryInterface(struct _object * __ptr64,struct _object * __ptr64)
        381  172 00039570 public: static struct _object * __ptr64 __cdecl PyIServiceProvider::QueryService(struct _object * __ptr64,struct _object * __ptr64)
        382  173 0003B990 public: static struct _object * __ptr64 __cdecl PyIStream::Read(struct _object * __ptr64,struct _object * __ptr64)
        383  174 00025980 public: static struct _object * __ptr64 __cdecl PyIBindCtx::RegisterObjectParam(struct _object * __ptr64,struct _object * __ptr64)
        384  175 0000A570 public: virtual unsigned long __cdecl CPyFactory::Release(void) __ptr64
        385  176 00020110 protected: virtual unsigned long __cdecl PyGOleWindow::Release(void) __ptr64
        386  177 00020140 protected: virtual unsigned long __cdecl PyGPersist::Release(void) __ptr64
        387  178 0000AB00 public: virtual unsigned long __cdecl PyGatewayBase::Release(void) __ptr64
        388  179 000326E0 public: static struct _object * __ptr64 __cdecl PyIEnumMoniker::Reset(struct _object * __ptr64,struct _object * __ptr64)
        389  17A 00030AC0 public: static struct _object * __ptr64 __cdecl PyIEnumVARIANT::Reset(struct _object * __ptr64,struct _object * __ptr64)
        390  17B 0003BF20 public: static struct _object * __ptr64 __cdecl PyIStream::Revert(struct _object * __ptr64,struct _object * __ptr64)
        391  17C 00025AA0 public: static struct _object * __ptr64 __cdecl PyIBindCtx::RevokeObjectParam(struct _object * __ptr64,struct _object * __ptr64)
        392  17D 0000EA40 public: static void __cdecl PyIUnknown::SafeRelease(class PyIUnknown * __ptr64)
        393  17E 00034A10 public: static struct _object * __ptr64 __cdecl PyIPersistStream::Save(struct _object * __ptr64,struct _object * __ptr64)
        394  17F 0003BB80 public: static struct _object * __ptr64 __cdecl PyIStream::Seek(struct _object * __ptr64,struct _object * __ptr64)
        395  180 000258A0 public: static struct _object * __ptr64 __cdecl PyIBindCtx::SetBindOptions(struct _object * __ptr64,struct _object * __ptr64)
        396  181 000040F0 public: static struct _object * __ptr64 __cdecl PyIConnectionPoint::SetPythonCOMError(struct _object * __ptr64,long)
        397  182 00004120 public: static struct _object * __ptr64 __cdecl PyIConnectionPointContainer::SetPythonCOMError(struct _object * __ptr64,long)
        398  183 00004150 public: static struct _object * __ptr64 __cdecl PyIDispatchEx::SetPythonCOMError(struct _object * __ptr64,long)
        399  184 0003BC60 public: static struct _object * __ptr64 __cdecl PyIStream::SetSize(struct _object * __ptr64,struct _object * __ptr64)
        400  185 00032630 public: static struct _object * __ptr64 __cdecl PyIEnumMoniker::Skip(struct _object * __ptr64,struct _object * __ptr64)
        401  186 00030A10 public: static struct _object * __ptr64 __cdecl PyIEnumVARIANT::Skip(struct _object * __ptr64,struct _object * __ptr64)
        402  187 0003C200 public: static struct _object * __ptr64 __cdecl PyIStream::Stat(struct _object * __ptr64,struct _object * __ptr64)
        403  188 00020A20 protected: virtual void * __ptr64 __cdecl PyGOleWindow::ThisAsIID(struct _GUID) __ptr64
        404  189 00020A70 protected: virtual void * __ptr64 __cdecl PyGPersist::ThisAsIID(struct _GUID) __ptr64
        405  18A 0000B8B0 public: virtual void * __ptr64 __cdecl PyGatewayBase::ThisAsIID(struct _GUID) __ptr64
        406  18B 00079D20 public: static struct _typeobject PySTGMEDIUM::Type
        407  18C 000271F0 public: static struct _object * __ptr64 __cdecl PyIConnectionPoint::Unadvise(struct _object * __ptr64,struct _object * __ptr64)
        408  18D 0003C0F0 public: static struct _object * __ptr64 __cdecl PyIStream::UnlockRegion(struct _object * __ptr64,struct _object * __ptr64)
        409  18E 0000B880 public: virtual long __cdecl PyGatewayBase::Unwrap(struct _object * __ptr64 * __ptr64) __ptr64
        410  18F 0003BAA0 public: static struct _object * __ptr64 __cdecl PyIStream::Write(struct _object * __ptr64,struct _object * __ptr64)
        411  190 0000C820 public: static int __cdecl PyIBase::cmp(struct _object * __ptr64,struct _object * __ptr64)
        412  191 000041A0 public: virtual int __cdecl PyIBase::compare(struct _object * __ptr64) __ptr64
        413  192 0000E950 public: virtual int __cdecl PyIUnknown::compare(struct _object * __ptr64) __ptr64
        414  193 0000C770 public: static void __cdecl PyIBase::dealloc(struct _object * __ptr64)
        415  194 00010830 public: static void __cdecl PySTGMEDIUM::deallocFunc(struct _object * __ptr64)
        416  195 0000C640 public: virtual struct _object * __ptr64 __cdecl PyIBase::getattr(char * __ptr64) __ptr64
        417  196 0000C7B0 public: static struct _object * __ptr64 __cdecl PyIBase::getattro(struct _object * __ptr64,struct _object * __ptr64)
        418  197 00010880 public: static struct _object * __ptr64 __cdecl PySTGMEDIUM::getattro(struct _object * __ptr64,struct _object * __ptr64)
        419  198 000061D0 public: static int __cdecl PyComTypeObject::is_interface_type(struct _object * __ptr64)
        420  199 0000C750 public: int __cdecl PyIBase::is_object(class PyComTypeObject * __ptr64) __ptr64
        421  19A 0000C740 public: static int __cdecl PyIBase::is_object(struct _object * __ptr64,class PyComTypeObject * __ptr64)
        422  19B 000062D0 public: static struct _object * __ptr64 __cdecl PyComEnumProviderTypeObject::iter(struct _object * __ptr64)
        423  19C 000063F0 public: static struct _object * __ptr64 __cdecl PyComEnumTypeObject::iter(struct _object * __ptr64)
        424  19D 000041D0 public: virtual struct _object * __ptr64 __cdecl PyIBase::iter(void) __ptr64
        425  19E 00006450 public: static struct _object * __ptr64 __cdecl PyComEnumTypeObject::iternext(struct _object * __ptr64)
        426  19F 000041E0 public: virtual struct _object * __ptr64 __cdecl PyIBase::iternext(void) __ptr64
        427  1A0 00079CE0 public: static struct PyMethodDef * PySTGMEDIUM::methods
        428  1A1 0000C790 public: static struct _object * __ptr64 __cdecl PyIBase::repr(struct _object * __ptr64)
        429  1A2 0000C6B0 public: virtual struct _object * __ptr64 __cdecl PyIBase::repr(void) __ptr64
        430  1A3 0000E900 public: virtual struct _object * __ptr64 __cdecl PyIUnknown::repr(void) __ptr64
        431  1A4 0000C840 public: static struct _object * __ptr64 __cdecl PyIBase::richcmp(struct _object * __ptr64,struct _object * __ptr64,int)
        432  1A5 0000C660 public: virtual int __cdecl PyIBase::setattr(char * __ptr64,struct _object * __ptr64) __ptr64
        433  1A6 0000C7C0 public: static int __cdecl PyIBase::setattro(struct _object * __ptr64,struct _object * __ptr64,struct _object * __ptr64)
        434  1A7 00079B00 public: static char * __ptr64 __ptr64 PyIUnknown::szErrMsgObjectReleased
        435  1A8 00083F00 public: static class PyComTypeObject PyIBindCtx::type
        436  1A9 00083790 public: static class PyComTypeObject PyIClassFactory::type
        437  1AA 000843E0 public: static class PyComTypeObject PyIConnectionPoint::type
        438  1AB 00084580 public: static class PyComTypeObject PyIConnectionPointContainer::type
        439  1AC 00083AD0 public: static class PyComTypeObject PyIDispatch::type
        440  1AD 00083930 public: static class PyComTypeObject PyIDispatchEx::type
        441  1AE 000867A0 public: static class PyComEnumTypeObject PyIEnumMoniker::type
        442  1AF 00085F80 public: static class PyComEnumTypeObject PyIEnumVARIANT::type
        443  1B0 00086940 public: static class PyComEnumProviderTypeObject PyIMoniker::type
        444  1B1 00086AE0 public: static class PyComTypeObject PyIOleWindow::type
        445  1B2 00086C80 public: static class PyComTypeObject PyIPersist::type
        446  1B3 00087300 public: static class PyComTypeObject PyIPersistStream::type
        447  1B4 000874A0 public: static class PyComTypeObject PyIPersistStreamInit::type
        448  1B5 00087B20 public: static class PyComTypeObject PyIProvideClassInfo2::type
        449  1B6 00087CC0 public: static class PyComTypeObject PyIProvideClassInfo::type
        450  1B7 00088000 public: static class PyComTypeObject PyIServiceProvider::type
        451  1B8 00088340 public: static class PyComTypeObject PyIStream::type
        452  1B9 00088820 public: static class PyComTypeObject PyITypeComp::type
        453  1BA 00088680 public: static class PyComTypeObject PyITypeInfo::type
        454  1BB 000884E0 public: static class PyComTypeObject PyITypeLib::type
        455  1BC 00083C80 public: static class PyComTypeObject PyIUnknown::type
          1  1BD 00002310 DllCanUnloadNow
          2  1BE 00002260 DllGetClassObject
        456  1BF 00002670 DllMain
        457  1C0 00002780 DllRegisterServerEx
        458  1C1 000027A0 DllUnregisterServerEx
        305  1C2 00002400 PyCom_CoInitialize
        306  1C3 00002320 PyCom_CoInitializeEx
        307  1C4 000024A0 PyCom_CoUninitialize
        314  1C5 00009670 PyCom_InterfaceFromPyObject
        320  1C6 000072A0 PyCom_MakeOlePythonCall
        325  1C7 000098A0 PyCom_PyObjectFromIUnknown
        329  1C8 00006CE0 PyCom_PyObjectFromVariant
        339  1C9 000067C0 PyCom_VariantFromPyObject
        459  1CA 00016100 PyInit_pythoncom

  Summary

       11000 .data
        1000 .gfids
        8000 .pdata
       34000 .rdata
        2000 .reloc
        1000 .rsrc
       44000 .text

No comments:

Post a Comment