- Implement IPortTopology::NewRegistryKey, IPortWavePci::NewRegistryKey
authorJohannes Anderwald <johannes.anderwald@reactos.org>
Mon, 12 Jan 2009 15:20:45 +0000 (15:20 +0000)
committerJohannes Anderwald <johannes.anderwald@reactos.org>
Mon, 12 Jan 2009 15:20:45 +0000 (15:20 +0000)
- Implement PcRegisterPhysicalConnection, PcRegisterPhysicalConnectionFromExternal, PcRegisterPhysicalConnectionToExternal

svn path=/trunk/; revision=38722

reactos/drivers/wdm/audio/backpln/portcls/adapter.c
reactos/drivers/wdm/audio/backpln/portcls/port_topology.c
reactos/drivers/wdm/audio/backpln/portcls/port_wavepci.c
reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild
reactos/drivers/wdm/audio/backpln/portcls/private.h
reactos/drivers/wdm/audio/backpln/portcls/stubs.c

index e0b1686..e53a56e 100644 (file)
@@ -168,7 +168,8 @@ PcAddAdapterDevice(
     RtlZeroMemory(portcls_ext, sizeof(PCExtension));
     portcls_ext->PhysicalDeviceObject = PhysicalDeviceObject;
     portcls_ext->StartDevice = StartDevice;
-       InitializeListHead(&portcls_ext->SubDeviceList);
+    InitializeListHead(&portcls_ext->SubDeviceList);
+    InitializeListHead(&portcls_ext->PhysicalConnectionList);
 
     status = KsAllocateDeviceHeader(&portcls_ext->KsDeviceHeader, 0, NULL);
     if (!NT_SUCCESS(status))
index 49ca49d..45edf1c 100644 (file)
@@ -187,7 +187,15 @@ IPortTopology_fnNewRegistryKey(
         DPRINT("IPortWaveCyclic_fnNewRegistryKey called w/o initialized\n");
         return STATUS_UNSUCCESSFUL;
     }
-    return STATUS_UNSUCCESSFUL;
+    return PcNewRegistryKey(OutRegistryKey, 
+                            OuterUnknown,
+                            RegistryKeyType,
+                            DesiredAccess,
+                            This->pDeviceObject,
+                            NULL,//FIXME
+                            ObjectAttributes,
+                            CreateOptions,
+                            Disposition);
 }
 
 static IPortTopologyVtbl vt_IPortTopology =
index 5ad694a..1ad3a4e 100644 (file)
@@ -247,7 +247,23 @@ IPortWavePci_fnNewRegistryKey(
     IN ULONG  CreateOptions  OPTIONAL,
     OUT PULONG  Disposition  OPTIONAL)
 {
-    return STATUS_UNSUCCESSFUL;
+    IPortWavePciImpl * This = (IPortWavePciImpl*)iface;
+
+    if (!This->bInitialized)
+    {
+        DPRINT("IPortWaveCyclic_fnNewRegistryKey called w/o initiazed\n");
+        return STATUS_UNSUCCESSFUL;
+    }
+
+    return PcNewRegistryKey(OutRegistryKey, 
+                            OuterUnknown,
+                            RegistryKeyType,
+                            DesiredAccess,
+                            This->pDeviceObject,
+                            NULL,//FIXME
+                            ObjectAttributes,
+                            CreateOptions,
+                            Disposition);
 }
 
 NTSTATUS
index c5ffa08..184a0c5 100644 (file)
@@ -11,6 +11,7 @@
        <library>rtl</library>
        <library>hal</library>
        <file>api.c</file>
+       <file>connection.c</file>
        <file>dll.c</file>
        <file>dma_slave.c</file>
        <file>drm_port.c</file>
index 0787438..17afe30 100644 (file)
@@ -15,6 +15,7 @@
 #include <dmusicks.h>
 
 #include "interfaces.h"
+#include <ks.h>
 
 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
 #define TAG_PORTCLASS TAG('P', 'C', 'L', 'S')
@@ -86,6 +87,17 @@ typedef struct
     KSOBJECT_HEADER ObjectHeader;
 }SUBDEVICE_ENTRY;
 
+typedef struct
+{
+    LIST_ENTRY Entry;
+    ISubdevice * FromSubDevice;
+    LPWSTR FromUnicodeString;
+    ULONG FromPin;
+    ISubdevice * ToSubDevice;
+    LPWSTR ToUnicodeString;
+    ULONG ToPin;
+}PHYSICAL_CONNECTION;
+
 
 typedef struct
 {
@@ -96,6 +108,7 @@ typedef struct
 
     IResourceList* resources;
     LIST_ENTRY SubDeviceList;
+    LIST_ENTRY PhysicalConnectionList;
 
 } PCExtension;
 
index 480a9d6..775ded6 100644 (file)
@@ -51,60 +51,3 @@ PcCompletePendingPropertyRequest(
     return STATUS_UNSUCCESSFUL;
 }
 
-/* ===============================================================
-    Physical Connections
-*/
-
-/*
- * @unimplemented
- */
-NTSTATUS NTAPI
-PcRegisterPhysicalConnection(
-    IN  PDEVICE_OBJECT DeviceObject,
-    IN  PUNKNOWN FromUnknown,
-    IN  ULONG FromPin,
-    IN  PUNKNOWN ToUnknown,
-    IN  ULONG ToPin)
-{
-    UNIMPLEMENTED;
-    return STATUS_UNSUCCESSFUL;
-}
-
-/*
- * @unimplemented
- */
-NTSTATUS NTAPI
-PcRegisterPhysicalConnectionFromExternal(
-    IN  PDEVICE_OBJECT DeviceObject,
-    IN  PUNICODE_STRING FromString,
-    IN  ULONG FromPin,
-    IN  PUNKNOWN ToUnknown,
-    IN  ULONG ToPin)
-{
-    UNIMPLEMENTED;
-    return STATUS_UNSUCCESSFUL;
-}
-
-/*
- * @unimplemented
- */
-NTSTATUS NTAPI
-PcRegisterPhysicalConnectionToExternal(
-    IN  PDEVICE_OBJECT DeviceObject,
-    IN  PUNKNOWN FromUnknown,
-    IN  ULONG FromPin,
-    IN  PUNICODE_STRING ToString,
-    IN  ULONG ToPin)
-{
-    UNIMPLEMENTED;
-    return STATUS_UNSUCCESSFUL;
-}
-
-
-/* ===============================================================
-    Misc
-*/
-
-/*
- * @unimplemented
- */