- Make ks and portcls compile under msvc
[reactos.git] / reactos / include / psdk / ks.h
index d98b58a..ee61049 100644 (file)
@@ -1104,7 +1104,7 @@ typedef enum
 
 #if defined(_NTDDK_)
 /* MOVE ME */
-typedef NTSTATUS (*PFNKSCONTEXT_DISPATCH)(
+typedef NTSTATUS (NTAPI *PFNKSCONTEXT_DISPATCH)(
     IN PVOID Context,
     IN PIRP Irp);
 #endif
@@ -1259,20 +1259,20 @@ typedef struct
 #define KSPROPERTY_ATTRIBUTES_IRP_STORAGE(Irp) (*(PKSATTRIBUTE_LIST*)&(Irp)->Tail.Overlay.DriverContext[2])
 
 typedef 
-VOID 
-(*PFNREFERENCEDEVICEOBJECT)( 
+VOID
+(NTAPI *PFNREFERENCEDEVICEOBJECT)( 
     IN PVOID Context
     );
     
 typedef 
-VOID 
-(*PFNDEREFERENCEDEVICEOBJECT)( 
+VOID
+(NTAPI *PFNDEREFERENCEDEVICEOBJECT)( 
     IN PVOID Context
     );
     
 typedef
 NTSTATUS
-(*PFNQUERYREFERENCESTRING)( 
+(NTAPI *PFNQUERYREFERENCESTRING)( 
     IN PVOID Context,
     IN OUT PWCHAR *String
     );
@@ -1436,7 +1436,7 @@ typedef struct {
 } KSPROPERTY_VALUES, *PKSPROPERTY_VALUES;
 
 #if defined(_NTDDK_)
-typedef NTSTATUS (*PFNKSHANDLER)(
+typedef NTSTATUS (NTAPI *PFNKSHANDLER)(
     IN  PIRP Irp,
     IN  PKSIDENTIFIER Request,
     IN  OUT PVOID Data);
@@ -1465,8 +1465,7 @@ typedef struct
 
 typedef
 BOOLEAN
-NTAPI
-(*PFNKSFASTHANDLER)(
+(NTAPI *PFNKSFASTHANDLER)(
     IN PFILE_OBJECT FileObject,
     IN PKSIDENTIFIER Request,
     IN ULONG RequestLength,
@@ -1546,6 +1545,16 @@ typedef struct
     KS_FRAMING_ITEM     FramingItem[1]; 
 } KSALLOCATOR_FRAMING_EX, *PKSALLOCATOR_FRAMING_EX;
 
+#define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER   0x00000001
+#define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY      0x00000002
+#define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY    0x00000004
+#define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE      0x00000008
+#define KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY   0x80000000
+
+#define KSALLOCATOR_OPTIONF_COMPATIBLE              0x00000001
+#define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY           0x00000002
+#define KSALLOCATOR_OPTIONF_VALID                   0x00000003
+
 #define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT       0x00000010
 #define KSALLOCATOR_FLAG_DEVICE_SPECIFIC            0x00000020
 #define KSALLOCATOR_FLAG_CAN_ALLOCATE               0x00000040
@@ -1858,14 +1867,14 @@ typedef struct
     LONGLONG        Interval;
 } KSEVENT_TIME_INTERVAL, *PKSEVENT_TIME_INTERVAL;
 
-typedef NTSTATUS (*PFNKSADDEVENT)(
+typedef NTSTATUS (NTAPI *PFNKSADDEVENT)(
     IN  PIRP Irp,
     IN  PKSEVENTDATA EventData,
     IN  struct _KSEVENT_ENTRY* EventEntry);
 
 typedef
 VOID
-(*PFNKSREMOVEEVENT)(
+(NTAPI *PFNKSREMOVEEVENT)(
     IN PFILE_OBJECT FileObject,
     IN struct _KSEVENT_ENTRY* EventEntry
     );
@@ -1918,28 +1927,69 @@ typedef struct _KSSTREAM_POINTER_OFFSET KSSTREAM_POINTER_OFFSET, *PKSSTREAM_POIN
 typedef struct _KSMAPPING KSMAPPING, *PKSMAPPING;
 typedef struct _KSPROCESSPIN KSPROCESSPIN, *PKSPROCESSPIN;
 
+#define IOCTL_KS_HANDSHAKE             CTL_CODE(FILE_DEVICE_KS, 0x007, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+typedef struct {
+    GUID ProtocolId;
+    PVOID Argument1;
+    PVOID Argument2;
+} KSHANDSHAKE, *PKSHANDSHAKE;
+
+typedef
+NTSTATUS
+(NTAPI *PFNKSPINHANDSHAKE)(
+    IN PKSPIN Pin,
+    IN PKSHANDSHAKE In,
+    IN PKSHANDSHAKE Out
+    );
+
+typedef
+void
+(NTAPI *PFNKSPINPOWER)(
+    IN PKSPIN Pin,
+    IN DEVICE_POWER_STATE State
+    );
+
+typedef
+void
+(NTAPI *PFNKSPINFRAMERETURN)(
+    IN PKSPIN Pin,
+    IN PVOID Data OPTIONAL,
+    IN ULONG Size OPTIONAL,
+    IN PMDL Mdl OPTIONAL,
+    IN PVOID Context OPTIONAL,
+    IN NTSTATUS Status
+    );
+
+typedef
+void
+(NTAPI *PFNKSPINIRPCOMPLETION)(
+    IN PKSPIN Pin,
+    IN PIRP Irp
+    );
+
 typedef
 NTSTATUS
-(*PFNKSPINIRP)(
+(NTAPI *PFNKSPINIRP)(
     IN PKSPIN Pin,
     IN PIRP Irp
     );
 
 typedef
 NTSTATUS
-(*PFNKSPIN)(
+(NTAPI *PFNKSPIN)(
     IN PKSPIN Pin
     );
 
 typedef
 void
-(*PFNKSPINVOID)(
+(NTAPI *PFNKSPINVOID)(
     IN PKSPIN Pin
     );
 
 typedef
 void
-(*PFNKSSTREAMPOINTER)(
+(NTAPI *PFNKSSTREAMPOINTER)(
     IN PKSSTREAM_POINTER StreamPointer
     );
 
@@ -1950,7 +2000,7 @@ typedef struct {
 
 typedef
 NTSTATUS
-(*PFNKSPINSETDATAFORMAT)(
+(NTAPI *PFNKSPINSETDATAFORMAT)(
     IN PKSPIN Pin,
     IN PKSDATAFORMAT OldFormat OPTIONAL,
     IN PKSMULTIPLE_ITEM OldAttributeList OPTIONAL,
@@ -1960,7 +2010,7 @@ NTSTATUS
 
 typedef
 NTSTATUS
-(*PFNKSPINSETDEVICESTATE)(
+(NTAPI *PFNKSPINSETDEVICESTATE)(
     IN PKSPIN Pin,
     IN KSSTATE ToState,
     IN KSSTATE FromState
@@ -1985,7 +2035,7 @@ typedef struct
 
 typedef
 BOOLEAN
-(*PFNKSPINSETTIMER)(
+(NTAPI *PFNKSPINSETTIMER)(
     IN PKSPIN Pin,
     IN PKTIMER Timer,
     IN LARGE_INTEGER DueTime,
@@ -1994,7 +2044,7 @@ BOOLEAN
 
 typedef
 BOOLEAN
-(*PFNKSPINCANCELTIMER)(
+(NTAPI *PFNKSPINCANCELTIMER)(
     IN PKSPIN Pin,
     IN PKTIMER Timer
     );
@@ -2008,7 +2058,7 @@ LONGLONG
 
 typedef
 void
-(*PFNKSPINRESOLUTION)(
+(NTAPI *PFNKSPINRESOLUTION)(
     IN PKSPIN Pin,
     OUT PKSRESOLUTION Resolution
     );
@@ -2022,19 +2072,19 @@ struct _KSCLOCK_DISPATCH {
 
 typedef
 NTSTATUS
-(*PFNKSPININITIALIZEALLOCATOR)(
+(NTAPI *PFNKSPININITIALIZEALLOCATOR)(
     IN PKSPIN Pin,
     IN PKSALLOCATOR_FRAMING AllocatorFraming,
     OUT PVOID* Context
     );
 
-typedef PVOID (*PFNKSDELETEALLOCATOR)(
+typedef PVOID (NTAPI *PFNKSDELETEALLOCATOR)(
     IN  PVOID Context);
 
-typedef PVOID (*PFNKSDEFAULTALLOCATE)(
+typedef PVOID (NTAPI *PFNKSDEFAULTALLOCATE)(
     IN  PVOID Context);
 
-typedef PVOID (*PFNKSDEFAULTFREE)(
+typedef PVOID (NTAPI *PFNKSDEFAULTFREE)(
     IN  PVOID Context,
     IN  PVOID Buffer);
 
@@ -2086,7 +2136,7 @@ typedef struct
 
 typedef
 NTSTATUS
-(*PFNKSINTERSECTHANDLER)(
+(NTAPI *PFNKSINTERSECTHANDLER)(
     IN PIRP Irp,
     IN PKSP_PIN Pin,
     IN PKSDATARANGE DataRange,
@@ -2095,7 +2145,7 @@ NTSTATUS
 
 typedef
 NTSTATUS
-(*PFNKSINTERSECTHANDLEREX)(
+(NTAPI *PFNKSINTERSECTHANDLEREX)(
     IN PVOID Context,
     IN PIRP Irp,
     IN PKSP_PIN Pin,
@@ -2316,7 +2366,7 @@ DEFINE_KSPROPERTY_TABLE(PinSet) {\
 
 typedef
 void
-(*PFNKSFREE)(
+(NTAPI *PFNKSFREE)(
     IN PVOID Data
     );
 
@@ -2408,18 +2458,18 @@ DEFINE_KSPROPERTY_TABLE(TopologySet) {\
 /* TODO */
 typedef void* UNKNOWN;
 
-typedef PVOID NTAPI(*PFNKSINITIALIZEALLOCATOR)(
+typedef PVOID (NTAPI *PFNKSINITIALIZEALLOCATOR)(
     IN  PVOID InitialContext,
     IN  PKSALLOCATOR_FRAMING AllocatorFraming,
     OUT PVOID* Context);
 
 #if defined(_NTDDK_)
-typedef NTSTATUS (*PFNKSALLOCATOR)(
+typedef NTSTATUS (NTAPI *PFNKSALLOCATOR)(
     IN  PIRP Irp,
     IN  ULONG BufferSize,
     IN  BOOLEAN InputOperation);
 
-typedef NTSTATUS (*PFNKINTERSECTHANDLEREX)(
+typedef NTSTATUS (NTAPI *PFNKINTERSECTHANDLEREX)(
     IN  PVOID Context,
     IN  PIRP Irp,
     IN  PKSP_PIN Pin,
@@ -2432,16 +2482,14 @@ typedef NTSTATUS (*PFNKINTERSECTHANDLEREX)(
 
 typedef
 NTSTATUS
-NTAPI
-(*PFNALLOCATOR_ALLOCATEFRAME)(
+(NTAPI *PFNALLOCATOR_ALLOCATEFRAME)(
     IN PFILE_OBJECT FileObject,
     PVOID *Frame
     );
 
 typedef
 VOID
-NTAPI
-(*PFNALLOCATOR_FREEFRAME)(
+(NTAPI *PFNALLOCATOR_FREEFRAME)(
     IN PFILE_OBJECT FileObject,
     IN PVOID Frame
     );
@@ -2492,12 +2540,10 @@ struct _KSMAPPING {
 };
 #endif
 
-
-typedef struct {
-    GUID ProtocolId;
-    PVOID Argument1;
-    PVOID Argument2;
-} KSHANDSHAKE, *PKSHANDSHAKE;
+typedef enum {
+    KSSTREAM_POINTER_STATE_UNLOCKED = 0,
+    KSSTREAM_POINTER_STATE_LOCKED
+} KSSTREAM_POINTER_STATE;
 
 typedef struct _KSGATE KSGATE, *PKSGATE;
 typedef struct _KSPROCESSPIN_INDEXENTRY KSPROCESSPIN_INDEXENTRY, *PKSPROCESSPIN_INDEXENTRY;
@@ -2570,32 +2616,32 @@ typedef struct _KSNODE_DESCRIPTOR KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;
 typedef struct _KSFILTER_DESCRIPTOR KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR;
 typedef struct _KSDEVICE_DESCRIPTOR KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR;
 
-typedef NTSTATUS (*PFNKSDEVICECREATE)(
+typedef NTSTATUS (NTAPI *PFNKSDEVICECREATE)(
     IN PKSDEVICE Device);
 
-typedef NTSTATUS (*PFNKSDEVICEPNPSTART)(
+typedef NTSTATUS (NTAPI *PFNKSDEVICEPNPSTART)(
     IN PKSDEVICE Device,
     IN PIRP Irp,
     IN PCM_RESOURCE_LIST TranslatedResourceList OPTIONAL,
     IN PCM_RESOURCE_LIST UntranslatedResourceList OPTIONAL);
 
-typedef NTSTATUS (*PFNKSDEVICE)(
+typedef NTSTATUS (NTAPI *PFNKSDEVICE)(
     IN PKSDEVICE Device);
 
-typedef NTSTATUS (*PFNKSDEVICEIRP)(
+typedef NTSTATUS (NTAPI *PFNKSDEVICEIRP)(
     IN PKSDEVICE Device,
     IN PIRP Irp);
 
-typedef VOID (*PFNKSDEVICEIRPVOID)(
+typedef VOID (NTAPI *PFNKSDEVICEIRPVOID)(
     IN PKSDEVICE Device,
     IN PIRP Irp);
 
-typedef NTSTATUS (*PFNKSDEVICEQUERYCAPABILITIES)(
+typedef NTSTATUS (NTAPI *PFNKSDEVICEQUERYCAPABILITIES)(
     IN PKSDEVICE Device,
     IN PIRP Irp,
     IN OUT PDEVICE_CAPABILITIES Capabilities);
 
-typedef NTSTATUS (*PFNKSDEVICEQUERYPOWER)(
+typedef NTSTATUS (NTAPI *PFNKSDEVICEQUERYPOWER)(
     IN PKSDEVICE Device,
     IN PIRP Irp,
     IN DEVICE_POWER_STATE DeviceTo,
@@ -2604,7 +2650,7 @@ typedef NTSTATUS (*PFNKSDEVICEQUERYPOWER)(
     IN SYSTEM_POWER_STATE SystemFrom,
     IN POWER_ACTION Action);
 
-typedef VOID (*PFNKSDEVICESETPOWER)(
+typedef VOID (NTAPI *PFNKSDEVICESETPOWER)(
     IN PKSDEVICE Device,
     IN PIRP Irp,
     IN DEVICE_POWER_STATE To,
@@ -2657,15 +2703,22 @@ struct _KSFILTER
     PVOID Context;
 };
 
-typedef NTSTATUS (*PFNKSFILTERIRP)(
+typedef
+void
+(NTAPI *PFNKSFILTERPOWER)(
+    IN PKSFILTER Filter,
+    IN DEVICE_POWER_STATE State
+    );
+
+typedef NTSTATUS (NTAPI *PFNKSFILTERIRP)(
     IN PKSFILTER Filter,
     IN PIRP Irp);
 
-typedef NTSTATUS (*PFNKSFILTERPROCESS)(
-    IN PKSFILTER FIlter,
+typedef NTSTATUS (NTAPI *PFNKSFILTERPROCESS)(
+    IN PKSFILTER Filter,
     IN PKSPROCESSPIN_INDEXENTRY ProcessPinsIndex);
 
-typedef NTSTATUS (*PFNKSFILTERVOID)(
+typedef NTSTATUS (NTAPI *PFNKSFILTERVOID)(
     IN PKSFILTER Filter);
 
 struct _KSFILTER_DISPATCH
@@ -2723,12 +2776,12 @@ struct _KSFILTERFACTORY {
     Minidriver Callbacks
 */
 #if defined(_NTDDK_)
-typedef NTSTATUS (*KStrMethodHandler)(
+typedef NTSTATUS (NTAPI *KStrMethodHandler)(
     IN  PIRP Irp,
     IN  PKSIDENTIFIER Request,
     IN  OUT PVOID Data);
 
-typedef NTSTATUS (*KStrSupportHandler)(
+typedef NTSTATUS (NTAPI *KStrSupportHandler)(
     IN  PIRP Irp,
     IN  PKSIDENTIFIER Request,
     IN  OUT PVOID Data);
@@ -2773,13 +2826,13 @@ KsValidateAllocatorFramingEx(
     Clock Functions
 */
 #if defined(_NTDDK_)
-typedef BOOLEAN (*PFNKSSETTIMER)(
+typedef BOOLEAN (NTAPI *PFNKSSETTIMER)(
     IN  PVOID Context,
     IN  PKTIMER Timer,
     IN  LARGE_INTEGER DueTime,
     IN  PKDPC Dpc);
 
-typedef BOOLEAN (*PFNKSCANCELTIMER)(
+typedef BOOLEAN (NTAPI *PFNKSCANCELTIMER)(
     IN  PVOID Context,
     IN  PKTIMER Timer);
 
@@ -2943,10 +2996,29 @@ KsFastPropertyHandler(
 #define KSSTREAM_SYNCHRONOUS    0x00001000
 #define KSSTREAM_FAILUREEXCEPTION 0x00002000
 
+typedef
+BOOLEAN
+(NTAPI *PFNKSGENERATEEVENTCALLBACK)(
+    IN PVOID Context,
+    IN PKSEVENT_ENTRY EventEntry
+    );
+
 KSDDKAPI NTSTATUS NTAPI
 KsGenerateEvent(
     IN  PKSEVENT_ENTRY EntryEvent);
 
+KSDDKAPI void NTAPI
+KsGenerateEvents(
+    IN PVOID Object,
+    IN const GUID* EventSet OPTIONAL,
+    IN ULONG EventId,
+    IN ULONG DataSize,
+    IN PVOID Data OPTIONAL,
+    IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL,
+    IN PVOID CallBackContext OPTIONAL
+    );
+
+
 KSDDKAPI NTSTATUS NTAPI
 KsEnableEventWithAllocator(
     IN  PIRP Irp,
@@ -3077,7 +3149,7 @@ KsHandleSizedListQuery(
     IRP Helper Functions
 */
 
-typedef NTSTATUS (*PFNKSIRPLISTCALLBACK)(
+typedef NTSTATUS (NTAPI *PFNKSIRPLISTCALLBACK)(
     IN  PIRP Irp,
     IN  PVOID Context);
 
@@ -3499,6 +3571,7 @@ KsInitializeDriver(
 typedef struct _KSFILTERFACTORY KSFILTERFACTORY, *PKSFILTERFACTORY; //FIXME
 
 
+
 KSDDKAPI
 NTSTATUS
 NTAPI
@@ -3509,7 +3582,7 @@ KsInitializeDevice (
     IN const KSDEVICE_DESCRIPTOR*  Descriptor OPTIONAL);
 
 
-typedef void (*PFNKSFILTERFACTORYPOWER)(
+typedef void (NTAPI *PFNKSFILTERFACTORYPOWER)(
     IN  PKSFILTERFACTORY FilterFactory,
     IN  DEVICE_POWER_STATE State);
 
@@ -3666,14 +3739,14 @@ KsGetOuterUnknown(
     IN PVOID Object
     );
 
-
+static
+__inline
 PUNKNOWN
-NTAPI
 KsDeviceGetOuterUnknown(
-    IN  PKSDEVICE Device);
-//{
-//    return KsGetOuterUnknown((PVOID) Device);
-//}
+    IN  PKSDEVICE Device)
+{
+    return KsGetOuterUnknown((PVOID) Device);
+}
 
 KSDDKAPI
 PUNKNOWN
@@ -3685,6 +3758,34 @@ KsDeviceRegisterAggregatedClientUnknown(
 
 #endif
 
+#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
+
+typedef interface IKsReferenceClock* PIKSREFERENCECLOCK;
+
+#undef INTERFACE
+#define INTERFACE IKsReferenceClock
+DECLARE_INTERFACE_(IKsReferenceClock,IUnknown)
+{
+    DEFINE_ABSTRACT_UNKNOWN() // For C
+
+    STDMETHOD_(LONGLONG,GetTime)(THIS
+        ) PURE;
+    STDMETHOD_(LONGLONG,GetPhysicalTime)(THIS
+        ) PURE;
+    STDMETHOD_(LONGLONG,GetCorrelatedTime)(THIS_
+        OUT PLONGLONG SystemTime
+        ) PURE;
+    STDMETHOD_(LONGLONG,GetCorrelatedPhysicalTime)(THIS_
+        OUT PLONGLONG SystemTime
+        ) PURE;
+    STDMETHOD_(NTSTATUS, GetResolution)(THIS_
+        OUT PKSRESOLUTION Resolution
+        ) PURE;
+    STDMETHOD_(NTSTATUS, GetState)(THIS_
+        OUT PKSSTATE State
+        ) PURE;
+};
+
 #undef INTERFACE
 #define INTERFACE IKsControl
 
@@ -3726,6 +3827,8 @@ DECLARE_INTERFACE_(IKsControl,IUnknown)
 #undef INTERFACE
 typedef IKsControl* PIKSCONTROL;
 
+#endif
+
 KSDDKAPI
 VOID
 NTAPI
@@ -3767,7 +3870,7 @@ NTAPI
 KsFilterAddTopologyConnections(
     IN  PKSFILTER Filter,
     IN  ULONG NewConnectionsCount,
-    IN  const KSTOPOLOGY_CONNECTION* NewTopologyConnections);
+    IN  const KSTOPOLOGY_CONNECTION *const NewTopologyConnections);
 
 KSDDKAPI
 VOID
@@ -3781,7 +3884,7 @@ NTSTATUS
 NTAPI
 KsFilterCreateNode(
     IN  PKSFILTER Filter,
-    IN  const KSNODE_DESCRIPTOR* NodeDescriptor,
+    IN  const KSNODE_DESCRIPTOR *const NodeDescriptor,
     OUT PULONG NodeID);
 
 KSDDKAPI
@@ -3789,7 +3892,7 @@ NTSTATUS
 NTAPI
 KsFilterCreatePinFactory(
     IN  PKSFILTER Filter,
-    IN  const KSPIN_DESCRIPTOR_EX* PinDescriptor,
+    IN  const KSPIN_DESCRIPTOR_EX *const PinDescriptor,
     OUT PULONG PinID);
 
 KSDDKAPI