1 |
/***************************************************************************
|
2 |
* *
|
3 |
* DMusBuff.h -- This module defines the buffer format for DirectMusic *
|
4 |
* Shared file between user mode and kernel mode components *
|
5 |
* *
|
6 |
* Copyright (c) 1998, Microsoft Corp. All rights reserved. *
|
7 |
* *
|
8 |
***************************************************************************/
|
9 |
|
10 |
#ifndef _DMusBuff_
|
11 |
#define _DMusBuff_
|
12 |
|
13 |
/* Format of DirectMusic events in a buffer
|
14 |
*
|
15 |
* A buffer contains 1 or more events, each with the following header.
|
16 |
* Immediately following the header is the event data. The header+data
|
17 |
* size is rounded to the nearest quadword (8 bytes).
|
18 |
*/
|
19 |
|
20 |
#include <pshpack4.h> /* Do not pad at end - that's where the data is */
|
21 |
typedef struct _DMUS_EVENTHEADER *LPDMUS_EVENTHEADER;
|
22 |
typedef struct _DMUS_EVENTHEADER
|
23 |
{
|
24 |
DWORD cbEvent; /* Unrounded bytes in event */
|
25 |
DWORD dwChannelGroup; /* Channel group of event */
|
26 |
REFERENCE_TIME rtDelta; /* Delta from start time of entire buffer */
|
27 |
DWORD dwFlags; /* Flags DMUS_EVENT_xxx */
|
28 |
} DMUS_EVENTHEADER;
|
29 |
#include <poppack.h>
|
30 |
|
31 |
#define DMUS_EVENT_STRUCTURED 0x00000001 /* Unstructured data (SysEx, etc.) */
|
32 |
|
33 |
/* The number of bytes to allocate for an event with 'cb' data bytes.
|
34 |
*/
|
35 |
#define QWORD_ALIGN(x) (((x) + 7) & ~7)
|
36 |
#define DMUS_EVENT_SIZE(cb) QWORD_ALIGN(sizeof(DMUS_EVENTHEADER) + cb)
|
37 |
|
38 |
|
39 |
#endif /* _DMusBuff_ */
|
40 |
|
41 |
|