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

  • SEARCH
  • Home
  • 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 7591303
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 30, 20262026-05-30T20:37:07+00:00 2026-05-30T20:37:07+00:00

I am trying to write some plugins to work with the Terminal Services Session

  • 0

I am trying to write some plugins to work with the Terminal Services Session Broker Plugin Interface. I am very fluent in C# but I have not done any C++ since the late 90’s. For the plugin I am writing I plan on communicating with a database and I would prefer to use System.Data.SqlClient to talk to it as I know it’s ins and outs fairly well. I have the Windows SDK which has provided my with the .idl file for the interface (tssbx.idl). The SDK also provides a C header file (tssbx.h) and a C source file (tssbx_i.c).

I have never written a COM server before, and I have been having a lot of trouble finding resources on learning how to read a IDL file and turn it in to C#. Everything I find says “Use TlbImport” but that requires things like the block library to be in the IDL which tssbx.idl does not (nor its dependents) implement.

What would be my best option:

  1. Find a tool for C# that is the equivalent to MIDL for parsing a .idl file in to a .cs file.
  2. Learn IDL (I have been having trouble finding good guides to learn it) and write the whole thing in C# by hand.
  3. Write a helper dll using the C files provided and have that call in to my C# dll for my .NET parts.
  4. Re-learn C++, use the provided .h and .c files, and use the CLR to make my .NET calls.
  5. Some other option I have not thought of.
  • 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-30T20:37:08+00:00Added an answer on May 30, 2026 at 8:37 pm

    The way to do what you’re trying to do is to translate the IDL definitions into C# interfaces, then implement those interfaces as C# classes. You apply the appropriate attributes (mostly ComVisible, ClassInterface, and ProgId) to the classes you want to expose to COM, and use the regasm tool to register your assembly as a COM server.

    Translating IDL into C# is actually not that complex; for the most part it maps pretty directly from IDL keywords to C# keywords and/or MarshalAs attributes. I have a series of blog posts on how to do COM interop w/out tlbimp, including one on how to read IDL. I don’t know of any tools, specifically, that do a good job of this, but if its part of the Windows SDK you should always check pinvoke.net first in case someone else did it for you.

    As far as your other options, 3 and 4 both amount to about the same thing. You cannot call managed code directly from unmanaged code unless it’s done via COM Interop or a mixed-mode C++ library. In the first case, you’d still have to solve all of the problems of getting your C# assembly registered with COM for your C dll to call, so you may as well skip the middle-man. For the second, you are basically doing manually the same things that the runtime’s interop code does for you, and using a language you’re less familiar with to boot, which seems like a net loss to me.

    Be aware, though, that loading .NET assemblies into an unmanaged context isn’t always possible; for example, managed shell extensions are explicitly not support in Windows 2008. I don’t know if the TSSBX interface will allow you to load managed assemblies as COM objects or not, so you’ll have to be aware of that possibility. If you can’t, then none of your options are going to work, and you’ll have to avoid using the .NET Framework at all and use some other database access technology and write the entire project in unmanaged C++.

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

Sidebar

Related Questions

I have a CKEditor custom plugin I'm trying to write, but need some help
I'm trying to write a plugin that aliases some methods in ActiveRecord in the
I'm trying to write a plugin system to provide some extensibility to an application
I'm trying to write some code to work with an htdigest password file. The
What I'm trying to do is to write some Maven plugin which scans application
I am trying to write an plugin system that can load managed plugins. The
I'm trying to write a little WordPress plugin to support some migrated content. The
Im trying to write a quick plugin that will load some AJAX content into
I have an idea about a plugin to write for firefox, but have no
I'm currently trying to write a plugin for IIS 7 Manager to provide some

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.