Mercurial > games > semicongine
comparison fuhtark_test/include/winapi/ks.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1499:1f58458b7ef7 | 1500:91c8c3b7cbf0 |
|---|---|
| 1 /** | |
| 2 * This file has no copyright assigned and is placed in the Public Domain. | |
| 3 * This file is part of the w64 mingw-runtime package. | |
| 4 * No warranty is given; refer to the file DISCLAIMER within this package. | |
| 5 */ | |
| 6 #ifndef _KS_ | |
| 7 #define _KS_ | |
| 8 | |
| 9 #ifdef __TCS__ | |
| 10 #define _KS_NO_ANONYMOUS_STRUCTURES_ 1 | |
| 11 #endif | |
| 12 | |
| 13 #ifndef _NTRTL_ | |
| 14 #ifndef DEFINE_GUIDEX | |
| 15 #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name | |
| 16 #endif | |
| 17 #ifndef STATICGUIDOF | |
| 18 #define STATICGUIDOF(guid) STATIC_##guid | |
| 19 #endif | |
| 20 #endif | |
| 21 | |
| 22 #ifndef SIZEOF_ARRAY | |
| 23 #define SIZEOF_ARRAY(ar) (sizeof(ar)/sizeof((ar)[0])) | |
| 24 #endif | |
| 25 | |
| 26 #define DEFINE_GUIDSTRUCT(g,n) DEFINE_GUIDEX(n) | |
| 27 #define DEFINE_GUIDNAMED(n) n | |
| 28 | |
| 29 #define STATIC_GUID_NULL 0x00000000L,0x0000,0x0000,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 | |
| 30 | |
| 31 DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000",GUID_NULL); | |
| 32 #define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL) | |
| 33 | |
| 34 #define IOCTL_KS_PROPERTY CTL_CODE(FILE_DEVICE_KS,0x000,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 35 #define IOCTL_KS_ENABLE_EVENT CTL_CODE(FILE_DEVICE_KS,0x001,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 36 #define IOCTL_KS_DISABLE_EVENT CTL_CODE(FILE_DEVICE_KS,0x002,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 37 #define IOCTL_KS_METHOD CTL_CODE(FILE_DEVICE_KS,0x003,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 38 #define IOCTL_KS_WRITE_STREAM CTL_CODE(FILE_DEVICE_KS,0x004,METHOD_NEITHER,FILE_WRITE_ACCESS) | |
| 39 #define IOCTL_KS_READ_STREAM CTL_CODE(FILE_DEVICE_KS,0x005,METHOD_NEITHER,FILE_READ_ACCESS) | |
| 40 #define IOCTL_KS_RESET_STATE CTL_CODE(FILE_DEVICE_KS,0x006,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 41 | |
| 42 typedef enum { | |
| 43 KSRESET_BEGIN,KSRESET_END | |
| 44 } KSRESET; | |
| 45 | |
| 46 typedef enum { | |
| 47 KSSTATE_STOP,KSSTATE_ACQUIRE,KSSTATE_PAUSE,KSSTATE_RUN | |
| 48 } KSSTATE,*PKSSTATE; | |
| 49 | |
| 50 #define KSPRIORITY_LOW 0x00000001 | |
| 51 #define KSPRIORITY_NORMAL 0x40000000 | |
| 52 #define KSPRIORITY_HIGH 0x80000000 | |
| 53 #define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF | |
| 54 | |
| 55 typedef struct { | |
| 56 ULONG PriorityClass; | |
| 57 ULONG PrioritySubClass; | |
| 58 } KSPRIORITY,*PKSPRIORITY; | |
| 59 | |
| 60 typedef struct { | |
| 61 __MINGW_EXTENSION union { | |
| 62 __MINGW_EXTENSION struct | |
| 63 #ifdef _KS_NO_ANONYMOUS_STRUCTURES_ | |
| 64 _IDENTIFIER | |
| 65 #endif | |
| 66 { | |
| 67 GUID Set; | |
| 68 ULONG Id; | |
| 69 ULONG Flags; | |
| 70 }; | |
| 71 LONGLONG Alignment; | |
| 72 }; | |
| 73 } KSIDENTIFIER,*PKSIDENTIFIER; | |
| 74 | |
| 75 typedef KSIDENTIFIER KSPROPERTY,*PKSPROPERTY,KSMETHOD,*PKSMETHOD,KSEVENT,*PKSEVENT; | |
| 76 | |
| 77 #define KSMETHOD_TYPE_NONE 0x00000000 | |
| 78 #define KSMETHOD_TYPE_READ 0x00000001 | |
| 79 #define KSMETHOD_TYPE_WRITE 0x00000002 | |
| 80 #define KSMETHOD_TYPE_MODIFY 0x00000003 | |
| 81 #define KSMETHOD_TYPE_SOURCE 0x00000004 | |
| 82 | |
| 83 #define KSMETHOD_TYPE_SEND 0x00000001 | |
| 84 #define KSMETHOD_TYPE_SETSUPPORT 0x00000100 | |
| 85 #define KSMETHOD_TYPE_BASICSUPPORT 0x00000200 | |
| 86 | |
| 87 #define KSMETHOD_TYPE_TOPOLOGY 0x10000000 | |
| 88 | |
| 89 #define KSPROPERTY_TYPE_GET 0x00000001 | |
| 90 #define KSPROPERTY_TYPE_SET 0x00000002 | |
| 91 #define KSPROPERTY_TYPE_SETSUPPORT 0x00000100 | |
| 92 #define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200 | |
| 93 #define KSPROPERTY_TYPE_RELATIONS 0x00000400 | |
| 94 #define KSPROPERTY_TYPE_SERIALIZESET 0x00000800 | |
| 95 #define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000 | |
| 96 #define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000 | |
| 97 #define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000 | |
| 98 #define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000 | |
| 99 #define KSPROPERTY_TYPE_DEFAULTVALUES 0x00010000 | |
| 100 | |
| 101 #define KSPROPERTY_TYPE_TOPOLOGY 0x10000000 | |
| 102 | |
| 103 typedef struct { | |
| 104 KSPROPERTY Property; | |
| 105 ULONG NodeId; | |
| 106 ULONG Reserved; | |
| 107 } KSP_NODE,*PKSP_NODE; | |
| 108 | |
| 109 typedef struct { | |
| 110 KSMETHOD Method; | |
| 111 ULONG NodeId; | |
| 112 ULONG Reserved; | |
| 113 } KSM_NODE,*PKSM_NODE; | |
| 114 | |
| 115 typedef struct { | |
| 116 KSEVENT Event; | |
| 117 ULONG NodeId; | |
| 118 ULONG Reserved; | |
| 119 } KSE_NODE,*PKSE_NODE; | |
| 120 | |
| 121 #define STATIC_KSPROPTYPESETID_General 0x97E99BA0L,0xBDEA,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 122 DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000",KSPROPTYPESETID_General); | |
| 123 #define KSPROPTYPESETID_General DEFINE_GUIDNAMED(KSPROPTYPESETID_General) | |
| 124 | |
| 125 typedef struct { | |
| 126 ULONG Size; | |
| 127 ULONG Count; | |
| 128 } KSMULTIPLE_ITEM,*PKSMULTIPLE_ITEM; | |
| 129 | |
| 130 typedef struct { | |
| 131 ULONG AccessFlags; | |
| 132 ULONG DescriptionSize; | |
| 133 KSIDENTIFIER PropTypeSet; | |
| 134 ULONG MembersListCount; | |
| 135 ULONG Reserved; | |
| 136 } KSPROPERTY_DESCRIPTION,*PKSPROPERTY_DESCRIPTION; | |
| 137 | |
| 138 #define KSPROPERTY_MEMBER_RANGES 0x00000001 | |
| 139 #define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002 | |
| 140 #define KSPROPERTY_MEMBER_VALUES 0x00000003 | |
| 141 | |
| 142 #define KSPROPERTY_MEMBER_FLAG_DEFAULT 0x00000001 | |
| 143 #define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_MULTICHANNEL 0x00000002 | |
| 144 #define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_UNIFORM 0x00000004 | |
| 145 | |
| 146 typedef struct { | |
| 147 ULONG MembersFlags; | |
| 148 ULONG MembersSize; | |
| 149 ULONG MembersCount; | |
| 150 ULONG Flags; | |
| 151 } KSPROPERTY_MEMBERSHEADER,*PKSPROPERTY_MEMBERSHEADER; | |
| 152 | |
| 153 typedef union { | |
| 154 __MINGW_EXTENSION struct | |
| 155 #ifdef _KS_NO_ANONYMOUS_STRUCTURES_ | |
| 156 _SIGNED | |
| 157 #endif | |
| 158 { | |
| 159 LONG SignedMinimum; | |
| 160 LONG SignedMaximum; | |
| 161 }; | |
| 162 __MINGW_EXTENSION struct | |
| 163 #ifdef _KS_NO_ANONYMOUS_STRUCTURES_ | |
| 164 _UNSIGNED | |
| 165 #endif | |
| 166 { | |
| 167 ULONG UnsignedMinimum; | |
| 168 ULONG UnsignedMaximum; | |
| 169 }; | |
| 170 } KSPROPERTY_BOUNDS_LONG,*PKSPROPERTY_BOUNDS_LONG; | |
| 171 | |
| 172 typedef union { | |
| 173 __MINGW_EXTENSION struct | |
| 174 #ifdef _KS_NO_ANONYMOUS_STRUCTURES_ | |
| 175 _SIGNED64 | |
| 176 #endif | |
| 177 { | |
| 178 LONGLONG SignedMinimum; | |
| 179 LONGLONG SignedMaximum; | |
| 180 }; | |
| 181 __MINGW_EXTENSION struct | |
| 182 #ifdef _KS_NO_ANONYMOUS_STRUCTURES_ | |
| 183 _UNSIGNED64 | |
| 184 #endif | |
| 185 { | |
| 186 DWORDLONG UnsignedMinimum; | |
| 187 DWORDLONG UnsignedMaximum; | |
| 188 }; | |
| 189 } KSPROPERTY_BOUNDS_LONGLONG,*PKSPROPERTY_BOUNDS_LONGLONG; | |
| 190 | |
| 191 typedef struct { | |
| 192 ULONG SteppingDelta; | |
| 193 ULONG Reserved; | |
| 194 KSPROPERTY_BOUNDS_LONG Bounds; | |
| 195 } KSPROPERTY_STEPPING_LONG,*PKSPROPERTY_STEPPING_LONG; | |
| 196 | |
| 197 typedef struct { | |
| 198 DWORDLONG SteppingDelta; | |
| 199 KSPROPERTY_BOUNDS_LONGLONG Bounds; | |
| 200 } KSPROPERTY_STEPPING_LONGLONG,*PKSPROPERTY_STEPPING_LONGLONG; | |
| 201 | |
| 202 typedef PVOID PKSWORKER; | |
| 203 | |
| 204 typedef struct { | |
| 205 ULONG NotificationType; | |
| 206 __MINGW_EXTENSION union { | |
| 207 struct { | |
| 208 HANDLE Event; | |
| 209 ULONG_PTR Reserved[2]; | |
| 210 } EventHandle; | |
| 211 struct { | |
| 212 HANDLE Semaphore; | |
| 213 ULONG Reserved; | |
| 214 LONG Adjustment; | |
| 215 } SemaphoreHandle; | |
| 216 struct { | |
| 217 PVOID Unused; | |
| 218 LONG_PTR Alignment[2]; | |
| 219 } Alignment; | |
| 220 }; | |
| 221 } KSEVENTDATA,*PKSEVENTDATA; | |
| 222 | |
| 223 #define KSEVENTF_EVENT_HANDLE 0x00000001 | |
| 224 #define KSEVENTF_SEMAPHORE_HANDLE 0x00000002 | |
| 225 | |
| 226 #define KSEVENT_TYPE_ENABLE 0x00000001 | |
| 227 #define KSEVENT_TYPE_ONESHOT 0x00000002 | |
| 228 #define KSEVENT_TYPE_ENABLEBUFFERED 0x00000004 | |
| 229 #define KSEVENT_TYPE_SETSUPPORT 0x00000100 | |
| 230 #define KSEVENT_TYPE_BASICSUPPORT 0x00000200 | |
| 231 #define KSEVENT_TYPE_QUERYBUFFER 0x00000400 | |
| 232 | |
| 233 #define KSEVENT_TYPE_TOPOLOGY 0x10000000 | |
| 234 | |
| 235 typedef struct { | |
| 236 KSEVENT Event; | |
| 237 PKSEVENTDATA EventData; | |
| 238 PVOID Reserved; | |
| 239 } KSQUERYBUFFER,*PKSQUERYBUFFER; | |
| 240 | |
| 241 typedef struct { | |
| 242 ULONG Size; | |
| 243 ULONG Flags; | |
| 244 __MINGW_EXTENSION union { | |
| 245 HANDLE ObjectHandle; | |
| 246 PVOID ObjectPointer; | |
| 247 }; | |
| 248 PVOID Reserved; | |
| 249 KSEVENT Event; | |
| 250 KSEVENTDATA EventData; | |
| 251 } KSRELATIVEEVENT; | |
| 252 | |
| 253 #define KSRELATIVEEVENT_FLAG_HANDLE 0x00000001 | |
| 254 #define KSRELATIVEEVENT_FLAG_POINTER 0x00000002 | |
| 255 | |
| 256 typedef struct { | |
| 257 KSEVENTDATA EventData; | |
| 258 LONGLONG MarkTime; | |
| 259 } KSEVENT_TIME_MARK,*PKSEVENT_TIME_MARK; | |
| 260 | |
| 261 typedef struct { | |
| 262 KSEVENTDATA EventData; | |
| 263 LONGLONG TimeBase; | |
| 264 LONGLONG Interval; | |
| 265 } KSEVENT_TIME_INTERVAL,*PKSEVENT_TIME_INTERVAL; | |
| 266 | |
| 267 typedef struct { | |
| 268 LONGLONG TimeBase; | |
| 269 LONGLONG Interval; | |
| 270 } KSINTERVAL,*PKSINTERVAL; | |
| 271 | |
| 272 #define STATIC_KSPROPSETID_General 0x1464EDA5L,0x6A8F,0x11D1,0x9A,0xA7,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 273 DEFINE_GUIDSTRUCT("1464EDA5-6A8F-11D1-9AA7-00A0C9223196",KSPROPSETID_General); | |
| 274 #define KSPROPSETID_General DEFINE_GUIDNAMED(KSPROPSETID_General) | |
| 275 | |
| 276 typedef enum { | |
| 277 KSPROPERTY_GENERAL_COMPONENTID | |
| 278 } KSPROPERTY_GENERAL; | |
| 279 | |
| 280 typedef struct { | |
| 281 GUID Manufacturer; | |
| 282 GUID Product; | |
| 283 GUID Component; | |
| 284 GUID Name; | |
| 285 ULONG Version; | |
| 286 ULONG Revision; | |
| 287 } KSCOMPONENTID,*PKSCOMPONENTID; | |
| 288 | |
| 289 #define DEFINE_KSPROPERTY_ITEM_GENERAL_COMPONENTID(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_GENERAL_COMPONENTID,(Handler),sizeof(KSPROPERTY),sizeof(KSCOMPONENTID),NULL,NULL,0,NULL,NULL,0) | |
| 290 | |
| 291 #define STATIC_KSMETHODSETID_StreamIo 0x65D003CAL,0x1523,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 292 DEFINE_GUIDSTRUCT("65D003CA-1523-11D2-B27A-00A0C9223196",KSMETHODSETID_StreamIo); | |
| 293 #define KSMETHODSETID_StreamIo DEFINE_GUIDNAMED(KSMETHODSETID_StreamIo) | |
| 294 | |
| 295 typedef enum { | |
| 296 KSMETHOD_STREAMIO_READ,KSMETHOD_STREAMIO_WRITE | |
| 297 } KSMETHOD_STREAMIO; | |
| 298 | |
| 299 #define DEFINE_KSMETHOD_ITEM_STREAMIO_READ(Handler) DEFINE_KSMETHOD_ITEM(KSMETHOD_STREAMIO_READ,KSMETHOD_TYPE_WRITE,(Handler),sizeof(KSMETHOD),0,NULL) | |
| 300 #define DEFINE_KSMETHOD_ITEM_STREAMIO_WRITE(Handler) DEFINE_KSMETHOD_ITEM(KSMETHOD_STREAMIO_WRITE,KSMETHOD_TYPE_READ,(Handler),sizeof(KSMETHOD),0,NULL) | |
| 301 | |
| 302 #define STATIC_KSPROPSETID_MediaSeeking 0xEE904F0CL,0xD09B,0x11D0,0xAB,0xE9,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 303 DEFINE_GUIDSTRUCT("EE904F0C-D09B-11D0-ABE9-00A0C9223196",KSPROPSETID_MediaSeeking); | |
| 304 #define KSPROPSETID_MediaSeeking DEFINE_GUIDNAMED(KSPROPSETID_MediaSeeking) | |
| 305 | |
| 306 typedef enum { | |
| 307 KSPROPERTY_MEDIASEEKING_CAPABILITIES,KSPROPERTY_MEDIASEEKING_FORMATS,KSPROPERTY_MEDIASEEKING_TIMEFORMAT,KSPROPERTY_MEDIASEEKING_POSITION, | |
| 308 KSPROPERTY_MEDIASEEKING_STOPPOSITION,KSPROPERTY_MEDIASEEKING_POSITIONS,KSPROPERTY_MEDIASEEKING_DURATION,KSPROPERTY_MEDIASEEKING_AVAILABLE, | |
| 309 KSPROPERTY_MEDIASEEKING_PREROLL,KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT | |
| 310 } KSPROPERTY_MEDIASEEKING; | |
| 311 | |
| 312 typedef enum { | |
| 313 KS_SEEKING_NoPositioning,KS_SEEKING_AbsolutePositioning,KS_SEEKING_RelativePositioning,KS_SEEKING_IncrementalPositioning, | |
| 314 KS_SEEKING_PositioningBitsMask = 0x3,KS_SEEKING_SeekToKeyFrame,KS_SEEKING_ReturnTime = 0x8 | |
| 315 } KS_SEEKING_FLAGS; | |
| 316 | |
| 317 typedef enum { | |
| 318 KS_SEEKING_CanSeekAbsolute = 0x1,KS_SEEKING_CanSeekForwards = 0x2,KS_SEEKING_CanSeekBackwards = 0x4,KS_SEEKING_CanGetCurrentPos = 0x8, | |
| 319 KS_SEEKING_CanGetStopPos = 0x10,KS_SEEKING_CanGetDuration = 0x20,KS_SEEKING_CanPlayBackwards = 0x40 | |
| 320 } KS_SEEKING_CAPABILITIES; | |
| 321 | |
| 322 typedef struct { | |
| 323 LONGLONG Current; | |
| 324 LONGLONG Stop; | |
| 325 KS_SEEKING_FLAGS CurrentFlags; | |
| 326 KS_SEEKING_FLAGS StopFlags; | |
| 327 } KSPROPERTY_POSITIONS,*PKSPROPERTY_POSITIONS; | |
| 328 | |
| 329 typedef struct { | |
| 330 LONGLONG Earliest; | |
| 331 LONGLONG Latest; | |
| 332 } KSPROPERTY_MEDIAAVAILABLE,*PKSPROPERTY_MEDIAAVAILABLE; | |
| 333 | |
| 334 typedef struct { | |
| 335 KSPROPERTY Property; | |
| 336 GUID SourceFormat; | |
| 337 GUID TargetFormat; | |
| 338 LONGLONG Time; | |
| 339 } KSP_TIMEFORMAT,*PKSP_TIMEFORMAT; | |
| 340 | |
| 341 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CAPABILITIES(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_MEDIASEEKING_CAPABILITIES,(Handler),sizeof(KSPROPERTY),sizeof(KS_SEEKING_CAPABILITIES),NULL,NULL,0,NULL,NULL,0) | |
| 342 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_FORMATS(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_MEDIASEEKING_FORMATS,(Handler),sizeof(KSPROPERTY),0,NULL,NULL,0,NULL,NULL,0) | |
| 343 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_TIMEFORMAT(GetHandler,SetHandler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_MEDIASEEKING_TIMEFORMAT,(GetHandler),sizeof(KSPROPERTY),sizeof(GUID),(SetHandler),NULL,0,NULL,NULL,0) | |
| 344 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITION(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_MEDIASEEKING_POSITION,(Handler),sizeof(KSPROPERTY),sizeof(LONGLONG),NULL,NULL,0,NULL,NULL,0) | |
| 345 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_STOPPOSITION(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_MEDIASEEKING_STOPPOSITION,(Handler),sizeof(KSPROPERTY),sizeof(LONGLONG),NULL,NULL,0,NULL,NULL,0) | |
| 346 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITIONS(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_MEDIASEEKING_POSITIONS,NULL,sizeof(KSPROPERTY),sizeof(KSPROPERTY_POSITIONS),(Handler),NULL,0,NULL,NULL,0) | |
| 347 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_DURATION(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_MEDIASEEKING_DURATION,(Handler),sizeof(KSPROPERTY),sizeof(LONGLONG),NULL,NULL,0,NULL,NULL,0) | |
| 348 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_AVAILABLE(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_MEDIASEEKING_AVAILABLE,(Handler),sizeof(KSPROPERTY),sizeof(KSPROPERTY_MEDIAAVAILABLE),NULL,NULL,0,NULL,NULL,0) | |
| 349 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_PREROLL(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_MEDIASEEKING_PREROLL,(Handler),sizeof(KSPROPERTY),sizeof(LONGLONG),NULL,NULL,0,NULL,NULL,0) | |
| 350 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CONVERTTIMEFORMAT(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT,(Handler),sizeof(KSP_TIMEFORMAT),sizeof(LONGLONG),NULL,NULL,0,NULL,NULL,0) | |
| 351 | |
| 352 #define STATIC_KSPROPSETID_Topology 0x720D4AC0L,0x7533,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 353 DEFINE_GUIDSTRUCT("720D4AC0-7533-11D0-A5D6-28DB04C10000",KSPROPSETID_Topology); | |
| 354 #define KSPROPSETID_Topology DEFINE_GUIDNAMED(KSPROPSETID_Topology) | |
| 355 | |
| 356 typedef enum { | |
| 357 KSPROPERTY_TOPOLOGY_CATEGORIES,KSPROPERTY_TOPOLOGY_NODES,KSPROPERTY_TOPOLOGY_CONNECTIONS,KSPROPERTY_TOPOLOGY_NAME | |
| 358 } KSPROPERTY_TOPOLOGY; | |
| 359 | |
| 360 #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_TOPOLOGY_CATEGORIES,(Handler),sizeof(KSPROPERTY),0,NULL,NULL,0,NULL,NULL,0) | |
| 361 #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_TOPOLOGY_NODES,(Handler),sizeof(KSPROPERTY),0,NULL,NULL,0,NULL,NULL,0) | |
| 362 #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_TOPOLOGY_CONNECTIONS,(Handler),sizeof(KSPROPERTY),0,NULL,NULL,0,NULL,NULL,0) | |
| 363 #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_TOPOLOGY_NAME,(Handler),sizeof(KSP_NODE),0,NULL,NULL,0,NULL,NULL,0) | |
| 364 | |
| 365 #define DEFINE_KSPROPERTY_TOPOLOGYSET(TopologySet,Handler)DEFINE_KSPROPERTY_TABLE(TopologySet) { DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler),DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler),DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler),DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)} | |
| 366 | |
| 367 #define STATIC_KSCATEGORY_BRIDGE 0x085AFF00L,0x62CE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 368 DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000",KSCATEGORY_BRIDGE); | |
| 369 #define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE) | |
| 370 | |
| 371 #define STATIC_KSCATEGORY_CAPTURE 0x65E8773DL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 372 DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196",KSCATEGORY_CAPTURE); | |
| 373 #define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE) | |
| 374 | |
| 375 #define STATIC_KSCATEGORY_RENDER 0x65E8773EL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 376 DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196",KSCATEGORY_RENDER); | |
| 377 #define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER) | |
| 378 | |
| 379 #define STATIC_KSCATEGORY_MIXER 0xAD809C00L,0x7B88,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 380 DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000",KSCATEGORY_MIXER); | |
| 381 #define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER) | |
| 382 | |
| 383 #define STATIC_KSCATEGORY_SPLITTER 0x0A4252A0L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 384 DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_SPLITTER); | |
| 385 #define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER) | |
| 386 | |
| 387 #define STATIC_KSCATEGORY_DATACOMPRESSOR 0x1E84C900L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 388 DEFINE_GUIDSTRUCT("1E84C900-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_DATACOMPRESSOR); | |
| 389 #define KSCATEGORY_DATACOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATACOMPRESSOR) | |
| 390 | |
| 391 #define STATIC_KSCATEGORY_DATADECOMPRESSOR 0x2721AE20L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 392 DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_DATADECOMPRESSOR); | |
| 393 #define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR) | |
| 394 | |
| 395 #define STATIC_KSCATEGORY_DATATRANSFORM 0x2EB07EA0L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 396 DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_DATATRANSFORM); | |
| 397 #define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM) | |
| 398 | |
| 399 #define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM 0xCF1DDA2CL,0x9743,0x11D0,0xA3,0xEE,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 400 DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_COMMUNICATIONSTRANSFORM); | |
| 401 #define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM) | |
| 402 | |
| 403 #define STATIC_KSCATEGORY_INTERFACETRANSFORM 0xCF1DDA2DL,0x9743,0x11D0,0xA3,0xEE,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 404 DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_INTERFACETRANSFORM); | |
| 405 #define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANSFORM) | |
| 406 | |
| 407 #define STATIC_KSCATEGORY_MEDIUMTRANSFORM 0xCF1DDA2EL,0x9743,0x11D0,0xA3,0xEE,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 408 DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_MEDIUMTRANSFORM); | |
| 409 #define KSCATEGORY_MEDIUMTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_MEDIUMTRANSFORM) | |
| 410 | |
| 411 #define STATIC_KSCATEGORY_FILESYSTEM 0x760FED5EL,0x9357,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 412 DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196",KSCATEGORY_FILESYSTEM); | |
| 413 #define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM) | |
| 414 | |
| 415 #define STATIC_KSCATEGORY_CLOCK 0x53172480L,0x4791,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 416 DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000",KSCATEGORY_CLOCK); | |
| 417 #define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK) | |
| 418 | |
| 419 #define STATIC_KSCATEGORY_PROXY 0x97EBAACAL,0x95BD,0x11D0,0xA3,0xEA,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 420 DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196",KSCATEGORY_PROXY); | |
| 421 #define KSCATEGORY_PROXY DEFINE_GUIDNAMED(KSCATEGORY_PROXY) | |
| 422 | |
| 423 #define STATIC_KSCATEGORY_QUALITY 0x97EBAACBL,0x95BD,0x11D0,0xA3,0xEA,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 424 DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196",KSCATEGORY_QUALITY); | |
| 425 #define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(KSCATEGORY_QUALITY) | |
| 426 | |
| 427 typedef struct { | |
| 428 ULONG FromNode; | |
| 429 ULONG FromNodePin; | |
| 430 ULONG ToNode; | |
| 431 ULONG ToNodePin; | |
| 432 } KSTOPOLOGY_CONNECTION,*PKSTOPOLOGY_CONNECTION; | |
| 433 | |
| 434 typedef struct { | |
| 435 ULONG CategoriesCount; | |
| 436 const GUID *Categories; | |
| 437 ULONG TopologyNodesCount; | |
| 438 const GUID *TopologyNodes; | |
| 439 ULONG TopologyConnectionsCount; | |
| 440 const KSTOPOLOGY_CONNECTION *TopologyConnections; | |
| 441 const GUID *TopologyNodesNames; | |
| 442 ULONG Reserved; | |
| 443 } KSTOPOLOGY,*PKSTOPOLOGY; | |
| 444 | |
| 445 #define KSFILTER_NODE ((ULONG)-1) | |
| 446 #define KSALL_NODES ((ULONG)-1) | |
| 447 | |
| 448 typedef struct { | |
| 449 ULONG CreateFlags; | |
| 450 ULONG Node; | |
| 451 } KSNODE_CREATE,*PKSNODE_CREATE; | |
| 452 | |
| 453 #define STATIC_KSTIME_FORMAT_NONE STATIC_GUID_NULL | |
| 454 #define KSTIME_FORMAT_NONE GUID_NULL | |
| 455 | |
| 456 #define STATIC_KSTIME_FORMAT_FRAME 0x7b785570L,0x8c82,0x11cf,0xbc,0x0c,0x00,0xaa,0x00,0xac,0x74,0xf6 | |
| 457 DEFINE_GUIDSTRUCT("7b785570-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_FRAME); | |
| 458 #define KSTIME_FORMAT_FRAME DEFINE_GUIDNAMED(KSTIME_FORMAT_FRAME) | |
| 459 | |
| 460 #define STATIC_KSTIME_FORMAT_BYTE 0x7b785571L,0x8c82,0x11cf,0xbc,0x0c,0x00,0xaa,0x00,0xac,0x74,0xf6 | |
| 461 DEFINE_GUIDSTRUCT("7b785571-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_BYTE); | |
| 462 #define KSTIME_FORMAT_BYTE DEFINE_GUIDNAMED(KSTIME_FORMAT_BYTE) | |
| 463 | |
| 464 #define STATIC_KSTIME_FORMAT_SAMPLE 0x7b785572L,0x8c82,0x11cf,0xbc,0x0c,0x00,0xaa,0x00,0xac,0x74,0xf6 | |
| 465 DEFINE_GUIDSTRUCT("7b785572-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_SAMPLE); | |
| 466 #define KSTIME_FORMAT_SAMPLE DEFINE_GUIDNAMED(KSTIME_FORMAT_SAMPLE) | |
| 467 | |
| 468 #define STATIC_KSTIME_FORMAT_FIELD 0x7b785573L,0x8c82,0x11cf,0xbc,0x0c,0x00,0xaa,0x00,0xac,0x74,0xf6 | |
| 469 DEFINE_GUIDSTRUCT("7b785573-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_FIELD); | |
| 470 #define KSTIME_FORMAT_FIELD DEFINE_GUIDNAMED(KSTIME_FORMAT_FIELD) | |
| 471 | |
| 472 #define STATIC_KSTIME_FORMAT_MEDIA_TIME 0x7b785574L,0x8c82,0x11cf,0xbc,0x0c,0x00,0xaa,0x00,0xac,0x74,0xf6 | |
| 473 DEFINE_GUIDSTRUCT("7b785574-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_MEDIA_TIME); | |
| 474 #define KSTIME_FORMAT_MEDIA_TIME DEFINE_GUIDNAMED(KSTIME_FORMAT_MEDIA_TIME) | |
| 475 | |
| 476 typedef KSIDENTIFIER KSPIN_INTERFACE,*PKSPIN_INTERFACE; | |
| 477 | |
| 478 #define STATIC_KSINTERFACESETID_Standard 0x1A8766A0L,0x62CE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 479 DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000",KSINTERFACESETID_Standard); | |
| 480 #define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard) | |
| 481 | |
| 482 typedef enum { | |
| 483 KSINTERFACE_STANDARD_STREAMING,KSINTERFACE_STANDARD_LOOPED_STREAMING,KSINTERFACE_STANDARD_CONTROL | |
| 484 } KSINTERFACE_STANDARD; | |
| 485 | |
| 486 #define STATIC_KSINTERFACESETID_FileIo 0x8C6F932CL,0xE771,0x11D0,0xB8,0xFF,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 487 DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196",KSINTERFACESETID_FileIo); | |
| 488 #define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo) | |
| 489 | |
| 490 typedef enum { | |
| 491 KSINTERFACE_FILEIO_STREAMING | |
| 492 } KSINTERFACE_FILEIO; | |
| 493 | |
| 494 #define KSMEDIUM_TYPE_ANYINSTANCE 0 | |
| 495 | |
| 496 #define STATIC_KSMEDIUMSETID_Standard 0x4747B320L,0x62CE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 497 DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000",KSMEDIUMSETID_Standard); | |
| 498 #define KSMEDIUMSETID_Standard DEFINE_GUIDNAMED(KSMEDIUMSETID_Standard) | |
| 499 | |
| 500 #define KSMEDIUM_STANDARD_DEVIO KSMEDIUM_TYPE_ANYINSTANCE | |
| 501 | |
| 502 #define STATIC_KSPROPSETID_Pin 0x8C134960L,0x51AD,0x11CF,0x87,0x8A,0x94,0xF8,0x01,0xC1,0x00,0x00 | |
| 503 DEFINE_GUIDSTRUCT("8C134960-51AD-11CF-878A-94F801C10000",KSPROPSETID_Pin); | |
| 504 #define KSPROPSETID_Pin DEFINE_GUIDNAMED(KSPROPSETID_Pin) | |
| 505 | |
| 506 typedef enum { | |
| 507 KSPROPERTY_PIN_CINSTANCES,KSPROPERTY_PIN_CTYPES,KSPROPERTY_PIN_DATAFLOW,KSPROPERTY_PIN_DATARANGES,KSPROPERTY_PIN_DATAINTERSECTION, | |
| 508 KSPROPERTY_PIN_INTERFACES,KSPROPERTY_PIN_MEDIUMS,KSPROPERTY_PIN_COMMUNICATION,KSPROPERTY_PIN_GLOBALCINSTANCES,KSPROPERTY_PIN_NECESSARYINSTANCES, | |
| 509 KSPROPERTY_PIN_PHYSICALCONNECTION,KSPROPERTY_PIN_CATEGORY,KSPROPERTY_PIN_NAME,KSPROPERTY_PIN_CONSTRAINEDDATARANGES,KSPROPERTY_PIN_PROPOSEDATAFORMAT | |
| 510 } KSPROPERTY_PIN; | |
| 511 | |
| 512 typedef struct { | |
| 513 KSPROPERTY Property; | |
| 514 ULONG PinId; | |
| 515 ULONG Reserved; | |
| 516 } KSP_PIN,*PKSP_PIN; | |
| 517 | |
| 518 #define KSINSTANCE_INDETERMINATE ((ULONG)-1) | |
| 519 | |
| 520 typedef struct { | |
| 521 ULONG PossibleCount; | |
| 522 ULONG CurrentCount; | |
| 523 } KSPIN_CINSTANCES,*PKSPIN_CINSTANCES; | |
| 524 | |
| 525 typedef enum { | |
| 526 KSPIN_DATAFLOW_IN = 1,KSPIN_DATAFLOW_OUT | |
| 527 } KSPIN_DATAFLOW,*PKSPIN_DATAFLOW; | |
| 528 | |
| 529 #define KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION 0 | |
| 530 #define KSDATAFORMAT_TEMPORAL_COMPRESSION (1 << KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION) | |
| 531 #define KSDATAFORMAT_BIT_ATTRIBUTES 1 | |
| 532 #define KSDATAFORMAT_ATTRIBUTES (1 << KSDATAFORMAT_BIT_ATTRIBUTES) | |
| 533 | |
| 534 #define KSDATARANGE_BIT_ATTRIBUTES 1 | |
| 535 #define KSDATARANGE_ATTRIBUTES (1 << KSDATARANGE_BIT_ATTRIBUTES) | |
| 536 #define KSDATARANGE_BIT_REQUIRED_ATTRIBUTES 2 | |
| 537 #define KSDATARANGE_REQUIRED_ATTRIBUTES (1 << KSDATARANGE_BIT_REQUIRED_ATTRIBUTES) | |
| 538 | |
| 539 typedef union { | |
| 540 __MINGW_EXTENSION struct { | |
| 541 ULONG FormatSize; | |
| 542 ULONG Flags; | |
| 543 ULONG SampleSize; | |
| 544 ULONG Reserved; | |
| 545 GUID MajorFormat; | |
| 546 GUID SubFormat; | |
| 547 GUID Specifier; | |
| 548 }; | |
| 549 LONGLONG Alignment; | |
| 550 } KSDATAFORMAT,*PKSDATAFORMAT,KSDATARANGE,*PKSDATARANGE; | |
| 551 | |
| 552 #define KSATTRIBUTE_REQUIRED 0x00000001 | |
| 553 | |
| 554 typedef struct { | |
| 555 ULONG Size; | |
| 556 ULONG Flags; | |
| 557 GUID Attribute; | |
| 558 } KSATTRIBUTE,*PKSATTRIBUTE; | |
| 559 | |
| 560 typedef enum { | |
| 561 KSPIN_COMMUNICATION_NONE,KSPIN_COMMUNICATION_SINK,KSPIN_COMMUNICATION_SOURCE,KSPIN_COMMUNICATION_BOTH,KSPIN_COMMUNICATION_BRIDGE | |
| 562 } KSPIN_COMMUNICATION,*PKSPIN_COMMUNICATION; | |
| 563 | |
| 564 typedef KSIDENTIFIER KSPIN_MEDIUM,*PKSPIN_MEDIUM; | |
| 565 | |
| 566 typedef struct { | |
| 567 KSPIN_INTERFACE Interface; | |
| 568 KSPIN_MEDIUM Medium; | |
| 569 ULONG PinId; | |
| 570 HANDLE PinToHandle; | |
| 571 KSPRIORITY Priority; | |
| 572 } KSPIN_CONNECT,*PKSPIN_CONNECT; | |
| 573 | |
| 574 typedef struct { | |
| 575 ULONG Size; | |
| 576 ULONG Pin; | |
| 577 WCHAR SymbolicLinkName[1]; | |
| 578 } KSPIN_PHYSICALCONNECTION,*PKSPIN_PHYSICALCONNECTION; | |
| 579 | |
| 580 #define DEFINE_KSPIN_INTERFACE_TABLE(tablename) const KSPIN_INTERFACE tablename[] = | |
| 581 #define DEFINE_KSPIN_INTERFACE_ITEM(guid,INTERFACE) { STATICGUIDOF(guid),(INTERFACE),0 } | |
| 582 #define DEFINE_KSPIN_MEDIUM_TABLE(tablename) const KSPIN_MEDIUM tablename[] = | |
| 583 #define DEFINE_KSPIN_MEDIUM_ITEM(guid,medium) DEFINE_KSPIN_INTERFACE_ITEM(guid,medium) | |
| 584 #define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_CINSTANCES,(Handler),sizeof(KSP_PIN),sizeof(KSPIN_CINSTANCES),NULL,NULL,0,NULL,NULL,0) | |
| 585 #define DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_CTYPES,(Handler),sizeof(KSPROPERTY),sizeof(ULONG),NULL,NULL,0,NULL,NULL,0) | |
| 586 #define DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_DATAFLOW,(Handler),sizeof(KSP_PIN),sizeof(KSPIN_DATAFLOW),NULL,NULL,0,NULL,NULL,0) | |
| 587 #define DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_DATARANGES,(Handler),sizeof(KSP_PIN),0,NULL,NULL,0,NULL,NULL,0) | |
| 588 #define DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_DATAINTERSECTION,(Handler),sizeof(KSP_PIN) + sizeof(KSMULTIPLE_ITEM),0,NULL,NULL,0,NULL,NULL,0) | |
| 589 #define DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_INTERFACES,(Handler),sizeof(KSP_PIN),0,NULL,NULL,0,NULL,NULL,0) | |
| 590 #define DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_MEDIUMS,(Handler),sizeof(KSP_PIN),0,NULL,NULL,0,NULL,NULL,0) | |
| 591 #define DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_COMMUNICATION,(Handler),sizeof(KSP_PIN),sizeof(KSPIN_COMMUNICATION),NULL,NULL,0,NULL,NULL,0) | |
| 592 #define DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_GLOBALCINSTANCES,(Handler),sizeof(KSP_PIN),sizeof(KSPIN_CINSTANCES),NULL,NULL,0,NULL,NULL,0) | |
| 593 #define DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_NECESSARYINSTANCES,(Handler),sizeof(KSP_PIN),sizeof(ULONG),NULL,NULL,0,NULL,NULL,0) | |
| 594 #define DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_PHYSICALCONNECTION,(Handler),sizeof(KSP_PIN),0,NULL,NULL,0,NULL,NULL,0) | |
| 595 #define DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_CATEGORY,(Handler),sizeof(KSP_PIN),sizeof(GUID),NULL,NULL,0,NULL,NULL,0) | |
| 596 #define DEFINE_KSPROPERTY_ITEM_PIN_NAME(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_NAME,(Handler),sizeof(KSP_PIN),0,NULL,NULL,0,NULL,NULL,0) | |
| 597 #define DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_CONSTRAINEDDATARANGES,(Handler),sizeof(KSP_PIN),0,NULL,NULL,0,NULL,NULL,0) | |
| 598 #define DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_PIN_PROPOSEDATAFORMAT,NULL,sizeof(KSP_PIN),sizeof(KSDATAFORMAT),(Handler),NULL,0,NULL,NULL,0) | |
| 599 #define DEFINE_KSPROPERTY_PINSET(PinSet,PropGeneral,PropInstances,PropIntersection)DEFINE_KSPROPERTY_TABLE(PinSet) { DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral)} | |
| 600 #define DEFINE_KSPROPERTY_PINSETCONSTRAINED(PinSet,PropGeneral,PropInstances,PropIntersection)DEFINE_KSPROPERTY_TABLE(PinSet) { DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)} | |
| 601 #define STATIC_KSNAME_Filter 0x9b365890L,0x165f,0x11d0,0xa1,0x95,0x00,0x20,0xaf,0xd1,0x56,0xe4 | |
| 602 DEFINE_GUIDSTRUCT("9b365890-165f-11d0-a195-0020afd156e4",KSNAME_Filter); | |
| 603 #define KSNAME_Filter DEFINE_GUIDNAMED(KSNAME_Filter) | |
| 604 | |
| 605 #define KSSTRING_Filter L"{9B365890-165F-11D0-A195-0020AFD156E4}" | |
| 606 | |
| 607 #define STATIC_KSNAME_Pin 0x146F1A80L,0x4791,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 608 DEFINE_GUIDSTRUCT("146F1A80-4791-11D0-A5D6-28DB04C10000",KSNAME_Pin); | |
| 609 #define KSNAME_Pin DEFINE_GUIDNAMED(KSNAME_Pin) | |
| 610 | |
| 611 #define KSSTRING_Pin L"{146F1A80-4791-11D0-A5D6-28DB04C10000}" | |
| 612 | |
| 613 #define STATIC_KSNAME_Clock 0x53172480L,0x4791,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 614 DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000",KSNAME_Clock); | |
| 615 #define KSNAME_Clock DEFINE_GUIDNAMED(KSNAME_Clock) | |
| 616 | |
| 617 #define KSSTRING_Clock L"{53172480-4791-11D0-A5D6-28DB04C10000}" | |
| 618 | |
| 619 #define STATIC_KSNAME_Allocator 0x642F5D00L,0x4791,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 620 DEFINE_GUIDSTRUCT("642F5D00-4791-11D0-A5D6-28DB04C10000",KSNAME_Allocator); | |
| 621 #define KSNAME_Allocator DEFINE_GUIDNAMED(KSNAME_Allocator) | |
| 622 | |
| 623 #define KSSTRING_Allocator L"{642F5D00-4791-11D0-A5D6-28DB04C10000}" | |
| 624 | |
| 625 #define KSSTRING_AllocatorEx L"{091BB63B-603F-11D1-B067-00A0C9062802}" | |
| 626 | |
| 627 #define STATIC_KSNAME_TopologyNode 0x0621061AL,0xEE75,0x11D0,0xB9,0x15,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 628 DEFINE_GUIDSTRUCT("0621061A-EE75-11D0-B915-00A0C9223196",KSNAME_TopologyNode); | |
| 629 #define KSNAME_TopologyNode DEFINE_GUIDNAMED(KSNAME_TopologyNode) | |
| 630 | |
| 631 #define KSSTRING_TopologyNode L"{0621061A-EE75-11D0-B915-00A0C9223196}" | |
| 632 | |
| 633 #define STATIC_KSDATAFORMAT_TYPE_WILDCARD STATIC_GUID_NULL | |
| 634 #define KSDATAFORMAT_TYPE_WILDCARD GUID_NULL | |
| 635 | |
| 636 #define STATIC_KSDATAFORMAT_SUBTYPE_WILDCARD STATIC_GUID_NULL | |
| 637 #define KSDATAFORMAT_SUBTYPE_WILDCARD GUID_NULL | |
| 638 | |
| 639 #define STATIC_KSDATAFORMAT_TYPE_STREAM 0xE436EB83L,0x524F,0x11CE,0x9F,0x53,0x00,0x20,0xAF,0x0B,0xA7,0x70 | |
| 640 DEFINE_GUIDSTRUCT("E436EB83-524F-11CE-9F53-0020AF0BA770",KSDATAFORMAT_TYPE_STREAM); | |
| 641 #define KSDATAFORMAT_TYPE_STREAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STREAM) | |
| 642 | |
| 643 #define STATIC_KSDATAFORMAT_SUBTYPE_NONE 0xE436EB8EL,0x524F,0x11CE,0x9F,0x53,0x00,0x20,0xAF,0x0B,0xA7,0x70 | |
| 644 DEFINE_GUIDSTRUCT("E436EB8E-524F-11CE-9F53-0020AF0BA770",KSDATAFORMAT_SUBTYPE_NONE); | |
| 645 #define KSDATAFORMAT_SUBTYPE_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NONE) | |
| 646 | |
| 647 #define STATIC_KSDATAFORMAT_SPECIFIER_WILDCARD STATIC_GUID_NULL | |
| 648 #define KSDATAFORMAT_SPECIFIER_WILDCARD GUID_NULL | |
| 649 | |
| 650 #define STATIC_KSDATAFORMAT_SPECIFIER_FILENAME 0xAA797B40L,0xE974,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 651 DEFINE_GUIDSTRUCT("AA797B40-E974-11CF-A5D6-28DB04C10000",KSDATAFORMAT_SPECIFIER_FILENAME); | |
| 652 #define KSDATAFORMAT_SPECIFIER_FILENAME DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_FILENAME) | |
| 653 | |
| 654 #define STATIC_KSDATAFORMAT_SPECIFIER_FILEHANDLE 0x65E8773CL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 655 DEFINE_GUIDSTRUCT("65E8773C-8F56-11D0-A3B9-00A0C9223196",KSDATAFORMAT_SPECIFIER_FILEHANDLE); | |
| 656 #define KSDATAFORMAT_SPECIFIER_FILEHANDLE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_FILEHANDLE) | |
| 657 | |
| 658 #define STATIC_KSDATAFORMAT_SPECIFIER_NONE 0x0F6417D6L,0xC318,0x11D0,0xA4,0x3F,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 659 DEFINE_GUIDSTRUCT("0F6417D6-C318-11D0-A43F-00A0C9223196",KSDATAFORMAT_SPECIFIER_NONE); | |
| 660 #define KSDATAFORMAT_SPECIFIER_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_NONE) | |
| 661 | |
| 662 #define STATIC_KSPROPSETID_Quality 0xD16AD380L,0xAC1A,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 663 DEFINE_GUIDSTRUCT("D16AD380-AC1A-11CF-A5D6-28DB04C10000",KSPROPSETID_Quality); | |
| 664 #define KSPROPSETID_Quality DEFINE_GUIDNAMED(KSPROPSETID_Quality) | |
| 665 | |
| 666 typedef enum { | |
| 667 KSPROPERTY_QUALITY_REPORT,KSPROPERTY_QUALITY_ERROR | |
| 668 } KSPROPERTY_QUALITY; | |
| 669 | |
| 670 #define DEFINE_KSPROPERTY_ITEM_QUALITY_REPORT(GetHandler,SetHandler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_QUALITY_REPORT,(GetHandler),sizeof(KSPROPERTY),sizeof(KSQUALITY),(SetHandler),NULL,0,NULL,NULL,0) | |
| 671 | |
| 672 #define DEFINE_KSPROPERTY_ITEM_QUALITY_ERROR(GetHandler,SetHandler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_QUALITY_ERROR,(GetHandler),sizeof(KSPROPERTY),sizeof(KSERROR),(SetHandler),NULL,0,NULL,NULL,0) | |
| 673 | |
| 674 #define STATIC_KSPROPSETID_Connection 0x1D58C920L,0xAC9B,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 675 DEFINE_GUIDSTRUCT("1D58C920-AC9B-11CF-A5D6-28DB04C10000",KSPROPSETID_Connection); | |
| 676 #define KSPROPSETID_Connection DEFINE_GUIDNAMED(KSPROPSETID_Connection) | |
| 677 | |
| 678 typedef enum { | |
| 679 KSPROPERTY_CONNECTION_STATE,KSPROPERTY_CONNECTION_PRIORITY,KSPROPERTY_CONNECTION_DATAFORMAT,KSPROPERTY_CONNECTION_ALLOCATORFRAMING,KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,KSPROPERTY_CONNECTION_ACQUIREORDERING,KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,KSPROPERTY_CONNECTION_STARTAT | |
| 680 } KSPROPERTY_CONNECTION; | |
| 681 | |
| 682 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_STATE(GetHandler,SetHandler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_CONNECTION_STATE,(GetHandler),sizeof(KSPROPERTY),sizeof(KSSTATE),(SetHandler),NULL,0,NULL,NULL,0) | |
| 683 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_PRIORITY(GetHandler,SetHandler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_CONNECTION_PRIORITY,(GetHandler),sizeof(KSPROPERTY),sizeof(KSPRIORITY),(SetHandler),NULL,0,NULL,NULL,0) | |
| 684 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_DATAFORMAT(GetHandler,SetHandler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_CONNECTION_DATAFORMAT,(GetHandler),sizeof(KSPROPERTY),0,(SetHandler),NULL,0,NULL,NULL,0) | |
| 685 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_CONNECTION_ALLOCATORFRAMING,(Handler),sizeof(KSPROPERTY),sizeof(KSALLOCATOR_FRAMING),NULL,NULL,0,NULL,NULL,0) | |
| 686 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING_EX(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,(Handler),sizeof(KSPROPERTY),0,NULL,NULL,0,NULL,NULL,0) | |
| 687 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_PROPOSEDATAFORMAT(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,NULL,sizeof(KSPROPERTY),sizeof(KSDATAFORMAT),(Handler),NULL,0,NULL,NULL,0) | |
| 688 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_ACQUIREORDERING(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_CONNECTION_ACQUIREORDERING,(Handler),sizeof(KSPROPERTY),sizeof(int),NULL,NULL,0,NULL,NULL,0) | |
| 689 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_STARTAT(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_CONNECTION_STARTAT,NULL,sizeof(KSPROPERTY),sizeof(KSRELATIVEEVENT),(Handler),NULL,0,NULL,NULL,0) | |
| 690 | |
| 691 #define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER 0x00000001 | |
| 692 #define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY 0x00000002 | |
| 693 #define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY 0x00000004 | |
| 694 #define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE 0x00000008 | |
| 695 #define KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY 0x80000000 | |
| 696 | |
| 697 #define KSALLOCATOR_OPTIONF_COMPATIBLE 0x00000001 | |
| 698 #define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY 0x00000002 | |
| 699 #define KSALLOCATOR_OPTIONF_VALID 0x00000003 | |
| 700 | |
| 701 #define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT 0x00000010 | |
| 702 #define KSALLOCATOR_FLAG_DEVICE_SPECIFIC 0x00000020 | |
| 703 #define KSALLOCATOR_FLAG_CAN_ALLOCATE 0x00000040 | |
| 704 #define KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO 0x00000080 | |
| 705 #define KSALLOCATOR_FLAG_NO_FRAME_INTEGRITY 0x00000100 | |
| 706 #define KSALLOCATOR_FLAG_MULTIPLE_OUTPUT 0x00000200 | |
| 707 #define KSALLOCATOR_FLAG_CYCLE 0x00000400 | |
| 708 #define KSALLOCATOR_FLAG_ALLOCATOR_EXISTS 0x00000800 | |
| 709 #define KSALLOCATOR_FLAG_INDEPENDENT_RANGES 0x00001000 | |
| 710 #define KSALLOCATOR_FLAG_ATTENTION_STEPPING 0x00002000 | |
| 711 | |
| 712 typedef struct { | |
| 713 __MINGW_EXTENSION union { | |
| 714 ULONG OptionsFlags; | |
| 715 ULONG RequirementsFlags; | |
| 716 }; | |
| 717 ULONG PoolType; | |
| 718 ULONG Frames; | |
| 719 ULONG FrameSize; | |
| 720 ULONG FileAlignment; | |
| 721 ULONG Reserved; | |
| 722 } KSALLOCATOR_FRAMING,*PKSALLOCATOR_FRAMING; | |
| 723 | |
| 724 typedef struct { | |
| 725 ULONG MinFrameSize; | |
| 726 ULONG MaxFrameSize; | |
| 727 ULONG Stepping; | |
| 728 } KS_FRAMING_RANGE,*PKS_FRAMING_RANGE; | |
| 729 | |
| 730 typedef struct { | |
| 731 KS_FRAMING_RANGE Range; | |
| 732 ULONG InPlaceWeight; | |
| 733 ULONG NotInPlaceWeight; | |
| 734 } KS_FRAMING_RANGE_WEIGHTED,*PKS_FRAMING_RANGE_WEIGHTED; | |
| 735 | |
| 736 typedef struct { | |
| 737 ULONG RatioNumerator; | |
| 738 ULONG RatioDenominator; | |
| 739 ULONG RatioConstantMargin; | |
| 740 } KS_COMPRESSION,*PKS_COMPRESSION; | |
| 741 | |
| 742 typedef struct { | |
| 743 GUID MemoryType; | |
| 744 GUID BusType; | |
| 745 ULONG MemoryFlags; | |
| 746 ULONG BusFlags; | |
| 747 ULONG Flags; | |
| 748 ULONG Frames; | |
| 749 ULONG FileAlignment; | |
| 750 ULONG MemoryTypeWeight; | |
| 751 KS_FRAMING_RANGE PhysicalRange; | |
| 752 KS_FRAMING_RANGE_WEIGHTED FramingRange; | |
| 753 } KS_FRAMING_ITEM,*PKS_FRAMING_ITEM; | |
| 754 | |
| 755 typedef struct { | |
| 756 ULONG CountItems; | |
| 757 ULONG PinFlags; | |
| 758 KS_COMPRESSION OutputCompression; | |
| 759 ULONG PinWeight; | |
| 760 KS_FRAMING_ITEM FramingItem[1]; | |
| 761 } KSALLOCATOR_FRAMING_EX,*PKSALLOCATOR_FRAMING_EX; | |
| 762 | |
| 763 #define KSMEMORY_TYPE_WILDCARD GUID_NULL | |
| 764 #define STATIC_KSMEMORY_TYPE_WILDCARD STATIC_GUID_NULL | |
| 765 | |
| 766 #define KSMEMORY_TYPE_DONT_CARE GUID_NULL | |
| 767 #define STATIC_KSMEMORY_TYPE_DONT_CARE STATIC_GUID_NULL | |
| 768 | |
| 769 #define KS_TYPE_DONT_CARE GUID_NULL | |
| 770 #define STATIC_KS_TYPE_DONT_CARE STATIC_GUID_NULL | |
| 771 | |
| 772 #define STATIC_KSMEMORY_TYPE_SYSTEM 0x091bb638L,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02 | |
| 773 DEFINE_GUIDSTRUCT("091bb638-603f-11d1-b067-00a0c9062802",KSMEMORY_TYPE_SYSTEM); | |
| 774 #define KSMEMORY_TYPE_SYSTEM DEFINE_GUIDNAMED(KSMEMORY_TYPE_SYSTEM) | |
| 775 | |
| 776 #define STATIC_KSMEMORY_TYPE_USER 0x8cb0fc28L,0x7893,0x11d1,0xb0,0x69,0x00,0xa0,0xc9,0x06,0x28,0x02 | |
| 777 DEFINE_GUIDSTRUCT("8cb0fc28-7893-11d1-b069-00a0c9062802",KSMEMORY_TYPE_USER); | |
| 778 #define KSMEMORY_TYPE_USER DEFINE_GUIDNAMED(KSMEMORY_TYPE_USER) | |
| 779 | |
| 780 #define STATIC_KSMEMORY_TYPE_KERNEL_PAGED 0xd833f8f8L,0x7894,0x11d1,0xb0,0x69,0x00,0xa0,0xc9,0x06,0x28,0x02 | |
| 781 DEFINE_GUIDSTRUCT("d833f8f8-7894-11d1-b069-00a0c9062802",KSMEMORY_TYPE_KERNEL_PAGED); | |
| 782 #define KSMEMORY_TYPE_KERNEL_PAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_PAGED) | |
| 783 | |
| 784 #define STATIC_KSMEMORY_TYPE_KERNEL_NONPAGED 0x4a6d5fc4L,0x7895,0x11d1,0xb0,0x69,0x00,0xa0,0xc9,0x06,0x28,0x02 | |
| 785 DEFINE_GUIDSTRUCT("4a6d5fc4-7895-11d1-b069-00a0c9062802",KSMEMORY_TYPE_KERNEL_NONPAGED); | |
| 786 #define KSMEMORY_TYPE_KERNEL_NONPAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_NONPAGED) | |
| 787 | |
| 788 #define STATIC_KSMEMORY_TYPE_DEVICE_UNKNOWN 0x091bb639L,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02 | |
| 789 DEFINE_GUIDSTRUCT("091bb639-603f-11d1-b067-00a0c9062802",KSMEMORY_TYPE_DEVICE_UNKNOWN); | |
| 790 #define KSMEMORY_TYPE_DEVICE_UNKNOWN DEFINE_GUIDNAMED(KSMEMORY_TYPE_DEVICE_UNKNOWN) | |
| 791 | |
| 792 #define DECLARE_SIMPLE_FRAMING_EX(FramingExName,MemoryType,Flags,Frames,Alignment,MinFrameSize,MaxFrameSize) const KSALLOCATOR_FRAMING_EX FramingExName = { 1,0,{ 1,1,0 },0,{ { MemoryType,STATIC_KS_TYPE_DONT_CARE,0,0,Flags,Frames,Alignment,0,{ 0,(ULONG)-1,1 },{ { MinFrameSize,MaxFrameSize,1 },0,0 } } } } | |
| 793 | |
| 794 #define SetDefaultKsCompression(KsCompressionPointer) { KsCompressionPointer->RatioNumerator = 1; KsCompressionPointer->RatioDenominator = 1; KsCompressionPointer->RatioConstantMargin = 0;} | |
| 795 #define SetDontCareKsFramingRange(KsFramingRangePointer) { KsFramingRangePointer->MinFrameSize = 0; KsFramingRangePointer->MaxFrameSize = (ULONG) -1; KsFramingRangePointer->Stepping = 1;} | |
| 796 #define SetKsFramingRange(KsFramingRangePointer,P_MinFrameSize,P_MaxFrameSize) { KsFramingRangePointer->MinFrameSize = P_MinFrameSize; KsFramingRangePointer->MaxFrameSize = P_MaxFrameSize; KsFramingRangePointer->Stepping = 1;} | |
| 797 #define SetKsFramingRangeWeighted(KsFramingRangeWeightedPointer,P_MinFrameSize,P_MaxFrameSize) { KS_FRAMING_RANGE *KsFramingRange = &KsFramingRangeWeightedPointer->Range; SetKsFramingRange(KsFramingRange,P_MinFrameSize,P_MaxFrameSize); KsFramingRangeWeightedPointer->InPlaceWeight = 0; KsFramingRangeWeightedPointer->NotInPlaceWeight = 0;} | |
| 798 | |
| 799 #define INITIALIZE_SIMPLE_FRAMING_EX(FramingExPointer,P_MemoryType,P_Flags,P_Frames,P_Alignment,P_MinFrameSize,P_MaxFrameSize) { KS_COMPRESSION *KsCompression = &FramingExPointer->OutputCompression; KS_FRAMING_RANGE *KsFramingRange = &FramingExPointer->FramingItem[0].PhysicalRange; KS_FRAMING_RANGE_WEIGHTED *KsFramingRangeWeighted = &FramingExPointer->FramingItem[0].FramingRange; FramingExPointer->CountItems = 1; FramingExPointer->PinFlags = 0; SetDefaultKsCompression(KsCompression); FramingExPointer->PinWeight = 0; FramingExPointer->FramingItem[0].MemoryType = P_MemoryType; FramingExPointer->FramingItem[0].BusType = KS_TYPE_DONT_CARE; FramingExPointer->FramingItem[0].MemoryFlags = 0; FramingExPointer->FramingItem[0].BusFlags = 0; FramingExPointer->FramingItem[0].Flags = P_Flags; FramingExPointer->FramingItem[0].Frames = P_Frames; FramingExPointer->FramingItem[0].FileAlignment = P_Alignment; FramingExPointer->FramingItem[0].MemoryTypeWeight = 0; SetDontCareKsFramingRange(KsFramingRange); SetKsFramingRangeWeighted(KsFramingRangeWeighted,P_MinFrameSize,P_MaxFrameSize);} | |
| 800 | |
| 801 #define STATIC_KSEVENTSETID_StreamAllocator 0x75d95571L,0x073c,0x11d0,0xa1,0x61,0x00,0x20,0xaf,0xd1,0x56,0xe4 | |
| 802 DEFINE_GUIDSTRUCT("75d95571-073c-11d0-a161-0020afd156e4",KSEVENTSETID_StreamAllocator); | |
| 803 #define KSEVENTSETID_StreamAllocator DEFINE_GUIDNAMED(KSEVENTSETID_StreamAllocator) | |
| 804 | |
| 805 typedef enum { | |
| 806 KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME,KSEVENT_STREAMALLOCATOR_FREEFRAME | |
| 807 } KSEVENT_STREAMALLOCATOR; | |
| 808 | |
| 809 #define STATIC_KSMETHODSETID_StreamAllocator 0xcf6e4341L,0xec87,0x11cf,0xa1,0x30,0x00,0x20,0xaf,0xd1,0x56,0xe4 | |
| 810 DEFINE_GUIDSTRUCT("cf6e4341-ec87-11cf-a130-0020afd156e4",KSMETHODSETID_StreamAllocator); | |
| 811 #define KSMETHODSETID_StreamAllocator DEFINE_GUIDNAMED(KSMETHODSETID_StreamAllocator) | |
| 812 | |
| 813 typedef enum { | |
| 814 KSMETHOD_STREAMALLOCATOR_ALLOC,KSMETHOD_STREAMALLOCATOR_FREE | |
| 815 } KSMETHOD_STREAMALLOCATOR; | |
| 816 | |
| 817 #define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(Handler) DEFINE_KSMETHOD_ITEM(KSMETHOD_STREAMALLOCATOR_ALLOC,KSMETHOD_TYPE_WRITE,(Handler),sizeof(KSMETHOD),sizeof(PVOID),NULL) | |
| 818 #define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(Handler) DEFINE_KSMETHOD_ITEM(KSMETHOD_STREAMALLOCATOR_FREE,KSMETHOD_TYPE_READ,(Handler),sizeof(KSMETHOD),sizeof(PVOID),NULL) | |
| 819 #define DEFINE_KSMETHOD_ALLOCATORSET(AllocatorSet,MethodAlloc,MethodFree)DEFINE_KSMETHOD_TABLE(AllocatorSet) { DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(MethodAlloc),DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(MethodFree)} | |
| 820 | |
| 821 #define STATIC_KSPROPSETID_StreamAllocator 0xcf6e4342L,0xec87,0x11cf,0xa1,0x30,0x00,0x20,0xaf,0xd1,0x56,0xe4 | |
| 822 DEFINE_GUIDSTRUCT("cf6e4342-ec87-11cf-a130-0020afd156e4",KSPROPSETID_StreamAllocator); | |
| 823 #define KSPROPSETID_StreamAllocator DEFINE_GUIDNAMED(KSPROPSETID_StreamAllocator) | |
| 824 | |
| 825 typedef struct { | |
| 826 KSALLOCATOR_FRAMING Framing; | |
| 827 ULONG AllocatedFrames; | |
| 828 ULONG Reserved; | |
| 829 } KSSTREAMALLOCATOR_STATUS,*PKSSTREAMALLOCATOR_STATUS; | |
| 830 | |
| 831 typedef struct { | |
| 832 KSALLOCATOR_FRAMING_EX Framing; | |
| 833 ULONG AllocatedFrames; | |
| 834 ULONG Reserved; | |
| 835 } KSSTREAMALLOCATOR_STATUS_EX,*PKSSTREAMALLOCATOR_STATUS_EX; | |
| 836 | |
| 837 #define KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT 0x00000001 | |
| 838 #define KSSTREAM_HEADER_OPTIONSF_PREROLL 0x00000002 | |
| 839 #define KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY 0x00000004 | |
| 840 #define KSSTREAM_HEADER_OPTIONSF_TYPECHANGED 0x00000008 | |
| 841 #define KSSTREAM_HEADER_OPTIONSF_TIMEVALID 0x00000010 | |
| 842 #define KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY 0x00000040 | |
| 843 #define KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE 0x00000080 | |
| 844 #define KSSTREAM_HEADER_OPTIONSF_DURATIONVALID 0x00000100 | |
| 845 #define KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 0x00000200 | |
| 846 #define KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA 0x80000000 | |
| 847 | |
| 848 typedef struct { | |
| 849 LONGLONG Time; | |
| 850 ULONG Numerator; | |
| 851 ULONG Denominator; | |
| 852 } KSTIME,*PKSTIME; | |
| 853 | |
| 854 typedef struct { | |
| 855 ULONG Size; | |
| 856 ULONG TypeSpecificFlags; | |
| 857 KSTIME PresentationTime; | |
| 858 LONGLONG Duration; | |
| 859 ULONG FrameExtent; | |
| 860 ULONG DataUsed; | |
| 861 PVOID Data; | |
| 862 ULONG OptionsFlags; | |
| 863 #ifdef _WIN64 | |
| 864 ULONG Reserved; | |
| 865 #endif | |
| 866 } KSSTREAM_HEADER,*PKSSTREAM_HEADER; | |
| 867 | |
| 868 #define STATIC_KSPROPSETID_StreamInterface 0x1fdd8ee1L,0x9cd3,0x11d0,0x82,0xaa,0x00,0x00,0xf8,0x22,0xfe,0x8a | |
| 869 DEFINE_GUIDSTRUCT("1fdd8ee1-9cd3-11d0-82aa-0000f822fe8a",KSPROPSETID_StreamInterface); | |
| 870 #define KSPROPSETID_StreamInterface DEFINE_GUIDNAMED(KSPROPSETID_StreamInterface) | |
| 871 | |
| 872 typedef enum { | |
| 873 KSPROPERTY_STREAMINTERFACE_HEADERSIZE | |
| 874 } KSPROPERTY_STREAMINTERFACE; | |
| 875 | |
| 876 #define DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE(GetHandler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_STREAMINTERFACE_HEADERSIZE,(GetHandler),sizeof(KSPROPERTY),sizeof(ULONG),NULL,NULL,0,NULL,NULL,0) | |
| 877 #define DEFINE_KSPROPERTY_STREAMINTERFACESET(StreamInterfaceSet,HeaderSizeHandler)DEFINE_KSPROPERTY_TABLE(StreamInterfaceSet) { DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE(HeaderSizeHandler)} | |
| 878 | |
| 879 #define STATIC_KSPROPSETID_Stream 0x65aaba60L,0x98ae,0x11cf,0xa1,0x0d,0x00,0x20,0xaf,0xd1,0x56,0xe4 | |
| 880 DEFINE_GUIDSTRUCT("65aaba60-98ae-11cf-a10d-0020afd156e4",KSPROPSETID_Stream); | |
| 881 #define KSPROPSETID_Stream DEFINE_GUIDNAMED(KSPROPSETID_Stream) | |
| 882 | |
| 883 typedef enum { | |
| 884 KSPROPERTY_STREAM_ALLOCATOR,KSPROPERTY_STREAM_QUALITY,KSPROPERTY_STREAM_DEGRADATION,KSPROPERTY_STREAM_MASTERCLOCK,KSPROPERTY_STREAM_TIMEFORMAT,KSPROPERTY_STREAM_PRESENTATIONTIME,KSPROPERTY_STREAM_PRESENTATIONEXTENT,KSPROPERTY_STREAM_FRAMETIME,KSPROPERTY_STREAM_RATECAPABILITY,KSPROPERTY_STREAM_RATE,KSPROPERTY_STREAM_PIPE_ID | |
| 885 } KSPROPERTY_STREAM; | |
| 886 | |
| 887 #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) | |
| 888 #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) | |
| 889 #define DEFINE_KSPROPERTY_ITEM_STREAM_DEGRADATION(GetHandler,SetHandler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_STREAM_DEGRADATION,(GetHandler),sizeof(KSPROPERTY),0,(SetHandler),NULL,0,NULL,NULL,0) | |
| 890 #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) | |
| 891 #define DEFINE_KSPROPERTY_ITEM_STREAM_TIMEFORMAT(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_STREAM_TIMEFORMAT,(Handler),sizeof(KSPROPERTY),sizeof(GUID),NULL,NULL,0,NULL,NULL,0) | |
| 892 #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) | |
| 893 #define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONEXTENT(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_STREAM_PRESENTATIONEXTENT,(Handler),sizeof(KSPROPERTY),sizeof(LONGLONG),NULL,NULL,0,NULL,NULL,0) | |
| 894 #define DEFINE_KSPROPERTY_ITEM_STREAM_FRAMETIME(Handler) DEFINE_KSPROPERTY_ITEM(KSPROPERTY_STREAM_FRAMETIME,(Handler),sizeof(KSPROPERTY),sizeof(KSFRAMETIME),NULL,NULL,0,NULL,NULL,0) | |
| 895 #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) | |
| 896 #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) | |
| 897 #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) | |
| 898 | |
| 899 typedef struct { | |
| 900 HANDLE QualityManager; | |
| 901 PVOID Context; | |
| 902 } KSQUALITY_MANAGER,*PKSQUALITY_MANAGER; | |
| 903 | |
| 904 typedef struct { | |
| 905 LONGLONG Duration; | |
| 906 ULONG FrameFlags; | |
| 907 ULONG Reserved; | |
| 908 } KSFRAMETIME,*PKSFRAMETIME; | |
| 909 | |
| 910 #define KSFRAMETIME_VARIABLESIZE 0x00000001 | |
| 911 | |
| 912 typedef struct { | |
| 913 LONGLONG PresentationStart; | |
| 914 LONGLONG Duration; | |
| 915 KSPIN_INTERFACE Interface; | |
| 916 LONG Rate; | |
| 917 ULONG Flags; | |
| 918 } KSRATE,*PKSRATE; | |
| 919 | |
| 920 #define KSRATE_NOPRESENTATIONSTART 0x00000001 | |
| 921 #define KSRATE_NOPRESENTATIONDURATION 0x00000002 | |
| 922 | |
| 923 typedef struct { | |
| 924 KSPROPERTY Property; | |
| 925 KSRATE Rate; | |
| 926 } KSRATE_CAPABILITY,*PKSRATE_CAPABILITY; | |
| 927 | |
| 928 #define STATIC_KSPROPSETID_Clock 0xDF12A4C0L,0xAC17,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 929 DEFINE_GUIDSTRUCT("DF12A4C0-AC17-11CF-A5D6-28DB04C10000",KSPROPSETID_Clock); | |
| 930 #define KSPROPSETID_Clock DEFINE_GUIDNAMED(KSPROPSETID_Clock) | |
| 931 | |
| 932 #define NANOSECONDS 10000000 | |
| 933 #define KSCONVERT_PERFORMANCE_TIME(Frequency,PerformanceTime) ((((ULONGLONG)(ULONG)(PerformanceTime).HighPart *NANOSECONDS / (Frequency)) << 32) + ((((((ULONGLONG)(ULONG)(PerformanceTime).HighPart *NANOSECONDS) % (Frequency)) << 32) + ((ULONGLONG)(PerformanceTime).LowPart *NANOSECONDS)) / (Frequency))) | |
| 934 | |
| 935 typedef struct { | |
| 936 ULONG CreateFlags; | |
| 937 } KSCLOCK_CREATE,*PKSCLOCK_CREATE; | |
| 938 | |
| 939 typedef struct { | |
| 940 LONGLONG Time; | |
| 941 LONGLONG SystemTime; | |
| 942 } KSCORRELATED_TIME,*PKSCORRELATED_TIME; | |
| 943 | |
| 944 typedef struct { | |
| 945 LONGLONG Granularity; | |
| 946 LONGLONG Error; | |
| 947 } KSRESOLUTION,*PKSRESOLUTION; | |
| 948 | |
| 949 typedef enum { | |
| 950 KSPROPERTY_CLOCK_TIME,KSPROPERTY_CLOCK_PHYSICALTIME,KSPROPERTY_CLOCK_CORRELATEDTIME,KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, | |
| 951 KSPROPERTY_CLOCK_RESOLUTION,KSPROPERTY_CLOCK_STATE | |
| 952 } KSPROPERTY_CLOCK; | |
| 953 | |
| 954 #define STATIC_KSEVENTSETID_Clock 0x364D8E20L,0x62C7,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 955 DEFINE_GUIDSTRUCT("364D8E20-62C7-11CF-A5D6-28DB04C10000",KSEVENTSETID_Clock); | |
| 956 #define KSEVENTSETID_Clock DEFINE_GUIDNAMED(KSEVENTSETID_Clock) | |
| 957 | |
| 958 typedef enum { | |
| 959 KSEVENT_CLOCK_INTERVAL_MARK,KSEVENT_CLOCK_POSITION_MARK | |
| 960 } KSEVENT_CLOCK_POSITION; | |
| 961 | |
| 962 #define STATIC_KSEVENTSETID_Connection 0x7f4bcbe0L,0x9ea5,0x11cf,0xa5,0xd6,0x28,0xdb,0x04,0xc1,0x00,0x00 | |
| 963 DEFINE_GUIDSTRUCT("7f4bcbe0-9ea5-11cf-a5d6-28db04c10000",KSEVENTSETID_Connection); | |
| 964 #define KSEVENTSETID_Connection DEFINE_GUIDNAMED(KSEVENTSETID_Connection) | |
| 965 | |
| 966 typedef enum { | |
| 967 KSEVENT_CONNECTION_POSITIONUPDATE,KSEVENT_CONNECTION_DATADISCONTINUITY,KSEVENT_CONNECTION_TIMEDISCONTINUITY,KSEVENT_CONNECTION_PRIORITY, | |
| 968 KSEVENT_CONNECTION_ENDOFSTREAM | |
| 969 } KSEVENT_CONNECTION; | |
| 970 | |
| 971 typedef struct { | |
| 972 PVOID Context; | |
| 973 ULONG Proportion; | |
| 974 LONGLONG DeltaTime; | |
| 975 } KSQUALITY,*PKSQUALITY; | |
| 976 | |
| 977 typedef struct { | |
| 978 PVOID Context; | |
| 979 ULONG Status; | |
| 980 } KSERROR,*PKSERROR; | |
| 981 | |
| 982 typedef KSIDENTIFIER KSDEGRADE,*PKSDEGRADE; | |
| 983 | |
| 984 #define STATIC_KSDEGRADESETID_Standard 0x9F564180L,0x704C,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00 | |
| 985 DEFINE_GUIDSTRUCT("9F564180-704C-11D0-A5D6-28DB04C10000",KSDEGRADESETID_Standard); | |
| 986 #define KSDEGRADESETID_Standard DEFINE_GUIDNAMED(KSDEGRADESETID_Standard) | |
| 987 | |
| 988 typedef enum { | |
| 989 KSDEGRADE_STANDARD_SAMPLE,KSDEGRADE_STANDARD_QUALITY,KSDEGRADE_STANDARD_COMPUTATION,KSDEGRADE_STANDARD_SKIP | |
| 990 } KSDEGRADE_STANDARD; | |
| 991 | |
| 992 #ifndef PACK_PRAGMAS_NOT_SUPPORTED | |
| 993 #include <pshpack1.h> | |
| 994 #endif | |
| 995 | |
| 996 typedef struct { | |
| 997 GUID PropertySet; | |
| 998 ULONG Count; | |
| 999 } KSPROPERTY_SERIALHDR,*PKSPROPERTY_SERIALHDR; | |
| 1000 | |
| 1001 #ifndef PACK_PRAGMAS_NOT_SUPPORTED | |
| 1002 #include <poppack.h> | |
| 1003 #endif | |
| 1004 | |
| 1005 typedef struct { | |
| 1006 KSIDENTIFIER PropTypeSet; | |
| 1007 ULONG Id; | |
| 1008 ULONG PropertyLength; | |
| 1009 } KSPROPERTY_SERIAL,*PKSPROPERTY_SERIAL; | |
| 1010 | |
| 1011 typedef PVOID KSOBJECT_BAG; | |
| 1012 | |
| 1013 typedef BOOLEAN (*PFNKSGENERATEEVENTCALLBACK)(PVOID Context,PKSEVENT_ENTRY EventEntry); | |
| 1014 typedef NTSTATUS (*PFNKSDEVICECREATE)(PKSDEVICE Device); | |
| 1015 typedef NTSTATUS (*PFNKSDEVICEPNPSTART)(PKSDEVICE Device,PIRP Irp,PCM_RESOURCE_LIST TranslatedResourceList,PCM_RESOURCE_LIST UntranslatedResourceList); | |
| 1016 typedef NTSTATUS (*PFNKSDEVICE)(PKSDEVICE Device); | |
| 1017 typedef NTSTATUS (*PFNKSDEVICEIRP)(PKSDEVICE Device,PIRP Irp); | |
| 1018 typedef void (*PFNKSDEVICEIRPVOID)(PKSDEVICE Device,PIRP Irp); | |
| 1019 typedef NTSTATUS (*PFNKSDEVICEQUERYCAPABILITIES)(PKSDEVICE Device,PIRP Irp,PDEVICE_CAPABILITIES Capabilities); | |
| 1020 typedef NTSTATUS (*PFNKSDEVICEQUERYPOWER)(PKSDEVICE Device,PIRP Irp,DEVICE_POWER_STATE DeviceTo,DEVICE_POWER_STATE DeviceFrom,SYSTEM_POWER_STATE SystemTo,SYSTEM_POWER_STATE SystemFrom,POWER_ACTION Action); | |
| 1021 typedef void (*PFNKSDEVICESETPOWER)(PKSDEVICE Device,PIRP Irp,DEVICE_POWER_STATE To,DEVICE_POWER_STATE From); | |
| 1022 typedef NTSTATUS (*PFNKSFILTERFACTORYVOID)(PKSFILTERFACTORY FilterFactory); | |
| 1023 typedef void (*PFNKSFILTERFACTORYPOWER)(PKSFILTERFACTORY FilterFactory,DEVICE_POWER_STATE State); | |
| 1024 typedef NTSTATUS (*PFNKSFILTERIRP)(PKSFILTER Filter,PIRP Irp); | |
| 1025 typedef NTSTATUS (*PFNKSFILTERPROCESS)(PKSFILTER Filter,PKSPROCESSPIN_INDEXENTRY Index); | |
| 1026 typedef NTSTATUS (*PFNKSFILTERVOID)(PKSFILTER Filter); | |
| 1027 typedef void (*PFNKSFILTERPOWER)(PKSFILTER Filter,DEVICE_POWER_STATE State); | |
| 1028 typedef NTSTATUS (*PFNKSPINIRP)(PKSPIN Pin,PIRP Irp); | |
| 1029 typedef NTSTATUS (*PFNKSPINSETDEVICESTATE)(PKSPIN Pin,KSSTATE ToState,KSSTATE FromState); | |
| 1030 typedef NTSTATUS (*PFNKSPINSETDATAFORMAT)(PKSPIN Pin,PKSDATAFORMAT OldFormat,PKSMULTIPLE_ITEM OldAttributeList,const KSDATARANGE *DataRange,const KSATTRIBUTE_LIST *AttributeRange); | |
| 1031 typedef NTSTATUS (*PFNKSPINHANDSHAKE)(PKSPIN Pin,PKSHANDSHAKE In,PKSHANDSHAKE Out); | |
| 1032 typedef NTSTATUS (*PFNKSPIN)(PKSPIN Pin); | |
| 1033 typedef void (*PFNKSPINVOID)(PKSPIN Pin); | |
| 1034 typedef void (*PFNKSPINPOWER)(PKSPIN Pin,DEVICE_POWER_STATE State); | |
| 1035 typedef BOOLEAN (*PFNKSPINSETTIMER)(PKSPIN Pin,PKTIMER Timer,LARGE_INTEGER DueTime,PKDPC Dpc); | |
| 1036 typedef BOOLEAN (*PFNKSPINCANCELTIMER)(PKSPIN Pin,PKTIMER Timer); | |
| 1037 typedef LONGLONG (FASTCALL *PFNKSPINCORRELATEDTIME)(PKSPIN Pin,PLONGLONG SystemTime); | |
| 1038 typedef void (*PFNKSPINRESOLUTION)(PKSPIN Pin,PKSRESOLUTION Resolution); | |
| 1039 typedef NTSTATUS (*PFNKSPININITIALIZEALLOCATOR)(PKSPIN Pin,PKSALLOCATOR_FRAMING AllocatorFraming,PVOID *Context); | |
| 1040 typedef void (*PFNKSSTREAMPOINTER)(PKSSTREAM_POINTER StreamPointer); | |
| 1041 | |
| 1042 typedef struct KSAUTOMATION_TABLE_ KSAUTOMATION_TABLE,*PKSAUTOMATION_TABLE; | |
| 1043 struct KSAUTOMATION_TABLE_ { | |
| 1044 ULONG PropertySetsCount; | |
| 1045 ULONG PropertyItemSize; | |
| 1046 const KSPROPERTY_SET *PropertySets; | |
| 1047 ULONG MethodSetsCount; | |
| 1048 ULONG MethodItemSize; | |
| 1049 const KSMETHOD_SET *MethodSets; | |
| 1050 ULONG EventSetsCount; | |
| 1051 ULONG EventItemSize; | |
| 1052 const KSEVENT_SET *EventSets; | |
| 1053 #ifndef _WIN64 | |
| 1054 PVOID Alignment; | |
| 1055 #endif | |
| 1056 }; | |
| 1057 | |
| 1058 #define DEFINE_KSAUTOMATION_TABLE(table) const KSAUTOMATION_TABLE table = | |
| 1059 #define DEFINE_KSAUTOMATION_PROPERTIES(table) SIZEOF_ARRAY(table),sizeof(KSPROPERTY_ITEM),table | |
| 1060 #define DEFINE_KSAUTOMATION_METHODS(table) SIZEOF_ARRAY(table),sizeof(KSMETHOD_ITEM),table | |
| 1061 #define DEFINE_KSAUTOMATION_EVENTS(table) SIZEOF_ARRAY(table),sizeof(KSEVENT_ITEM),table | |
| 1062 #define DEFINE_KSAUTOMATION_PROPERTIES_NULL 0,sizeof(KSPROPERTY_ITEM),NULL | |
| 1063 #define DEFINE_KSAUTOMATION_METHODS_NULL 0,sizeof(KSMETHOD_ITEM),NULL | |
| 1064 #define DEFINE_KSAUTOMATION_EVENTS_NULL 0,sizeof(KSEVENT_ITEM),NULL | |
| 1065 | |
| 1066 #define MIN_DEV_VER_FOR_QI (0x100) | |
| 1067 | |
| 1068 struct _KSDEVICE_DISPATCH { | |
| 1069 PFNKSDEVICECREATE Add; | |
| 1070 PFNKSDEVICEPNPSTART Start; | |
| 1071 PFNKSDEVICE PostStart; | |
| 1072 PFNKSDEVICEIRP QueryStop; | |
| 1073 PFNKSDEVICEIRPVOID CancelStop; | |
| 1074 PFNKSDEVICEIRPVOID Stop; | |
| 1075 PFNKSDEVICEIRP QueryRemove; | |
| 1076 PFNKSDEVICEIRPVOID CancelRemove; | |
| 1077 PFNKSDEVICEIRPVOID Remove; | |
| 1078 PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities; | |
| 1079 PFNKSDEVICEIRPVOID SurpriseRemoval; | |
| 1080 PFNKSDEVICEQUERYPOWER QueryPower; | |
| 1081 PFNKSDEVICESETPOWER SetPower; | |
| 1082 PFNKSDEVICEIRP QueryInterface; | |
| 1083 }; | |
| 1084 | |
| 1085 struct _KSFILTER_DISPATCH { | |
| 1086 PFNKSFILTERIRP Create; | |
| 1087 PFNKSFILTERIRP Close; | |
| 1088 PFNKSFILTERPROCESS Process; | |
| 1089 PFNKSFILTERVOID Reset; | |
| 1090 }; | |
| 1091 | |
| 1092 struct _KSPIN_DISPATCH { | |
| 1093 PFNKSPINIRP Create; | |
| 1094 PFNKSPINIRP Close; | |
| 1095 PFNKSPIN Process; | |
| 1096 PFNKSPINVOID Reset; | |
| 1097 PFNKSPINSETDATAFORMAT SetDataFormat; | |
| 1098 PFNKSPINSETDEVICESTATE SetDeviceState; | |
| 1099 PFNKSPIN Connect; | |
| 1100 PFNKSPINVOID Disconnect; | |
| 1101 const KSCLOCK_DISPATCH *Clock; | |
| 1102 const KSALLOCATOR_DISPATCH *Allocator; | |
| 1103 }; | |
| 1104 | |
| 1105 struct _KSCLOCK_DISPATCH { | |
| 1106 PFNKSPINSETTIMER SetTimer; | |
| 1107 PFNKSPINCANCELTIMER CancelTimer; | |
| 1108 PFNKSPINCORRELATEDTIME CorrelatedTime; | |
| 1109 PFNKSPINRESOLUTION Resolution; | |
| 1110 }; | |
| 1111 | |
| 1112 struct _KSALLOCATOR_DISPATCH { | |
| 1113 PFNKSPININITIALIZEALLOCATOR InitializeAllocator; | |
| 1114 PFNKSDELETEALLOCATOR DeleteAllocator; | |
| 1115 PFNKSDEFAULTALLOCATE Allocate; | |
| 1116 PFNKSDEFAULTFREE Free; | |
| 1117 }; | |
| 1118 | |
| 1119 #define KSDEVICE_DESCRIPTOR_VERSION (0x100) | |
| 1120 | |
| 1121 struct _KSDEVICE_DESCRIPTOR { | |
| 1122 const KSDEVICE_DISPATCH *Dispatch; | |
| 1123 ULONG FilterDescriptorsCount; | |
| 1124 const KSFILTER_DESCRIPTOR*const *FilterDescriptors; | |
| 1125 ULONG Version; | |
| 1126 | |
| 1127 }; | |
| 1128 | |
| 1129 struct _KSFILTER_DESCRIPTOR { | |
| 1130 const KSFILTER_DISPATCH *Dispatch; | |
| 1131 const KSAUTOMATION_TABLE *AutomationTable; | |
| 1132 ULONG Version; | |
| 1133 #define KSFILTER_DESCRIPTOR_VERSION ((ULONG)-1) | |
| 1134 ULONG Flags; | |
| 1135 #define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001 | |
| 1136 #define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002 | |
| 1137 #define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004 | |
| 1138 #define KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES 0x00000008 | |
| 1139 #define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000 | |
| 1140 const GUID *ReferenceGuid; | |
| 1141 ULONG PinDescriptorsCount; | |
| 1142 ULONG PinDescriptorSize; | |
| 1143 const KSPIN_DESCRIPTOR_EX *PinDescriptors; | |
| 1144 ULONG CategoriesCount; | |
| 1145 const GUID *Categories; | |
| 1146 ULONG NodeDescriptorsCount; | |
| 1147 ULONG NodeDescriptorSize; | |
| 1148 const KSNODE_DESCRIPTOR *NodeDescriptors; | |
| 1149 ULONG ConnectionsCount; | |
| 1150 const KSTOPOLOGY_CONNECTION *Connections; | |
| 1151 const KSCOMPONENTID *ComponentId; | |
| 1152 }; | |
| 1153 | |
| 1154 #define DEFINE_KSFILTER_DESCRIPTOR(descriptor) const KSFILTER_DESCRIPTOR descriptor = | |
| 1155 #define DEFINE_KSFILTER_PIN_DESCRIPTORS(table) SIZEOF_ARRAY(table),sizeof(table[0]),table | |
| 1156 #define DEFINE_KSFILTER_CATEGORIES(table) SIZEOF_ARRAY(table),table | |
| 1157 #define DEFINE_KSFILTER_CATEGORY(category) 1,&(category) | |
| 1158 #define DEFINE_KSFILTER_CATEGORIES_NULL 0,NULL | |
| 1159 #define DEFINE_KSFILTER_NODE_DESCRIPTORS(table) SIZEOF_ARRAY(table),sizeof(table[0]),table | |
| 1160 #define DEFINE_KSFILTER_NODE_DESCRIPTORS_NULL 0,sizeof(KSNODE_DESCRIPTOR),NULL | |
| 1161 #define DEFINE_KSFILTER_CONNECTIONS(table) SIZEOF_ARRAY(table),table | |
| 1162 #define DEFINE_KSFILTER_DEFAULT_CONNECTIONS 0,NULL | |
| 1163 #define DEFINE_KSFILTER_DESCRIPTOR_TABLE(table) const KSFILTER_DESCRIPTOR*const table[] = | |
| 1164 | |
| 1165 struct _KSPIN_DESCRIPTOR_EX { | |
| 1166 const KSPIN_DISPATCH *Dispatch; | |
| 1167 const KSAUTOMATION_TABLE *AutomationTable; | |
| 1168 KSPIN_DESCRIPTOR PinDescriptor; | |
| 1169 ULONG Flags; | |
| 1170 #define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING | |
| 1171 #define KSPIN_FLAG_CRITICAL_PROCESSING KSFILTER_FLAG_CRITICAL_PROCESSING | |
| 1172 #define KSPIN_FLAG_HYPERCRITICAL_PROCESSING KSFILTER_FLAG_HYPERCRITICAL_PROCESSING | |
| 1173 #define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING 0x00000008 | |
| 1174 #define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING 0x00000010 | |
| 1175 #define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL 0x00000020 | |
| 1176 #define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING 0x00000040 | |
| 1177 #define KSPIN_FLAG_ENFORCE_FIFO 0x00000080 | |
| 1178 #define KSPIN_FLAG_GENERATE_MAPPINGS 0x00000100 | |
| 1179 #define KSPIN_FLAG_DISTINCT_TRAILING_EDGE 0x00000200 | |
| 1180 #define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY 0x00010000 | |
| 1181 #define KSPIN_FLAG_SPLITTER 0x00020000 | |
| 1182 #define KSPIN_FLAG_USE_STANDARD_TRANSPORT 0x00040000 | |
| 1183 #define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT 0x00080000 | |
| 1184 #define KSPIN_FLAG_FIXED_FORMAT 0x00100000 | |
| 1185 #define KSPIN_FLAG_GENERATE_EOS_EVENTS 0x00200000 | |
| 1186 #define KSPIN_FLAG_RENDERER (KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY|KSPIN_FLAG_GENERATE_EOS_EVENTS) | |
| 1187 #define KSPIN_FLAG_IMPLEMENT_CLOCK 0x00400000 | |
| 1188 #define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING 0x00800000 | |
| 1189 #define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE 0x01000000 | |
| 1190 #define KSPIN_FLAG_DENY_USERMODE_ACCESS 0x80000000 | |
| 1191 ULONG InstancesPossible; | |
| 1192 ULONG InstancesNecessary; | |
| 1193 const KSALLOCATOR_FRAMING_EX *AllocatorFraming; | |
| 1194 PFNKSINTERSECTHANDLEREX IntersectHandler; | |
| 1195 }; | |
| 1196 | |
| 1197 #define DEFINE_KSPIN_DEFAULT_INTERFACES 0,NULL | |
| 1198 #define DEFINE_KSPIN_DEFAULT_MEDIUMS 0,NULL | |
| 1199 | |
| 1200 struct _KSNODE_DESCRIPTOR { | |
| 1201 const KSAUTOMATION_TABLE *AutomationTable; | |
| 1202 const GUID *Type; | |
| 1203 const GUID *Name; | |
| 1204 #ifndef _WIN64 | |
| 1205 PVOID Alignment; | |
| 1206 #endif | |
| 1207 }; | |
| 1208 | |
| 1209 #ifndef _WIN64 | |
| 1210 #define DEFINE_NODE_DESCRIPTOR(automation,type,name) { (automation),(type),(name),NULL } | |
| 1211 #else | |
| 1212 #define DEFINE_NODE_DESCRIPTOR(automation,type,name) { (automation),(type),(name) } | |
| 1213 #endif | |
| 1214 | |
| 1215 struct _KSDEVICE { | |
| 1216 const KSDEVICE_DESCRIPTOR *Descriptor; | |
| 1217 KSOBJECT_BAG Bag; | |
| 1218 PVOID Context; | |
| 1219 PDEVICE_OBJECT FunctionalDeviceObject; | |
| 1220 PDEVICE_OBJECT PhysicalDeviceObject; | |
| 1221 PDEVICE_OBJECT NextDeviceObject; | |
| 1222 BOOLEAN Started; | |
| 1223 SYSTEM_POWER_STATE SystemPowerState; | |
| 1224 DEVICE_POWER_STATE DevicePowerState; | |
| 1225 }; | |
| 1226 | |
| 1227 struct _KSFILTERFACTORY { | |
| 1228 const KSFILTER_DESCRIPTOR *FilterDescriptor; | |
| 1229 KSOBJECT_BAG Bag; | |
| 1230 PVOID Context; | |
| 1231 }; | |
| 1232 | |
| 1233 struct _KSFILTER { | |
| 1234 const KSFILTER_DESCRIPTOR *Descriptor; | |
| 1235 KSOBJECT_BAG Bag; | |
| 1236 PVOID Context; | |
| 1237 }; | |
| 1238 | |
| 1239 struct _KSPIN { | |
| 1240 const KSPIN_DESCRIPTOR_EX *Descriptor; | |
| 1241 KSOBJECT_BAG Bag; | |
| 1242 PVOID Context; | |
| 1243 ULONG Id; | |
| 1244 KSPIN_COMMUNICATION Communication; | |
| 1245 BOOLEAN ConnectionIsExternal; | |
| 1246 KSPIN_INTERFACE ConnectionInterface; | |
| 1247 KSPIN_MEDIUM ConnectionMedium; | |
| 1248 KSPRIORITY ConnectionPriority; | |
| 1249 PKSDATAFORMAT ConnectionFormat; | |
| 1250 PKSMULTIPLE_ITEM AttributeList; | |
| 1251 ULONG StreamHeaderSize; | |
| 1252 KSPIN_DATAFLOW DataFlow; | |
| 1253 KSSTATE DeviceState; | |
| 1254 KSRESET ResetState; | |
| 1255 KSSTATE ClientState; | |
| 1256 }; | |
| 1257 | |
| 1258 struct _KSMAPPING { | |
| 1259 PHYSICAL_ADDRESS PhysicalAddress; | |
| 1260 ULONG ByteCount; | |
| 1261 ULONG Alignment; | |
| 1262 }; | |
| 1263 | |
| 1264 struct _KSSTREAM_POINTER_OFFSET { | |
| 1265 PUCHAR Data; | |
| 1266 #ifndef _WIN64 | |
| 1267 PVOID Alignment; | |
| 1268 #endif | |
| 1269 ULONG Count; | |
| 1270 ULONG Remaining; | |
| 1271 }; | |
| 1272 | |
| 1273 struct _KSSTREAM_POINTER { | |
| 1274 PVOID Context; | |
| 1275 PKSPIN Pin; | |
| 1276 PKSSTREAM_HEADER StreamHeader; | |
| 1277 PKSSTREAM_POINTER_OFFSET Offset; | |
| 1278 KSSTREAM_POINTER_OFFSET OffsetIn; | |
| 1279 KSSTREAM_POINTER_OFFSET OffsetOut; | |
| 1280 }; | |
| 1281 | |
| 1282 struct _KSPROCESSPIN { | |
| 1283 PKSPIN Pin; | |
| 1284 PKSSTREAM_POINTER StreamPointer; | |
| 1285 PKSPROCESSPIN InPlaceCounterpart; | |
| 1286 PKSPROCESSPIN DelegateBranch; | |
| 1287 PKSPROCESSPIN CopySource; | |
| 1288 PVOID Data; | |
| 1289 ULONG BytesAvailable; | |
| 1290 ULONG BytesUsed; | |
| 1291 ULONG Flags; | |
| 1292 BOOLEAN Terminate; | |
| 1293 }; | |
| 1294 | |
| 1295 struct _KSPROCESSPIN_INDEXENTRY { | |
| 1296 PKSPROCESSPIN *Pins; | |
| 1297 ULONG Count; | |
| 1298 }; | |
| 1299 | |
| 1300 typedef enum { | |
| 1301 KsObjectTypeDevice,KsObjectTypeFilterFactory,KsObjectTypeFilter,KsObjectTypePin | |
| 1302 } KSOBJECTTYPE; | |
| 1303 | |
| 1304 typedef void (*PFNKSFREE)(PVOID Data); | |
| 1305 typedef void (*PFNKSPINFRAMERETURN)(PKSPIN Pin,PVOID Data,ULONG Size,PMDL Mdl,PVOID Context,NTSTATUS Status); | |
| 1306 typedef void (*PFNKSPINIRPCOMPLETION)(PKSPIN Pin,PIRP Irp); | |
| 1307 | |
| 1308 #if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) | |
| 1309 #ifndef _IKsControl_ | |
| 1310 #define _IKsControl_ | |
| 1311 | |
| 1312 typedef struct IKsControl *PIKSCONTROL; | |
| 1313 | |
| 1314 #ifndef DEFINE_ABSTRACT_UNKNOWN | |
| 1315 #define DEFINE_ABSTRACT_UNKNOWN() STDMETHOD_(NTSTATUS,QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; | |
| 1316 #endif | |
| 1317 | |
| 1318 #undef INTERFACE | |
| 1319 #define INTERFACE IKsControl | |
| 1320 DECLARE_INTERFACE_(IKsControl,IUnknown) { | |
| 1321 DEFINE_ABSTRACT_UNKNOWN() | |
| 1322 STDMETHOD_(NTSTATUS,KsProperty)(THIS_ PKSPROPERTY Property,ULONG PropertyLength,PVOID PropertyData,ULONG DataLength,ULONG *BytesReturned) PURE; | |
| 1323 STDMETHOD_(NTSTATUS,KsMethod)(THIS_ PKSMETHOD Method,ULONG MethodLength,PVOID MethodData,ULONG DataLength,ULONG *BytesReturned) PURE; | |
| 1324 STDMETHOD_(NTSTATUS,KsEvent)(THIS_ PKSEVENT Event,ULONG EventLength,PVOID EventData,ULONG DataLength,ULONG *BytesReturned) PURE; | |
| 1325 }; | |
| 1326 typedef struct IKsReferenceClock *PIKSREFERENCECLOCK; | |
| 1327 | |
| 1328 #undef INTERFACE | |
| 1329 #define INTERFACE IKsReferenceClock | |
| 1330 DECLARE_INTERFACE_(IKsReferenceClock,IUnknown) { | |
| 1331 DEFINE_ABSTRACT_UNKNOWN() | |
| 1332 STDMETHOD_(LONGLONG,GetTime)(THIS) PURE; | |
| 1333 STDMETHOD_(LONGLONG,GetPhysicalTime)(THIS) PURE; | |
| 1334 STDMETHOD_(LONGLONG,GetCorrelatedTime)(THIS_ PLONGLONG SystemTime) PURE; | |
| 1335 STDMETHOD_(LONGLONG,GetCorrelatedPhysicalTime)(THIS_ PLONGLONG SystemTime) PURE; | |
| 1336 STDMETHOD_(NTSTATUS,GetResolution)(THIS_ PKSRESOLUTION Resolution) PURE; | |
| 1337 STDMETHOD_(NTSTATUS,GetState)(THIS_ PKSSTATE State) PURE; | |
| 1338 }; | |
| 1339 #undef INTERFACE | |
| 1340 | |
| 1341 #define INTERFACE IKsDeviceFunctions | |
| 1342 DECLARE_INTERFACE_(IKsDeviceFunctions,IUnknown) { | |
| 1343 DEFINE_ABSTRACT_UNKNOWN() | |
| 1344 STDMETHOD_(NTSTATUS,RegisterAdapterObjectEx)(THIS_ PADAPTER_OBJECT AdapterObject,PDEVICE_DESCRIPTION DeviceDescription,ULONG NumberOfMapRegisters,ULONG MaxMappingsByteCount,ULONG MappingTableStride) PURE; | |
| 1345 }; | |
| 1346 | |
| 1347 #undef INTERFACE | |
| 1348 #define STATIC_IID_IKsControl 0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96 | |
| 1349 DEFINE_GUID(IID_IKsControl,0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96); | |
| 1350 #define STATIC_IID_IKsFastClock 0xc9902485,0xc180,0x11d2,0x84,0x73,0xd4,0x23,0x94,0x45,0x9e,0x5e | |
| 1351 DEFINE_GUID(IID_IKsFastClock,0xc9902485,0xc180,0x11d2,0x84,0x73,0xd4,0x23,0x94,0x45,0x9e,0x5e); | |
| 1352 #define STATIC_IID_IKsDeviceFunctions 0xe234f2e2,0xbd69,0x4f8c,0xb3,0xf2,0x7c,0xd7,0x9e,0xd4,0x66,0xbd | |
| 1353 DEFINE_GUID(IID_IKsDeviceFunctions,0xe234f2e2,0xbd69,0x4f8c,0xb3,0xf2,0x7c,0xd7,0x9e,0xd4,0x66,0xbd); | |
| 1354 #endif | |
| 1355 #endif | |
| 1356 | |
| 1357 #ifdef __cplusplus | |
| 1358 extern "C" { | |
| 1359 #endif | |
| 1360 | |
| 1361 #ifdef _KSDDK_ | |
| 1362 #define KSDDKAPI | |
| 1363 #else | |
| 1364 #define KSDDKAPI DECLSPEC_IMPORT | |
| 1365 #endif | |
| 1366 | |
| 1367 #ifndef KS_NO_CREATE_FUNCTIONS | |
| 1368 KSDDKAPI DWORD WINAPI KsCreateAllocator(HANDLE ConnectionHandle,PKSALLOCATOR_FRAMING AllocatorFraming,PHANDLE AllocatorHandle); | |
| 1369 KSDDKAPI DWORD NTAPI KsCreateClock(HANDLE ConnectionHandle,PKSCLOCK_CREATE ClockCreate,PHANDLE ClockHandle); | |
| 1370 KSDDKAPI DWORD WINAPI KsCreatePin(HANDLE FilterHandle,PKSPIN_CONNECT Connect,ACCESS_MASK DesiredAccess,PHANDLE ConnectionHandle); | |
| 1371 KSDDKAPI DWORD WINAPI KsCreateTopologyNode(HANDLE ParentHandle,PKSNODE_CREATE NodeCreate,ACCESS_MASK DesiredAccess,PHANDLE NodeHandle); | |
| 1372 #endif | |
| 1373 | |
| 1374 #ifdef __cplusplus | |
| 1375 } | |
| 1376 #endif | |
| 1377 | |
| 1378 #define DENY_USERMODE_ACCESS(pIrp,CompleteRequest) if(pIrp->RequestorMode!=KernelMode) { pIrp->IoStatus.Information = 0; pIrp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; if(CompleteRequest) IoCompleteRequest (pIrp,IO_NO_INCREMENT); return STATUS_INVALID_DEVICE_REQUEST; } | |
| 1379 #endif |
