[PSDK]
[reactos.git] / reactos / include / psdk / ks.h
index c23f4ce..2290d7c 100644 (file)
@@ -336,22 +336,28 @@ DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000", KSMEDIUMSETID_Standard
     Clock Properties/Methods/Events
 */
 
-#define KSPROPSETID_Clock \
+#define STATIC_KSPROPSETID_Clock \
     0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
+DEFINE_GUIDSTRUCT("DF12A4C0-AC17-11CF-A5D6-28DB04C10000", KSPROPSETID_Clock);
+#define KSPROPSETID_Clock DEFINE_GUIDNAMED(KSPROPSETID_Clock)
 
 typedef enum
 {
     KSPROPERTY_CLOCK_TIME,
     KSPROPERTY_CLOCK_PHYSICALTIME,
-    KSPROPERTY_CORRELATEDTIME,
-    KSPROPERTY_CORRELATEDPHYSICALTIME,
+    KSPROPERTY_CLOCK_CORRELATEDTIME,
+    KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,
     KSPROPERTY_CLOCK_RESOLUTION,
     KSPROPERTY_CLOCK_STATE,
+#if defined(_NTDDK_)
     KSPROPERTY_CLOCK_FUNCTIONTABLE
+#endif // defined(_NTDDK_)
 } KSPROPERTY_CLOCK;
 
-#define KSEVENTSETID_Clock \
+#define STATIC_KSEVENTSETID_Clock \
     0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
+DEFINE_GUIDSTRUCT("364D8E20-62C7-11CF-A5D6-28DB04C10000", KSEVENTSETID_Clock);
+#define KSEVENTSETID_Clock DEFINE_GUIDNAMED(KSEVENTSETID_Clock)
 
 typedef enum
 {
@@ -718,8 +724,10 @@ typedef enum
     Properties/Methods/Events
 */
 
-#define KSPROPSETID_Stream \
+#define STATIC_KSPROPSETID_Stream\
     0x65aaba60L, 0x98ae, 0x11cf, 0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
+DEFINE_GUIDSTRUCT("65aaba60-98ae-11cf-a10d-0020afd156e4", KSPROPSETID_Stream);
+#define KSPROPSETID_Stream DEFINE_GUIDNAMED(KSPROPSETID_Stream)
 
 typedef enum
 {
@@ -736,6 +744,99 @@ typedef enum
     KSPROPERTY_STREAM_PIPE_ID
 } KSPROPERTY_STREAM;
 
+#define DEFINE_KSPROPERTY_ITEM_STREAM_ALLOCATOR(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_STREAM_ALLOCATOR,\
+        (GetHandler),\
+        sizeof(KSPROPERTY),\
+        sizeof(HANDLE),\
+        (SetHandler),\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_STREAM_QUALITY(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_STREAM_QUALITY,\
+        (Handler),\
+        sizeof(KSPROPERTY),\
+        sizeof(KSQUALITY_MANAGER),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_STREAM_DEGRADATION(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_STREAM_DEGRADATION,\
+        (GetHandler),\
+        sizeof(KSPROPERTY),\
+        0,\
+        (SetHandler),\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_STREAM_MASTERCLOCK(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_STREAM_MASTERCLOCK,\
+        (GetHandler),\
+        sizeof(KSPROPERTY),\
+        sizeof(HANDLE),\
+        (SetHandler),\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_STREAM_TIMEFORMAT(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_STREAM_TIMEFORMAT,\
+        (Handler),\
+        sizeof(KSPROPERTY),\
+        sizeof(GUID),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONTIME(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_STREAM_PRESENTATIONTIME,\
+        (GetHandler),\
+        sizeof(KSPROPERTY),\
+        sizeof(KSTIME),\
+        (SetHandler),\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONEXTENT(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_STREAM_PRESENTATIONEXTENT,\
+        (Handler),\
+        sizeof(KSPROPERTY),\
+        sizeof(LONGLONG),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_STREAM_FRAMETIME(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_STREAM_FRAMETIME,\
+        (Handler),\
+        sizeof(KSPROPERTY),\
+        sizeof(KSFRAMETIME),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_STREAM_RATECAPABILITY(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_STREAM_RATECAPABILITY,\
+        (Handler),\
+        sizeof(KSRATE_CAPABILITY),\
+        sizeof(KSRATE),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_STREAM_RATE(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_STREAM_RATE,\
+        (GetHandler),\
+        sizeof(KSPROPERTY),\
+        sizeof(KSRATE),\
+        (SetHandler),\
+        NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_STREAM_PIPE_ID(GetHandler, SetHandler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_STREAM_PIPE_ID,\
+        (GetHandler),\
+        sizeof(KSPROPERTY),\
+        sizeof(HANDLE),\
+        (SetHandler),\
+        NULL, 0, NULL, NULL, 0)
 
 /* ===============================================================
     StreamAllocator
@@ -1838,11 +1939,32 @@ typedef struct
     KSEVENTDATA EventData;
 } KSRELATIVEEVENT, *PKSRELATIVEEVENT;
 
+#define KSRELATIVEEVENT_FLAG_HANDLE 0x00000001
+#define KSRELATIVEEVENT_FLAG_POINTER 0x00000002
 
 /* ===============================================================
     Timing
 */
 
+
+typedef struct {
+    KSEVENTDATA     EventData;
+    LONGLONG        MarkTime;
+} KSEVENT_TIME_MARK, *PKSEVENT_TIME_MARK;
+
+typedef struct {
+    KSEVENTDATA     EventData;
+    LONGLONG        TimeBase;
+    LONGLONG        Interval;
+} KSEVENT_TIME_INTERVAL, *PKSEVENT_TIME_INTERVAL;
+
+typedef struct {
+    LONGLONG        TimeBase;
+    LONGLONG        Interval;
+} KSINTERVAL, *PKSINTERVAL;
+
+
+
 typedef struct
 {
     LONGLONG Time;
@@ -1856,12 +1978,6 @@ typedef struct
     LONGLONG    SystemTime;
 } KSCORRELATED_TIME, *PKSCORRELATED_TIME;
 
-typedef struct
-{
-    LONGLONG        TimeBase;
-    LONGLONG        Interval;
-} KSINTERVAL, *PKSINTERVAL;
-
 typedef struct
 {
     LONGLONG    Duration;
@@ -1903,6 +2019,76 @@ typedef struct
 } KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE;
 
 
+#define DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_CLOCK_TIME,\
+        (Handler),\
+        sizeof(KSPROPERTY),\
+        sizeof(LONGLONG),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_CLOCK_PHYSICALTIME,\
+        (Handler),\
+        sizeof(KSPROPERTY),\
+        sizeof(LONGLONG),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_CLOCK_CORRELATEDTIME,\
+        (Handler),\
+        sizeof(KSPROPERTY),\
+        sizeof(KSCORRELATED_TIME),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,\
+        (Handler),\
+        sizeof(KSPROPERTY),\
+        sizeof(KSCORRELATED_TIME),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_CLOCK_RESOLUTION,\
+        (Handler),\
+        sizeof(KSPROPERTY),\
+        sizeof(KSRESOLUTION),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_CLOCK_STATE,\
+        (Handler),\
+        sizeof(KSPROPERTY),\
+        sizeof(KSSTATE),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(Handler)\
+    DEFINE_KSPROPERTY_ITEM(\
+        KSPROPERTY_CLOCK_FUNCTIONTABLE,\
+        (Handler),\
+        sizeof(KSPROPERTY),\
+        sizeof(KSCLOCK_FUNCTIONTABLE),\
+        NULL, NULL, 0, NULL, NULL, 0)
+
+#define DEFINE_KSPROPERTY_CLOCKSET(ClockSet,\
+    PropTime, PropPhysicalTime,\
+    PropCorrelatedTime, PropCorrelatedPhysicalTime,\
+    PropResolution, PropState, PropFunctionTable)\
+DEFINE_KSPROPERTY_TABLE(ClockSet) {\
+    DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(PropTime),\
+    DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(PropPhysicalTime),\
+    DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(PropCorrelatedTime),\
+    DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(PropCorrelatedPhysicalTime),\
+    DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(PropResolution),\
+    DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(PropState),\
+    DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(PropFunctionTable)\
+}
+
 /* ===============================================================
     Objects ??? SORT ME!
 */
@@ -2070,19 +2256,7 @@ typedef struct {
 typedef struct _KSEVENT_ENTRY KSEVENT_ENTRY, *PKSEVENT_ENTRY;
 
 #if defined(_NTDDK_)
-typedef struct
-{
-    KSEVENTDATA     EventData;
-    LONGLONG        MarkTime;
-} KSEVENT_TIME_MARK, *PKSEVENT_TIME_MARK;
-
-typedef struct
-{
-    KSEVENTDATA     EventData;
-    LONGLONG        TimeBase;
-    LONGLONG        Interval;
-} KSEVENT_TIME_INTERVAL, *PKSEVENT_TIME_INTERVAL;
-
+       
 typedef NTSTATUS (NTAPI *PFNKSADDEVENT)(
     IN  PIRP Irp,
     IN  PKSEVENTDATA EventData,
@@ -2976,6 +3150,9 @@ struct _KSNODE_DESCRIPTOR
   const KSAUTOMATION_TABLE*  AutomationTable;
   const GUID*  Type;
   const GUID*  Name;
+#if !defined(_WIN64)
+    PVOID Alignment;
+#endif
 };
 
 struct _KSFILTER_DESCRIPTOR
@@ -4057,6 +4234,14 @@ KsCreateFilterFactory(
     IN  PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL,
     OUT PKSFILTERFACTORY *FilterFactory OPTIONAL);
 
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsFilterFactorySetDeviceClassesState(
+    IN PKSFILTERFACTORY FilterFactory,
+    IN BOOLEAN NewState
+    );
+
 KSDDKAPI
 NTSTATUS
 NTAPI