6557b67f6ea1ba500ce72b171f006ede036005c3
[reactos.git] / reactos / lib / drivers / sound / mmixer / mmixer.h
1 #ifndef MIXER_H__
2 #define MIXER_H__
3
4 typedef enum
5 {
6 MM_STATUS_SUCCESS = 0,
7 MM_STATUS_NOTINITIALIZED,
8 MM_STATUS_NOT_IMPLEMENTED,
9 MM_STATUS_NO_MORE_DEVICES,
10 MM_STATUS_MORE_ENTRIES,
11 MM_STATUS_INVALID_PARAMETER,
12 MM_STATUS_UNSUCCESSFUL,
13 MM_STATUS_NO_MEMORY
14
15
16 }MIXER_STATUS;
17
18
19 typedef PVOID (*PMIXER_ALLOC)(
20 IN ULONG NumberOfBytes);
21
22 typedef VOID (*PMIXER_FREE)(
23 IN PVOID Block);
24
25 typedef MIXER_STATUS (*PMIXER_ENUM)(
26 IN PVOID EnumContext,
27 IN ULONG DeviceIndex,
28 OUT LPWSTR * DeviceName,
29 OUT PHANDLE OutHandle);
30
31 typedef MIXER_STATUS(*PMIXER_DEVICE_CONTROL)(
32 IN HANDLE hMixer,
33 IN ULONG dwIoControlCode,
34 IN PVOID lpInBuffer,
35 IN ULONG nInBufferSize,
36 OUT PVOID lpOutBuffer,
37 ULONG nOutBufferSize,
38 PULONG lpBytesReturned);
39
40
41
42 typedef VOID (*PMIXER_EVENT)(
43 IN PVOID MixerEvent);
44
45
46 typedef struct
47 {
48 ULONG SizeOfStruct;
49 PVOID MixerContext;
50
51 PMIXER_ALLOC Alloc;
52 PMIXER_DEVICE_CONTROL Control;
53 PMIXER_FREE Free;
54 }MIXER_CONTEXT, *PMIXER_CONTEXT;
55
56
57
58
59
60 MIXER_STATUS
61 MMixerInitialize(
62 IN PMIXER_CONTEXT MixerContext,
63 IN PMIXER_ENUM EnumFunction,
64 IN PVOID EnumContext);
65
66
67 ULONG
68 MMixerGetCount(
69 IN PMIXER_CONTEXT MixerContext);
70
71 MIXER_STATUS
72 MMixerGetCapabilities(
73 IN PMIXER_CONTEXT MixerContext,
74 IN ULONG MixerIndex,
75 OUT MIXERCAPSW MixerCaps);
76
77 MIXER_STATUS
78 MMixerOpen(
79 IN PMIXER_CONTEXT MixerContext,
80 IN PVOID MixerEvent,
81 IN PMIXER_EVENT MixerEventRoutine,
82 OUT PHANDLE MixerHandle);
83
84 MIXER_STATUS
85 MMixerGetLineInfo(
86 IN HANDLE MixerHandle,
87 IN ULONG Flags,
88 OUT LPMIXERLINEW MixerLine);
89
90 MIXER_STATUS
91 MMixerGetLineControls(
92 IN HANDLE MixerHandle,
93 IN ULONG Flags,
94 OUT LPMIXERLINECONTROLS MixerLineControls);
95
96 MIXER_STATUS
97 MMixerSetControlDetails(
98 IN HANDLE MixerHandle,
99 IN ULONG Flags,
100 OUT LPMIXERCONTROLDETAILS MixerControlDetails);
101
102 MIXER_STATUS
103 MMixerGetControlDetails(
104 IN HANDLE MixerHandle,
105 IN ULONG Flags,
106 OUT LPMIXERCONTROLDETAILS MixerControlDetails);
107
108 #endif