[MMIXER]
[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 typedef MIXER_STATUS(*PMIXER_OPEN)(
41 IN LPCWSTR DevicePath,
42 OUT PHANDLE hDevice);
43
44 typedef MIXER_STATUS(*PMIXER_CLOSE)(
45 IN HANDLE hDevice);
46
47 typedef VOID (*PMIXER_EVENT)(
48 IN PVOID MixerEvent);
49
50
51 typedef struct
52 {
53 ULONG SizeOfStruct;
54 PVOID MixerContext;
55
56 PMIXER_ALLOC Alloc;
57 PMIXER_DEVICE_CONTROL Control;
58 PMIXER_FREE Free;
59 PMIXER_OPEN Open;
60 PMIXER_CLOSE Close;
61 }MIXER_CONTEXT, *PMIXER_CONTEXT;
62
63
64
65
66
67 MIXER_STATUS
68 MMixerInitialize(
69 IN PMIXER_CONTEXT MixerContext,
70 IN PMIXER_ENUM EnumFunction,
71 IN PVOID EnumContext);
72
73
74 ULONG
75 MMixerGetCount(
76 IN PMIXER_CONTEXT MixerContext);
77
78 MIXER_STATUS
79 MMixerGetCapabilities(
80 IN PMIXER_CONTEXT MixerContext,
81 IN ULONG MixerIndex,
82 OUT MIXERCAPSW MixerCaps);
83
84 MIXER_STATUS
85 MMixerOpen(
86 IN PMIXER_CONTEXT MixerContext,
87 IN PVOID MixerEvent,
88 IN PMIXER_EVENT MixerEventRoutine,
89 OUT PHANDLE MixerHandle);
90
91 MIXER_STATUS
92 MMixerGetLineInfo(
93 IN HANDLE MixerHandle,
94 IN ULONG Flags,
95 OUT LPMIXERLINEW MixerLine);
96
97 MIXER_STATUS
98 MMixerGetLineControls(
99 IN HANDLE MixerHandle,
100 IN ULONG Flags,
101 OUT LPMIXERLINECONTROLS MixerLineControls);
102
103 MIXER_STATUS
104 MMixerSetControlDetails(
105 IN HANDLE MixerHandle,
106 IN ULONG Flags,
107 OUT LPMIXERCONTROLDETAILS MixerControlDetails);
108
109 MIXER_STATUS
110 MMixerGetControlDetails(
111 IN HANDLE MixerHandle,
112 IN ULONG Flags,
113 OUT LPMIXERCONTROLDETAILS MixerControlDetails);
114
115 #endif