[CMIPCI]
[reactos.git] / reactos / drivers / wdm / audio / drivers / CMIDriver / adapter.cpp
index a3d884d..80c0b71 100644 (file)
@@ -1,5 +1,5 @@
 /*
-Copyright (c) 2006-2007 dogbert <dogber1@gmail.com>
+Copyright (c) 2006-2008 dogbert <dogber1@gmail.com>
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -26,111 +26,24 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 #define PUT_GUIDS_HERE
-#include <initguid.h>
+
 #include "adapter.hpp"
 
 #ifdef _MSC_VER
-//#pragma code_seg("PAGE") // GCC ignores pragma code_seg
+#pragma code_seg("PAGE")
 #endif
 
-const GUID KSNODETYPE_DAC = {0x507AE360L, 0xC554, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_ADC = {0x4D837FE0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_AGC = {0xE88C9BA0L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_LOUDNESS = {0x41887440L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_MUTE =     {0x02B223C0L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_TONE =     {0x7607E580L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_VOLUME =   {0x3A5ACC00L, 0xC557, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_PEAKMETER = {0xa085651e, 0x5f0d, 0x4b36, {0xa8, 0x69, 0xd1, 0x95, 0xd6, 0xab, 0x4b, 0x9e}};
-const GUID KSNODETYPE_MUX =       {0x2CEAF780, 0xC556, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_STEREO_WIDE = {0xA9E69800L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_CHORUS =      {0x20173F20L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_REVERB =      {0xEF0328E0L, 0xC558, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_SUPERMIX =    {0xE573ADC0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_SUM = {0xDA441A60L, 0xC556, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_SRC = {0x9DB7B9E0L, 0xC555, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_3D_EFFECTS = {0x55515860L, 0xC559, 0x11D0, {0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1}};
-const GUID KSNODETYPE_SPDIF_INTERFACE = {0x0605+0xDFF219E0, 0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
-const GUID KSNODETYPE_MICROPHONE      = {0x0201+0xDFF219E0,0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
-const GUID KSNODETYPE_CD_PLAYER       = {0x0703+0xDFF219E0,0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
-const GUID KSNODETYPE_LINE_CONNECTOR  = {0x0603+0xDFF219E0,0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
-const GUID KSNODETYPE_ANALOG_CONNECTOR = {0x601+0xDFF219E0,0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
-const GUID KSNODETYPE_SPEAKER         = {0x0301+0xDFF219E0,0xF70F, 0x11D0, {0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
-
-const GUID KSPROPTYPESETID_General             = {0x97E99BA0L, 0xBDEA, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
-const GUID KSPROPSETID_General = {0x1464EDA5L, 0x6A8F, 0x11D1, {0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
-const GUID KSPROPSETID_Audio = {0x45FFAAA0L, 0x6E1B, 0x11D0, {0xBC, 0xF2, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}};
-const GUID GUID_NULL ={0x00000000L, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
-const GUID KSCATEGORY_AUDIO    = {0x6994AD04, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
-
-
-const GUID KSDATAFORMAT_TYPE_AUDIO =             {0x73647561L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
-const GUID KSDATAFORMAT_SUBTYPE_PCM =            {0x00000001L, 0x0000, 0x0010,  {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
-const GUID KSDATAFORMAT_SPECIFIER_WAVEFORMATEX = {0x05589f81L, 0xc356, 0x11ce, {0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a}};
-const GUID KSDATAFORMAT_SPECIFIER_DSOUND       = {0x518590a2L, 0xa184, 0x11d0, {0x85, 0x22, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3}};
-const GUID KSDATAFORMAT_SUBTYPE_WAVEFORMATEX           = {0x00000000L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
-const GUID KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF = {0x00000092L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
-
-
-const GUID KSAUDFNAME_WAVE_VOLUME = {0x185FEDE5L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_WAVE_MUTE   = {0x185FEDE6L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_MIC_VOLUME  = {0x185FEDEDL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_MASTER_VOLUME = {0x185FEDE3L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_RECORDING_SOURCE = {0x185FEDEFL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_CD_VOLUME   = {0x185FEDE9L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_CD_IN_VOLUME = {0x185FEDF3L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_MIC_IN_VOLUME = {0x185FEDF5L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_MICROPHONE_BOOST = {0x2bc31d6aL, 0x96e3, 0x11d2, {0xac, 0x4c, 0x0, 0xc0, 0x4f, 0x8e, 0xfb, 0x68}};
-const GUID KSAUDFNAME_CD_MUTE = {0x185FEDEAL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_LINE_MUTE = {0x185FEDECL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_MIC_MUTE = {0x185FEDEEL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_AUX_MUTE = {0x185FEDFDL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_MASTER_MUTE = {0x185FEDE4L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_RECORDING_CONTROL = {0x185FEDFAL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_VOLUME_CONTROL = {0x185FEDF7L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_LINE_IN_VOLUME = {0x185FEDF4L, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-const GUID KSAUDFNAME_AUX_VOLUME = {0x185FEDFCL, 0x9905, 0x11D1, {0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3}};
-
-const GUID KSPROPSETID_CMI = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFF}};
-
-
-const GUID CMINAME_IEC_5V  = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF0}};
-const GUID CMINAME_IEC_OUT = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF1}};
-const GUID CMINAME_IEC_INVERSE = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF2}};
-const GUID CMINAME_IEC_MONITOR = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF3}};
-const GUID CMINAME_IEC_SELECT  = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF5}};
-const GUID CMINAME_XCHG_FB = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF6}};
-const GUID CMINAME_BASS2LINE = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF7}};
-const GUID CMINAME_CENTER2LINE = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF8}};
-const GUID CMINAME_IEC_COPYRIGHT = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF9}};
-const GUID CMINAME_IEC_POLVALID = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFA}};
-const GUID CMINAME_IEC_LOOP = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFB}};
-const GUID CMINAME_REAR2LINE = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFC}};
-const GUID CMINAME_CENTER2MIC = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xFD}};
-const GUID CMINAME_DAC = {0x2B81CDBB, 0xEE6C, 0x4ECC, {0x8A, 0xA5, 0x9A, 0x18, 0x8B, 0x02, 0x3D, 0xF4}};
-const GUID PRODUCT_CM8738 = {0x9db14e9a, 0x7be7, 0x480d, {0xa2, 0xfa, 0x32, 0x93, 0x24, 0x89, 0xde, 0x9c}};
-const GUID COMPONENT_CM8738 = {0x9db14e9a, 0x7be7, 0x480d, {0xa2, 0xfa, 0x32, 0x93, 0x24, 0x89, 0xde, 0x9d}};
-const GUID MANUFACTURER_CM8738 = {0x9db14e9a, 0x7be7, 0x480d, {0xa2, 0xfa, 0x32, 0x93, 0x24, 0x89, 0xde, 0x9e}};
-
-
-NTSTATUS InstallSubdevice(
-    PDEVICE_OBJECT DeviceObject,
-    PIRP Irp,
-    PWCHAR Name,
-    REFGUID PortClassId,
-    REFGUID MiniportClassId,
-    PFNCREATEINSTANCE MiniportCreate,
-    PUNKNOWN UnknownAdapter,
-    PRESOURCELIST ResourceList,
-    REFGUID PortInterfaceId,
-    PUNKNOWN* OutPortUnknown)
+static
+NTSTATUS
+InstallSubdevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PWCHAR Name, REFGUID PortClassId, REFGUID MiniportClassId, PFNCREATEINSTANCE MiniportCreate, PUNKNOWN UnknownAdapter, PRESOURCELIST ResourceList, REFGUID PortInterfaceId, PUNKNOWN* OutPortUnknown)
 {
+       PAGED_CODE();
+       DBGPRINT(("InstallSubdevice()"));
+
        NTSTATUS        ntStatus;
        PPORT           Port;
        PMINIPORT   MiniPort;
 
-    ////PAGED_CODE();
-    DBGPRINT(("InstallSubdevice()"));
-
        ntStatus = PcNewPort(&Port, PortClassId);
        if (NT_SUCCESS(ntStatus)) {
                if (MiniportCreate) {
@@ -165,25 +78,21 @@ NTSTATUS InstallSubdevice(
        return ntStatus;
 }
 
-
+static
 NTSTATUS
-ProcessResources(
-    PRESOURCELIST ResourceList,
-    PRESOURCELIST* UartResourceList)
+ProcessResources(PRESOURCELIST ResourceList, PRESOURCELIST* UartResourceList)
 {
-       NTSTATUS ntStatus;
-
-       ////PAGED_CODE();
-       ////ASSERT(ResourceList);
-       ////ASSERT(UartResourceList);
-       //DBGPRINT(("ProcessResources()"));
-       //DBGPRINT(("NumberOfPorts: %d, NumberOfInterrupts: %d, NumberOfDmas: %d", ResourceList->NumberOfPorts(), ResourceList->NumberOfInterrupts(), ResourceList->NumberOfDmas()));
-
+       PAGED_CODE();
+       ASSERT(ResourceList);
+       ASSERT(UartResourceList);
+       DBGPRINT(("ProcessResources()"));
+       DBGPRINT(("NumberOfPorts: %d, NumberOfInterrupts: %d, NumberOfDmas: %d", ResourceList->NumberOfPorts(), ResourceList->NumberOfInterrupts(), ResourceList->NumberOfDmas()));
 #ifdef UART
+       NTSTATUS ntStatus;
+
        (*UartResourceList) = NULL;
 #endif
 
-
        if ((ResourceList->NumberOfPorts() == 0) || (ResourceList->NumberOfPorts() > 2) || (ResourceList->NumberOfInterrupts() != 1) || (ResourceList->NumberOfDmas() != 0)) {
                DBGPRINT(("Unexpected configuration"));
                return STATUS_DEVICE_CONFIGURATION_ERROR;
@@ -201,17 +110,20 @@ ProcessResources(
 }
 
 
-NTSTATUS StartDevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PRESOURCELIST ResourceList)
+NTSTATUS
+NTAPI
+StartDevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PRESOURCELIST ResourceList)
 {
+       PAGED_CODE();
+       ASSERT(DeviceObject);
+       ASSERT(Irp);
+       ASSERT(ResourceList);
+       DBGPRINT(("StartDevice()"));
+
        NTSTATUS ntStatus;
        PPORT    pPort = 0;
+#ifdef UART
        ULONG*   MPUBase;
-#if 0
-       //PAGED_CODE();
-       //ASSERT(DeviceObject);
-       //ASSERT(Irp);
-       //ASSERT(ResourceList);
-       DBGPRINT(("StartDevice()"));
 #endif
 
        ntStatus = PcNewPort(&pPort,CLSID_PortWaveCyclic);
@@ -269,9 +181,7 @@ NTSTATUS StartDevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PRESOURCELIST Resour
        PUNKNOWN unknownTopology = NULL;
 
        // install the topology miniport.
-       ntStatus = InstallSubdevice( DeviceObject, Irp, (PWCHAR) L"Topology",
-               CLSID_PortTopology, CLSID_PortTopology, CreateMiniportTopologyCMI,
-               pCMIAdapter, NULL, GUID_NULL, &unknownTopology );
+       ntStatus = InstallSubdevice(DeviceObject, Irp, L"Topology", CLSID_PortTopology, CLSID_PortTopology, CreateMiniportTopologyCMI, pCMIAdapter, NULL, GUID_NULL, &unknownTopology);
        if (!NT_SUCCESS (ntStatus)) {
                DBGPRINT(("Topology miniport installation failed"));
                return ntStatus;
@@ -281,7 +191,7 @@ NTSTATUS StartDevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PRESOURCELIST Resour
        // install the UART miniport - execution order important
        ntStatus = STATUS_UNSUCCESSFUL;
        MPUBase = 0;
-       for ( UINT i=0; i < ResourceList->NumberOfPorts(); i++ ) {
+       for (int i=0;i<ResourceList->NumberOfPorts();i++) {
                if (ResourceList->FindTranslatedPort(i)->u.Port.Length == 2) {
                        MPUBase = (UInt32*)ResourceList->FindTranslatedPort(i)->u.Port.Start.QuadPart;
                }
@@ -289,10 +199,7 @@ NTSTATUS StartDevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PRESOURCELIST Resour
        if (MPUBase != 0) {
                ntStatus = pCMIAdapter->activateMPU(MPUBase);
                if (NT_SUCCESS(ntStatus)) {
-                       ntStatus = InstallSubdevice( DeviceObject, Irp, (PWCHAR) L"Uart",
-                               CLSID_PortDMus, CLSID_MiniportDriverDMusUART, NULL,
-                               pCMIAdapter->getInterruptSync(), UartResourceList,
-                               IID_IPortDMus, NULL );
+                       ntStatus = InstallSubdevice(DeviceObject, Irp, L"Uart", CLSID_PortDMus, CLSID_MiniportDriverDMusUART, NULL, pCMIAdapter->getInterruptSync(), UartResourceList, IID_IPortDMus, NULL);
                }
        }
        if (!NT_SUCCESS(ntStatus)) {
@@ -307,13 +214,9 @@ NTSTATUS StartDevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PRESOURCELIST Resour
 
        // install the wave miniport - the order matters here
 #ifdef WAVERT
-       ntStatus = InstallSubdevice(DeviceObject, Irp, (PWCHAR) L"Wave",
-               CLSID_PortWaveRT, CLSID_PortWaveRT, CreateMiniportWaveCMI,
-               pCMIAdapter, ResourceList, IID_IPortWaveRT, &unknownWave );
+       ntStatus = InstallSubdevice(DeviceObject, Irp, L"Wave", CLSID_PortWaveRT, CLSID_PortWaveRT, CreateMiniportWaveCMI, pCMIAdapter, ResourceList, IID_IPortWaveRT, &unknownWave);
 #else
-       ntStatus = InstallSubdevice(DeviceObject, Irp, (PWCHAR) L"Wave",
-               CLSID_PortWaveCyclic, CLSID_PortWaveCyclic, CreateMiniportWaveCMI,
-               pCMIAdapter, ResourceList, IID_IPortWaveCyclic, &unknownWave );
+       ntStatus = InstallSubdevice(DeviceObject, Irp, L"Wave", CLSID_PortWaveCyclic, CLSID_PortWaveCyclic, CreateMiniportWaveCMI, pCMIAdapter, ResourceList, IID_IPortWaveCyclic, &unknownWave);
 #endif
        if (!NT_SUCCESS(ntStatus)) {
                DBGPRINT(("Wave miniport installation failed"));
@@ -353,29 +256,24 @@ NTSTATUS StartDevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PRESOURCELIST Resour
        return ntStatus;
 }
 
-extern 
-"C"
-NTSTATUS
-NTAPI
-AddDevice(
-    PDRIVER_OBJECT DriverObject,
-    PDEVICE_OBJECT PhysicalDeviceObject)
+extern "C" NTSTATUS NTAPI AddDevice(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT PhysicalDeviceObject)
 {
-#if 0
-    //PAGED_CODE();
-    DBGPRINT(("AddDevice()"));
-#endif
+       PAGED_CODE();
+       DBGPRINT(("AddDevice()"));
 
-    return PcAddAdapterDevice(DriverObject, PhysicalDeviceObject, (PCPFNSTARTDEVICE)StartDevice, MAX_MINIPORTS, 0);
+       return PcAddAdapterDevice(DriverObject, PhysicalDeviceObject, StartDevice, MAX_MINIPORTS, 0);
 }
 
-bool CopyResourceDescriptor(PIO_RESOURCE_DESCRIPTOR pInResDescriptor, PIO_RESOURCE_DESCRIPTOR pOutResDescriptor)
+static
+bool
+CopyResourceDescriptor(PIO_RESOURCE_DESCRIPTOR pInResDescriptor, PIO_RESOURCE_DESCRIPTOR pOutResDescriptor)
 {
-#if 0
-       //PAGED_CODE();
-       //ASSERT(pInResDescriptor);
-       //ASSERT(pOutResDescriptor);
+       PAGED_CODE();
+       ASSERT(pInResDescriptor);
+       ASSERT(pOutResDescriptor);
        DBGPRINT(("CopyResourceDescriptor()"));
+
+#if 0
        RtlCopyMemory(pOutResDescriptor, pInResDescriptor, sizeof(IO_RESOURCE_DESCRIPTOR));
 #else
        pOutResDescriptor->Type             = pInResDescriptor->Type;
@@ -395,18 +293,14 @@ bool CopyResourceDescriptor(PIO_RESOURCE_DESCRIPTOR pInResDescriptor, PIO_RESOUR
                        pOutResDescriptor->u.Port.MaximumAddress = pInResDescriptor->u.Port.MaximumAddress;
                        pOutResDescriptor->u.Port.Length         = pInResDescriptor->u.Port.Length;
                        pOutResDescriptor->u.Port.Alignment          = pInResDescriptor->u.Port.Alignment;
-#if 0
                        DBGPRINT((" Port: min %08x.%08x max %08x.%08x, Length: %x, Option: %x", pOutResDescriptor->u.Port.MinimumAddress.HighPart, pOutResDescriptor->u.Port.MinimumAddress.LowPart,
                                                                                    pOutResDescriptor->u.Port.MaximumAddress.HighPart, pOutResDescriptor->u.Port.MaximumAddress.LowPart,
                                                                                    pOutResDescriptor->u.Port.Length, pOutResDescriptor->Option));
-#endif
                        break;
                case CmResourceTypeInterrupt:
                        pOutResDescriptor->u.Interrupt.MinimumVector = pInResDescriptor->u.Interrupt.MinimumVector;
                        pOutResDescriptor->u.Interrupt.MaximumVector = pInResDescriptor->u.Interrupt.MaximumVector;
-#if 0
                        DBGPRINT((" IRQ:  min %x max %x, Option: %d", pOutResDescriptor->u.Interrupt.MinimumVector, pOutResDescriptor->u.Interrupt.MaximumVector, pOutResDescriptor->Option));
-#endif
                        break;
                default:
                        return FALSE;
@@ -415,25 +309,19 @@ bool CopyResourceDescriptor(PIO_RESOURCE_DESCRIPTOR pInResDescriptor, PIO_RESOUR
 #endif
 }
 
-extern
-"C"
-NTSTATUS
-NTAPI
-AdapterDispatchPnp(
-    PDEVICE_OBJECT pDeviceObject,
-    PIRP pIrp)
+extern "C" NTSTATUS NTAPI AdapterDispatchPnp(PDEVICE_OBJECT pDeviceObject, PIRP pIrp)
 {
+       PAGED_CODE();
+       ASSERT(pDeviceObject);
+       ASSERT(pIrp);
+       DBGPRINT(("AdapterDispatchPnp()"));
+
        NTSTATUS                       ntStatus = STATUS_SUCCESS;
        ULONG                          resourceListSize;
        PIO_RESOURCE_REQUIREMENTS_LIST resourceList, list;
        PIO_RESOURCE_DESCRIPTOR        descriptor;
        PIO_STACK_LOCATION             pIrpStack = IoGetCurrentIrpStackLocation(pIrp);
 
-       ////PAGED_CODE();
-       ////ASSERT(pDeviceObject);
-       ////ASSERT(pIrp);
-       DBGPRINT(("AdapterDispatchPnp()"));
-
        if (pIrpStack->MinorFunction == IRP_MN_FILTER_RESOURCE_REQUIREMENTS) {
                DBGPRINT(("[AdapterDispatchPnp] - IRP_MN_FILTER_RESOURCE_REQUIREMENTS"));
 
@@ -460,10 +348,8 @@ AdapterDispatchPnp(
                resourceList->List[0].Count    = 0;
 
                // copy the resources which have already been assigned
-               for ( UINT i=0; i < list->List[0].Count; i++ ) {
-                       if (CopyResourceDescriptor( &list->List[0].Descriptors[i],
-                               &resourceList->List[0].Descriptors[resourceList->List[0].Count] ))
-                       {
+               for (unsigned int i=0;i<list->List[0].Count;i++) {
+                       if (CopyResourceDescriptor(&list->List[0].Descriptors[i], &resourceList->List[0].Descriptors[resourceList->List[0].Count])) {
                                resourceList->List[0].Count++;
                        }
                }
@@ -497,7 +383,7 @@ AdapterDispatchPnp(
                descriptor->u.Port.Length         = 1;
                descriptor->u.Port.Alignment      = 0x10;
 
-//             DBGPRINT(("number of resource list descriptors: %d", resourceList->List[0].Count));
+               DBGPRINT(("number of resource list descriptors: %d", resourceList->List[0].Count));
 
                pIrp->IoStatus.Information = (ULONG_PTR)resourceList;
 
@@ -511,55 +397,36 @@ AdapterDispatchPnp(
        return ntStatus;
 }
 
-extern 
-"C"
+extern "C"
 NTSTATUS
 NTAPI
-DriverEntry(
-    PDRIVER_OBJECT DriverObject,
-     PUNICODE_STRING RegistryPathName)
+DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPathName)
 {
-    NTSTATUS ntStatus;
-
-    DBGPRINT(("DriverEntry()"));
-
-
-    //bind the adapter driver to the portclass driver
-    ntStatus = PcInitializeAdapterDriver(DriverObject, RegistryPathName, AddDevice);
+       PAGED_CODE();
+       DBGPRINT(("DriverEntry()"));
 
+       NTSTATUS ntStatus;
 
+       //bind the adapter driver to the portclass driver
+       ntStatus = PcInitializeAdapterDriver(DriverObject, RegistryPathName, AddDevice);
 #ifdef UART
-    if(NT_SUCCESS(ntStatus)) {
-    DriverObject->MajorFunction[IRP_MJ_PNP] = AdapterDispatchPnp;
-    }
+       if(NT_SUCCESS(ntStatus)) {
+               DriverObject->MajorFunction[IRP_MJ_PNP] = AdapterDispatchPnp;
+       }
 #endif
 #ifdef WAVERT
-    if (!IoIsWdmVersionAvailable(6,0)) {
-    ntStatus = STATUS_UNSUCCESSFUL;
-    }
+       if (!IoIsWdmVersionAvailable(6,0)) {
+               ntStatus = STATUS_UNSUCCESSFUL;
+       }
 #endif
 
-    return ntStatus;
+       return ntStatus;
 }
 
-
 #ifdef _MSC_VER
-
 #pragma code_seg()
+#endif
 int __cdecl _purecall (void)
 {
-    return 0;
+       return 0;
 }
-
-#else
-
-extern "C" {
-void __cxa_pure_virtual()
-  {
-    // put error handling here
-
-    DbgBreakPoint();
-
-  }
-}
-#endif