Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6636375
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T23:10:40+00:00 2026-05-25T23:10:40+00:00

I have a ATL COM component method which has an [out] BSTR* parameter. I

  • 0

I have a ATL COM component method which has an [out] BSTR* parameter. I have create a reference to this component from my .NET application which treats the parameter as an out String type. The COM component allocates this string like this:

    USES_CONVERSION;
    *sText = SysAllocString(T2OLE(psText));

where psText is a char*

However, when the method call returns, the .NET code still has an empty string. Can anyone see what is wrong?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T23:10:41+00:00Added an answer on May 25, 2026 at 11:10 pm

    The code isn’t wrong but the .Net runtime may be too stupid to parse the indirection. You might want to rephrase your IDL from:

    HRESULT DoSomething([in] BSTR arg, [out] BSTR *result);

    to:

    HRESULT DoSomething([in] BSTR arg, [out, retval] BSTR *result);

    The first syntax will yield in C#:

    string result;
    void DoSomething(string arg, out result);

    2nd:

    string result = DoSomething(arg);

    Any 8-bit to 16-bit Unicode conversion must go through SysAllocString, since both out and out, retval require the caller to free the string. However, the .Net-runtime might get better results if it is told that this is the return value;

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

We have a COM object implemented with C++/ATL that includes a method which will
I have a ATL COM project that was compiling fine in VC6 which gives
I have an ATL COM object that I am using from C#. The interface
Have created a ATL COM project through which I am inserting Menu Items to
I have a .NET component exposed as a CCW (Com Callable Wrapper) and being
I have a ATL COM service exe (MyService.exe), which compiles and runs fine. If
I have an ATL COM object which needs to expose a collection of other
I have a out of proc COM server (ATL based) and a Java app
I am using ATL (VS2008, so ATL9 IIRC) to create COM objects and have
I have a .NET Windows service which self hosts a WCF service. This WCF

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.