Click here to Skip to main content
15,921,941 members
Home / Discussions / COM
   

COM

 
GeneralATL COM Pin
Binayak18-Sep-03 13:06
Binayak18-Sep-03 13:06 
GeneralRe: ATL COM Pin
Stefan Pedersen18-Sep-03 13:44
Stefan Pedersen18-Sep-03 13:44 
GeneralBrowser display coordinates Pin
nikhilkhedkar18-Sep-03 2:38
nikhilkhedkar18-Sep-03 2:38 
QuestionHow to release memory? when calling COM with param type BSTR* from VB exe application Pin
doisy18-Sep-03 2:22
doisy18-Sep-03 2:22 
AnswerRe: How to release memory? when calling COM with param type BSTR* from VB exe application Pin
Steve S18-Sep-03 2:36
Steve S18-Sep-03 2:36 
GeneralRe: How to release memory? when calling COM with param type BSTR* from VB exe application Pin
Vi218-Sep-03 19:54
Vi218-Sep-03 19:54 
GeneralRe: How to release memory? when calling COM with param type BSTR* from VB exe application Pin
Steve S18-Sep-03 21:43
Steve S18-Sep-03 21:43 
GeneralRe: How to release memory? when calling COM with param type BSTR* from VB exe application Pin
Lim Bio Liong19-Sep-03 1:19
Lim Bio Liong19-Sep-03 1:19 
Hello Vita,

I wrote a simple VC++ ATL COM Object that implements SomeTestMethod() as described above (it takes an [out] parameter of type BSTR*). I ran a VB test client that performs the exact same calls as described :

Dim s As String
s = "SomeText"
...
Call obj.SomeTestMethod(s)

Listed below is my SomeTestMethod() implementation :

STDMETHODIMP CTest2::SomeTestMethod(BSTR *pbstr)
{
// TODO: Add your implementation code here
if (*pbstr)
{
::SysFreeString(*pbstr);
*pbstr = NULL;
}

*pbstr = _bstr_t(TEXT("New BSTR.")).copy();

return S_OK;
}

I noted that when control gets into SomeTestMethod(), pbstr points to a BSTR but that BSTR is actually NULL. Hence the contents of the "if" statement :

if (*pbstr)
{
::SysFreeString(*pbstr);
*pbstr = NULL;
}

did not get executed. This is because "*pbstr" is actually NULL. This makes me suspect strongly that the VB runtime will actually free the BSTR in "s" before passing it by reference to SomeTestMethod().

The rest of the function :

*pbstr = _bstr_t(TEXT("New BSTR.")).copy();

works as expected.

When I get the VB test client to display "s" (in a MsgBox) after calling SomeTestMethod(), the displayed text is indeed "New BSTR."

Hope the above can be of help.

Best Regards,
Bio.

GeneralOffice::CommandBarControl problem Pin
dorutzu17-Sep-03 4:30
dorutzu17-Sep-03 4:30 
GeneralDVTARGETDEVICE structure Pin
CodeBrain17-Sep-03 3:02
CodeBrain17-Sep-03 3:02 
GeneralRe: DVTARGETDEVICE structure Pin
CodeBrain17-Sep-03 4:14
CodeBrain17-Sep-03 4:14 
QuestionAny ideas on gettin a IDispatch interface from Remote Computer? Pin
FearlessBurner15-Sep-03 9:47
FearlessBurner15-Sep-03 9:47 
AnswerRe: Any ideas on gettin a IDispatch interface from Remote Computer? Pin
Vi215-Sep-03 21:45
Vi215-Sep-03 21:45 
GeneralRe: Any ideas on gettin a IDispatch interface from Remote Computer? Pin
FearlessBurner16-Sep-03 11:22
FearlessBurner16-Sep-03 11:22 
GeneralMFC + TNA Pin
BERNERT15-Sep-03 4:02
BERNERT15-Sep-03 4:02 
GeneralRight Click Pin
Srikar Y14-Sep-03 0:20
Srikar Y14-Sep-03 0:20 
GeneralRe: Right Click Pin
Jagadeesh VN16-Sep-03 22:39
Jagadeesh VN16-Sep-03 22:39 
Questioninstallation and DLL? Pin
Maverick13-Sep-03 1:05
Maverick13-Sep-03 1:05 
AnswerRe: installation and DLL? Pin
Jagadeesh VN16-Sep-03 22:43
Jagadeesh VN16-Sep-03 22:43 
GeneralIOleCommandTarget Impleimentation Pin
suri babu12-Sep-03 5:16
suri babu12-Sep-03 5:16 
GeneralIs this safe? (map) Pin
Jeremy Pullicino11-Sep-03 3:45
Jeremy Pullicino11-Sep-03 3:45 
GeneralUsing ActiveX Pin
daphna10-Sep-03 4:21
daphna10-Sep-03 4:21 
GeneralRe: Using ActiveX Pin
Jagadeesh VN10-Sep-03 9:44
Jagadeesh VN10-Sep-03 9:44 
Question_bstr_t::copy and memory leak? Pin
Maverick9-Sep-03 22:56
Maverick9-Sep-03 22:56 
AnswerRe: _bstr_t::copy and memory leak? Pin
Jagadeesh VN9-Sep-03 23:27
Jagadeesh VN9-Sep-03 23:27 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.