- Add types for bda driver
authorJohannes Anderwald <johannes.anderwald@reactos.org>
Thu, 20 Aug 2009 11:39:54 +0000 (11:39 +0000)
committerJohannes Anderwald <johannes.anderwald@reactos.org>
Thu, 20 Aug 2009 11:39:54 +0000 (11:39 +0000)
svn path=/trunk/; revision=42797

reactos/include/dxsdk/bdamedia.h
reactos/include/psdk/ks.h

index e618112..ed8dc90 100644 (file)
@@ -14,4 +14,165 @@ typedef struct _KSP_BDA_NODE_PIN {
     ULONG ulOutputPinId;
 } KSP_BDA_NODE_PIN, *PKSP_BDA_NODE_PIN;
 
+typedef struct _KSM_BDA_PIN
+{
+    KSMETHOD    Method;
+    union
+    {
+        ULONG       PinId;
+        ULONG       PinType;
+    };
+    ULONG       Reserved;
+} KSM_BDA_PIN, * PKSM_BDA_PIN;
+
+typedef struct _KSM_BDA_PIN_PAIR
+{
+    KSMETHOD    Method;
+    union
+    {
+        ULONG       InputPinId;
+        ULONG       InputPinType;
+    };
+    union
+    {
+        ULONG       OutputPinId;
+        ULONG       OutputPinType;
+    };
+} KSM_BDA_PIN_PAIR, * PKSM_BDA_PIN_PAIR;
+
+/* ------------------------------------------------------------
+    BDA Topology Property Set {A14EE835-0A23-11d3-9CC7-00C04F7971E0}
+*/
+
+#define STATIC_KSPROPSETID_BdaTopology \
+    0xa14ee835, 0x0a23, 0x11d3, 0x9c, 0xc7, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0
+DEFINE_GUIDSTRUCT("A14EE835-0A23-11d3-9CC7-00C04F7971E0", KSPROPSETID_BdaTopology);
+#define KSPROPSETID_BdaTopology DEFINE_GUIDNAMED(KSPROPSETID_BdaTopology)
+
+typedef enum {
+    KSPROPERTY_BDA_NODE_TYPES,
+    KSPROPERTY_BDA_PIN_TYPES,
+    KSPROPERTY_BDA_TEMPLATE_CONNECTIONS,
+    KSPROPERTY_BDA_NODE_METHODS,
+    KSPROPERTY_BDA_NODE_PROPERTIES,
+    KSPROPERTY_BDA_NODE_EVENTS,
+    KSPROPERTY_BDA_CONTROLLING_PIN_ID,
+    KSPROPERTY_BDA_NODE_DESCRIPTORS
+ }KSPROPERTY_BDA_TOPOLOGY;
+
+#define DEFINE_KSPROPERTY_ITEM_BDA_NODE_TYPES(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_BDA_NODE_TYPES,\
+        (GetHandler),\
+        sizeof(KSPROPERTY),\
+        0,\
+        FALSE,\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_BDA_PIN_TYPES(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_BDA_PIN_TYPES,\
+        (GetHandler),\
+        sizeof(KSPROPERTY),\
+        0,\
+        FALSE,\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_BDA_TEMPLATE_CONNECTIONS(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_BDA_TEMPLATE_CONNECTIONS,\
+        (GetHandler),\
+        sizeof(KSPROPERTY),\
+        sizeof( BDA_TEMPLATE_CONNECTION),\
+        FALSE,\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_BDA_NODE_METHODS(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_BDA_NODE_METHODS,\
+        (GetHandler),\
+        sizeof(KSP_NODE),\
+        0,\
+        FALSE,\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_BDA_NODE_PROPERTIES(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_BDA_NODE_PROPERTIES,\
+        (GetHandler),\
+        sizeof(KSP_NODE),\
+        0,\
+        FALSE,\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_BDA_NODE_EVENTS(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_BDA_NODE_EVENTS,\
+        (GetHandler),\
+        sizeof(KSP_NODE),\
+        0,\
+        FALSE,\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_BDA_CONTROLLING_PIN_ID(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_BDA_CONTROLLING_PIN_ID,\
+        (GetHandler),\
+        sizeof(KSP_BDA_NODE_PIN),\
+        sizeof( ULONG),\
+        FALSE,\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_BDA_NODE_DESCRIPTORS(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_BDA_NODE_DESCRIPTORS,\
+        (GetHandler),\
+        sizeof(KSPROPERTY),\
+        0,\
+        FALSE,\
+        NULL, 0, NULL, NULL, 0)
+
+/* ------------------------------------------------------------
+    BDA Device Configuration Method Set {71985F45-1CA1-11d3-9CC8-00C04F7971E0}
+*/
+
+#define STATIC_KSMETHODSETID_BdaDeviceConfiguration \
+    0x71985f45, 0x1ca1, 0x11d3, 0x9c, 0xc8, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0
+DEFINE_GUIDSTRUCT("71985F45-1CA1-11d3-9CC8-00C04F7971E0", KSMETHODSETID_BdaDeviceConfiguration);
+#define KSMETHODSETID_BdaDeviceConfiguration DEFINE_GUIDNAMED(KSMETHODSETID_BdaDeviceConfiguration)
+
+typedef enum {
+    KSMETHOD_BDA_CREATE_PIN_FACTORY = 0,
+    KSMETHOD_BDA_DELETE_PIN_FACTORY,
+    KSMETHOD_BDA_CREATE_TOPOLOGY
+} KSMETHOD_BDA_DEVICE_CONFIGURATION;
+
+#define DEFINE_KSMETHOD_ITEM_BDA_CREATE_PIN_FACTORY(MethodHandler, SupportHandler)\
+    DEFINE_KSMETHOD_ITEM(\
+        KSMETHOD_BDA_CREATE_PIN_FACTORY,\
+        KSMETHOD_TYPE_READ,\
+        (MethodHandler),\
+        sizeof(KSM_BDA_PIN),\
+        sizeof(ULONG),\
+        SupportHandler)
+
+#define DEFINE_KSMETHOD_ITEM_BDA_DELETE_PIN_FACTORY(MethodHandler, SupportHandler)\
+    DEFINE_KSMETHOD_ITEM(\
+        KSMETHOD_BDA_DELETE_PIN_FACTORY,\
+        KSMETHOD_TYPE_NONE,\
+        (MethodHandler),\
+        sizeof(KSM_BDA_PIN),\
+        0,\
+        SupportHandler)
+
+#define DEFINE_KSMETHOD_ITEM_BDA_CREATE_TOPOLOGY(MethodHandler, SupportHandler)\
+    DEFINE_KSMETHOD_ITEM(\
+        KSMETHOD_BDA_CREATE_TOPOLOGY,\
+        KSMETHOD_TYPE_WRITE,\
+        (MethodHandler),\
+        sizeof(KSM_BDA_PIN_PAIR),\
+        0,\
+        SupportHandler)
+
+
 #endif
index 9ca8764..0124aca 100644 (file)
@@ -1808,6 +1808,30 @@ typedef struct
     ULONG                   Flags;
 } KSMETHOD_ITEM, *PKSMETHOD_ITEM;
 
+#ifndef _MSC_VER
+
+#define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\
+                             MethodHandler,\
+                             MinMethod, MinData, SupportHandler)\
+{\
+    MethodId, {(PFNKSHANDLER)MethodHandler}, MinMethod, MinData,\
+    SupportHandler, Flags\
+}
+
+#else
+
+#define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\
+                             MethodHandler,\
+                             MinMethod, MinData, SupportHandler)\
+{\
+    MethodId, (PFNKSHANDLER)MethodHandler, MinMethod, MinData,\
+    SupportHandler, Flags\
+}
+
+
+
+#endif
+
 
 typedef struct
 {
@@ -1818,6 +1842,12 @@ typedef struct
     };
 } KSFASTMETHOD_ITEM, *PKSFASTMETHOD_ITEM;
 
+#define DEFINE_KSFASTMETHOD_ITEM(MethodId, MethodHandler)\
+{\
+    MethodId, (PFNKSFASTHANDLER)MethodHandler\
+}
+
+       
 typedef struct
 {
     const GUID*             Set;
@@ -1827,6 +1857,20 @@ typedef struct
     const KSFASTMETHOD_ITEM*FastIoTable;
 } KSMETHOD_SET, *PKSMETHOD_SET;
 
+
+#define DEFINE_KSMETHOD_SET(Set,\
+                            MethodsCount,\
+                            MethodItem,\
+                            FastIoCount,\
+                            FastIoTable)\
+{\
+    Set,\
+    MethodsCount,\
+    MethodItem,\
+    FastIoCount,\
+    FastIoTable\
+}
+
 #endif
 /* ===============================================================
     Nodes