merge trunk head (37902)
[reactos.git] / reactos / drivers / wdm / audio / backpln / portcls / miniport.c
1 /*
2 ReactOS Operating System
3
4 Port Class API
5 IMiniPortMidi Implementation
6
7 by Andrew Greenwood
8
9 REFERENCE:
10 http://www.osronline.com/ddkx/stream/audmp-routines_64vn.htm
11 */
12
13 #include "private.h"
14
15 const GUID CLSID_MiniportDriverDMusUART;
16 const GUID CLSID_MiniportDriverUart;
17 const GUID CLSID_MiniportDriverDMusUARTCapture;
18 const GUID CLSID_MiniportDriverFmSynth;
19 const GUID CLSID_MiniportDriverFmSynthWithVol;
20
21 /*
22 * @implemented
23 */
24 NTSTATUS NTAPI
25 PcNewMiniport(
26 OUT PMINIPORT* OutMiniport,
27 IN REFCLSID ClassId)
28 {
29 NTSTATUS Status = STATUS_INVALID_PARAMETER;
30
31 if (!OutMiniport)
32 {
33 DPRINT("PcNewMiniport was supplied a NULL OutPort parameter\n");
34 return STATUS_INVALID_PARAMETER;
35 }
36
37 if (IsEqualGUIDAligned(ClassId, &CLSID_MiniportDriverDMusUART) ||
38 IsEqualGUIDAligned(ClassId, &CLSID_MiniportDriverUart) ||
39 IsEqualGUIDAligned(ClassId, &CLSID_MiniportDriverDMusUARTCapture))
40 {
41 Status = NewMiniportDMusUART(OutMiniport, ClassId);
42 }
43 else if (IsEqualGUIDAligned(ClassId, &CLSID_MiniportDriverFmSynth) ||
44 IsEqualGUIDAligned(ClassId, &CLSID_MiniportDriverFmSynthWithVol))
45 {
46 Status = NewMiniportFmSynth(OutMiniport, ClassId);
47 }
48 else
49 {
50 Status = STATUS_INVALID_PARAMETER;
51 }
52
53 DPRINT("PcNewMiniport Status %x\n", Status);
54 return Status;
55 }
56