Last But Not Least - COM Interface(s)/interface/Disassemble
You may be wondering about the "Display COM Interfaces?" option mentioned at the start of this write-up or the "COM Interface(s)" node displayed in the Index. Expand the node now. PEBrowse builds the nodes you see by calling CoCreateInstance on each interface in the module that is type, TKIND_COCLASS, by examining the type library and then by enumerating the functions in the interface. Not all calls to CoCreateInstance will be successful as some fail with the HRESULT, REGDB_E_CLASSNOTREG:
A specified class is not registered in the registration database. Also can indicate that the type of server you requested in the CLSCTX enumeration is not registered or the values for the server types in the registry are corrupt.
If you wish to determine which interfaces failed, select the "Resources" node and expand it and the "TYPELIB" node. Then from the main menu (or Index popup), select View/ODL for 1 and a new window containing the decompiled Object Description Language for MSSCRIPT.OCX will be created. See Figure 14.
Figure 14
In this display of the 11th and final entry-point type I have disassembled the method, IScriptControl::GetIDsOfNames and positioned the ODL display at the appropriate location so that you will see the parameters and their type for this method.
| | 1st page | next page |