ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dmusicks.h
Go to the documentation of this file.
00001 #ifndef _DMUSICKS_
00002 #define _DMUSICKS_
00003 
00004 #include <dmusprop.h>
00005 
00006 #define DONT_HOLD_FOR_SEQUENCING 0x8000000000000000
00007 
00008 #ifndef REFERENCE_TIME
00009 typedef LONGLONG REFERENCE_TIME;
00010 #endif
00011 
00012 typedef struct _DMUS_KERNEL_EVENT {
00013   BYTE bReserved;
00014   BYTE cbStruct;
00015   USHORT cbEvent;
00016   USHORT usChannelGroup;
00017   USHORT usFlags;
00018   REFERENCE_TIME ullPresTime100ns;
00019   ULONGLONG ullBytePosition;
00020   struct _DMUS_KERNEL_EVENT *pNextEvt;
00021   union {
00022     BYTE abData[sizeof(PBYTE)];
00023     PBYTE pbData;
00024     struct _DMUS_KERNEL_EVENT *pPackageEvt;
00025   } uData;
00026 } DMUS_KERNEL_EVENT, *PDMUS_KERNEL_EVENT;
00027 
00028 typedef enum {
00029   DMUS_STREAM_MIDI_INVALID = -1,
00030   DMUS_STREAM_MIDI_RENDER = 0,
00031   DMUS_STREAM_MIDI_CAPTURE,
00032   DMUS_STREAM_WAVE_SINK
00033 } DMUS_STREAM_TYPE;
00034 
00035 DEFINE_GUID(CLSID_MiniportDriverDMusUART,        0xd3f0ce1c, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1);
00036 DEFINE_GUID(CLSID_MiniportDriverDMusUARTCapture, 0xD3F0CE1D, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1);
00037 
00038 /* ===============================================================
00039     IMasterClock Interface
00040 */
00041 
00042 #undef INTERFACE
00043 #define INTERFACE IMasterClock
00044 
00045 DECLARE_INTERFACE_(IMasterClock,IUnknown) {
00046   DEFINE_ABSTRACT_UNKNOWN()
00047 
00048   STDMETHOD_(NTSTATUS,GetTime)( THIS_
00049     _Out_ REFERENCE_TIME *pTime
00050   ) PURE;
00051 };
00052 
00053 typedef IMasterClock *PMASTERCLOCK;
00054 
00055 #define IMP_IMasterClock             \
00056   STDMETHODIMP_(NTSTATUS) GetTime(   \
00057     _Out_ REFERENCE_TIME *pTime      \
00058   )
00059 
00060 /* ===============================================================
00061     IMXF Interface
00062 */
00063 
00064 #undef INTERFACE
00065 #define INTERFACE IMXF
00066 
00067 struct IMXF;
00068 typedef struct IMXF *PMXF;
00069 
00070 #define DEFINE_ABSTRACT_IMXF()                    \
00071   STDMETHOD_(NTSTATUS,SetState)(THIS_             \
00072     _In_ KSSTATE State                            \
00073   ) PURE;                                         \
00074   STDMETHOD_(NTSTATUS,PutMessage)(THIS_           \
00075     _In_ PDMUS_KERNEL_EVENT pDMKEvt               \
00076   ) PURE;                                         \
00077   STDMETHOD_(NTSTATUS,ConnectOutput)(THIS_        \
00078     _In_ PMXF sinkMXF                             \
00079   ) PURE;                                         \
00080   STDMETHOD_(NTSTATUS,DisconnectOutput)(THIS_     \
00081     _In_ PMXF sinkMXF                             \
00082   ) PURE;
00083 
00084 #define IMP_IMXF                                  \
00085   STDMETHODIMP_(NTSTATUS) SetState (              \
00086     _In_ KSSTATE State);                          \
00087   STDMETHODIMP_(NTSTATUS) PutMessage (THIS_       \
00088     _In_ PDMUS_KERNEL_EVENT pDMKEvt);             \
00089   STDMETHODIMP_(NTSTATUS) ConnectOutput (THIS_    \
00090     _In_ PMXF sinkMXF);                           \
00091   STDMETHODIMP_(NTSTATUS) DisconnectOutput (THIS_ \
00092     _In_ PMXF sinkMXF)
00093 
00094 DECLARE_INTERFACE_(IMXF,IUnknown) {
00095   DEFINE_ABSTRACT_UNKNOWN()
00096   DEFINE_ABSTRACT_IMXF()
00097 };
00098 
00099 /* ===============================================================
00100     IAllocatorMXF Interface
00101 */
00102 
00103 #undef INTERFACE
00104 #define INTERFACE IAllocatorMXF
00105 
00106 struct  IAllocatorMXF;
00107 typedef struct IAllocatorMXF *PAllocatorMXF;
00108 
00109 #define STATIC_IID_IAllocatorMXF\
00110   0xa5f0d62c, 0xb30f, 0x11d2, 0xb7, 0xa3, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1
00111 DEFINE_GUIDSTRUCT("a5f0d62c-b30f-11d2-b7a3-0060083316c1", IID_IAllocatorMXF);
00112 #define IID_IAllocatorMXF DEFINE_GUIDNAMED(IID_IAllocatorMXF)
00113 
00114 
00115 DECLARE_INTERFACE_(IAllocatorMXF, IMXF) {
00116   DEFINE_ABSTRACT_UNKNOWN()
00117 
00118   DEFINE_ABSTRACT_IMXF()
00119 
00120   STDMETHOD_(NTSTATUS,GetMessage)(THIS_
00121     _Out_ PDMUS_KERNEL_EVENT *ppDMKEvt
00122   ) PURE;
00123 
00124   STDMETHOD_(USHORT,GetBufferSize)(THIS) PURE;
00125 
00126   STDMETHOD_(NTSTATUS,GetBuffer)(THIS_
00127     _Outptr_result_bytebuffer_(_Inexpressible_(GetBufferSize bytes)) PBYTE *ppBuffer
00128   )PURE;
00129 
00130   STDMETHOD_(NTSTATUS,PutBuffer)(THIS_
00131     _In_ PBYTE pBuffer
00132   ) PURE;
00133 };
00134 
00135 #define IMP_IAllocatorMXF                                            \
00136   IMP_IMXF;                                                          \
00137   STDMETHODIMP_(NTSTATUS) GetMessage(                                \
00138     _Out_ PDMUS_KERNEL_EVENT *ppDMKEvt);                             \
00139                                                                      \
00140   STDMETHODIMP_(USHORT) GetBufferSize(void);                         \
00141                                                                      \
00142   STDMETHODIMP_(NTSTATUS) GetBuffer(                                 \
00143     _Outptr_result_bytebuffer_(_Inexpressible_(GetBufferSize bytes)) \
00144       PBYTE *ppBuffer);                                              \
00145                                                                      \
00146   STDMETHODIMP_(NTSTATUS) PutBuffer(                                 \
00147     _In_ PBYTE pBuffer)
00148 
00149 #undef INTERFACE
00150 #define INTERFACE IPortDMus
00151 
00152 DEFINE_GUID(IID_IPortDMus, 0xc096df9c, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
00153 DEFINE_GUID(CLSID_PortDMus, 0xb7902fe9, 0xfb0a, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
00154 
00155 DECLARE_INTERFACE_(IPortDMus, IPort) {
00156   DEFINE_ABSTRACT_UNKNOWN()
00157 
00158   DEFINE_ABSTRACT_PORT()
00159 
00160   STDMETHOD_(void,Notify)(THIS_
00161     _In_opt_ PSERVICEGROUP ServiceGroup
00162   ) PURE;
00163 
00164   STDMETHOD_(void,RegisterServiceGroup)(THIS_
00165     _In_ PSERVICEGROUP ServiceGroup
00166   ) PURE;
00167 };
00168 typedef IPortDMus *PPORTDMUS;
00169 
00170 #define IMP_IPortDMus                         \
00171   IMP_IPort;                                  \
00172   STDMETHODIMP_(void) Notify(                 \
00173     _In_opt_ PSERVICEGROUP ServiceGroup);  \
00174                                               \
00175   STDMETHODIMP_(void) RegisterServiceGroup(   \
00176     _In_ PSERVICEGROUP ServiceGroup)
00177 
00178 #undef INTERFACE
00179 #define INTERFACE IMiniportDMus
00180 
00181 DEFINE_GUID(IID_IMiniportDMus, 0xc096df9d, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
00182 
00183 DECLARE_INTERFACE_(IMiniportDMus, IMiniport) {
00184   DEFINE_ABSTRACT_UNKNOWN()
00185 
00186   DEFINE_ABSTRACT_MINIPORT()
00187 
00188   STDMETHOD_(NTSTATUS,Init)(THIS_
00189     _In_opt_ PUNKNOWN UnknownAdapter,
00190     _In_ PRESOURCELIST ResourceList,
00191     _In_ PPORTDMUS Port,
00192     _Out_ PSERVICEGROUP *ServiceGroup
00193   ) PURE;
00194 
00195   STDMETHOD_(void,Service)(THIS) PURE;
00196 
00197   STDMETHOD_(NTSTATUS,NewStream)(THIS_
00198     _Out_ PMXF *MXF,
00199     _In_opt_ PUNKNOWN OuterUnknown,
00200     _In_ POOL_TYPE PoolType,
00201     _In_ ULONG PinID,
00202     _In_ DMUS_STREAM_TYPE StreamType,
00203     _In_ PKSDATAFORMAT DataFormat,
00204     _Out_ PSERVICEGROUP *ServiceGroup,
00205     _In_ PAllocatorMXF AllocatorMXF,
00206     _In_ PMASTERCLOCK MasterClock,
00207     _Out_ PULONGLONG SchedulePreFetch
00208   ) PURE;
00209 };
00210 
00211 typedef IMiniportDMus *PMINIPORTDMUS;
00212 #undef INTERFACE
00213 
00214 #define IMP_IMiniportDMus               \
00215   IMP_IMiniport;                        \
00216   STDMETHODIMP_(NTSTATUS) Init(         \
00217     _In_opt_ PUNKNOWN UnknownAdapter,   \
00218     _In_ PRESOURCELIST ResourceList,    \
00219     _In_ PPORTDMUS Port,                \
00220     _Out_ PSERVICEGROUP *ServiceGroup); \
00221                                         \
00222   STDMETHODIMP_(void) Service(THIS);    \
00223                                         \
00224   STDMETHODIMP_(NTSTATUS) NewStream(    \
00225     _Out_ PMXF *MXF,                    \
00226     _In_opt_ PUNKNOWN OuterUnknown,     \
00227     _In_ POOL_TYPE PoolType,            \
00228     _In_ ULONG PinID,                   \
00229     _In_ DMUS_STREAM_TYPE StreamType,   \
00230     _In_ PKSDATAFORMAT DataFormat,      \
00231     _Out_ PSERVICEGROUP *ServiceGroup,  \
00232     _In_ PAllocatorMXF AllocatorMXF,    \
00233     _In_ PMASTERCLOCK MasterClock,      \
00234     _Out_ PULONGLONG SchedulePreFetch)
00235 
00236 
00237 #define STATIC_KSAUDFNAME_DMUSIC_MPU_OUT\
00238     0xA4DF0EB5, 0xBAC9, 0x11d2, {0xB7, 0xA8, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1}
00239 DEFINE_GUIDSTRUCT("A4DF0EB5-BAC9-11d2-B7A8-0060083316C1", KSAUDFNAME_DMUSIC_MPU_OUT);
00240 #define KSAUDFNAME_DMUSIC_MPU_OUT DEFINE_GUIDNAMED(KSAUDFNAME_DMUSIC_MPU_OUT)
00241 
00242 #define STATIC_KSAUDFNAME_DMUSIC_MPU_IN\
00243     0xB2EC0A7D, 0xBAC9, 0x11d2, {0xB7, 0xA8, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1}
00244 DEFINE_GUIDSTRUCT("B2EC0A7D-BAC9-11d2-B7A8-0060083316C1", KSAUDFNAME_DMUSIC_MPU_IN);
00245 #define KSAUDFNAME_DMUSIC_MPU_IN DEFINE_GUIDNAMED(KSAUDFNAME_DMUSIC_MPU_IN)
00246 
00247 #define STATIC_IID_IMXF\
00248     0xc096df9e, 0xfb09, 0x11d1, {0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1}
00249 DEFINE_GUIDSTRUCT("c096df9e-fb09-11d1-81b0-0060083316c1", IID_IMXF);
00250 #define IID_IMXF DEFINE_GUIDNAMED(IID_IMXF)
00251 
00252 #define DMUS_KEF_EVENT_COMPLETE     0x0000
00253 #define DMUS_KEF_EVENT_INCOMPLETE   0x0001
00254 #define DMUS_KEF_PACKAGE_EVENT      0x0002
00255 #define kBytePositionNone   (~(ULONGLONG)0)
00256 
00257 #define SHORT_EVT(evt)       ((evt)->cbEvent <= sizeof(PBYTE))
00258 #define PACKAGE_EVT(evt)     ((evt)->usFlags & DMUS_KEF_PACKAGE_EVENT)
00259 #define INCOMPLETE_EVT(evt)  ((evt)->usFlags & DMUS_KEF_EVENT_INCOMPLETE)
00260 #define COMPLETE_EVT(evt)    (((evt)->usFlags & DMUS_KEF_EVENT_INCOMPLETE) == 0)
00261 
00262 #define SET_INCOMPLETE_EVT(evt) ((evt)->usFlags |= DMUS_KEF_EVENT_INCOMPLETE)
00263 #define SET_COMPLETE_EVT(evt)   ((evt)->usFlags &= (~DMUS_KEF_EVENT_INCOMPLETE))
00264 #define SET_PACKAGE_EVT(evt)    ((evt)->usFlags |= DMUS_KEF_PACKAGE_EVENT)
00265 #define CLEAR_PACKAGE_EVT(evt)  ((evt)->usFlags &= (~DMUS_KEF_PACKAGE_EVENT))
00266 
00267 #endif /* _DMUSICKS_ */

Generated on Sat May 26 2012 04:28:34 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.