The IDirectMusicBuffer::PackStructured method inserts fixed-length data (typically a MIDI channel message), along with timing and routing information, into the buffer.
HRESULT PackStructured(
REFERENCE_TIME rt,
DWORD dwChannelGroup,
DWORD dwChannelMessage
);
If the method succeeds, the return value is S_OK.
If it fails, the method may return one of the following error values:
DMUS_E_INVALID_EVENT |
E_OUTOFMEMORY |
At least 32 bytes (the size of DMUS_EVENTHEADER plus dwChannelMessage) must be free in the buffer.
The rt parameter must contain the absolute time at which the data is to be sent to the port. To play a message "now," retrieve the time from the latency clock and use this as rt. See IDirectMusicPort::GetLatencyClock.
Messages stamped with the same time do not necessarily play in the same order in which they were placed in the buffer.
Windows NT/2000: Requires Windows 2000.
Windows 95/98: Requires Windows 95 or later. Available as a redistributable for Windows 95.
Header: Declared in dmusicc.h.