[wdmaudiodev] writing to a midi pin in user-mode

  • From: Ben Allison <benjamin.james.allison@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Fri, 5 Nov 2004 23:18:52 -0500

Hi,

I'm fairly new to kernel streaming.  I am trying to write code to
output midi to a midi device (in this case, the Microsoft GS Wavetable
Synth).

I've successfully queried all the devices, opened the filter to the
device, identified the midi pin, and  gotten a handle to the pin it
from KsCreatePin. (my KSDATAFORMAT after KSPIN_CONNECT has a subtype
of MIDI, not directmusic)

However, I can't seem to write to it.  I get the error "The supplied
user buffer is not valid for the requested operation".

I'm passing a KSSTREAM_HEADER with the following:
Size = 48
TypeSpecificFlags = 0
PresentationTime = Time=0 Numerator = 1 Denominator = 1
Duration = 0
FrameExtent = 36
DataUsed = 12
Data = (16 byte aligned pointer)
OptionsFlag = 0

my data is just a simple midi message
KSDATAFORMAT_MUSIC header:
TimeStampMs = 0
Bytes = 3
(data following) = 4 bytes, 0x00404090 (note on, note 64, velocity 64,
0 padding)

I'm passing in an OVERLAPPED for getting signalled later.

What am I doing wrong?  Why is DeviceIoControl rejecting my buffer?

-Ben Allison
******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.de/

Other related posts: