Note: Forums will be making significant UX changes to address key usability improvements surrounding search, discoverability and navigation. To learn more about these changes please visit the announcement which can be found HERE.

Unanswered RE: Custom Audio Endpoint rdpendp.dll for 2008 R2

  • Monday, June 11, 2012 7:13 PM
     
     
     

    Hi,

    We have implemented our own RdpEndp.dll

    Most of the functionality is there and working so far, except of couple of unknowns.

    We are receiving this IID: {604E2AE7-C4C5-4032-93FF-88B26CDD75B8} In IAudioSessionControl::QueryInterface.

    We have looked it up in the includes (VS, SDK, DDK) and on Google - can’t find any info on what it is.

    Can anyone tell us what this IID means?

    Thanks!


    wind15

All Replies

  • Monday, June 11, 2012 7:52 PM
    Moderator
     
     

    That's a private interface that Windows uses, so I'm not going to tell you its name or its methods ;-)

    As with other interfaces you do not implement, return E_NOINTERFACE and set the output pointer to nullptr.


    Matthew van Eerde

  • Monday, June 11, 2012 8:27 PM
     
     

    The IID in question is sent by SndVol.exe. The IID is sent in responce to the OnSessionCreated

    pIAudioSessionNotification->OnSessionCreated(NewSession);

    I do exactly that: "return E_NOINTERFACE and set the output pointer to nullptr".

    Once I return E_NOINTERFACE, the SndVol.exe doesn't seem to care to enumerate and display the new session in it's GUI. So I beliefve the IID in question is the show stopper for the SndVol.exe.

    If not, then how SndVol.exe enumerates and displays the sessions?


    wind15

  • Monday, June 11, 2012 9:18 PM
    Moderator
     
     

    sndvol.exe uses the internal Windows interface, which you will not be able to implement.

    To implement a custom audio endpoint, there is a certain minimal set of interfaces you need to implement:

    • IAudioOutputEndpointRT
    • IAudioInputEndpointRT (if you do capture)

    These will be activated off of your IMMDevice.

    There is another set of interfaces that you can implement if they are natural for your solution - for example, IAudioEndpointVolume.  It is not necessary to implement them, though.  If you don't implement them, return E_NOINTERFACE and set your output pointer to NULL.  Windows will then fall back on the default Windows implementations of these interfaces.

    Finally there is a set of interfaces that you cannot implement because Windows depends on private implementations.  It seems IAudioSessionControl is one of these.


    Matthew van Eerde

  • Monday, June 11, 2012 10:10 PM
     
     

    Maurits,

    We have gone this route once before.

    Please see the original question: Custom Audio Endpoint rdpendp.dll for 2008 R2.

    You have never answered how to get IAudioOutputEndpointRT to get called.

    IAudioOutputEndpointRT is not a part of  IMMDevice - according to your own documentation!!!

    IAudioOutputEndpointRT  never called in context of IMMDevice!!!

    E_NOINTERFACE is not working everywhere as you suggest. Appliacations quit working if they see E_NOINTERFACE - so I need to implement all functionality.

    Is there a way to get more information other than trough this forum?


    wind15

  • Tuesday, June 12, 2012 12:12 AM
    Moderator
     
     

    You can ask in the Remote Desktop Services forum:

    http://social.technet.microsoft.com/Forums/en/winserverTS/threads

    You can open a support case:

    http://support.microsoft.com/contactus/

    If the issue is determined to be a Microsoft bug, the support fee is waived.


    Matthew van Eerde