1

Topic: How to define in a method from interface the parameter referring to a class

Here for example I have a class:




class ATL_NO_VTABLE CIStorage: 
 public CComObjectRootEx <CComSingleThreadModel>, 
 public CComCoClass <CIStorage, &CLSID_DiagReport>, 
 public IDispatchImpl <ICIStorage, &IID_ICIStorage, &LIBID_DiagReportLib,/*wMajor = */1,/*wMinor = */0> 
{ 
...
...
IFACEMETHODIMP (//Creates object which allows us to work with "IStorage interface" 
 _Out_ CIStorage ** pCIStorage, 
 _Out_ BOOL *bResult = 0 
);



CreateObjectStorage it is intended for creation and reset in parameter opIStorage a copy of object of a class.


In idl the interface is presented as:




[object, 
  uuid (C002768D-287A-4BC8-B098-CDFC74BA9A16), 
  dual, 
  helpstring ("IStorage Interface"), 
  pointer_default (unique) 
]

interface ICIStorage: IDispatch { 
[id (0),   
  helpstring ("Create object foe work with IStorage interface")  
] HRESULT CreateObjectStorage ( 
 [out] CIStorage ** pCIStorage, 
 [out, retval] BOOL *bResult 
);



But idl it is compiled with an error:


Error 1 error MIDL2025: syntax error: expecting a type specification near "CIStorage"...


As  MIDL with CIStorage