[wdmaudiodev] Re: Generic Virtual MIDI-driver...

  • From: "Tobias Erichsen" <t.erichsen@xxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Tue, 14 Apr 2009 16:48:42 +0200

Hi again,

like I wrote before, I have taken the filter & pin defines
from the DMusUART sample unchanged, but unfortunately these
don't seem to work (they also don't work if I use the my
driver in "non-dynamic"-mode, creating a single subdevice
from the defines in the inf-file.

I have attached the properties that the KsStudio application
has read from my driver and also my inf-file.  Perhaps
someone has an idea what is going wrong...

Best regards,
Tobias


-------- Original-Nachricht --------
> Datum: Mon, 13 Apr 2009 22:15:24 +0200
> Von: "Tobias Erichsen" <t.erichsen@xxxxxx>
> An: wdmaudiodev@xxxxxxxxxxxxx
> Betreff: [wdmaudiodev] Re: Generic Virtual MIDI-driver...

> Hi everyone,
> 
> I have done a good bit of digging into the depths of PortCls
> over the weekend and also thanks to Jeff I have been able
> to get a good way towards a completely virtual MIDI-port-driver
> with dynamic friendly-names.
> 
> I have succeeded in creating my private interface by hooking
> the major-functions in the DriverEntry.
> 
> I have also been able to use this private interface to create
> my own virtual subdevices (and also to destroy them again).
> 
> I have also been able to send data (KSCATEGORY_RENDER)
> from a standard-MIDI-capable application towards my private
> interface.
> 
> So far so good.  I still have one piece left which I currently
> don't seem to get going:
> 
> Every time when I try to instanciate the capture-pin of my
> Miniport (KSCATEGORY_CAPTURE), it fails.
> 
> In my debug-log I see that the new stream is being created,
> that the init-function is called, and the ::ConnectOutput
> method is being called.  Unfortunately directly afterwards
> the ::DisconnectOutput-method of the stream is called again
> and the stream is destroyed...
> 
> I currently have no idea what the problem is.
> 
> I have tried to instanciate the capture-pin via KS Studio,
> it also fails and I have attached the logfiles from both
> instanciating the filter & the pin in this email.
> 
> If someone could take a look at those files and give me
> a hint, I would be really grateful.
> 
> Best regards,
> Tobias
> 
> PS.: The driver is loosely based on DMusUART and MPU401,
> so I have not changed any of the filter & pin-stuff
> from those samples...
> -- 
> Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen:
> http://www.gmx.net/de/go/multimessenger01

-- 
Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: 
http://www.gmx.net/de/go/multimessenger01
+MyMIDI:  Instance 0x000000DC
  +Pin Factories (5)
    +Pin Factory 0 - MIDI
      +Interfaces (1)
        -<KSINTERFACESETID_Standard, KSINTERFACE_STANDARD_STREAMING>
      +Mediums (1)
        -<KSMEDIUMSETID_Standard, KSMEDIUM_STANDARD(0)>
      +Data Range (KSDATARANGE_MUSIC)
        +DataRange = ...
          -FormatSize = 96 (0x00000060)
          -Flags = 0 (0x00000000)
          -SampleSize = 0 (0x00000000)
          -Reserved = 0 (0x00000000)
          +MajorFormat = KSDATAFORMAT_TYPE_MUSIC
            -Data1 = 3878015840 (0xe725d360)
            -Data2 = 25292 (0x62cc)
            -Data3 = 4559 (0x11cf)
            -Data4[0] = 165 (0xa5)
            -Data4[1] = 214 (0xd6)
            -Data4[2] = 40 (0x28)
            -Data4[3] = 219 (0xdb)
            -Data4[4] = 4 (0x04)
            -Data4[5] = 193 (0xc1)
            -Data4[6] = 0 (0x00)
            -Data4[7] = 0 (0x00)
          +SubFormat = KSDATAFORMAT_SUBTYPE_MIDI
            -Data1 = 489039712 (0x1d262760)
            -Data2 = 59735 (0xe957)
            -Data3 = 4559 (0x11cf)
            -Data4[0] = 165 (0xa5)
            -Data4[1] = 214 (0xd6)
            -Data4[2] = 40 (0x28)
            -Data4[3] = 219 (0xdb)
            -Data4[4] = 4 (0x04)
            -Data4[5] = 193 (0xc1)
            -Data4[6] = 0 (0x00)
            -Data4[7] = 0 (0x00)
          +Specifier = KSDATAFORMAT_SPECIFIER_NONE
            -Data1 = 258217942 (0x0f6417d6)
            -Data2 = 49944 (0xc318)
            -Data3 = 4560 (0x11d0)
            -Data4[0] = 164 (0xa4)
            -Data4[1] = 63 (0x3f)
            -Data4[2] = 0 (0x00)
            -Data4[3] = 160 (0xa0)
            -Data4[4] = 201 (0xc9)
            -Data4[5] = 34 (0x22)
            -Data4[6] = 49 (0x31)
            -Data4[7] = 150 (0x96)
        +Technology = KSMUSIC_TECHNOLOGY_PORT
          -Data1 = 2261331552 (0x86c92e60)
          -Data2 = 25320 (0x62e8)
          -Data3 = 4559 (0x11cf)
          -Data4[0] = 165 (0xa5)
          -Data4[1] = 214 (0xd6)
          -Data4[2] = 40 (0x28)
          -Data4[3] = 219 (0xdb)
          -Data4[4] = 4 (0x04)
          -Data4[5] = 193 (0xc1)
          -Data4[6] = 0 (0x00)
          -Data4[7] = 0 (0x00)
        -Channels = 0 (0x00000000)
        -Notes = 0 (0x00000000)
        -ChannelMask = 65535 (0x0000ffff)
      -Constrained Data Ranges (0)
      -Data Flow = KSPIN_DATAFLOW_IN
      -Communication = KSPIN_COMMUNICATION_SINK
      -Category = KSCATEGORY_AUDIO
      +Instance Data
        +KSPROPERTY_PIN_CINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -PossibleCount = 1 (0x00000001)
            -CurrentCount = 0 (0x00000000)
        +KSPROPERTY_PIN_GLOBALCINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -PossibleCount = 1 (0x00000001)
            -CurrentCount = 0 (0x00000000)
        +KSPROPERTY_PIN_NECESSARYINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -0 (0x00000000)
      +PhysicalConnection
        -Not available
    +Pin Factory 1 - Data input, IRP sink  (no friendly name)
      +Interfaces (1)
        -<KSINTERFACESETID_Standard, KSINTERFACE_STANDARD_STREAMING>
      +Mediums (1)
        -<KSMEDIUMSETID_Standard, KSMEDIUM_STANDARD(0)>
      +Data Range (KSDATARANGE_MUSIC)
        +DataRange = ...
          -FormatSize = 96 (0x00000060)
          -Flags = 0 (0x00000000)
          -SampleSize = 0 (0x00000000)
          -Reserved = 0 (0x00000000)
          +MajorFormat = KSDATAFORMAT_TYPE_MUSIC
            -Data1 = 3878015840 (0xe725d360)
            -Data2 = 25292 (0x62cc)
            -Data3 = 4559 (0x11cf)
            -Data4[0] = 165 (0xa5)
            -Data4[1] = 214 (0xd6)
            -Data4[2] = 40 (0x28)
            -Data4[3] = 219 (0xdb)
            -Data4[4] = 4 (0x04)
            -Data4[5] = 193 (0xc1)
            -Data4[6] = 0 (0x00)
            -Data4[7] = 0 (0x00)
          +SubFormat = {1a82f8bc-3f8b-11d2-b774-0060083316c1}
            -Data1 = 444790972 (0x1a82f8bc)
            -Data2 = 16267 (0x3f8b)
            -Data3 = 4562 (0x11d2)
            -Data4[0] = 183 (0xb7)
            -Data4[1] = 116 (0x74)
            -Data4[2] = 0 (0x00)
            -Data4[3] = 96 (0x60)
            -Data4[4] = 8 (0x08)
            -Data4[5] = 51 (0x33)
            -Data4[6] = 22 (0x16)
            -Data4[7] = 193 (0xc1)
          +Specifier = KSDATAFORMAT_SPECIFIER_NONE
            -Data1 = 258217942 (0x0f6417d6)
            -Data2 = 49944 (0xc318)
            -Data3 = 4560 (0x11d0)
            -Data4[0] = 164 (0xa4)
            -Data4[1] = 63 (0x3f)
            -Data4[2] = 0 (0x00)
            -Data4[3] = 160 (0xa0)
            -Data4[4] = 201 (0xc9)
            -Data4[5] = 34 (0x22)
            -Data4[6] = 49 (0x31)
            -Data4[7] = 150 (0x96)
        +Technology = KSMUSIC_TECHNOLOGY_PORT
          -Data1 = 2261331552 (0x86c92e60)
          -Data2 = 25320 (0x62e8)
          -Data3 = 4559 (0x11cf)
          -Data4[0] = 165 (0xa5)
          -Data4[1] = 214 (0xd6)
          -Data4[2] = 40 (0x28)
          -Data4[3] = 219 (0xdb)
          -Data4[4] = 4 (0x04)
          -Data4[5] = 193 (0xc1)
          -Data4[6] = 0 (0x00)
          -Data4[7] = 0 (0x00)
        -Channels = 0 (0x00000000)
        -Notes = 0 (0x00000000)
        -ChannelMask = 65535 (0x0000ffff)
      -Constrained Data Ranges (0)
      -Data Flow = KSPIN_DATAFLOW_IN
      -Communication = KSPIN_COMMUNICATION_SINK
      -Category = KSCATEGORY_AUDIO
      +Instance Data
        +KSPROPERTY_PIN_CINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -PossibleCount = 1 (0x00000001)
            -CurrentCount = 0 (0x00000000)
        +KSPROPERTY_PIN_GLOBALCINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -PossibleCount = 1 (0x00000001)
            -CurrentCount = 0 (0x00000000)
        +KSPROPERTY_PIN_NECESSARYINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -0 (0x00000000)
      +PhysicalConnection
        -Not available
    +Pin Factory 2 - Data output, IRP none  (no friendly name)
      +Interfaces (1)
        -<KSINTERFACESETID_Standard, KSINTERFACE_STANDARD_STREAMING>
      +Mediums (1)
        -<KSMEDIUMSETID_Standard, KSMEDIUM_STANDARD(0)>
      +Data Range (KSDATARANGE)
        -FormatSize = 64 (0x00000040)
        -Flags = 0 (0x00000000)
        -SampleSize = 0 (0x00000000)
        -Reserved = 0 (0x00000000)
        +MajorFormat = KSDATAFORMAT_TYPE_MUSIC
          -Data1 = 3878015840 (0xe725d360)
          -Data2 = 25292 (0x62cc)
          -Data3 = 4559 (0x11cf)
          -Data4[0] = 165 (0xa5)
          -Data4[1] = 214 (0xd6)
          -Data4[2] = 40 (0x28)
          -Data4[3] = 219 (0xdb)
          -Data4[4] = 4 (0x04)
          -Data4[5] = 193 (0xc1)
          -Data4[6] = 0 (0x00)
          -Data4[7] = 0 (0x00)
        +SubFormat = KSDATAFORMAT_SUBTYPE_MIDI_BUS
          -Data1 = 748773280 (0x2ca15fa0)
          -Data2 = 27902 (0x6cfe)
          -Data3 = 4559 (0x11cf)
          -Data4[0] = 165 (0xa5)
          -Data4[1] = 214 (0xd6)
          -Data4[2] = 40 (0x28)
          -Data4[3] = 219 (0xdb)
          -Data4[4] = 4 (0x04)
          -Data4[5] = 193 (0xc1)
          -Data4[6] = 0 (0x00)
          -Data4[7] = 0 (0x00)
        +Specifier = KSDATAFORMAT_SPECIFIER_NONE
          -Data1 = 258217942 (0x0f6417d6)
          -Data2 = 49944 (0xc318)
          -Data3 = 4560 (0x11d0)
          -Data4[0] = 164 (0xa4)
          -Data4[1] = 63 (0x3f)
          -Data4[2] = 0 (0x00)
          -Data4[3] = 160 (0xa0)
          -Data4[4] = 201 (0xc9)
          -Data4[5] = 34 (0x22)
          -Data4[6] = 49 (0x31)
          -Data4[7] = 150 (0x96)
      -Constrained Data Ranges (0)
      -Data Flow = KSPIN_DATAFLOW_OUT
      -Communication = KSPIN_COMMUNICATION_NONE
      -Category = KSCATEGORY_AUDIO
      +Instance Data
        +KSPROPERTY_PIN_CINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -PossibleCount = 0 (0x00000000)
            -CurrentCount = 0 (0x00000000)
        +KSPROPERTY_PIN_GLOBALCINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -PossibleCount = 0 (0x00000000)
            -CurrentCount = 0 (0x00000000)
        +KSPROPERTY_PIN_NECESSARYINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -0 (0x00000000)
      +PhysicalConnection
        -Not available
    +Pin Factory 3 - Data input, IRP none  (no friendly name)
      +Interfaces (1)
        -<KSINTERFACESETID_Standard, KSINTERFACE_STANDARD_STREAMING>
      +Mediums (1)
        -<KSMEDIUMSETID_Standard, KSMEDIUM_STANDARD(0)>
      +Data Range (KSDATARANGE)
        -FormatSize = 64 (0x00000040)
        -Flags = 0 (0x00000000)
        -SampleSize = 0 (0x00000000)
        -Reserved = 0 (0x00000000)
        +MajorFormat = KSDATAFORMAT_TYPE_MUSIC
          -Data1 = 3878015840 (0xe725d360)
          -Data2 = 25292 (0x62cc)
          -Data3 = 4559 (0x11cf)
          -Data4[0] = 165 (0xa5)
          -Data4[1] = 214 (0xd6)
          -Data4[2] = 40 (0x28)
          -Data4[3] = 219 (0xdb)
          -Data4[4] = 4 (0x04)
          -Data4[5] = 193 (0xc1)
          -Data4[6] = 0 (0x00)
          -Data4[7] = 0 (0x00)
        +SubFormat = KSDATAFORMAT_SUBTYPE_MIDI_BUS
          -Data1 = 748773280 (0x2ca15fa0)
          -Data2 = 27902 (0x6cfe)
          -Data3 = 4559 (0x11cf)
          -Data4[0] = 165 (0xa5)
          -Data4[1] = 214 (0xd6)
          -Data4[2] = 40 (0x28)
          -Data4[3] = 219 (0xdb)
          -Data4[4] = 4 (0x04)
          -Data4[5] = 193 (0xc1)
          -Data4[6] = 0 (0x00)
          -Data4[7] = 0 (0x00)
        +Specifier = KSDATAFORMAT_SPECIFIER_NONE
          -Data1 = 258217942 (0x0f6417d6)
          -Data2 = 49944 (0xc318)
          -Data3 = 4560 (0x11d0)
          -Data4[0] = 164 (0xa4)
          -Data4[1] = 63 (0x3f)
          -Data4[2] = 0 (0x00)
          -Data4[3] = 160 (0xa0)
          -Data4[4] = 201 (0xc9)
          -Data4[5] = 34 (0x22)
          -Data4[6] = 49 (0x31)
          -Data4[7] = 150 (0x96)
      -Constrained Data Ranges (0)
      -Data Flow = KSPIN_DATAFLOW_IN
      -Communication = KSPIN_COMMUNICATION_NONE
      -Category = KSCATEGORY_AUDIO
      +Instance Data
        +KSPROPERTY_PIN_CINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -PossibleCount = 0 (0x00000000)
            -CurrentCount = 0 (0x00000000)
        +KSPROPERTY_PIN_GLOBALCINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -PossibleCount = 0 (0x00000000)
            -CurrentCount = 0 (0x00000000)
        +KSPROPERTY_PIN_NECESSARYINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -0 (0x00000000)
      +PhysicalConnection
        -Not available
    +Pin Factory 4 - Data output, IRP sink  (no friendly name)
      +Interfaces (1)
        -<KSINTERFACESETID_Standard, KSINTERFACE_STANDARD_STREAMING>
      +Mediums (1)
        -<KSMEDIUMSETID_Standard, KSMEDIUM_STANDARD(0)>
      +Data Ranges (2)
        +Data Range 0 (KSDATARANGE_MUSIC)
          +DataRange = ...
            -FormatSize = 96 (0x00000060)
            -Flags = 0 (0x00000000)
            -SampleSize = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
            +MajorFormat = KSDATAFORMAT_TYPE_MUSIC
              -Data1 = 3878015840 (0xe725d360)
              -Data2 = 25292 (0x62cc)
              -Data3 = 4559 (0x11cf)
              -Data4[0] = 165 (0xa5)
              -Data4[1] = 214 (0xd6)
              -Data4[2] = 40 (0x28)
              -Data4[3] = 219 (0xdb)
              -Data4[4] = 4 (0x04)
              -Data4[5] = 193 (0xc1)
              -Data4[6] = 0 (0x00)
              -Data4[7] = 0 (0x00)
            +SubFormat = KSDATAFORMAT_SUBTYPE_MIDI
              -Data1 = 489039712 (0x1d262760)
              -Data2 = 59735 (0xe957)
              -Data3 = 4559 (0x11cf)
              -Data4[0] = 165 (0xa5)
              -Data4[1] = 214 (0xd6)
              -Data4[2] = 40 (0x28)
              -Data4[3] = 219 (0xdb)
              -Data4[4] = 4 (0x04)
              -Data4[5] = 193 (0xc1)
              -Data4[6] = 0 (0x00)
              -Data4[7] = 0 (0x00)
            +Specifier = KSDATAFORMAT_SPECIFIER_NONE
              -Data1 = 258217942 (0x0f6417d6)
              -Data2 = 49944 (0xc318)
              -Data3 = 4560 (0x11d0)
              -Data4[0] = 164 (0xa4)
              -Data4[1] = 63 (0x3f)
              -Data4[2] = 0 (0x00)
              -Data4[3] = 160 (0xa0)
              -Data4[4] = 201 (0xc9)
              -Data4[5] = 34 (0x22)
              -Data4[6] = 49 (0x31)
              -Data4[7] = 150 (0x96)
          +Technology = KSMUSIC_TECHNOLOGY_PORT
            -Data1 = 2261331552 (0x86c92e60)
            -Data2 = 25320 (0x62e8)
            -Data3 = 4559 (0x11cf)
            -Data4[0] = 165 (0xa5)
            -Data4[1] = 214 (0xd6)
            -Data4[2] = 40 (0x28)
            -Data4[3] = 219 (0xdb)
            -Data4[4] = 4 (0x04)
            -Data4[5] = 193 (0xc1)
            -Data4[6] = 0 (0x00)
            -Data4[7] = 0 (0x00)
          -Channels = 0 (0x00000000)
          -Notes = 0 (0x00000000)
          -ChannelMask = 65535 (0x0000ffff)
        +Data Range 1 (KSDATARANGE_MUSIC)
          +DataRange = ...
            -FormatSize = 96 (0x00000060)
            -Flags = 0 (0x00000000)
            -SampleSize = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
            +MajorFormat = KSDATAFORMAT_TYPE_MUSIC
              -Data1 = 3878015840 (0xe725d360)
              -Data2 = 25292 (0x62cc)
              -Data3 = 4559 (0x11cf)
              -Data4[0] = 165 (0xa5)
              -Data4[1] = 214 (0xd6)
              -Data4[2] = 40 (0x28)
              -Data4[3] = 219 (0xdb)
              -Data4[4] = 4 (0x04)
              -Data4[5] = 193 (0xc1)
              -Data4[6] = 0 (0x00)
              -Data4[7] = 0 (0x00)
            +SubFormat = {1a82f8bc-3f8b-11d2-b774-0060083316c1}
              -Data1 = 444790972 (0x1a82f8bc)
              -Data2 = 16267 (0x3f8b)
              -Data3 = 4562 (0x11d2)
              -Data4[0] = 183 (0xb7)
              -Data4[1] = 116 (0x74)
              -Data4[2] = 0 (0x00)
              -Data4[3] = 96 (0x60)
              -Data4[4] = 8 (0x08)
              -Data4[5] = 51 (0x33)
              -Data4[6] = 22 (0x16)
              -Data4[7] = 193 (0xc1)
            +Specifier = KSDATAFORMAT_SPECIFIER_NONE
              -Data1 = 258217942 (0x0f6417d6)
              -Data2 = 49944 (0xc318)
              -Data3 = 4560 (0x11d0)
              -Data4[0] = 164 (0xa4)
              -Data4[1] = 63 (0x3f)
              -Data4[2] = 0 (0x00)
              -Data4[3] = 160 (0xa0)
              -Data4[4] = 201 (0xc9)
              -Data4[5] = 34 (0x22)
              -Data4[6] = 49 (0x31)
              -Data4[7] = 150 (0x96)
          +Technology = KSMUSIC_TECHNOLOGY_PORT
            -Data1 = 2261331552 (0x86c92e60)
            -Data2 = 25320 (0x62e8)
            -Data3 = 4559 (0x11cf)
            -Data4[0] = 165 (0xa5)
            -Data4[1] = 214 (0xd6)
            -Data4[2] = 40 (0x28)
            -Data4[3] = 219 (0xdb)
            -Data4[4] = 4 (0x04)
            -Data4[5] = 193 (0xc1)
            -Data4[6] = 0 (0x00)
            -Data4[7] = 0 (0x00)
          -Channels = 0 (0x00000000)
          -Notes = 0 (0x00000000)
          -ChannelMask = 65535 (0x0000ffff)
      -Constrained Data Ranges (0)
      -Data Flow = KSPIN_DATAFLOW_OUT
      -Communication = KSPIN_COMMUNICATION_SINK
      -Category = KSCATEGORY_AUDIO
      +Instance Data
        +KSPROPERTY_PIN_CINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -PossibleCount = 1 (0x00000001)
            -CurrentCount = 0 (0x00000000)
        +KSPROPERTY_PIN_GLOBALCINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -PossibleCount = 1 (0x00000001)
            -CurrentCount = 0 (0x00000000)
        +KSPROPERTY_PIN_NECESSARYINSTANCES
          +Description (KSPROPERTY_DESCRIPTION)
            -AccessFlags = 1 (0x00000001)
            -DescriptionSize = 40 (0x00000028)
            +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
              +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
                -Data1 = 0 (0x00000000)
                -Data2 = 0 (0x0000)
                -Data3 = 0 (0x0000)
                -Data4[0] = 0 (0x00)
                -Data4[1] = 0 (0x00)
                -Data4[2] = 0 (0x00)
                -Data4[3] = 0 (0x00)
                -Data4[4] = 0 (0x00)
                -Data4[5] = 0 (0x00)
                -Data4[6] = 0 (0x00)
                -Data4[7] = 0 (0x00)
              -Id = 0 (0x00000000)
              -Flags = 0 (0x00000000)
            -MembersListCount = 0 (0x00000000)
            -Reserved = 0 (0x00000000)
          +Value
            -0 (0x00000000)
      +PhysicalConnection
        -Not available
  +Nodes (2)
    +(0) KSCATEGORY_SYNTHESIZER (Synthesizer)
      +KSPROPSETID_SynthClock
        -KSPROPERTY_SYNTH_MASTERCLOCK
    +(1) KSCATEGORY_SYNTHESIZER (Synthesizer)
      +KSPROPSETID_SynthClock
        -KSPROPERTY_SYNTH_MASTERCLOCK
  +Connections (5)
    -Filter pin [0]  -->  Filter pin [2]
    -Filter pin [1]  -->  node [0] , pin [1]
    -node [0] , pin [0]  -->  Filter pin [2]
    -Filter pin [3]  -->  node [1] , pin [1]
    -node [1] , pin [0]  -->  Filter pin [4]
  +Misc. Supported PropertySets (2)
    +KSPROPSETID_SynthClock
      +KSPROPERTY_SYNTH_MASTERCLOCK
        +Description (KSPROPERTY_DESCRIPTION)
          -AccessFlags = 1 (0x00000001)
          -DescriptionSize = 40 (0x00000028)
          +PropTypeSet = <GUID_NULL (00000000-0000-0000-0000-000000000000), 0>
            +Set = GUID_NULL (00000000-0000-0000-0000-000000000000)
              -Data1 = 0 (0x00000000)
              -Data2 = 0 (0x0000)
              -Data3 = 0 (0x0000)
              -Data4[0] = 0 (0x00)
              -Data4[1] = 0 (0x00)
              -Data4[2] = 0 (0x00)
              -Data4[3] = 0 (0x00)
              -Data4[4] = 0 (0x00)
              -Data4[5] = 0 (0x00)
              -Data4[6] = 0 (0x00)
              -Data4[7] = 0 (0x00)
            -Id = 0 (0x00000000)
            -Flags = 0 (0x00000000)
          -MembersListCount = 0 (0x00000000)
          -Reserved = 0 (0x00000000)
        +Value
          -43072238195 (0x00000000074e3273)
    -KSPROPSETID_Synth
[Version]
CatalogFile=virtualMIDI.cat
Signature="$CHICAGO$"
Class=MEDIA
Provider=%TobiasErichsen%
ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}
DriverVer = 01/27/2008,6.1.0130.1

[SourceDisksNames]
222="virtualMIDI Driver Disk",,,

[SourceDisksFiles]
virtualmidi.sys=222


[Manufacturer]
%MfgName%=DeviceList,NTAMD64

[DeviceList]
%virtualMIDI.DeviceDesc%=vMIDI,,*virtualMIDI

[DeviceList.NTAMD64]
%virtualMIDI.DeviceDesc%=vMIDI,,*virtualMIDI

[DestinationDirs]
vMIDI.CopyList=10,system32\drivers



;======================================================
; vMIDI
;======================================================
[vMIDI]
AlsoInstall=ks.registration(ks.inf),wdmaudio.registration(wdmaudio.inf)
CopyFiles=vMIDI.CopyList
AddReg=vMIDI.AddReg

[vMIDI.CopyList]
virtualmidi.sys

[vMIDI.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,vMIDI.I.Midi
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Wave%,vMIDI.I.Midi
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Wave%,vMIDI.I.Midi

[vMIDI.AddReg]
HKR,,AssociatedFilters,,"wdmaud,swmidi"
HKR,,Driver,,virtualmidi.sys

HKR,Drivers,SubClasses,,"midi"

HKR,Drivers\midi\wdmaud.drv,Driver,,wdmaud.drv

HKR,Drivers\midi\wdmaud.drv,Description,,%vMIDI.DeviceDesc%




;======================================================
; COMMON
;======================================================
[vMIDI.I.Wave]
AddReg=vMIDI.I.Midi.AddReg
[vMIDI.I.Midi.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%virtualMIDI.Midi.szPname%


;======================================================
; vMIDI
;======================================================
[vMIDI.NT]
Include=ks.inf,wdmaudio.inf
Needs=KS.Registration, WDMAUDIO.Registration
CopyFiles=vMIDI.CopyList
AddReg=vMIDI.AddReg


[vMIDI.NT.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Midi%,vMIDI.I.Wave
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Midi%,vMIDI.I.Wave
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Midi%,vMIDI.I.Wave

[vMIDI.NT.Services]
include=wdmaudio.inf
needs=wdmaudio.registration.services
AddService=virtualMIDI,2,vMIDI_Service_Inst

[vMIDI_Service_Inst]
DisplayName=%virtualMIDI.SvcDesc%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%10%\system32\drivers\virtualmidi.sys

;======================================================
; COMMON
;======================================================
[Strings]
TobiasErichsen="Tobias Erichsen"
MfgName="Tobias Erichsen"
virtualMIDI.DeviceDesc="virtualMIDI - virtual MIDI port"

virtualMIDI.Midi.szPname="virtualMIDI - virtual MIDI port"

Proxy.CLSID="{17CCA71B-ECD7-11D0-B908-00A0C9223196}"
KSCATEGORY_AUDIO="{6994AD04-93EF-11D0-A3CC-00A0C9223196}"
KSCATEGORY_RENDER="{65E8773E-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_CAPTURE="{65E8773D-8F56-11D0-A3B9-00A0C9223196}"

KSNAME_Midi="Midi"

virtualMIDI.SvcDesc="virtualMIDI - virtual MIDI port SvcDesc"

MediaCategories="SYSTEM\CurrentControlSet\Control\MediaCategories"


Other related posts: