Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

114 lines
3.0 KiB

/*****************************************************************************
* porttbl.c - WDM port class driver port table
*****************************************************************************
* Copyright (c) 1996-2000 Microsoft Corporation. All rights reserved.
*
* 11/19/96 Dale Sather
*
*/
#define PUT_GUIDS_HERE
#include "private.h"
extern NTSTATUS CreateMiniportMidiUart(PUNKNOWN *Unknown, REFCLSID ClassID,
PUNKNOWN UnknownOuter OPTIONAL, POOL_TYPE PoolType);
extern NTSTATUS CreateMiniportDMusUART(PUNKNOWN *Unknown, REFCLSID ClassID,
PUNKNOWN UnknownOuter OPTIONAL, POOL_TYPE PoolType);
extern NTSTATUS CreateMiniportMidiFM( PUNKNOWN *Unknown, REFCLSID ClassID,
PUNKNOWN UnknownOuter OPTIONAL, POOL_TYPE PoolType);
// ==============================================================================
// MiniportDrivers
// Structures which map the miniport class ID to the create functions.
// ==============================================================================
PORT_DRIVER
MiniportDriverUart =
{
&CLSID_MiniportDriverUart,
CreateMiniportMidiUart
};
PORT_DRIVER
MiniportDriverDMusUART =
{
&CLSID_MiniportDriverDMusUART,
CreateMiniportDMusUART
};
PORT_DRIVER
MiniportDriverFmSynth =
{
&CLSID_MiniportDriverFmSynth,
CreateMiniportMidiFM
};
PORT_DRIVER
MiniportDriverFmSynthWithVol =
// Same as above, but for miniport that also features volume node.
// Sausage McMuffin With Egg.
{
&CLSID_MiniportDriverFmSynthWithVol,
CreateMiniportMidiFM
};
extern PORT_DRIVER PortDriverWaveCyclic;
extern PORT_DRIVER PortDriverWavePci;
extern PORT_DRIVER PortDriverTopology;
extern PORT_DRIVER PortDriverMidi;
extern PORT_DRIVER PortDriverDMus;
PPORT_DRIVER PortDriverTable[] =
{
&PortDriverWaveCyclic,
&PortDriverWavePci,
&PortDriverTopology,
&PortDriverMidi,
&PortDriverDMus,
&MiniportDriverUart,
&MiniportDriverFmSynth,
&MiniportDriverFmSynthWithVol,
&MiniportDriverDMusUART
};
#pragma code_seg("PAGE")
/*****************************************************************************
* GetClassInfo()
*****************************************************************************
* Get information regarding a class.
* TODO: Eliminate this in favor of object servers.
*/
NTSTATUS
GetClassInfo
(
IN REFCLSID ClassId,
OUT PFNCREATEINSTANCE * Create
)
{
PAGED_CODE();
ASSERT(Create);
PPORT_DRIVER * portDriver = PortDriverTable;
for
(
ULONG count = SIZEOF_ARRAY(PortDriverTable);
count--;
portDriver++
)
{
if (IsEqualGUIDAligned(ClassId,*(*portDriver)->ClassId))
{
*Create = (*portDriver)->Create;
return STATUS_SUCCESS;
}
}
return STATUS_NOT_FOUND;
}
#pragma code_seg()