2 ReactOS Operating System
3 Port Class API / Port Factory
19 PORTCLASSAPI NTSTATUS NTAPI
25 ClassId can be one of the following:
26 CLSID_PortDMus -> IPortDMus (dmusicks.h) -- TODO
27 CLSID_PortMidi -> IPortMidi
28 CLSID_PortTopology -> IPortTopology
29 CLSID_PortWaveCyclic -> IPortWaveCyclic
30 CLSID_PortWavePci -> IPortWavePci
32 TODO: What about PortWavePciStream?
35 PPORT new_port
= NULL
;
36 NTSTATUS status
= STATUS_UNSUCCESSFUL
;
40 DPRINT("PcNewPort was supplied a NULL OutPort parameter\n");
41 return STATUS_INVALID_PARAMETER
;
44 if ( ( IsEqualGUIDAligned(ClassId
, &CLSID_PortMidi
) ) ||
45 ( IsEqualGUIDAligned(ClassId
, &CLSID_PortTopology
) ) ||
46 ( IsEqualGUIDAligned(ClassId
, &CLSID_PortWaveCyclic
) ) ||
47 ( IsEqualGUIDAligned(ClassId
, &CLSID_PortWavePci
) ) )
49 DPRINT("Calling KoCreateInstance\n");
50 /* Call KS.SYS's Kernel-mode COM function */
51 status
= KoCreateInstance(ClassId
, NULL
, CLSCTX_KERNEL_SERVER
, &IID_IPort
, (PVOID
*)&new_port
);
56 DPRINT("PcNewPort received a CLSID it does not deal with\n");
57 status
= STATUS_NOT_SUPPORTED
;
60 /* If an unsupported CLSID was handed to us, or the creation failed, we fail */
61 if ( status
!= STATUS_SUCCESS
)
66 /* Fill the caller's PPORT* to point to the new port */
69 DPRINT("PcNewPort succeeded\n");
71 return STATUS_SUCCESS
;