|
Hi
I dont really know COM (or C++ for that matter). I want to implement the ICorProfilerCallback2 interface. The question is, do I need to implement every method in the COM interface? Also, is there some 'magic menu' like in C# where you can simply generate the stubs for the interface (if indeed the whole thing needs to be implemented).
Cheers
leppie
|
|
|
|
|
leppie wrote: I dont really know COM (or C++ for that matter). I want to implement the ICorProfilerCallback2 interface. The question is, do I need to implement every method in the COM interface?
Yes, it is mandatory (general requsite of all COM interfaces). I mean you have to implement all of the methods in the correct order. Anyway you can make empty methods.
leppie wrote: Also, is there some 'magic menu' like in C# where you can simply generate the stubs for the interface (if indeed the whole thing needs to be implemented).
I don't know.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
CPallini wrote: Yes, it is mandatory (general requsite of all COM interfaces). I mean you have to implement all of the methods in the correct order. Anyway you can make empty methods.
Thanks, it's a huge interface though I was hoping to use only a little of it.
|
|
|
|
|
Good luck.
Have you checked out this [^]?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
CPallini wrote: Have you checked out this [^]?
No I didnt! Thanks for the link, maybe I can use that code better
|
|
|
|
|
A quick thought - Could you not use COM Aggregation instead of implementing the whole interface. This way you can specialize the methods you want and delegate the remaining to orignial interface implementation server?
Aggregation(COM)[^]
Sohail
modified 21-Apr-21 21:01pm.
|
|
|
|
|
See here [^].
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Yeah saw that after posting my reply. I am at work, so didn't read complete thread.
Sohail
modified 21-Apr-21 21:01pm.
|
|
|
|
|
Hey, it was nice and easy, and I even fixed a bug in the code. Now to figure out what to do with the gigabytes of data I have instrumented...
|
|
|
|
|
I tried to register COM dll dsofile.dll in Vista Enterprise using regsvr32 but failed to register although I was login with administrator. I got following message :
"dsofile.dll was loaded but the call to DllregisterServer failed with error code 0x80050007".
So can someone please help me on registering COM dll in Vista.
Thank you.
|
|
|
|
|
Even though you've logged in as Administrator, did you run regsvr32 with Administrator privilege?
On the start menu, find the Command Prompt, right click then select Run As Administrator. In the command prompt window, type in the regsvr32 command.
|
|
|
|
|
Is there a way to pause a download and restart it using code in within the iTunes object?
Thanks For any help!
Regards;
Steve
|
|
|
|
|
hi all,
i have a dll say abc.dll loaded in memory and i have to unload abc.dll and load another dll of same name but it may differ in version number. i tried to unregister the first dll and register the second dll programatically. but still the code refers to the first dll. I think its because the first dll is still in memory. Am i right? Then how to completely remove the that dll from memory? I also renamed the first dll after unregistering it and then registered the second one. but it doesnt work.
|
|
|
|
|
If you look here: http://msdn.microsoft.com/en-us/library/ms690368(VS.85).aspx[^], you'll see:
MSDN says: Notes to Callers
You should not have to call DllCanUnloadNow directly. OLE calls it only through a call to the CoFreeUnusedLibraries function. When it returns S_OK, CoFreeUnusedLibraries frees the DLL.
You should call CoFreeUnusedLibraries after unregistering it. Also make sure that you have no live COM objects created by the DLL. If not, the DLL will have a reference count > 0, meaning that DllCanUnloadNow will return S_FALSE.
It could also be the case that reference counting in the DLL is buggy.
--
Kein Mitleid Für Die Mehrheit
|
|
|
|
|
Hi All,
Would like to ask regarding DCOM authentication...
in calling the function CoCreateinstanceEx with correct user name and password are provided why does the access denied error is still still encountered?
how are these information (username and password) actually used? Does the initial call to CoCreateInstanceEx passing the username and password also affects other calls like QueryInterface or other functions?
Thanks so much for any clarications about this.
ginji
|
|
|
|
|
Hi,
I have created a MFC Activex Control using C++ and I am trying to use that control in C# Windows Application. During Build it shows error as:
EgActivexCtrl fatal error LNK1104: cannot open file 'Debug/EgActivexCtrl.ocx'
Please help me to sort out this error... Thanks
Palanivel
|
|
|
|
|
Does the error message say anything else?
It would appear as if the OCX file is still in use. Do you have an app that uses the OCX still running? Check the process list in the task manager.
--
Kein Mitleid Für Die Mehrheit
|
|
|
|
|
I am new to COM and VBSCript. I am trying to get an automation function to return a status text string, so when writing script, the tester knows the status of an object under test.
This is how I declare and define the function:
DISP_FUNCTION(CScriptObject, "GetStatus", GetStatus, VT_BSTR, VTS_BSTR VTS_I4 VTS_BSTR)
BSTR CScriptObject::GetStatus(LPCTSTR Item, int ID, LPCTSTR WhichStatus)
{
return L("test");
}
the script is as follows:
dim string;
string = GetStatus "Item-A", 120, "Dummy"
When running it, virtual HRESULT __stdcall OnScriptError(IActiveScriptError *pscriptError) gives me the an error message, saying "string = GetStatus "Item-A", 120, "Dummy"" has error.
But running (GetStatus "Item-A", 120, "Dummy") alone is ok. By "ok" I mean the automation function "GetStatus" will be called.
Any idea how to have "GetStatus" to return some test string which can be used by VBScript? Thank you very much in advance!
|
|
|
|
|
Due to VB syntax requirement, you should parenthesize the parameters if use the return value:
string = GetStatus( "Item-A", 120, "Dummy" )
or
Call GetStatus( "Item-A", 120, "Dummy" )
or
GetStatus "Item-A", 120, "Dummy"
Also L("test") is not valid BSTR. Use SysAllocString etc.
With best wishes,
Vita
|
|
|
|
|
got it. Thanks a lot, Vi2!
|
|
|
|
|
hi Vita,
more questions.
When I use SysAllocString in the "GetStatus" function, where should I call SysFreeString to free up the memory? Will the following script do?
----------
option explicit
dim result
result = GetStatus ("Item-A", 120, "Dummy")
set result = nothing
------------
thanks a lot!
- Lucy
|
|
|
|
|
Does anyone know if you can do this without having to resort to remoting via sockets?
What I want to do is host a .NET assembly from inside a mixed-mode EXE file so that I can run the CLR profiler API from within the EXE host and modify the IL of the hosted assembly as the application is running. Now I know that .NET remoting lets you do this via sockets, but is there a faster way to doing this...perhaps through named pipes, or through some other means of interprocess communication?
|
|
|
|
|
|
what is aggregation in COM and how it is different from containment ?
|
|
|
|
|
If object X with interface I1 is aggregated with object Y with interface I2, both interfaces are reachable through IUnknown::QueryInterface(). Eventhough they're two separate objects, they behave as if they were one and the same.
Containment is when object X holds a reference to object Y, but X's QueryInterface() won't give you any of Y's interfaces (and vice versa). They behave as two separate objects.
--
Kein Mitleid Für Die Mehrheit
|
|
|
|