RE: KS midi device isn't visible in user space

Tech-Archive recommends: Fix windows errors by optimizing your registry

From: John (paddy_at_noemail.noemail)
Date: 03/30/04


Date: Mon, 29 Mar 2004 18:21:09 -0800

Hi Rich. Thanks for your response.

The ddksynth sample, when built and installed, does not show up in user space. It does show up in KSStudio, but that is insufficient.

We are probing for MM devices from user space like this:
        int out = midiOutGetNumDevs();
        for (x=0; x<out; x++) {
                res = midiOutGetDevCaps(x, &ocaps, sizeof(ocaps));
                if (res == MMSYSERR_NOERROR) {
                        printf("x=%d mid=%d pid=%d\n vers=%d,%d,%d,%d\n name=%s tech=%s\n", .... );

We are probing for DMus devices from user space like this:
    CoInitialize(NULL);
    CoCreateInstance( CLSID_DirectMusic, NULL, CLSCTX_INPROC,
                      IID_IDirectMusic8, (void**)&g_pMusic );
      g_pMusic->SetDirectSound(NULL, NULL);
      int x = 0;
      DMUS_PORTCAPS caps;
      caps.dwSize = sizeof(caps);
      while (g_pMusic->EnumPort(x, &caps) != S_FALSE) {
        char buf[1024];
        memset(buf, 0, 1024);
        int num = WideCharToMultiByte(CP_ACP, 0, caps.wszDescription, -1,
                                      buf, 1024, NULL, NULL);
        printf("port %d:\n flags=%s\n class=%s\n type=%s\n desc=%s\n", .... );
        x++;
        }

In neither case does ddksynth or our driver show up. Please assist. Are we probing wrong? Is there something else that we need to do for (non-PortCls) KS drivers to show up to user programs as MIDI or DMusic devices? I would be happy to send you the full source for our simple probe program, or a stripped down sw-only KS MIDI driver. Note we cannot choose to use PortCls, since our device isn't on the backbone.

What can I do to make ddksynth visible to IDirectMusic8::EnumPort() or midiOutGetNumDevs()/midiOutGetDevCaps()?

Thanks in advance.

John