8 This is a basic stubbing of the Kernel Streaming API header. It is
9 very incomplete - a lot of the #defines are not set to any value at all.
11 Some of the structs/funcs may be incorrectly grouped.
13 GUIDs need to be defined properly.
15 AVStream functionality (XP and above, DirectX 8.0 and above) will NOT
16 implemented for a while.
18 Some example code for interaction from usermode:
25 sizeof(KS_SEEKING_CAPABILITIES),
40 #define KSDDKAPI //DECLSPEC_IMPORT /* TODO */
44 #define KSFILTER_NODE ((ULONG)-1)
45 #define KSALL_NODES ((ULONG)-1)
47 #define KSSTRING_Filter L"{9B365890-165F-11D0-A195-0020AFD156E4}"
48 #define KSSTRING_Pin L"{146F1A80-4791-11D0-A5D6-28DB04C10000}"
49 #define KSSTRING_Clock L"{53172480-4791-11D0-A5D6-28DB04C10000}"
50 #define KSSTRING_Allocator L"{642F5D00-4791-11D0-A5D6-28DB04C10000}"
51 #define KSSTRING_AllocatorEx L"{091BB63B-603F-11D1-B067-00A0C9062802}"
52 #define KSSTRING_TopologyNode L"{0621061A-EE75-11D0-B915-00A0C9223196}"
54 #define KSDATAFORMAT_BIT_ATTRIBUTES 1
55 #define KSDATAFORMAT_ATTRIBUTES (1 << KSDATAFORMAT_BIT_ATTRIBUTES)
58 typedef PVOID PKSWORKER
;
62 #define SIZEOF_ARRAY(a) (sizeof(a)/sizeof((a)[0]))
65 /* ===============================================================
66 GUID definition helpers
72 #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name
74 #define DEFINE_GUIDEX(name) EXTERN_C const GUID name
79 #define STATICGUIDOF(guid) STATIC_##guid
83 #if defined(__cplusplus) && _MSC_VER >= 1100
84 #define DEFINE_GUIDSTRUCT(guid, name) struct __declspec(uuid(guid)) name
85 #define DEFINE_GUIDNAMED(name) __uuidof(struct name)
87 #define DEFINE_GUIDSTRUCT(guid, name) DEFINE_GUIDEX(name)
88 #define DEFINE_GUIDNAMED(name) name
92 #define STATIC_GUID_NULL \
93 0x00000000L, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
94 DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000", GUID_NULL
);
95 #define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL)
98 #define STATIC_KSNAME_Filter\
99 0x9b365890L, 0x165f, 0x11d0, {0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
100 DEFINE_GUIDSTRUCT("9b365890-165f-11d0-a195-0020afd156e4", KSNAME_Filter
);
101 #define KSNAME_Filter DEFINE_GUIDNAMED(KSNAME_Filter)
103 #define STATIC_KSMEMORY_TYPE_KERNEL_PAGED \
104 0xd833f8f8L, 0x7894, 0x11d1, {0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02}
105 DEFINE_GUIDSTRUCT("d833f8f8-7894-11d1-b069-00a0c9062802", KSMEMORY_TYPE_KERNEL_PAGED
);
106 #define KSMEMORY_TYPE_KERNEL_PAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_PAGED)
108 /* ===============================================================
112 #define IOCTL_KS_DISABLE_EVENT \
119 #define IOCTL_KS_ENABLE_EVENT \
127 #define IOCTL_KS_METHOD \
135 #define IOCTL_KS_PROPERTY \
142 #define IOCTL_KS_WRITE_STREAM \
149 #define IOCTL_KS_READ_STREAM \
156 #define IOCTL_KS_RESET_STATE \
164 /* ===============================================================
168 #define STATIC_KSCATEGORY_BRIDGE \
169 0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
170 DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000", KSCATEGORY_BRIDGE
);
171 #define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE)
173 #define STATIC_KSCATEGORY_CAPTURE \
174 0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
175 DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_CAPTURE
);
176 #define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE)
178 #define STATIC_KSCATEGORY_RENDER \
179 0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
180 DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_RENDER
);
181 #define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER)
183 #define STATIC_KSCATEGORY_MIXER \
184 0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
185 DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000", KSCATEGORY_MIXER
);
186 #define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER)
188 #define STATIC_KSCATEGORY_SPLITTER \
189 0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
190 DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_SPLITTER
);
191 #define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER)
193 #define STATIC_KSCATEGORY_DATACOMPRESSOR \
194 0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
195 DEFINE_GUIDSTRUCT("1E84C900-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATACOMPRESSOR
);
196 #define KSCATEGORY_DATACOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATACOMPRESSOR)
198 #define STATIC_KSCATEGORY_DATADECOMPRESSOR \
199 0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
200 DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATADECOMPRESSOR
);
201 #define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR)
203 #define STATIC_KSCATEGORY_DATATRANSFORM \
204 0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
205 DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATATRANSFORM
);
206 #define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM)
208 #define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \
209 0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
210 DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_COMMUNICATIONSTRANSFORM
);
211 #define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM)
213 #define STATIC_KSCATEGORY_INTERFACETRANSFORM \
214 0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
215 DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_INTERFACETRANSFORM
);
216 #define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANSFORM)
218 #define STATIC_KSCATEGORY_MEDIUMTRANSFORM \
219 0xCF1DDA2EL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
220 DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_MEDIUMTRANSFORM
);
221 #define KSCATEGORY_MEDIUMTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_MEDIUMTRANSFORM)
223 #define STATIC_KSCATEGORY_FILESYSTEM \
224 0x760FED5EL, 0x9357, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
225 DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196", KSCATEGORY_FILESYSTEM
);
226 #define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM)
228 #define STATIC_KSCATEGORY_CLOCK \
229 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
230 DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000", KSCATEGORY_CLOCK
);
231 #define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK)
233 #define STATIC_KSCATEGORY_PROXY \
234 0x97EBAACAL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
235 DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_PROXY
);
236 #define KSCATEGORY_PROXY DEFINE_GUIDNAMED(KSCATEGORY_PROXY)
238 #define STATIC_KSCATEGORY_QUALITY \
239 0x97EBAACBL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
240 DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_QUALITY
);
241 #define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(KSCATEGORY_QUALITY)
243 /* ===============================================================
252 } KSIDENTIFIER
, *PKSIDENTIFIER
;
254 typedef KSIDENTIFIER KSPROPERTY
, *PKSPROPERTY
;
255 typedef KSIDENTIFIER KSMETHOD
, *PKSMETHOD
;
256 typedef KSIDENTIFIER KSEVENT
, *PKSEVENT
;
258 typedef KSIDENTIFIER KSDEGRADE
, *PKSDEGRADE
;
260 typedef KSIDENTIFIER KSPIN_INTERFACE
, *PKSPIN_INTERFACE
;
261 typedef KSIDENTIFIER KSPIN_MEDIUM
, *PKSPIN_MEDIUM
;
274 } KSDATAFORMAT
, *PKSDATAFORMAT
, KSDATARANGE
, *PKSDATARANGE
;
282 } KSATTRIBUTE
, *PKSATTRIBUTE
;
286 /* ===============================================================
287 Interface Sets - TODO
291 #define KSINTERFACESETID_Media
293 #define KSINTERFACE_STANDARD_STREAMING
294 #define KSINTERFACE_STANDARD_LOOPED_STREAMING
295 #define KSINTERFACE_STANDARD_CONTROL
298 #define STATIC_KSINTERFACESETID_Standard \
299 0x1A8766A0L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
300 DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000", KSINTERFACESETID_Standard
);
301 #define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard)
305 KSINTERFACE_STANDARD_STREAMING
,
306 KSINTERFACE_STANDARD_LOOPED_STREAMING
,
307 KSINTERFACE_STANDARD_CONTROL
308 } KSINTERFACE_STANDARD
;
310 #define STATIC_KSINTERFACESETID_FileIo \
311 0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
312 DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196", KSINTERFACESETID_FileIo
);
313 #define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo)
318 /* ===============================================================
324 KSINTERFACE_FILEIO_STREAMING
325 } KSINTERFACE_FILEIO
;
327 #define KSMEDIUM_TYPE_ANYINSTANCE 0
329 #define STATIC_KSMEDIUMSETID_Standard \
330 0x4747B320L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
331 DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000", KSMEDIUMSETID_Standard
);
332 #define KSMEDIUMSETID_Standard DEFINE_GUIDNAMED(KSMEDIUMSETID_Standard)
335 /* ===============================================================
336 Clock Properties/Methods/Events
339 #define KSPROPSETID_Clock \
340 0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
344 KSPROPERTY_CLOCK_TIME
,
345 KSPROPERTY_CLOCK_PHYSICALTIME
,
346 KSPROPERTY_CORRELATEDTIME
,
347 KSPROPERTY_CORRELATEDPHYSICALTIME
,
348 KSPROPERTY_CLOCK_RESOLUTION
,
349 KSPROPERTY_CLOCK_STATE
,
350 KSPROPERTY_CLOCK_FUNCTIONTABLE
353 #define KSEVENTSETID_Clock \
354 0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
358 KSEVENT_CLOCK_INTERVAL_MARK
,
359 KSEVENT_CLOCK_POSITION_MARK
360 } KSEVENT_CLOCK_POSITION
;
363 /* ===============================================================
364 Connection Properties/Methods/Events
367 #define STATIC_KSPROPSETID_Connection \
368 0x1D58C920L, 0xAC9B, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
369 DEFINE_GUIDSTRUCT("1D58C920-AC9B-11CF-A5D6-28DB04C10000", KSPROPSETID_Connection
);
370 #define KSPROPSETID_Connection DEFINE_GUIDNAMED(KSPROPSETID_Connection)
375 KSPROPERTY_CONNECTION_STATE
,
376 KSPROPERTY_CONNECTION_PRIORITY
,
377 KSPROPERTY_CONNECTION_DATAFORMAT
,
378 KSPROPERTY_CONNECTION_ALLOCATORFRAMING
,
379 KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT
,
380 KSPROPERTY_CONNECTION_ACQUIREORDERING
,
381 KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX
,
382 KSPROPERTY_CONNECTION_STARTAT
383 } KSPROPERTY_CONNECTION
;
385 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_STATE(GetHandler, SetHandler)\
386 DEFINE_KSPROPERTY_ITEM(\
387 KSPROPERTY_CONNECTION_STATE,\
392 NULL, 0, NULL, NULL, 0)
394 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_PRIORITY(GetHandler, SetHandler)\
395 DEFINE_KSPROPERTY_ITEM(\
396 KSPROPERTY_CONNECTION_PRIORITY,\
401 NULL, 0, NULL, NULL, 0)
403 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_DATAFORMAT(GetHandler, SetHandler)\
404 DEFINE_KSPROPERTY_ITEM(\
405 KSPROPERTY_CONNECTION_DATAFORMAT,\
410 NULL, 0, NULL, NULL, 0)
412 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING(Handler)\
413 DEFINE_KSPROPERTY_ITEM(\
414 KSPROPERTY_CONNECTION_ALLOCATORFRAMING,\
417 sizeof(KSALLOCATOR_FRAMING),\
418 NULL, NULL, 0, NULL, NULL, 0)
420 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING_EX(Handler)\
421 DEFINE_KSPROPERTY_ITEM(\
422 KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,\
426 NULL, NULL, 0, NULL, NULL, 0)
428 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_PROPOSEDATAFORMAT(Handler)\
429 DEFINE_KSPROPERTY_ITEM(\
430 KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,\
433 sizeof(KSDATAFORMAT),\
435 NULL, 0, NULL, NULL, 0)
437 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_ACQUIREORDERING(Handler)\
438 DEFINE_KSPROPERTY_ITEM(\
439 KSPROPERTY_CONNECTION_ACQUIREORDERING,\
443 NULL, NULL, 0, NULL, NULL, 0)
445 #define DEFINE_KSPROPERTY_ITEM_CONNECTION_STARTAT(Handler)\
446 DEFINE_KSPROPERTY_ITEM(\
447 KSPROPERTY_CONNECTION_STARTAT,\
450 sizeof(KSRELATIVEEVENT),\
452 NULL, 0, NULL, NULL, 0)
457 KSEVENT_CONNECTION_POSITIONUPDATE
,
458 KSEVENT_CONNECTION_DATADISCONTINUITY
,
459 KSEVENT_CONNECTION_TIMEDISCONTINUITY
,
460 KSEVENT_CONNECTION_PRIORITY
,
461 KSEVENT_CONNECTION_ENDOFSTREAM
462 } KSEVENT_CONNECTION
;
465 /* ===============================================================
467 Properties/Methods/Events
470 #define STATIC_KSPROPSETID_General\
471 0x1464EDA5L, 0x6A8F, 0x11D1, {0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
472 DEFINE_GUIDSTRUCT("1464EDA5-6A8F-11D1-9AA7-00A0C9223196", KSPROPSETID_General
);
473 #define KSPROPSETID_General DEFINE_GUIDNAMED(KSPROPSETID_General)
478 KSPROPERTY_GENERAL_COMPONENTID
479 } KSPROPERTY_GENERAL
;
482 /* ===============================================================
484 Properties/Methods/Events
487 #define KSPROPSETID_GM \
488 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D
492 KSPROPERTY_GM_GRAPHMANAGER
,
493 KSPROPERTY_GM_TIMESTAMP_CLOCK
,
494 KSPROPERTY_GM_RATEMATCH
,
495 KSPROPERTY_GM_RENDERCLOCK
499 /* ===============================================================
501 Properties/Methods/Events
504 #define STATIC_KSPROPSETID_MediaSeeking\
505 0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
506 DEFINE_GUIDSTRUCT("EE904F0C-D09B-11D0-ABE9-00A0C9223196", KSPROPSETID_MediaSeeking
);
507 #define KSPROPSETID_MediaSeeking DEFINE_GUIDNAMED(KSPROPSETID_MediaSeeking)
510 KSPROPERTY_MEDIASEEKING_CAPABILITIES
,
511 KSPROPERTY_MEDIASEEKING_FORMATS
,
512 KSPROPERTY_MEDIASEEKING_TIMEFORMAT
,
513 KSPROPERTY_MEDIASEEKING_POSITION
,
514 KSPROPERTY_MEDIASEEKING_STOPPOSITION
,
515 KSPROPERTY_MEDIASEEKING_POSITIONS
,
516 KSPROPERTY_MEDIASEEKING_DURATION
,
517 KSPROPERTY_MEDIASEEKING_AVAILABLE
,
518 KSPROPERTY_MEDIASEEKING_PREROLL
,
519 KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
520 } KSPROPERTY_MEDIASEEKING
;
523 KS_SEEKING_NoPositioning
,
524 KS_SEEKING_AbsolutePositioning
,
525 KS_SEEKING_RelativePositioning
,
526 KS_SEEKING_IncrementalPositioning
,
527 KS_SEEKING_PositioningBitsMask
= 0x3,
528 KS_SEEKING_SeekToKeyFrame
,
529 KS_SEEKING_ReturnTime
= 0x8
533 KS_SEEKING_CanSeekAbsolute
= 0x1,
534 KS_SEEKING_CanSeekForwards
= 0x2,
535 KS_SEEKING_CanSeekBackwards
= 0x4,
536 KS_SEEKING_CanGetCurrentPos
= 0x8,
537 KS_SEEKING_CanGetStopPos
= 0x10,
538 KS_SEEKING_CanGetDuration
= 0x20,
539 KS_SEEKING_CanPlayBackwards
= 0x40
540 } KS_SEEKING_CAPABILITIES
;
545 KS_SEEKING_FLAGS CurrentFlags
;
546 KS_SEEKING_FLAGS StopFlags
;
547 } KSPROPERTY_POSITIONS
, *PKSPROPERTY_POSITIONS
;
552 } KSPROPERTY_MEDIAAVAILABLE
, *PKSPROPERTY_MEDIAAVAILABLE
;
559 } KSP_TIMEFORMAT
, *PKSP_TIMEFORMAT
;
561 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CAPABILITIES(Handler)\
562 DEFINE_KSPROPERTY_ITEM(\
563 KSPROPERTY_MEDIASEEKING_CAPABILITIES,\
566 sizeof(KS_SEEKING_CAPABILITIES),\
567 NULL, NULL, 0, NULL, NULL, 0)
569 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_FORMATS(Handler)\
570 DEFINE_KSPROPERTY_ITEM(\
571 KSPROPERTY_MEDIASEEKING_FORMATS,\
575 NULL, NULL, 0, NULL, NULL, 0)
577 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_TIMEFORMAT(GetHandler, SetHandler)\
578 DEFINE_KSPROPERTY_ITEM(\
579 KSPROPERTY_MEDIASEEKING_TIMEFORMAT,\
584 NULL, 0, NULL, NULL, 0)
586 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITION(Handler)\
587 DEFINE_KSPROPERTY_ITEM(\
588 KSPROPERTY_MEDIASEEKING_POSITION,\
592 NULL, NULL, 0, NULL, NULL, 0)
594 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_STOPPOSITION(Handler)\
595 DEFINE_KSPROPERTY_ITEM(\
596 KSPROPERTY_MEDIASEEKING_STOPPOSITION,\
600 NULL, NULL, 0, NULL, NULL, 0)
602 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITIONS(Handler)\
603 DEFINE_KSPROPERTY_ITEM(\
604 KSPROPERTY_MEDIASEEKING_POSITIONS,\
607 sizeof(KSPROPERTY_POSITIONS),\
609 NULL, 0, NULL, NULL, 0)
611 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_DURATION(Handler)\
612 DEFINE_KSPROPERTY_ITEM(\
613 KSPROPERTY_MEDIASEEKING_DURATION,\
617 NULL, NULL, 0, NULL, NULL, 0)
619 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_AVAILABLE(Handler)\
620 DEFINE_KSPROPERTY_ITEM(\
621 KSPROPERTY_MEDIASEEKING_AVAILABLE,\
624 sizeof(KSPROPERTY_MEDIAAVAILABLE),\
625 NULL, NULL, 0, NULL, NULL, 0)
627 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_PREROLL(Handler)\
628 DEFINE_KSPROPERTY_ITEM(\
629 KSPROPERTY_MEDIASEEKING_PREROLL,\
633 NULL, NULL, 0, NULL, NULL, 0)
635 #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CONVERTTIMEFORMAT(Handler)\
636 DEFINE_KSPROPERTY_ITEM(\
637 KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT,\
639 sizeof(KSP_TIMEFORMAT),\
641 NULL, NULL, 0, NULL, NULL, 0)
643 /* ===============================================================
645 Properties/Methods/Events
648 #define STATIC_KSPROPSETID_Pin\
649 0x8C134960L, 0x51AD, 0x11CF, 0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00
650 DEFINE_GUIDSTRUCT("8C134960-51AD-11CF-878A-94F801C10000", KSPROPSETID_Pin
);
651 #define KSPROPSETID_Pin DEFINE_GUIDNAMED(KSPROPSETID_Pin)
653 #define STATIC_KSNAME_Pin\
654 0x146F1A80L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
655 DEFINE_GUIDSTRUCT("146F1A80-4791-11D0-A5D6-28DB04C10000", KSNAME_Pin
);
656 #define KSNAME_Pin DEFINE_GUIDNAMED(KSNAME_Pin)
661 KSPROPERTY_PIN_CINSTANCES
,
662 KSPROPERTY_PIN_CTYPES
,
663 KSPROPERTY_PIN_DATAFLOW
,
664 KSPROPERTY_PIN_DATARANGES
,
665 KSPROPERTY_PIN_DATAINTERSECTION
,
666 KSPROPERTY_PIN_INTERFACES
,
667 KSPROPERTY_PIN_MEDIUMS
,
668 KSPROPERTY_PIN_COMMUNICATION
,
669 KSPROPERTY_PIN_GLOBALCINSTANCES
,
670 KSPROPERTY_PIN_NECESSARYINSTANCES
,
671 KSPROPERTY_PIN_PHYSICALCONNECTION
,
672 KSPROPERTY_PIN_CATEGORY
,
674 KSPROPERTY_PIN_CONSTRAINEDDATARANGES
,
675 KSPROPERTY_PIN_PROPOSEDATAFORMAT
683 } KSP_PIN
, *PKSP_PIN
;
685 #define KSINSTANCE_INDETERMINATE ((ULONG)-1)
691 } KSPIN_CINSTANCES
, *PKSPIN_CINSTANCES
;
697 WCHAR SymbolicLinkName
[1];
698 } KSPIN_PHYSICALCONNECTION
, *PKSPIN_PHYSICALCONNECTION
;
701 /* ===============================================================
703 Properties/Methods/Events
706 #define KSPROPSETID_Quality \
707 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
711 KSPROPERTY_QUALITY_REPORT
,
712 KSPROPERTY_QUALITY_ERROR
713 } KSPROPERTY_QUALITY
;
716 /* ===============================================================
718 Properties/Methods/Events
721 #define KSPROPSETID_Stream \
722 0x65aaba60L, 0x98ae, 0x11cf, 0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
726 KSPROPERTY_STREAM_ALLOCATOR
,
727 KSPROPERTY_STREAM_QUALITY
,
728 KSPROPERTY_STREAM_DEGRADATION
,
729 KSPROPERTY_STREAM_MASTERCLOCK
,
730 KSPROPERTY_STREAM_TIMEFORMAT
,
731 KSPROPERTY_STREAM_PRESENTATIONTIME
,
732 KSPROPERTY_STREAM_PRESENTATIONEXTENT
,
733 KSPROPERTY_STREAM_FRAMETIME
,
734 KSPROPERTY_STREAM_RATECAPABILITY
,
735 KSPROPERTY_STREAM_RATE
,
736 KSPROPERTY_STREAM_PIPE_ID
740 /* ===============================================================
742 Properties/Methods/Events
745 #define STATIC_KSPROPSETID_StreamAllocator\
746 0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
747 DEFINE_GUIDSTRUCT("cf6e4342-ec87-11cf-a130-0020afd156e4", KSPROPSETID_StreamAllocator
);
748 #define KSPROPSETID_StreamAllocator DEFINE_GUIDNAMED(KSPROPSETID_StreamAllocator)
752 KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE
,
753 KSPROPERTY_STREAMALLOCATOR_STATUS
754 } KSPROPERTY_STREAMALLOCATOR
;
756 #define KSMETHODSETID_StreamAllocator \
757 0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
761 KSMETHOD_STREAMALLOCATOR_ALLOC
,
762 KSMETHOD_STREAMALLOCATOR_FREE
763 } KSMETHOD_STREAMALLOCATOR
;
766 #define KSEVENTSETID_StreamAllocator
770 KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME
,
771 KSEVENT_STREAMALLOCATOR_FREEFRAME
772 } KSEVENT_STREAMALLOCATOR
;
775 /* ===============================================================
777 Properties/Methods/Events
780 #define KSPROPSETID_StreamInterface \
781 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
785 KSPROPERTY_STREAMINTERFACE_HEADERSIZE
786 } KSPROPERTY_STREAMINTERFACE
;
789 /* ===============================================================
791 Properties/Methods/Events
794 #define STATIC_KSPROPSETID_Topology\
795 0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
796 DEFINE_GUIDSTRUCT("720D4AC0-7533-11D0-A5D6-28DB04C10000", KSPROPSETID_Topology
);
797 #define KSPROPSETID_Topology DEFINE_GUIDNAMED(KSPROPSETID_Topology)
800 KSPROPERTY_TOPOLOGY_CATEGORIES
,
801 KSPROPERTY_TOPOLOGY_NODES
,
802 KSPROPERTY_TOPOLOGY_CONNECTIONS
,
803 KSPROPERTY_TOPOLOGY_NAME
804 } KSPROPERTY_TOPOLOGY
;
806 /* ===============================================================
807 Property Sets for audio drivers - TODO
810 #define STATIC_KSPROPTYPESETID_General \
811 0x97E99BA0L, 0xBDEA, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
812 DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000", KSPROPTYPESETID_General
);
813 #define KSPROPTYPESETID_General DEFINE_GUIDNAMED(KSPROPTYPESETID_General)
816 KSPROPERTY_AC3_ALTERNATE_AUDIO
817 KSPROPERTY_AC3_BIT_STREAM_MODE
818 KSPROPERTY_AC3_DIALOGUE_LEVEL
819 KSPROPERTY_AC3_DOWNMIX
820 KSPROPERTY_AC3_ERROR_CONCEALMENT
821 KSPROPERTY_AC3_LANGUAGE_CODE
822 KSPROPERTY_AC3_ROOM_TYPE
825 #define KSPROPSETID_Acoustic_Echo_Cancel
828 KSPROPERTY_AEC_NOISE_FILL_ENABLE
829 KSPROPERTY_AEC_STATUS
833 KSPROPERTY_AUDIO_3D_INTERFACE
835 KSPROPERTY_AUDIO_ALGORITHM_INSTANCE
836 KSPROPERTY_AUDIO_BASS
837 KSPROPERTY_AUDIO_BASS_BOOST
838 KSPROPERTY_AUDIO_CHANNEL_CONFIG
839 KSPROPERTY_AUDIO_CHORUS_LEVEL
840 KSPROPERTY_AUDIO_COPY_PROTECTION
841 KSPROPERTY_AUDIO_CPU_RESOURCES
842 KSPROPERTY_AUDIO_DELAY
843 KSPROPERTY_AUDIO_DEMUX_DEST
844 KSPROPERTY_AUDIO_DEV_SPECIFIC
845 KSPROPERTY_AUDIO_DYNAMIC_RANGE
846 KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE
847 KSPROPERTY_AUDIO_EQ_BANDS
848 KSPROPERTY_AUDIO_EQ_LEVEL
849 KSPROPERTY_AUDIO_FILTER_STATE
850 KSPROPERTY_AUDIO_LATENCY
851 KSPROPERTY_AUDIO_LOUDNESS
852 KSPROPERTY_AUDIO_MANUFACTURE_GUID
854 KSPROPERTY_AUDIO_MIX_LEVEL_CAPS
855 KSPROPERTY_AUDIO_MIX_LEVEL_TABLE
856 KSPROPERTY_AUDIO_MUTE
857 KSPROPERTY_AUDIO_MUX_SOURCE
858 KSPROPERTY_AUDIO_NUM_EQ_BANDS
859 KSPROPERTY_AUDIO_PEAKMETER
860 KSPROPERTY_AUDIO_POSITION
861 KSPROPERTY_AUDIO_PREFERRED_STATUS
862 KSPROPERTY_AUDIO_PRODUCT_GUID
863 KSPROPERTY_AUDIO_QUALITY
864 KSPROPERTY_AUDIO_REVERB_LEVEL
865 KSPROPERTY_AUDIO_SAMPLING_RATE
866 KSPROPERTY_AUDIO_STEREO_ENHANCE
867 KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY
868 KSPROPERTY_AUDIO_SURROUND_ENCODE
869 KSPROPERTY_AUDIO_TREBLE
870 KSPROPERTY_AUDIO_VOLUMELEVEL
871 KSPROPERTY_AUDIO_WIDE_MODE
872 KSPROPERTY_AUDIO_WIDENESS
875 #define KSPROPSETID_AudioGfx
877 KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID
878 KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID
881 #define KSPROPSETID_DirectSound3DBuffer
883 KSPROPERTY_DIRECTSOUND3DBUFFER_ALL
884 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES
885 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION
886 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME
887 KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE
888 KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE
889 KSPROPERTY_DIRECTSOUND3DBUFFER_MODE
890 KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION
891 KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY
894 #define KSPROPSETID_DirectSound3DListener
896 KSPROPERTY_DIRECTSOUND3DLISTENER_ALL
897 KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
898 KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH
899 KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR
900 KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR
901 KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION
902 KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION
903 KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR
904 KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY
907 #define KSPROPSETID_DrmAudioStream
909 KSPROPERTY_DRMAUDIOSTREAM_CONTENTID
912 #define KSPROPSETID_Hrtf3d
914 KSPROPERTY_HRTF3D_FILTER_FORMAT
915 KSPROPERTY_HRTF3D_INITIALIZE
916 KSPROPERTY_HRTF3D_PARAMS
919 #define KSPROPSETID_Itd3d
921 KSPROPERTY_ITD3D_PARAMS
924 #define KSPROPSETID_Synth
926 KSPROPERTY_SYNTH_CAPS
927 KSPROPERTY_SYNTH_CHANNELGROUPS
928 KSPROPERTY_SYNTH_LATENCYCLOCK
929 KSPROPERTY_SYNTH_MASTERCLOCK
930 KSPROPERTY_SYNTH_PORTPARAMETERS
931 KSPROPERTY_SYNTH_RUNNINGSTATS
932 KSPROPERTY_SYNTH_VOICEPRIORITY
933 KSPROPERTY_SYNTH_VOLUME
934 KSPROPERTY_SYNTH_VOLUMEBOOST
937 #define KSPROPSETID_Synth_Dls
939 KSPROPERTY_SYNTH_DLS_APPEND
940 KSPROPERTY_SYNTH_DLS_COMPACT
941 KSPROPERTY_SYNTH_DLS_DOWNLOAD
942 KSPROPERTY_SYNTH_DLS_UNLOAD
943 KSPROPERTY_SYNTH_DLS_WAVEFORMAT
946 #define KSPROPSETID_TopologyNode
948 KSPROPERTY_TOPOLOGYNODE_ENABLE
949 KSPROPERTY_TOPOLOGYNODE_RESET
953 /* ===============================================================
957 KSNODETYPE_3D_EFFECTS
958 KSNODETYPE_ACOUSTIC_ECHO_CANCEL
965 KSNODETYPE_DEV_SPECIFIC
967 KSNODETYPE_DMSYNTH_CAPS
968 KSNODETYPE_DRM_DESCRAMBLE
974 KSNODETYPE_PROLOGIC_DECODER
975 KSNODETYPE_PROLOGIC_ENCODER
978 KSNODETYPE_STEREO_ENHANCE
979 KSNODETYPE_STEREO_WIDE
984 KSNODETYPE_SYNTHESIZER
990 typedef PVOID KSDEVICE_HEADER
,
997 /* ===============================================================
1001 #define KSMETHOD_TYPE_NONE 0x00000000
1002 #define KSMETHOD_TYPE_READ 0x00000001
1003 #define KSMETHOD_TYPE_WRITE 0x00000002
1004 #define KSMETHOD_TYPE_MODIFY 0x00000003
1005 #define KSMETHOD_TYPE_SOURCE 0x00000004
1006 #define KSMETHOD_TYPE_SEND 0x00000001
1007 #define KSMETHOD_TYPE_SETSUPPORT 0x00000100
1008 #define KSMETHOD_TYPE_BASICSUPPORT 0x00000200
1011 /* ===============================================================
1015 #define KSPROPERTY_TYPE_GET 0x00000001
1016 #define KSPROPERTY_TYPE_SET 0x00000002
1017 #define KSPROPERTY_TYPE_SETSUPPORT 0x00000100
1018 #define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200
1019 #define KSPROPERTY_TYPE_RELATIONS 0x00000400
1020 #define KSPROPERTY_TYPE_SERIALIZESET 0x00000800
1021 #define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
1022 #define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000
1023 #define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
1024 #define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
1025 #define KSPROPERTY_TYPE_DEFAULT_VALUES 0x00010000
1028 /* ===============================================================
1029 Topology Methods/Properties
1032 #define KSMETHOD_TYPE_TOPOLOGY 0x10000000
1033 #define KSPROPERTY_TYPE_TOPOLOGY 0x10000000
1036 #define DEFINE_KS_GUID(GA,GB,GC,GD,GE,GF,GG,GH,GI,GJ,GK) \
1037 DEFINE_GUID(??, 0x#GA#L, 0xGB, 0xGC, 0xGD, 0xGE, 0xGF, 0xGG, 0xGH, 0xGI, 0xGJ, 0xGK) \
1038 "GA-GB-GC-GDGE-GFGGGHGIGJGK"
1041 /* ===============================================================
1044 BRIDGE - 0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1045 CAPTURE - 0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1046 RENDER - 0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1047 MIXER - 0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1048 SPLITTER - 0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1049 DATACOMPRESSOR - 0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1050 DATADECOMPRESSOR - 0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1051 DATATRANSFORM - 0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1052 COMMUNICATIONSTRANSFORM - 0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1053 INTERFACETRANSFORM - 0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1054 MEDIUMTRANSFORM - 0xCF1DDA2EL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1055 FILESYSTEM - 0x760FED5EL, 0x9357, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1056 CLOCK - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1057 PROXY - 0x97EBAACAL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1058 QUALITY - 0x97EBAACBL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1061 /* ===============================================================
1062 KSNAME GUIDs (defined also as KSSTRING_Xxx L"{...}"
1064 Filter - 0x9b365890L, 0x165f, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
1065 Pin - 0x146F1A80L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1066 Clock - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1067 Allocator - 0x642F5D00L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1068 TopologyNode - 0x0621061AL, 0xEE75, 0x11D0, 0xB9, 0x15, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1071 /* ===============================================================
1074 Standard - 0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1075 FileIo - 0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1078 /* ===============================================================
1081 Standard - 0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1084 /* ===============================================================
1087 General - 0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1088 StreamIo - 0x65D003CAL, 0x1523, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1089 MediaSeeking - 0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1090 Topology - 0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1091 GM - 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D
1092 Quality - 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1093 Connection - 0x1D58C920L, 0xAC9B, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1096 /* ===============================================================
1097 StreamAllocator Sets
1099 Event set - 0x75d95571L, 0x073c, 0x11d0, 0xa1, 0x61, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
1100 Method set - 0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
1101 Property set - 0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
1104 /* ===============================================================
1105 StreamInterface Sets
1107 Property set - 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
1110 /* ===============================================================
1113 Property set - 0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1114 Event sets - 0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1117 /* ===============================================================
1120 Event set - 0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00
1123 /* ===============================================================
1126 KSTIME_FORMAT_NONE (null guid)
1127 FRAME - 0x7b785570L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
1128 BYTE - 0x7b785571L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
1129 SAMPLE - 0x7b785572L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
1130 FIELD - 0x7b785573L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
1131 MEDIA_TIME - 0x7b785574L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
1134 /* ===============================================================
1144 #define STATIC_KSDATAFORMAT_SPECIFIER_NONE\
1145 0x0F6417D6L, 0xC318, 0x11D0, 0xA4, 0x3F, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1146 DEFINE_GUIDSTRUCT("0F6417D6-C318-11D0-A43F-00A0C9223196", KSDATAFORMAT_SPECIFIER_NONE
);
1147 #define KSDATAFORMAT_SPECIFIER_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_NONE)
1150 /* ===============================================================
1153 WILDCARD, DONT_CARE = NULL
1154 SYSTEM - 0x091bb638L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
1155 USER - 0x8cb0fc28L, 0x7893, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
1156 KERNEL_PAGED - 0xd833f8f8L, 0x7894, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
1157 KERNEL_NONPAGED - 0x4a6d5fc4L, 0x7895, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
1158 DEVICE_UNKNOWN - 0x091bb639L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
1161 /* ===============================================================
1163 (values have been checked)
1168 #define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\
1172 Values, RelationsCount, Relations, SupportHandler,\
1175 PropertyId, {(PFNKSHANDLER)GetHandler}, MinProperty, MinData,\
1176 {(PFNKSHANDLER)SetHandler},\
1177 (PKSPROPERTY_VALUES)Values, RelationsCount, (PKSPROPERTY)Relations,\
1178 (PFNKSHANDLER)SupportHandler, (ULONG)SerializedSize\
1183 #define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\
1187 Values, RelationsCount, Relations, SupportHandler,\
1190 PropertyId, (PFNKSHANDLER)GetHandler, MinProperty, MinData,\
1191 (PFNKSHANDLER)SetHandler,\
1192 (PKSPROPERTY_VALUES)Values, RelationsCount, (PKSPROPERTY)Relations,\
1193 (PFNKSHANDLER)SupportHandler, (ULONG)SerializedSize\
1202 KsObjectTypeFilterFactory
,
1213 } KSSTATE
, *PKSSTATE
;
1217 KSTARGET_STATE_DISABLED
,
1218 KSTARGET_STATE_ENABLED
1233 KSEVENTS_FMUTEXUNSAFE
,
1236 } KSEVENTS_LOCKTYPE
;
1240 KSDEGRADE_STANDARD_SIMPLE
,
1241 KSDEGRADE_STANDARD_QUALITY
,
1242 KSDEGRADE_STANDARD_COMPUTATION
,
1243 KSDEGRADE_STANDARD_SKIP
1244 } KSDEGRADE_STANDARD
;
1248 KSPIN_DATAFLOW_IN
= 1,
1250 } KSPIN_DATAFLOW
, *PKSPIN_DATAFLOW
;
1254 KSPIN_COMMUNICATION_NONE
,
1255 KSPIN_COMMUNICATION_SINK
,
1256 KSPIN_COMMUNICATION_SOURCE
,
1257 KSPIN_COMMUNICATION_BOTH
,
1258 KSPIN_COMMUNICATION_BRIDGE
1259 } KSPIN_COMMUNICATION
, *PKSPIN_COMMUNICATION
;
1265 } KSLIST_ENTRY_LOCATION
;
1269 KsStackCopyToNewLocation
,
1270 KsStackReuseCurrentLocation
,
1271 KsStackUseNewLocation
1278 KsAcquireOnlySingleItem
,
1279 KsAcquireAndRemoveOnlySingleItem
1280 } KSIRP_REMOVAL_OPERATION
;
1284 KsInvokeOnSuccess
= 1,
1285 KsInvokeOnError
= 2,
1286 KsInvokeOnCancel
= 4
1287 } KSCOMPLETION_INVOCATION
;
1290 #if defined(_NTDDK_)
1292 typedef NTSTATUS (NTAPI
*PFNKSCONTEXT_DISPATCH
)(
1297 #if defined(_NTDDK_) && !defined(__wtypes_h__)
1327 VT_USERDEFINED
= 29,
1334 VT_STREAMED_OBJECT
= 68,
1335 VT_STORED_OBJECT
= 69,
1336 VT_BLOB_OBJECT
= 70,
1342 VT_RESERVED
= 0x8000,
1343 VT_ILLEGAL
= 0xffff,
1344 VT_ILLEGALMASKED
= 0xfff,
1349 #define STATIC_KSDATAFORMAT_TYPE_WILDCARD STATIC_GUID_NULL
1350 #define KSDATAFORMAT_TYPE_WILDCARD GUID_NULL
1352 #define STATIC_KSDATAFORMAT_SUBTYPE_WILDCARD STATIC_GUID_NULL
1353 #define KSDATAFORMAT_SUBTYPE_WILDCARD GUID_NULL
1355 #define STATIC_KSDATAFORMAT_SPECIFIER_WILDCARD STATIC_GUID_NULL
1356 #define KSDATAFORMAT_SPECIFIER_WILDCARD GUID_NULL
1358 /* ===============================================================
1367 } KS_FRAMING_RANGE
, *PKS_FRAMING_RANGE
;
1371 KS_FRAMING_RANGE Range
;
1372 ULONG InPlaceWeight
;
1373 ULONG NotInPlaceWeight
;
1374 } KS_FRAMING_RANGE_WEIGHTED
, *PKS_FRAMING_RANGE_WEIGHTED
;
1384 ULONG FileAlignment
;
1385 ULONG MemoryTypeWeight
;
1386 KS_FRAMING_RANGE PhysicalRange
;
1387 KS_FRAMING_RANGE_WEIGHTED FramingRange
;
1388 } KS_FRAMING_ITEM
, *PKS_FRAMING_ITEM
;
1392 ULONG RatioNumerator
;
1393 ULONG RatioDenominator
;
1394 ULONG RatioConstantMargin
;
1395 } KS_COMPRESSION
, *PKS_COMPRESSION
;
1398 /* ===============================================================
1402 #define KSPRIORITY_LOW 0x00000001
1403 #define KSPRIORITY_NORMAL 0x40000000
1404 #define KSPRIORITY_HIGH 0x80000000
1405 #define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF
1409 ULONG PriorityClass
;
1410 ULONG PrioritySubClass
;
1411 } KSPRIORITY
, *PKSPRIORITY
;
1414 /* ===============================================================
1416 http://www.osronline.com/DDKx/stream/ks-struct_494j.htm
1418 #if defined(_NTDDK_)
1421 PDRIVER_DISPATCH DeviceIoControl
;
1422 PDRIVER_DISPATCH Read
;
1423 PDRIVER_DISPATCH Write
;
1424 PDRIVER_DISPATCH Flush
;
1425 PDRIVER_DISPATCH Close
;
1426 PDRIVER_DISPATCH QuerySecurity
;
1427 PDRIVER_DISPATCH SetSecurity
;
1428 PFAST_IO_DEVICE_CONTROL FastDeviceIoControl
;
1429 PFAST_IO_READ FastRead
;
1430 PFAST_IO_WRITE FastWrite
;
1431 } KSDISPATCH_TABLE
, *PKSDISPATCH_TABLE
;
1434 #define KSCREATE_ITEM_IRP_STORAGE(Irp) (*(PKSOBJECT_CREATE_ITEM*)&(Irp)->Tail.Overlay.DriverContext[0])
1435 #define KSEVENT_SET_IRP_STORAGE(Irp) (*(const KSEVENT_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
1436 #define KSEVENT_ITEM_IRP_STORAGE(Irp) (*(const KSEVENT_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
1437 #define KSEVENT_ENTRY_IRP_STORAGE(Irp) (*(PKSEVENT_ENTRY*)&(Irp)->Tail.Overlay.DriverContext[0])
1438 #define KSMETHOD_SET_IRP_STORAGE(Irp) (*(const KSMETHOD_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
1439 #define KSMETHOD_ITEM_IRP_STORAGE(Irp) (*(const KSMETHOD_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
1440 #define KSMETHOD_TYPE_IRP_STORAGE(Irp) (*(ULONG_PTR*)(&(Irp)->Tail.Overlay.DriverContext[2]))
1441 #define KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) (*(PKSPIN_LOCK*)&(Irp)->Tail.Overlay.DriverContext[1])
1442 #define KSPROPERTY_SET_IRP_STORAGE(Irp) (*(const KSPROPERTY_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
1443 #define KSPROPERTY_ITEM_IRP_STORAGE(Irp) (*(const KSPROPERTY_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
1444 #define KSPROPERTY_ATTRIBUTES_IRP_STORAGE(Irp) (*(PKSATTRIBUTE_LIST*)&(Irp)->Tail.Overlay.DriverContext[2])
1448 (NTAPI
*PFNREFERENCEDEVICEOBJECT
)(
1454 (NTAPI
*PFNDEREFERENCEDEVICEOBJECT
)(
1460 (NTAPI
*PFNQUERYREFERENCESTRING
)(
1462 IN OUT PWCHAR
*String
1467 INTERFACE Interface
;
1468 PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject
;
1469 PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject
;
1470 PFNQUERYREFERENCESTRING QueryReferenceString
;
1471 } BUS_INTERFACE_REFERENCE
, *PBUS_INTERFACE_REFERENCE
;
1476 ULONG ReferenceCount
;
1477 KSPIN_LOCK AccessLock
;
1478 } KSDPC_ITEM
, *PKSDPC_ITEM
;
1483 LIST_ENTRY BufferList
;
1484 } KSBUFFER_ITEM
, *PKSBUFFER_ITEM
;
1496 } KSCOMPONENTID
, *PKSCOMPONENTID
;
1498 /* ===============================================================
1502 #define KSPROPERTY_MEMBER_RANGES 0x00000001
1503 #define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002
1504 #define KSPROPERTY_MEMBER_VALUES 0x00000003
1505 #define KSPROPERTY_MEMBER_FLAG_DEFAULT KSPROPERTY_MEMBER_RANGES
1511 } KSPROPERTY_SERIALHDR
, *PKSPROPERTY_SERIALHDR
;
1515 KSIDENTIFIER PropTypeSet
;
1517 ULONG PropertyLength
;
1518 } KSPROPERTY_SERIAL
, *PKSPROPERTY_SERIAL
;
1527 #if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1534 ULONG UnsignedMinimum
;
1535 ULONG UnsignedMaximum
;
1536 #if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1542 } KSPROPERTY_BOUNDS_LONG
, *PKSPROPERTY_BOUNDS_LONG
;
1547 LONGLONG SignedMinimum
;
1548 LONGLONG SignedMaximum
;
1549 #if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1556 #if defined(_NTDDK_)
1557 ULONGLONG UnsignedMinimum
;
1558 ULONGLONG UnsignedMaximum
;
1560 DWORDLONG UnsignedMinimum
;
1561 DWORDLONG UnsignedMaximum
;
1563 #if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1568 } KSPROPERTY_BOUNDS_LONGLONG
, *PKSPROPERTY_BOUNDS_LONGLONG
;
1573 ULONG DescriptionSize
;
1574 KSIDENTIFIER PropTypeSet
;
1575 ULONG MembersListCount
;
1577 } KSPROPERTY_DESCRIPTION
, *PKSPROPERTY_DESCRIPTION
;
1585 } KSPROPERTY_MEMBERSHEADER
, *PKSPROPERTY_MEMBERSHEADER
;
1588 KSPROPERTY_MEMBERSHEADER MembersHeader
;
1589 const VOID
* Members
;
1590 } KSPROPERTY_MEMBERSLIST
, *PKSPROPERTY_MEMBERSLIST
;
1593 KSIDENTIFIER PropTypeSet
;
1594 ULONG MembersListCount
;
1595 const KSPROPERTY_MEMBERSLIST
* MembersList
;
1596 } KSPROPERTY_VALUES
, *PKSPROPERTY_VALUES
;
1598 #if defined(_NTDDK_)
1599 typedef NTSTATUS (NTAPI
*PFNKSHANDLER
)(
1601 IN PKSIDENTIFIER Request
,
1609 PFNKSHANDLER GetPropertyHandler
;
1610 BOOLEAN GetSupported
;
1615 PFNKSHANDLER SetPropertyHandler
;
1616 BOOLEAN SetSupported
;
1618 const KSPROPERTY_VALUES
* Values
;
1619 ULONG RelationsCount
;
1620 const KSPROPERTY
* Relations
;
1621 PFNKSHANDLER SupportHandler
;
1622 ULONG SerializedSize
;
1623 } KSPROPERTY_ITEM
, *PKSPROPERTY_ITEM
;
1628 (NTAPI
*PFNKSFASTHANDLER
)(
1629 IN PFILE_OBJECT FileObject
,
1630 IN PKSIDENTIFIER Request
,
1631 IN ULONG RequestLength
,
1633 IN ULONG DataLength
,
1634 OUT PIO_STATUS_BLOCK IoStatus
1640 PFNKSFASTHANDLER GetPropertyHandler
;
1641 BOOLEAN GetSupported
;
1644 PFNKSFASTHANDLER SetPropertyHandler
;
1645 BOOLEAN SetSupported
;
1648 } KSFASTPROPERTY_ITEM
, *PKSFASTPROPERTY_ITEM
;
1653 ULONG PropertiesCount
;
1654 const KSPROPERTY_ITEM
* PropertyItem
;
1656 const KSFASTPROPERTY_ITEM
* FastIoTable
;
1657 } KSPROPERTY_SET
, *PKSPROPERTY_SET
;
1663 ULONG SteppingDelta
;
1665 KSPROPERTY_BOUNDS_LONG Bounds
;
1666 } KSPROPERTY_STEPPING_LONG
, *PKSPROPERTY_STEPPING_LONG
;
1670 #if defined(_NTDDK_)
1671 ULONGLONG SteppingDelta
;
1673 DWORDLONG SteppingDelta
;
1675 KSPROPERTY_BOUNDS_LONGLONG Bounds
;
1676 } KSPROPERTY_STEPPING_LONGLONG
, *PKSPROPERTY_STEPPING_LONGLONG
;
1678 /* ===============================================================
1686 ULONG RequirementsFlags
;
1688 #if defined(_NTDDK_)
1695 ULONG FileAlignment
;
1697 } KSALLOCATOR_FRAMING
, *PKSALLOCATOR_FRAMING
;
1703 KS_COMPRESSION OutputCompression
;
1705 KS_FRAMING_ITEM FramingItem
[1];
1706 } KSALLOCATOR_FRAMING_EX
, *PKSALLOCATOR_FRAMING_EX
;
1708 #define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER 0x00000001
1709 #define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY 0x00000002
1710 #define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY 0x00000004
1711 #define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE 0x00000008
1712 #define KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY 0x80000000
1714 #define KSALLOCATOR_OPTIONF_COMPATIBLE 0x00000001
1715 #define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY 0x00000002
1716 #define KSALLOCATOR_OPTIONF_VALID 0x00000003
1718 #define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT 0x00000010
1719 #define KSALLOCATOR_FLAG_DEVICE_SPECIFIC 0x00000020
1720 #define KSALLOCATOR_FLAG_CAN_ALLOCATE 0x00000040
1721 #define KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO 0x00000080
1723 /* ===============================================================
1732 } KSQUALITY
, *PKSQUALITY
;
1736 HANDLE QualityManager
;
1738 } KSQUALITY_MANAGER
, *PKSQUALITY_MANAGER
;
1742 LONGLONG PresentationStart
;
1744 KSPIN_INTERFACE Interface
;
1751 KSPROPERTY Property
;
1753 } KSRATE_CAPABILITY
, *PKSRATE_CAPABILITY
;
1757 LONGLONG Granularity
;
1759 } KSRESOLUTION
, *PKSRESOLUTION
;
1763 ULONG NotificationType
;
1767 ULONG_PTR Reserved
[2];
1774 #if defined(_NTDDK_)
1777 KPRIORITY Increment
;
1782 KPRIORITY Increment
;
1787 ULONG ReferenceCount
;
1791 PWORK_QUEUE_ITEM WorkQueueItem
;
1792 WORK_QUEUE_TYPE WorkQueueType
;
1796 PWORK_QUEUE_ITEM WorkQueueItem
;
1797 PKSWORKER KsWorkerObject
;
1803 LONG_PTR Alignment
[2];
1806 } KSEVENTDATA
, *PKSEVENTDATA
;
1808 #define KSEVENTF_EVENT_HANDLE 0x00000001
1809 #define KSEVENTF_SEMAPHORE_HANDLE 0x00000002
1810 #if defined(_NTDDK_)
1811 #define KSEVENTF_EVENT_OBJECT 0x00000004
1812 #define KSEVENTF_SEMAPHORE_OBJECT 0x00000008
1813 #define KSEVENTF_DPC 0x00000010
1814 #define KSEVENTF_WORKITEM 0x00000020
1815 #define KSEVENTF_KSWORKITEM 0x00000080
1819 #define KSEVENT_TYPE_ENABLE 0x00000001
1820 #define KSEVENT_TYPE_ONESHOT 0x00000002
1821 #define KSEVENT_TYPE_ENABLEBUFFERED 0x00000004
1822 #define KSEVENT_TYPE_SETSUPPORT 0x00000100
1823 #define KSEVENT_TYPE_BASICSUPPORT 0x00000200
1824 #define KSEVENT_TYPE_QUERYBUFFER 0x00000400
1826 #define KSEVENT_TYPE_TOPOLOGY 0x10000000
1833 HANDLE ObjectHandle
;
1834 PVOID ObjectPointer
;
1838 KSEVENTDATA EventData
;
1839 } KSRELATIVEEVENT
, *PKSRELATIVEEVENT
;
1842 /* ===============================================================
1856 LONGLONG SystemTime
;
1857 } KSCORRELATED_TIME
, *PKSCORRELATED_TIME
;
1863 } KSINTERVAL
, *PKSINTERVAL
;
1870 } KSFRAMETIME
, *PKSFRAMETIME
;
1873 /* ===============================================================
1877 typedef PVOID PKSDEFAULTCLOCK
;
1882 } KSCLOCK_CREATE
, *PKSCLOCK_CREATE
;
1884 #if defined(_NTDDK_)
1888 (FASTCALL
*PFNKSCLOCK_GETTIME
)(
1889 IN PFILE_OBJECT FileObject
1893 (FASTCALL
*PFNKSCLOCK_CORRELATEDTIME
)(
1894 IN PFILE_OBJECT FileObject
,
1895 OUT PLONGLONG SystemTime
);
1899 PFNKSCLOCK_GETTIME GetTime
;
1900 PFNKSCLOCK_GETTIME GetPhysicalTime
;
1901 PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime
;
1902 PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime
;
1903 } KSCLOCK_FUNCTIONTABLE
, *PKSCLOCK_FUNCTIONTABLE
;
1906 /* ===============================================================
1907 Objects ??? SORT ME!
1910 #define KSCREATE_ITEM_SECURITYCHANGED 0x1
1911 #define KSCREATE_ITEM_WILDCARD 0x2
1912 #define KSCREATE_ITEM_NOPARAMETERS 0x4
1913 #define KSCREATE_ITEM_FREEONSTOP 0x8
1917 PDRIVER_DISPATCH Create
;
1919 UNICODE_STRING ObjectClass
;
1920 PSECURITY_DESCRIPTOR SecurityDescriptor
;
1922 } KSOBJECT_CREATE_ITEM
, *PKSOBJECT_CREATE_ITEM
;
1926 ULONG CreateItemsCount
;
1927 PKSOBJECT_CREATE_ITEM CreateItemsList
;
1928 } KSOBJECT_CREATE
, *PKSOBJECT_CREATE
;
1930 typedef VOID (NTAPI
*PFNKSITEMFREECALLBACK
)(
1931 IN PKSOBJECT_CREATE_ITEM CreateItem
);
1939 } KSMULTIPLE_ITEM
, *PKSMULTIPLE_ITEM
;
1944 PKSEVENTDATA EventData
;
1946 } KSQUERYBUFFER
, *PKSQUERYBUFFER
;
1952 } KSERROR
, *PKSERROR
;
1954 /* ===============================================================
1957 #if defined(_NTDDK_)
1963 PFNKSHANDLER MethodHandler
;
1964 BOOLEAN MethodSupported
;
1968 PFNKSHANDLER SupportHandler
;
1970 } KSMETHOD_ITEM
, *PKSMETHOD_ITEM
;
1974 #define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\
1976 MinMethod, MinData, SupportHandler)\
1978 MethodId, {(PFNKSHANDLER)MethodHandler}, MinMethod, MinData,\
1979 SupportHandler, Flags\
1984 #define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\
1986 MinMethod, MinData, SupportHandler)\
1988 MethodId, (PFNKSHANDLER)MethodHandler, MinMethod, MinData,\
1989 SupportHandler, Flags\
2001 PFNKSFASTHANDLER MethodHandler
;
2002 BOOLEAN MethodSupported
;
2004 } KSFASTMETHOD_ITEM
, *PKSFASTMETHOD_ITEM
;
2006 #define DEFINE_KSFASTMETHOD_ITEM(MethodId, MethodHandler)\
2008 MethodId, (PFNKSFASTHANDLER)MethodHandler\
2016 const KSMETHOD_ITEM
* MethodItem
;
2018 const KSFASTMETHOD_ITEM
*FastIoTable
;
2019 } KSMETHOD_SET
, *PKSMETHOD_SET
;
2022 #define DEFINE_KSMETHOD_SET(Set,\
2036 /* ===============================================================
2042 KSPROPERTY Property
;
2045 } KSP_NODE
, *PKSP_NODE
;
2052 } KSM_NODE
, *PKSM_NODE
;
2059 } KSE_NODE
, *PKSE_NODE
;
2064 } KSNODE_CREATE
, *PKSNODE_CREATE
;
2067 /* ===============================================================
2070 typedef struct _KSEVENT_ENTRY KSEVENT_ENTRY
, *PKSEVENT_ENTRY
;
2072 #if defined(_NTDDK_)
2075 KSEVENTDATA EventData
;
2077 } KSEVENT_TIME_MARK
, *PKSEVENT_TIME_MARK
;
2081 KSEVENTDATA EventData
;
2084 } KSEVENT_TIME_INTERVAL
, *PKSEVENT_TIME_INTERVAL
;
2086 typedef NTSTATUS (NTAPI
*PFNKSADDEVENT
)(
2088 IN PKSEVENTDATA EventData
,
2089 IN
struct _KSEVENT_ENTRY
* EventEntry
);
2093 (NTAPI
*PFNKSREMOVEEVENT
)(
2094 IN PFILE_OBJECT FileObject
,
2095 IN
struct _KSEVENT_ENTRY
* EventEntry
2102 ULONG ExtraEntryData
;
2103 PFNKSADDEVENT AddHandler
;
2104 PFNKSREMOVEEVENT RemoveHandler
;
2105 PFNKSHANDLER SupportHandler
;
2106 } KSEVENT_ITEM
, *PKSEVENT_ITEM
;
2112 const KSEVENT_ITEM
* EventItem
;
2113 } KSEVENT_SET
, *PKSEVENT_SET
;
2115 struct _KSEVENT_ENTRY
2117 LIST_ENTRY ListEntry
;
2120 PKSDPC_ITEM DpcItem
;
2121 PKSBUFFER_ITEM BufferItem
;
2123 PKSEVENTDATA EventData
;
2124 ULONG NotificationType
;
2125 const KSEVENT_SET
* EventSet
;
2126 const KSEVENT_ITEM
* EventItem
;
2127 PFILE_OBJECT FileObject
;
2128 ULONG SemaphoreAdjustment
;
2134 /* ===============================================================
2138 #if defined(_NTDDK_)
2140 typedef struct _KSPIN KSPIN
, *PKSPIN
;
2141 typedef struct _KSSTREAM_POINTER KSSTREAM_POINTER
, *PKSSTREAM_POINTER
;
2142 typedef struct _KSSTREAM_POINTER_OFFSET KSSTREAM_POINTER_OFFSET
, *PKSSTREAM_POINTER_OFFSET
;
2143 typedef struct _KSMAPPING KSMAPPING
, *PKSMAPPING
;
2144 typedef struct _KSPROCESSPIN KSPROCESSPIN
, *PKSPROCESSPIN
;
2146 #define IOCTL_KS_HANDSHAKE CTL_CODE(FILE_DEVICE_KS, 0x007, METHOD_NEITHER, FILE_ANY_ACCESS)
2152 } KSHANDSHAKE
, *PKSHANDSHAKE
;
2156 (NTAPI
*PFNKSPINHANDSHAKE
)(
2164 (NTAPI
*PFNKSPINPOWER
)(
2166 IN DEVICE_POWER_STATE State
2171 (NTAPI
*PFNKSPINFRAMERETURN
)(
2173 IN PVOID Data OPTIONAL
,
2174 IN ULONG Size OPTIONAL
,
2175 IN PMDL Mdl OPTIONAL
,
2176 IN PVOID Context OPTIONAL
,
2182 (NTAPI
*PFNKSPINIRPCOMPLETION
)(
2189 (NTAPI
*PFNKSPINIRP
)(
2202 (NTAPI
*PFNKSPINVOID
)(
2208 (NTAPI
*PFNKSSTREAMPOINTER
)(
2209 IN PKSSTREAM_POINTER StreamPointer
2214 PKSATTRIBUTE
* Attributes
;
2215 } KSATTRIBUTE_LIST
, *PKSATTRIBUTE_LIST
;
2219 (NTAPI
*PFNKSPINSETDATAFORMAT
)(
2221 IN PKSDATAFORMAT OldFormat OPTIONAL
,
2222 IN PKSMULTIPLE_ITEM OldAttributeList OPTIONAL
,
2223 IN
const KSDATARANGE
* DataRange
,
2224 IN
const KSATTRIBUTE_LIST
* AttributeRange OPTIONAL
2229 (NTAPI
*PFNKSPINSETDEVICESTATE
)(
2232 IN KSSTATE FromState
2235 typedef struct _KSCLOCK_DISPATCH KSCLOCK_DISPATCH
, *PKSCLOCK_DISPATCH
;
2236 typedef struct _KSALLOCATOR_DISPATCH KSALLOCATOR_DISPATCH
, *PKSALLOCATOR_DISPATCH
;
2244 PFNKSPINSETDATAFORMAT SetDataFormat
;
2245 PFNKSPINSETDEVICESTATE SetDeviceState
;
2247 PFNKSPINVOID Disconnect
;
2248 const KSCLOCK_DISPATCH
* Clock
;
2249 const KSALLOCATOR_DISPATCH
* Allocator
;
2250 } KSPIN_DISPATCH
, *PKSPIN_DISPATCH
;
2254 (NTAPI
*PFNKSPINSETTIMER
)(
2257 IN LARGE_INTEGER DueTime
,
2263 (NTAPI
*PFNKSPINCANCELTIMER
)(
2270 (FASTCALL
*PFNKSPINCORRELATEDTIME
)(
2272 OUT PLONGLONG SystemTime
2277 (NTAPI
*PFNKSPINRESOLUTION
)(
2279 OUT PKSRESOLUTION Resolution
2282 struct _KSCLOCK_DISPATCH
{
2283 PFNKSPINSETTIMER SetTimer
;
2284 PFNKSPINCANCELTIMER CancelTimer
;
2285 PFNKSPINCORRELATEDTIME CorrelatedTime
;
2286 PFNKSPINRESOLUTION Resolution
;
2291 (NTAPI
*PFNKSPININITIALIZEALLOCATOR
)(
2293 IN PKSALLOCATOR_FRAMING AllocatorFraming
,
2297 typedef PVOID (NTAPI
*PFNKSDELETEALLOCATOR
)(
2300 typedef PVOID (NTAPI
*PFNKSDEFAULTALLOCATE
)(
2303 typedef PVOID (NTAPI
*PFNKSDEFAULTFREE
)(
2307 struct _KSALLOCATOR_DISPATCH
{
2308 PFNKSPININITIALIZEALLOCATOR InitializeAllocator
;
2309 PFNKSDELETEALLOCATOR DeleteAllocator
;
2310 PFNKSDEFAULTALLOCATE Allocate
;
2311 PFNKSDEFAULTFREE Free
;
2316 ULONG PropertySetsCount
;
2317 ULONG PropertyItemSize
;
2318 const KSPROPERTY_SET
* PropertySets
;
2319 ULONG MethodSetsCount
;
2320 ULONG MethodItemSize
;
2321 const KSMETHOD_SET
* MethodSets
;
2322 ULONG EventSetsCount
;
2323 ULONG EventItemSize
;
2324 const KSEVENT_SET
* EventSets
;
2325 #if !defined(_WIN64)
2328 } KSAUTOMATION_TABLE
, *PKSAUTOMATION_TABLE
;
2334 ULONG InterfacesCount
;
2335 const KSPIN_INTERFACE
* Interfaces
;
2337 const KSPIN_MEDIUM
* Mediums
;
2338 ULONG DataRangesCount
;
2339 const PKSDATARANGE
* DataRanges
;
2340 KSPIN_DATAFLOW DataFlow
;
2341 KSPIN_COMMUNICATION Communication
;
2342 const GUID
* Category
;
2347 ULONG ConstrainedDataRangesCount
;
2348 PKSDATARANGE
* ConstrainedDataRanges
;
2351 } KSPIN_DESCRIPTOR
, *PKSPIN_DESCRIPTOR
;
2355 (NTAPI
*PFNKSINTERSECTHANDLER
)(
2358 IN PKSDATARANGE DataRange
,
2359 OUT PVOID Data OPTIONAL
2364 (NTAPI
*PFNKSINTERSECTHANDLEREX
)(
2368 IN PKSDATARANGE DataRange
,
2369 IN PKSDATARANGE MatchingDataRange
,
2370 IN ULONG DataBufferSize
,
2371 OUT PVOID Data OPTIONAL
,
2377 const KSPIN_DISPATCH
* Dispatch
;
2378 const KSAUTOMATION_TABLE
* AutomationTable
;
2379 KSPIN_DESCRIPTOR PinDescriptor
;
2381 ULONG InstancesPossible
;
2382 ULONG InstancesNecessary
;
2383 const KSALLOCATOR_FRAMING_EX
* AllocatorFraming
;
2384 PFNKSINTERSECTHANDLEREX IntersectHandler
;
2385 } KSPIN_DESCRIPTOR_EX
, *PKSPIN_DESCRIPTOR_EX
;
2387 #define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001
2388 #define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002
2389 #define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004
2390 #define KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES 0x00000008
2391 #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
2392 #define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000
2396 #define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING
2397 #define KSPIN_FLAG_CRITICAL_PROCESSING KSFILTER_FLAG_CRITICAL_PROCESSING
2398 #define KSPIN_FLAG_HYPERCRITICAL_PROCESSING KSFILTER_FLAG_HYPERCRITICAL_PROCESSING
2399 #define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING 0x00000008
2400 #define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING 0x00000010
2401 #define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL 0x00000020
2402 #define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING 0x00000040
2403 #define KSPIN_FLAG_ENFORCE_FIFO 0x00000080
2405 #define KSPIN_FLAG_GENERATE_MAPPINGS 0x00000100
2406 #define KSPIN_FLAG_DISTINCT_TRAILING_EDGE 0x00000200
2408 #define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY 0x00010000
2409 #define KSPIN_FLAG_SPLITTER 0x00020000
2410 #define KSPIN_FLAG_USE_STANDARD_TRANSPORT 0x00040000
2411 #define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT 0x00080000
2412 #define KSPIN_FLAG_FIXED_FORMAT 0x00100000
2413 #define KSPIN_FLAG_GENERATE_EOS_EVENTS 0x00200000
2414 #define KSPIN_FLAG_RENDERER (KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY|KSPIN_FLAG_GENERATE_EOS_EVENTS)
2415 #define KSPIN_FLAG_IMPLEMENT_CLOCK 0x00400000
2416 #define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING 0x00800000
2417 #define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE 0x01000000
2418 #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
2419 #define KSPIN_FLAG_DENY_USERMODE_ACCESS 0x80000000
2424 const KSPIN_DESCRIPTOR_EX
* Descriptor
;
2428 KSPIN_COMMUNICATION Communication
;
2429 BOOLEAN ConnectionIsExternal
;
2430 KSPIN_INTERFACE ConnectionInterface
;
2431 KSPIN_MEDIUM ConnectionMedium
;
2432 KSPRIORITY ConnectionPriority
;
2433 PKSDATAFORMAT ConnectionFormat
;
2434 PKSMULTIPLE_ITEM AttributeList
;
2435 ULONG StreamHeaderSize
;
2436 KSPIN_DATAFLOW DataFlow
;
2437 KSSTATE DeviceState
;
2439 KSSTATE ClientState
;
2442 #define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler)\
2443 DEFINE_KSPROPERTY_ITEM(\
2444 KSPROPERTY_PIN_CINSTANCES,\
2447 sizeof(KSPIN_CINSTANCES),\
2448 NULL, NULL, 0, NULL, NULL, 0)
2450 #define DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(Handler)\
2451 DEFINE_KSPROPERTY_ITEM(\
2452 KSPROPERTY_PIN_CTYPES,\
2454 sizeof(KSPROPERTY),\
2456 NULL, NULL, 0, NULL, NULL, 0)
2458 #define DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(Handler)\
2459 DEFINE_KSPROPERTY_ITEM(\
2460 KSPROPERTY_PIN_DATAFLOW,\
2463 sizeof(KSPIN_DATAFLOW),\
2464 NULL, NULL, 0, NULL, NULL, 0)
2466 #define DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(Handler)\
2467 DEFINE_KSPROPERTY_ITEM(\
2468 KSPROPERTY_PIN_DATARANGES,\
2472 NULL, NULL, 0, NULL, NULL, 0)
2474 #define DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(Handler)\
2475 DEFINE_KSPROPERTY_ITEM(\
2476 KSPROPERTY_PIN_DATAINTERSECTION,\
2478 sizeof(KSP_PIN) + sizeof(KSMULTIPLE_ITEM),\
2480 NULL, NULL, 0, NULL, NULL, 0)
2482 #define DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(Handler)\
2483 DEFINE_KSPROPERTY_ITEM(\
2484 KSPROPERTY_PIN_INTERFACES,\
2488 NULL, NULL, 0, NULL, NULL, 0)
2490 #define DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(Handler)\
2491 DEFINE_KSPROPERTY_ITEM(\
2492 KSPROPERTY_PIN_MEDIUMS,\
2496 NULL, NULL, 0, NULL, NULL, 0)
2498 #define DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(Handler)\
2499 DEFINE_KSPROPERTY_ITEM(\
2500 KSPROPERTY_PIN_COMMUNICATION,\
2503 sizeof(KSPIN_COMMUNICATION),\
2504 NULL, NULL, 0, NULL, NULL, 0)
2506 #define DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(Handler)\
2507 DEFINE_KSPROPERTY_ITEM(\
2508 KSPROPERTY_PIN_GLOBALCINSTANCES,\
2511 sizeof(KSPIN_CINSTANCES),\
2512 NULL, NULL, 0, NULL, NULL, 0)
2514 #define DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(Handler)\
2515 DEFINE_KSPROPERTY_ITEM(\
2516 KSPROPERTY_PIN_NECESSARYINSTANCES,\
2520 NULL, NULL, 0, NULL, NULL, 0)
2522 #define DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(Handler)\
2523 DEFINE_KSPROPERTY_ITEM(\
2524 KSPROPERTY_PIN_PHYSICALCONNECTION,\
2528 NULL, NULL, 0, NULL, NULL, 0)
2530 #define DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(Handler)\
2531 DEFINE_KSPROPERTY_ITEM(\
2532 KSPROPERTY_PIN_CATEGORY,\
2536 NULL, NULL, 0, NULL, NULL, 0)
2538 #define DEFINE_KSPROPERTY_ITEM_PIN_NAME(Handler)\
2539 DEFINE_KSPROPERTY_ITEM(\
2540 KSPROPERTY_PIN_NAME,\
2544 NULL, NULL, 0, NULL, NULL, 0)
2546 #define DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(Handler)\
2547 DEFINE_KSPROPERTY_ITEM(\
2548 KSPROPERTY_PIN_CONSTRAINEDDATARANGES,\
2552 NULL, NULL, 0, NULL, NULL, 0)
2554 #define DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(Handler)\
2555 DEFINE_KSPROPERTY_ITEM(\
2556 KSPROPERTY_PIN_PROPOSEDATAFORMAT,\
2559 sizeof(KSDATAFORMAT),\
2560 (Handler), NULL, 0, NULL, NULL, 0)
2562 #define DEFINE_KSPROPERTY_PINSET(PinSet,\
2563 PropGeneral, PropInstances, PropIntersection)\
2564 DEFINE_KSPROPERTY_TABLE(PinSet) {\
2565 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
2566 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
2567 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
2568 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
2569 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
2570 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
2571 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
2572 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
2573 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
2574 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral)\
2577 #define DEFINE_KSPROPERTY_PINSETCONSTRAINED(PinSet,\
2578 PropGeneral, PropInstances, PropIntersection)\
2579 DEFINE_KSPROPERTY_TABLE(PinSet) {\
2580 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
2581 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
2582 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
2583 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
2584 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
2585 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
2586 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
2587 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
2588 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
2589 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
2590 DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)\
2603 #define DEFINE_KSPROPERTY_TABLE(tablename)\
2604 const KSPROPERTY_ITEM tablename[] =
2610 KSPIN_INTERFACE Interface
;
2611 KSPIN_MEDIUM Medium
;
2614 KSPRIORITY Priority
;
2615 } KSPIN_CONNECT
, *PKSPIN_CONNECT
;
2617 /* ===============================================================
2627 } KSTOPOLOGY_CONNECTION
, *PKSTOPOLOGY_CONNECTION
;
2631 ULONG CategoriesCount
;
2632 const GUID
* Categories
;
2633 ULONG TopologyNodesCount
;
2634 const GUID
* TopologyNodes
;
2635 ULONG TopologyConnectionsCount
;
2636 const KSTOPOLOGY_CONNECTION
* TopologyConnections
;
2637 const GUID
* TopologyNodesNames
;
2639 } KSTOPOLOGY
, *PKSTOPOLOGY
;
2642 #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler)\
2643 DEFINE_KSPROPERTY_ITEM(\
2644 KSPROPERTY_TOPOLOGY_CATEGORIES,\
2646 sizeof(KSPROPERTY),\
2648 NULL, NULL, 0, NULL, NULL, 0)
2650 #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler)\
2651 DEFINE_KSPROPERTY_ITEM(\
2652 KSPROPERTY_TOPOLOGY_NODES,\
2654 sizeof(KSPROPERTY),\
2656 NULL, NULL, 0, NULL, NULL, 0)
2658 #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler)\
2659 DEFINE_KSPROPERTY_ITEM(\
2660 KSPROPERTY_TOPOLOGY_CONNECTIONS,\
2662 sizeof(KSPROPERTY),\
2664 NULL, NULL, 0, NULL, NULL, 0)
2666 #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\
2667 DEFINE_KSPROPERTY_ITEM(\
2668 KSPROPERTY_TOPOLOGY_NAME,\
2672 NULL, NULL, 0, NULL, NULL, 0)
2674 #define DEFINE_KSPROPERTY_TOPOLOGYSET(TopologySet, Handler)\
2675 DEFINE_KSPROPERTY_TABLE(TopologySet) {\
2676 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler),\
2677 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler),\
2678 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler),\
2679 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\
2682 /* ===============================================================
2687 typedef void* UNKNOWN
;
2689 typedef PVOID (NTAPI
*PFNKSINITIALIZEALLOCATOR
)(
2690 IN PVOID InitialContext
,
2691 IN PKSALLOCATOR_FRAMING AllocatorFraming
,
2692 OUT PVOID
* Context
);
2694 #if defined(_NTDDK_)
2695 typedef NTSTATUS (NTAPI
*PFNKSALLOCATOR
)(
2697 IN ULONG BufferSize
,
2698 IN BOOLEAN InputOperation
);
2700 typedef NTSTATUS (NTAPI
*PFNKINTERSECTHANDLEREX
)(
2704 IN PKSDATARANGE DataRange
,
2705 IN PKSDATARANGE MatchingDataRange
,
2706 IN ULONG DataBufferSize
,
2707 OUT PVOID Data OPTIONAL
,
2708 OUT PULONG DataSize
);
2713 (NTAPI
*PFNALLOCATOR_ALLOCATEFRAME
)(
2714 IN PFILE_OBJECT FileObject
,
2720 (NTAPI
*PFNALLOCATOR_FREEFRAME
)(
2721 IN PFILE_OBJECT FileObject
,
2726 PFNALLOCATOR_ALLOCATEFRAME AllocateFrame
;
2727 PFNALLOCATOR_FREEFRAME FreeFrame
;
2728 } KSSTREAMALLOCATOR_FUNCTIONTABLE
, *PKSSTREAMALLOCATOR_FUNCTIONTABLE
;
2734 KSALLOCATOR_FRAMING Framing
;
2735 ULONG AllocatedFrames
;
2737 } KSSTREAMALLOCATOR_STATUS
, *PKSSTREAMALLOCATOR_STATUS
;
2741 KSALLOCATOR_FRAMING_EX Framing
;
2742 ULONG AllocatedFrames
;
2744 } KSSTREAMALLOCATOR_STATUS_EX
, *PKSSTREAMALLOCATOR_STATUS_EX
;
2749 ULONG TypeSpecificFlags
;
2750 KSTIME PresentationTime
;
2759 } KSSTREAM_HEADER
, *PKSSTREAM_HEADER
;
2761 #define KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT 0x00000001
2762 #define KSSTREAM_HEADER_OPTIONSF_PREROLL 0x00000002
2763 #define KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY 0x00000004
2764 #define KSSTREAM_HEADER_OPTIONSF_TYPECHANGED 0x00000008
2765 #define KSSTREAM_HEADER_OPTIONSF_TIMEVALID 0x00000010
2766 #define KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY 0x00000040
2767 #define KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE 0x00000080
2768 #define KSSTREAM_HEADER_OPTIONSF_DURATIONVALID 0x00000100
2769 #define KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 0x00000200
2770 #define KSSTREAM_HEADER_OPTIONSF_BUFFEREDTRANSFER 0x00000400
2771 #define KSSTREAM_HEADER_OPTIONSF_VRAM_DATA_TRANSFER 0x00000800
2772 #define KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA 0x80000000
2774 /* ===============================================================
2777 #if defined(_NTDDK_)
2779 PHYSICAL_ADDRESS PhysicalAddress
;
2786 KSSTREAM_POINTER_STATE_UNLOCKED
= 0,
2787 KSSTREAM_POINTER_STATE_LOCKED
2788 } KSSTREAM_POINTER_STATE
;
2790 typedef struct _KSGATE KSGATE
, *PKSGATE
;
2791 typedef struct _KSPROCESSPIN_INDEXENTRY KSPROCESSPIN_INDEXENTRY
, *PKSPROCESSPIN_INDEXENTRY
;
2798 struct _KSSTREAM_POINTER_OFFSET
2800 #if defined(_NTDDK_)
2803 PKSMAPPING Mappings
;
2808 #if !defined(_WIN64)
2814 #if defined(_NTDDK_)
2815 struct _KSSTREAM_POINTER
2819 PKSSTREAM_HEADER StreamHeader
;
2820 PKSSTREAM_POINTER_OFFSET Offset
;
2821 KSSTREAM_POINTER_OFFSET OffsetIn
;
2822 KSSTREAM_POINTER_OFFSET OffsetOut
;
2825 struct _KSPROCESSPIN
2828 PKSSTREAM_POINTER StreamPointer
;
2829 PKSPROCESSPIN InPlaceCounterpart
;
2830 PKSPROCESSPIN DelegateBranch
;
2831 PKSPROCESSPIN CopySource
;
2833 ULONG BytesAvailable
;
2839 struct _KSPROCESSPIN_INDEXENTRY
2841 PKSPROCESSPIN
* Pins
;
2846 /* ===============================================================
2852 #if defined(_NTDDK_)
2854 typedef struct _KSFILTER_DISPATCH KSFILTER_DISPATCH
, *PKSFILTER_DISPATCH
;
2855 typedef struct _KSDEVICE KSDEVICE
, *PKSDEVICE
;
2856 typedef struct _KSFILTER KSFILTER
, *PKSFILTER
;
2857 typedef struct _KSNODE_DESCRIPTOR KSNODE_DESCRIPTOR
, *PKSNODE_DESCRIPTOR
;
2858 typedef struct _KSFILTER_DESCRIPTOR KSFILTER_DESCRIPTOR
, *PKSFILTER_DESCRIPTOR
;
2859 typedef struct _KSDEVICE_DESCRIPTOR KSDEVICE_DESCRIPTOR
, *PKSDEVICE_DESCRIPTOR
;
2861 typedef NTSTATUS (NTAPI
*PFNKSDEVICECREATE
)(
2862 IN PKSDEVICE Device
);
2864 typedef NTSTATUS (NTAPI
*PFNKSDEVICEPNPSTART
)(
2865 IN PKSDEVICE Device
,
2867 IN PCM_RESOURCE_LIST TranslatedResourceList OPTIONAL
,
2868 IN PCM_RESOURCE_LIST UntranslatedResourceList OPTIONAL
);
2870 typedef NTSTATUS (NTAPI
*PFNKSDEVICE
)(
2871 IN PKSDEVICE Device
);
2873 typedef NTSTATUS (NTAPI
*PFNKSDEVICEIRP
)(
2874 IN PKSDEVICE Device
,
2877 typedef VOID (NTAPI
*PFNKSDEVICEIRPVOID
)(
2878 IN PKSDEVICE Device
,
2881 typedef NTSTATUS (NTAPI
*PFNKSDEVICEQUERYCAPABILITIES
)(
2882 IN PKSDEVICE Device
,
2884 IN OUT PDEVICE_CAPABILITIES Capabilities
);
2886 typedef NTSTATUS (NTAPI
*PFNKSDEVICEQUERYPOWER
)(
2887 IN PKSDEVICE Device
,
2889 IN DEVICE_POWER_STATE DeviceTo
,
2890 IN DEVICE_POWER_STATE DeviceFrom
,
2891 IN SYSTEM_POWER_STATE SystemTo
,
2892 IN SYSTEM_POWER_STATE SystemFrom
,
2893 IN POWER_ACTION Action
);
2895 typedef VOID (NTAPI
*PFNKSDEVICESETPOWER
)(
2896 IN PKSDEVICE Device
,
2898 IN DEVICE_POWER_STATE To
,
2899 IN DEVICE_POWER_STATE From
);
2901 typedef struct _KSDEVICE_DISPATCH
{
2902 PFNKSDEVICECREATE Add
;
2903 PFNKSDEVICEPNPSTART Start
;
2904 PFNKSDEVICE PostStart
;
2905 PFNKSDEVICEIRP QueryStop
;
2906 PFNKSDEVICEIRPVOID CancelStop
;
2907 PFNKSDEVICEIRPVOID Stop
;
2908 PFNKSDEVICEIRP QueryRemove
;
2909 PFNKSDEVICEIRPVOID CancelRemove
;
2910 PFNKSDEVICEIRPVOID Remove
;
2911 PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities
;
2912 PFNKSDEVICEIRPVOID SurpriseRemoval
;
2913 PFNKSDEVICEQUERYPOWER QueryPower
;
2914 PFNKSDEVICESETPOWER SetPower
;
2915 PFNKSDEVICEIRP QueryInterface
;
2916 }KSDEVICE_DISPATCH
, *PKSDEVICE_DISPATCH
;
2918 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
2919 #define KSDEVICE_DESCRIPTOR_VERSION_2 (0x110)
2920 #define MIN_DEV_VER_FOR_FLAGS (0x110)
2925 const KSDEVICE_DESCRIPTOR
* Descriptor
;
2928 PDEVICE_OBJECT FunctionalDeviceObject
;
2929 PDEVICE_OBJECT PhysicalDeviceObject
;
2930 PDEVICE_OBJECT NextDeviceObject
;
2932 SYSTEM_POWER_STATE SystemPowerState
;
2933 DEVICE_POWER_STATE DevicePowerState
;
2937 /* ===============================================================
2940 #if defined(_NTDDK_)
2943 const KSFILTER_DESCRIPTOR
* Descriptor
;
2950 (NTAPI
*PFNKSFILTERPOWER
)(
2951 IN PKSFILTER Filter
,
2952 IN DEVICE_POWER_STATE State
2955 typedef NTSTATUS (NTAPI
*PFNKSFILTERIRP
)(
2956 IN PKSFILTER Filter
,
2959 typedef NTSTATUS (NTAPI
*PFNKSFILTERPROCESS
)(
2960 IN PKSFILTER Filter
,
2961 IN PKSPROCESSPIN_INDEXENTRY ProcessPinsIndex
);
2963 typedef NTSTATUS (NTAPI
*PFNKSFILTERVOID
)(
2964 IN PKSFILTER Filter
);
2966 struct _KSFILTER_DISPATCH
2968 PFNKSFILTERIRP Create
;
2969 PFNKSFILTERIRP Close
;
2970 PFNKSFILTERPROCESS Process
;
2971 PFNKSFILTERVOID Reset
;
2974 struct _KSNODE_DESCRIPTOR
2976 const KSAUTOMATION_TABLE
* AutomationTable
;
2981 struct _KSFILTER_DESCRIPTOR
2983 const KSFILTER_DISPATCH
* Dispatch
;
2984 const KSAUTOMATION_TABLE
* AutomationTable
;
2987 const GUID
* ReferenceGuid
;
2988 ULONG PinDescriptorsCount
;
2989 ULONG PinDescriptorSize
;
2990 const KSPIN_DESCRIPTOR_EX
* PinDescriptors
;
2991 ULONG CategoriesCount
;
2992 const GUID
* Categories
;
2993 ULONG NodeDescriptorsCount
;
2994 ULONG NodeDescriptorSize
;
2995 const KSNODE_DESCRIPTOR
* NodeDescriptors
;
2996 ULONG ConnectionsCount
;
2997 const KSTOPOLOGY_CONNECTION
* Connections
;
2998 const KSCOMPONENTID
* ComponentId
;
3001 #define KSFILTER_DESCRIPTOR_VERSION ((ULONG)-1)
3003 struct _KSDEVICE_DESCRIPTOR
3005 const KSDEVICE_DISPATCH
* Dispatch
;
3006 ULONG FilterDescriptorsCount
;
3007 const KSFILTER_DESCRIPTOR
*const* FilterDescriptors
;
3012 struct _KSFILTERFACTORY
{
3013 const KSFILTER_DESCRIPTOR
* FilterDescriptor
;
3018 #define DEFINE_KSFILTER_DESCRIPTOR(descriptor)\
3019 const KSFILTER_DESCRIPTOR descriptor =
3021 #define DEFINE_KSFILTER_PIN_DESCRIPTORS(table)\
3022 SIZEOF_ARRAY(table),\
3026 #define DEFINE_KSFILTER_CATEGORIES(table)\
3027 SIZEOF_ARRAY(table),\
3030 #define DEFINE_KSFILTER_CATEGORY(category)\
3034 #define DEFINE_KSFILTER_CATEGORIES_NULL\
3038 #define DEFINE_KSFILTER_NODE_DESCRIPTORS(table)\
3039 SIZEOF_ARRAY(table),\
3043 #define DEFINE_KSFILTER_NODE_DESCRIPTORS_NULL\
3045 sizeof(KSNODE_DESCRIPTOR),\
3048 #define DEFINE_KSFILTER_CONNECTIONS(table)\
3049 SIZEOF_ARRAY(table),\
3052 #define DEFINE_KSFILTER_DEFAULT_CONNECTIONS\
3057 /* ===============================================================
3058 Minidriver Callbacks
3060 #if defined(_NTDDK_)
3061 typedef NTSTATUS (NTAPI
*KStrMethodHandler
)(
3063 IN PKSIDENTIFIER Request
,
3066 typedef NTSTATUS (NTAPI
*KStrSupportHandler
)(
3068 IN PKSIDENTIFIER Request
,
3072 /* ===============================================================
3075 #if defined(_NTDDK_)
3076 KSDDKAPI NTSTATUS NTAPI
3078 IN HANDLE ConnectionHandle
,
3079 IN PKSALLOCATOR_FRAMING AllocatorFraming
,
3080 OUT PHANDLE AllocatorHandle
);
3082 KSDDKAPI NTSTATUS NTAPI
3083 KsCreateDefaultAllocator(
3086 KSDDKAPI NTSTATUS NTAPI
3087 KsValidateAllocatorCreateRequest(
3089 OUT PKSALLOCATOR_FRAMING
* AllocatorFraming
);
3091 KSDDKAPI NTSTATUS NTAPI
3092 KsCreateDefaultAllocatorEx(
3094 IN PVOID InitializeContext OPTIONAL
,
3095 IN PFNKSDEFAULTALLOCATE DefaultAllocate OPTIONAL
,
3096 IN PFNKSDEFAULTFREE DefaultFree OPTIONAL
,
3097 IN PFNKSINITIALIZEALLOCATOR InitializeAllocator OPTIONAL
,
3098 IN PFNKSDELETEALLOCATOR DeleteAllocator OPTIONAL
);
3100 KSDDKAPI NTSTATUS NTAPI
3101 KsValidateAllocatorFramingEx(
3102 IN PKSALLOCATOR_FRAMING_EX Framing
,
3103 IN ULONG BufferSize
,
3104 IN
const KSALLOCATOR_FRAMING_EX
* PinFraming
);
3107 /* ===============================================================
3110 #if defined(_NTDDK_)
3111 typedef BOOLEAN (NTAPI
*PFNKSSETTIMER
)(
3114 IN LARGE_INTEGER DueTime
,
3117 typedef BOOLEAN (NTAPI
*PFNKSCANCELTIMER
)(
3121 typedef LONGLONG (FASTCALL
*PFNKSCORRELATEDTIME
)(
3123 OUT PLONGLONG SystemTime
);
3125 KSDDKAPI NTSTATUS NTAPI
3127 IN HANDLE ConnectionHandle
,
3128 IN PKSCLOCK_CREATE ClockCreate
,
3129 OUT PHANDLE ClockHandle
);
3131 KSDDKAPI NTSTATUS NTAPI
3132 KsCreateDefaultClock(
3134 IN PKSDEFAULTCLOCK DefaultClock
);
3136 KSDDKAPI NTSTATUS NTAPI
3137 KsAllocateDefaultClock(
3138 OUT PKSDEFAULTCLOCK
* DefaultClock
);
3140 KSDDKAPI NTSTATUS NTAPI
3141 KsAllocateDefaultClockEx(
3142 OUT PKSDEFAULTCLOCK
* DefaultClock
,
3143 IN PVOID Context OPTIONAL
,
3144 IN PFNKSSETTIMER SetTimer OPTIONAL
,
3145 IN PFNKSCANCELTIMER CancelTimer OPTIONAL
,
3146 IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL
,
3147 IN
const KSRESOLUTION
* Resolution OPTIONAL
,
3152 IN PKSDEFAULTCLOCK DefaultClock
);
3154 KSDDKAPI NTSTATUS NTAPI
3155 KsValidateClockCreateRequest(
3157 OUT PKSCLOCK_CREATE
* ClockCreate
);
3159 KSDDKAPI KSSTATE NTAPI
3160 KsGetDefaultClockState(
3161 IN PKSDEFAULTCLOCK DefaultClock
);
3164 KsSetDefaultClockState(
3165 IN PKSDEFAULTCLOCK DefaultClock
,
3168 KSDDKAPI LONGLONG NTAPI
3169 KsGetDefaultClockTime(
3170 IN PKSDEFAULTCLOCK DefaultClock
);
3173 KsSetDefaultClockTime(
3174 IN PKSDEFAULTCLOCK DefaultClock
,
3178 /* ===============================================================
3182 /* Method sets - TODO: Make into macros! */
3183 #if defined(_NTDDK_)
3186 KSMETHOD_SET_IRP_STORAGE(
3190 KSMETHOD_ITEM_IRP_STORAGE(
3194 KSMETHOD_TYPE_IRP_STORAGE(
3198 KSDDKAPI NTSTATUS NTAPI
3201 IN ULONG MethodSetsCount
,
3202 IN PKSMETHOD_SET MethodSet
);
3204 KSDDKAPI NTSTATUS NTAPI
3205 KsMethodHandlerWithAllocator(
3207 IN ULONG MethodSetsCount
,
3208 IN PKSMETHOD_SET MethodSet
,
3209 IN PFNKSALLOCATOR Allocator OPTIONAL
,
3210 IN ULONG MethodItemSize OPTIONAL
);
3212 KSDDKAPI BOOLEAN NTAPI
3213 KsFastMethodHandler(
3214 IN PFILE_OBJECT FileObject
,
3215 IN PKSMETHOD UNALIGNED Method
,
3216 IN ULONG MethodLength
,
3217 IN OUT PVOID UNALIGNED Data
,
3218 IN ULONG DataLength
,
3219 OUT PIO_STATUS_BLOCK IoStatus
,
3220 IN ULONG MethodSetsCount
,
3221 IN
const KSMETHOD_SET
* MethodSet
);
3224 /* ===============================================================
3227 #if defined(_NTDDK_)
3228 KSDDKAPI NTSTATUS NTAPI
3231 IN ULONG PropertySetsCount
,
3232 IN
const KSPROPERTY_SET
* PropertySet
);
3234 KSDDKAPI NTSTATUS NTAPI
3235 KsPropertyHandlerWithAllocator(
3237 IN ULONG PropertySetsCount
,
3238 IN PKSPROPERTY_SET PropertySet
,
3239 IN PFNKSALLOCATOR Allocator OPTIONAL
,
3240 IN ULONG PropertyItemSize OPTIONAL
);
3242 KSDDKAPI NTSTATUS NTAPI
3243 KsUnserializeObjectPropertiesFromRegistry(
3244 IN PFILE_OBJECT FileObject
,
3245 IN HANDLE ParentKey OPTIONAL
,
3246 IN PUNICODE_STRING RegistryPath OPTIONAL
);
3248 KSDDKAPI BOOLEAN NTAPI
3249 KsFastPropertyHandler(
3250 IN PFILE_OBJECT FileObject
,
3251 IN PKSPROPERTY UNALIGNED Property
,
3252 IN ULONG PropertyLength
,
3253 IN OUT PVOID UNALIGNED Data
,
3254 IN ULONG DataLength
,
3255 OUT PIO_STATUS_BLOCK IoStatus
,
3256 IN ULONG PropertySetsCount
,
3257 IN
const KSPROPERTY_SET
* PropertySet
);
3260 /* ===============================================================
3264 #if defined(_NTDDK_)
3266 #define KSPROBE_STREAMREAD 0x00000000
3267 #define KSPROBE_STREAMWRITE 0x00000001
3268 #define KSPROBE_ALLOCATEMDL 0x00000010
3269 #define KSPROBE_PROBEANDLOCK 0x00000020
3270 #define KSPROBE_SYSTEMADDRESS 0x00000040
3271 #define KSPROBE_MODIFY 0x00000200
3272 #define KSPROBE_STREAMWRITEMODIFY (KSPROBE_MODIFY | KSPROBE_STREAMWRITE)
3273 #define KSPROBE_ALLOWFORMATCHANGE 0x00000080
3275 #define KSSTREAM_READ KSPROBE_STREAMREAD
3276 #define KSSTREAM_WRITE KSPROBE_STREAMWRITE
3277 #define KSSTREAM_PAGED_DATA 0x00000000
3278 #define KSSTREAM_NONPAGED_DATA 0x00000100
3279 #define KSSTREAM_SYNCHRONOUS 0x00001000
3280 #define KSSTREAM_FAILUREEXCEPTION 0x00002000
3284 (NTAPI
*PFNKSGENERATEEVENTCALLBACK
)(
3286 IN PKSEVENT_ENTRY EventEntry
3289 KSDDKAPI NTSTATUS NTAPI
3291 IN PKSEVENT_ENTRY EntryEvent
);
3296 IN
const GUID
* EventSet OPTIONAL
,
3299 IN PVOID Data OPTIONAL
,
3300 IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL
,
3301 IN PVOID CallBackContext OPTIONAL
3305 KSDDKAPI NTSTATUS NTAPI
3306 KsEnableEventWithAllocator(
3308 IN ULONG EventSetsCount
,
3309 IN PKSEVENT_SET EventSet
,
3310 IN OUT PLIST_ENTRY EventsList OPTIONAL
,
3311 IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL
,
3312 IN PVOID EventsLock OPTIONAL
,
3313 IN PFNKSALLOCATOR Allocator OPTIONAL
,
3314 IN ULONG EventItemSize OPTIONAL
);
3316 KSDDKAPI NTSTATUS NTAPI
3317 KsGenerateDataEvent(
3318 IN PKSEVENT_ENTRY EventEntry
,
3322 KSDDKAPI NTSTATUS NTAPI
3325 IN ULONG EventSetsCount
,
3326 IN KSEVENT_SET
* EventSet
,
3327 IN OUT PLIST_ENTRY EventsList OPTIONAL
,
3328 IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL
,
3329 IN PVOID EventsLock OPTIONAL
);
3333 IN PKSEVENT_ENTRY EventEntry
);
3335 KSDDKAPI NTSTATUS NTAPI
3338 IN OUT PLIST_ENTRY EventsList
,
3339 IN KSEVENTS_LOCKTYPE EventsFlags
,
3340 IN PVOID EventsLock
);
3344 IN PFILE_OBJECT FileObject
,
3345 IN OUT PLIST_ENTRY EventsList
,
3346 IN KSEVENTS_LOCKTYPE EVentsFlags
,
3347 IN PVOID EventsLock
);
3349 /* ===============================================================
3353 KSDDKAPI NTSTATUS NTAPI
3354 KsValidateTopologyNodeCreateRequest(
3356 IN PKSTOPOLOGY Topology
,
3357 OUT PKSNODE_CREATE
* NodeCreate
);
3359 KSDDKAPI NTSTATUS NTAPI
3360 KsCreateTopologyNode(
3361 IN HANDLE ParentHandle
,
3362 IN PKSNODE_CREATE NodeCreate
,
3363 IN ACCESS_MASK DesiredAccess
,
3364 OUT PHANDLE NodeHandle
);
3366 KSDDKAPI NTSTATUS NTAPI
3367 KsTopologyPropertyHandler(
3369 IN PKSPROPERTY Property
,
3371 IN
const KSTOPOLOGY
* Topology
);
3375 /* ===============================================================
3376 Connectivity Functions
3379 KSDDKAPI NTSTATUS NTAPI
3381 IN HANDLE FilterHandle
,
3382 IN PKSPIN_CONNECT Connect
,
3383 IN ACCESS_MASK DesiredAccess
,
3384 OUT PHANDLE ConnectionHandle
);
3386 KSDDKAPI NTSTATUS NTAPI
3387 KsValidateConnectRequest(
3389 IN ULONG DescriptorsCount
,
3390 IN KSPIN_DESCRIPTOR
* Descriptor
,
3391 OUT PKSPIN_CONNECT
* Connect
);
3393 KSDDKAPI NTSTATUS NTAPI
3394 KsPinPropertyHandler(
3396 IN PKSPROPERTY Property
,
3398 IN ULONG DescriptorsCount
,
3399 IN
const KSPIN_DESCRIPTOR
* Descriptor
);
3401 KSDDKAPI NTSTATUS NTAPI
3402 KsPinDataIntersection(
3406 IN ULONG DescriptorsCount
,
3407 IN
const KSPIN_DESCRIPTOR
* Descriptor
,
3408 IN PFNKSINTERSECTHANDLER IntersectHandler
);
3410 KSDDKAPI NTSTATUS NTAPI
3411 KsPinDataIntersectionEx(
3415 IN ULONG DescriptorsCount
,
3416 IN
const KSPIN_DESCRIPTOR
* Descriptor
,
3417 IN ULONG DescriptorSize
,
3418 IN PFNKSINTERSECTHANDLEREX IntersectHandler OPTIONAL
,
3419 IN PVOID HandlerContext OPTIONAL
);
3421 KSDDKAPI PKSFILTER NTAPI
3422 KsPinGetParentFilter(
3426 KSDDKAPI PKSPIN NTAPI
3427 KsPinGetNextSiblingPin(
3432 /* Does this belong here? */
3434 KSDDKAPI NTSTATUS NTAPI
3435 KsHandleSizedListQuery(
3437 IN ULONG DataItemsCount
,
3438 IN ULONG DataItemSize
,
3439 IN
const VOID
* DataItems
);
3442 /* ===============================================================
3443 IRP Helper Functions
3446 typedef NTSTATUS (NTAPI
*PFNKSIRPLISTCALLBACK
)(
3450 KSDDKAPI NTSTATUS NTAPI
3451 KsAcquireResetValue(
3453 OUT KSRESET
* ResetValue
);
3456 KsAddIrpToCancelableQueue(
3457 IN OUT PLIST_ENTRY QueueHead
,
3458 IN PKSPIN_LOCK SpinLock
,
3460 IN KSLIST_ENTRY_LOCATION ListLocation
,
3461 IN PDRIVER_CANCEL DriverCancel OPTIONAL
);
3463 KSDDKAPI NTSTATUS NTAPI
3464 KsAddObjectCreateItemToDeviceHeader(
3465 IN KSDEVICE_HEADER Header
,
3466 IN PDRIVER_DISPATCH Create
,
3468 IN PWCHAR ObjectClass
,
3469 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
3471 KSDDKAPI NTSTATUS NTAPI
3472 KsAddObjectCreateItemToObjectHeader(
3473 IN KSOBJECT_HEADER Header
,
3474 IN PDRIVER_DISPATCH Create
,
3476 IN PWCHAR ObjectClass
,
3477 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
3479 KSDDKAPI NTSTATUS NTAPI
3480 KsAllocateDeviceHeader(
3481 OUT KSDEVICE_HEADER
* Header
,
3482 IN ULONG ItemsCount
,
3483 IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL
);
3485 KSDDKAPI NTSTATUS NTAPI
3486 KsAllocateExtraData(
3489 OUT PVOID
* ExtraBuffer
);
3491 KSDDKAPI NTSTATUS NTAPI
3492 KsAllocateObjectCreateItem(
3493 IN KSDEVICE_HEADER Header
,
3494 IN PKSOBJECT_CREATE_ITEM CreateItem
,
3495 IN BOOLEAN AllocateEntry
,
3496 IN PFNKSITEMFREECALLBACK ItemFreeCallback OPTIONAL
);
3498 KSDDKAPI NTSTATUS NTAPI
3499 KsAllocateObjectHeader(
3500 OUT KSOBJECT_HEADER
*Header
,
3501 IN ULONG ItemsCount
,
3502 IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL
,
3504 IN KSDISPATCH_TABLE
* Table
);
3508 IN OUT PLIST_ENTRY QueueHead
,
3509 IN PKSPIN_LOCK SpinLock
);
3513 IN PDEVICE_OBJECT DeviceObject
,
3516 KSDDKAPI NTSTATUS NTAPI
3517 KsDefaultDeviceIoCompletion(
3518 IN PDEVICE_OBJECT DeviceObject
,
3522 KSDDKAPI ULONG NTAPI
3523 KsDecrementCountedWorker(
3524 IN PKSWORKER Worker);
3527 KSDDKAPI BOOLEAN NTAPI
3528 KsDispatchFastIoDeviceControlFailure(
3529 IN PFILE_OBJECT FileObject
,
3531 IN PVOID InputBuffer OPTIONAL
,
3532 IN ULONG InputBufferLength
,
3533 OUT PVOID OutputBuffer OPTIONAL
,
3534 IN ULONG OutputBufferLength
,
3535 IN ULONG IoControlCode
,
3536 OUT PIO_STATUS_BLOCK IoStatus
,
3537 IN PDEVICE_OBJECT DeviceObject
); /* always return false */
3539 KSDDKAPI BOOLEAN NTAPI
3540 KsDispatchFastReadFailure(
3541 IN PFILE_OBJECT FileObject
,
3542 IN PLARGE_INTEGER FileOffset
,
3547 OUT PIO_STATUS_BLOCK IoStatus
,
3548 IN PDEVICE_OBJECT DeviceObject
); /* always return false */
3550 /* This function does the same as the above */
3551 #define KsDispatchFastWriteFailure KsDispatchFastReadFailure
3553 KSDDKAPI NTSTATUS NTAPI
3554 KsDispatchInvalidDeviceRequest(
3555 IN PDEVICE_OBJECT DeviceObject
,
3558 KSDDKAPI NTSTATUS NTAPI
3560 IN PDEVICE_OBJECT DeviceObject
,
3563 KSDDKAPI NTSTATUS NTAPI
3564 KsDispatchSpecificMethod(
3566 IN PFNKSHANDLER Handler
);
3568 KSDDKAPI NTSTATUS NTAPI
3569 KsDispatchSpecificProperty(
3571 IN PFNKSHANDLER Handler
);
3573 KSDDKAPI NTSTATUS NTAPI
3574 KsForwardAndCatchIrp(
3575 IN PDEVICE_OBJECT DeviceObject
,
3577 IN PFILE_OBJECT FileObject
,
3578 IN KSSTACK_USE StackUse
);
3580 KSDDKAPI NTSTATUS NTAPI
3583 IN PFILE_OBJECT FileObject
,
3584 IN BOOLEAN ReuseStackLocation
);
3588 IN KSDEVICE_HEADER Header
);
3594 KSDDKAPI NTSTATUS NTAPI
3595 KsGetChildCreateParameter(
3597 OUT PVOID
* CreateParameter
);
3599 KSDDKAPI NTSTATUS NTAPI
3600 KsMoveIrpsOnCancelableQueue(
3601 IN OUT PLIST_ENTRY SourceList
,
3602 IN PKSPIN_LOCK SourceLock
,
3603 IN OUT PLIST_ENTRY DestinationList
,
3604 IN PKSPIN_LOCK DestinationLock OPTIONAL
,
3605 IN KSLIST_ENTRY_LOCATION ListLocation
,
3606 IN PFNKSIRPLISTCALLBACK ListCallback
,
3609 KSDDKAPI NTSTATUS NTAPI
3612 IN ULONG ProbeFlags
,
3613 IN ULONG HeaderSize
);
3615 KSDDKAPI NTSTATUS NTAPI
3616 KsQueryInformationFile(
3617 IN PFILE_OBJECT FileObject
,
3618 OUT PVOID FileInformation
,
3620 IN FILE_INFORMATION_CLASS FileInformationClass
);
3622 KSDDKAPI ACCESS_MASK NTAPI
3623 KsQueryObjectAccessMask(
3624 IN KSOBJECT_HEADER Header
);
3626 KSDDKAPI PKSOBJECT_CREATE_ITEM NTAPI
3627 KsQueryObjectCreateItem(
3628 IN KSOBJECT_HEADER Header
);
3630 KSDDKAPI NTSTATUS NTAPI
3632 IN PFILE_OBJECT FileObject
,
3633 IN PKEVENT Event OPTIONAL
,
3634 IN PVOID PortContext OPTIONAL
,
3635 OUT PIO_STATUS_BLOCK IoStatusBlock
,
3638 IN ULONG Key OPTIONAL
,
3639 IN KPROCESSOR_MODE RequestorMode
);
3642 KsReleaseIrpOnCancelableQueue(
3644 IN PDRIVER_CANCEL DriverCancel OPTIONAL
);
3647 KsRemoveIrpFromCancelableQueue(
3648 IN OUT PLIST_ENTRY QueueHead
,
3649 IN PKSPIN_LOCK SpinLock
,
3650 IN KSLIST_ENTRY_LOCATION ListLocation
,
3651 IN KSIRP_REMOVAL_OPERATION RemovalOperation
);
3654 KsRemoveSpecificIrpFromCancelableQueue(
3657 KSDDKAPI NTSTATUS NTAPI
3658 KsSetInformationFile(
3659 IN PFILE_OBJECT FileObject
,
3660 IN PVOID FileInformation
,
3662 IN FILE_INFORMATION_CLASS FileInformationClass
);
3664 KSDDKAPI NTSTATUS NTAPI
3665 KsSetMajorFunctionHandler(
3666 IN PDRIVER_OBJECT DriverObject
,
3667 IN ULONG MajorFunction
);
3669 KSDDKAPI NTSTATUS NTAPI
3671 IN PFILE_OBJECT FileObject
,
3672 IN PKEVENT Event OPTIONAL
,
3673 IN PVOID PortContext OPTIONAL
,
3674 IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL
,
3675 IN PVOID CompletionContext OPTIONAL
,
3676 IN KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL
,
3677 OUT PIO_STATUS_BLOCK IoStatusBlock
,
3678 IN OUT PVOID StreamHeaders
,
3681 IN KPROCESSOR_MODE RequestorMode
);
3683 KSDDKAPI NTSTATUS NTAPI
3685 IN PFILE_OBJECT FileObject
,
3686 IN PKEVENT Event OPTIONAL
,
3687 IN PVOID PortContext OPTIONAL
,
3688 OUT PIO_STATUS_BLOCK IoStatusBlock
,
3691 IN ULONG Key OPTIONAL
,
3692 IN KPROCESSOR_MODE RequestorMode
);
3695 KSDDKAPI NTSTATUS NTAPI
3696 KsDefaultForwardIrp(
3697 IN PDEVICE_OBJECT DeviceObject
,
3700 /* ===============================================================
3701 Worker Management Functions
3704 KSDDKAPI NTSTATUS NTAPI
3706 IN WORK_QUEUE_TYPE WorkQueueType
,
3707 OUT PKSWORKER
* Worker
);
3711 IN PKSWORKER Worker
);
3713 KSDDKAPI NTSTATUS NTAPI
3714 KsRegisterCountedWorker(
3715 IN WORK_QUEUE_TYPE WorkQueueType
,
3716 IN PWORK_QUEUE_ITEM CountedWorkItem
,
3717 OUT PKSWORKER
* Worker
);
3719 KSDDKAPI ULONG NTAPI
3720 KsDecrementCountedWorker(
3721 IN PKSWORKER Worker
);
3723 KSDDKAPI ULONG NTAPI
3724 KsIncrementCountedWorker(
3725 IN PKSWORKER Worker
);
3727 KSDDKAPI NTSTATUS NTAPI
3729 IN PKSWORKER Worker
,
3730 IN PWORK_QUEUE_ITEM WorkItem
);
3733 /* ===============================================================
3737 KSDDKAPI NTSTATUS NTAPI
3740 IN POOL_TYPE PoolType
,
3741 IN ULONG_PTR ResourceName
,
3742 IN ULONG ResourceType
,
3743 OUT PVOID
* Resource
,
3744 OUT PULONG ResourceSize
);
3747 KSDDKAPI NTSTATUS NTAPI
3748 KsGetImageNameAndResourceId(
3750 OUT PUNICODE_STRING ImageName,
3751 OUT PULONG_PTR ResourceId,
3752 OUT PULONG ValueType);
3754 KSDDKAPI NTSTATUS NTAPI
3756 IN PDEVICE_OBJECT PhysicalDeviceObject,
3757 IN PUNICODE_STRING ModuleName,
3758 OUT PUNICODE_STRING ImageName,
3759 OUT PULONG_PTR ResourceId,
3760 OUT PULONG ValueType);
3764 /* ===============================================================
3765 Misc. Helper Functions
3768 KSDDKAPI PVOID NTAPI
3773 KSDDKAPI NTSTATUS NTAPI
3775 IN PUNICODE_STRING SymbolicLink
,
3776 IN PKSPIN_MEDIUM Medium
,
3777 IN ULONG PinDirection
);
3779 KSDDKAPI NTSTATUS NTAPI
3780 KsDefaultDispatchPnp(
3781 IN PDEVICE_OBJECT DeviceObject
,
3785 KsSetDevicePnpAndBaseObject(
3786 IN KSDEVICE_HEADER Header
,
3787 IN PDEVICE_OBJECT PnpDeviceObject
,
3788 IN PDEVICE_OBJECT BaseDevice
);
3790 KSDDKAPI NTSTATUS NTAPI
3791 KsDefaultDispatchPower(
3792 IN PDEVICE_OBJECT DeviceObject
,
3797 IN KSOBJECT_HEADER Header
,
3798 IN PFNKSCONTEXT_DISPATCH PowerDispatch OPTIONAL
,
3799 IN PVOID PowerContext OPTIONAL
);
3801 KSDDKAPI NTSTATUS NTAPI
3802 KsReferenceBusObject(
3803 IN KSDEVICE_HEADER Header
);
3806 KsDereferenceBusObject(
3807 IN KSDEVICE_HEADER Header
);
3809 KSDDKAPI NTSTATUS NTAPI
3810 KsFreeObjectCreateItem(
3811 IN KSDEVICE_HEADER Header
,
3812 IN PUNICODE_STRING CreateItem
);
3814 KSDDKAPI NTSTATUS NTAPI
3815 KsFreeObjectCreateItemsByContext(
3816 IN KSDEVICE_HEADER Header
,
3821 IN PDRIVER_OBJECT DriverObject
);
3823 KSDDKAPI PDEVICE_OBJECT NTAPI
3824 KsQueryDevicePnpObject(
3825 IN KSDEVICE_HEADER Header
);
3828 KsRecalculateStackDepth(
3829 IN KSDEVICE_HEADER Header
,
3830 IN BOOLEAN ReuseStackLocation
);
3833 KsSetTargetDeviceObject(
3834 IN KSOBJECT_HEADER Header
,
3835 IN PDEVICE_OBJECT TargetDevice OPTIONAL
);
3839 IN KSOBJECT_HEADER Header
,
3840 IN KSTARGET_STATE TargetState
);
3842 KSDDKAPI NTSTATUS NTAPI
3843 KsSynchronousIoControlDevice(
3844 IN PFILE_OBJECT FileObject
,
3845 IN KPROCESSOR_MODE RequestorMode
,
3849 OUT PVOID OutBuffer
,
3851 OUT PULONG BytesReturned
);
3856 KsFilterGetFirstChildPin(
3857 IN PKSFILTER Filter
,
3864 KsPinGetConnectedPinFileObject(
3874 IN HANDLE FilterHandle
,
3875 IN PKSPIN_CONNECT Connect
,
3876 IN ACCESS_MASK DesiredAccess
,
3877 OUT PHANDLE ConnectionHandle
3883 /* ===============================================================
3884 AVStream Functions (XP / DirectX 8)
3886 http://www.osronline.com/ddkx/stream/avstream_5q9f.htm
3889 #if defined(_NTDDK_)
3894 KsMergeAutomationTables(
3895 OUT PKSAUTOMATION_TABLE
* AutomationTableAB
,
3896 IN PKSAUTOMATION_TABLE AutomationTableA OPTIONAL
,
3897 IN PKSAUTOMATION_TABLE AutomationTableB OPTIONAL
,
3898 IN KSOBJECT_BAG Bag OPTIONAL
3905 IN PDRIVER_OBJECT DriverObject
,
3906 IN PUNICODE_STRING RegistryPath
,
3907 IN
const KSDEVICE_DESCRIPTOR
*Descriptor OPTIONAL
);
3909 typedef struct _KSFILTERFACTORY KSFILTERFACTORY
, *PKSFILTERFACTORY
; //FIXME
3916 KsInitializeDevice (
3917 IN PDEVICE_OBJECT FunctionalDeviceObject
,
3918 IN PDEVICE_OBJECT PhysicalDeviceObject
,
3919 IN PDEVICE_OBJECT NextDeviceObject
,
3920 IN
const KSDEVICE_DESCRIPTOR
* Descriptor OPTIONAL
);
3923 typedef void (NTAPI
*PFNKSFILTERFACTORYPOWER
)(
3924 IN PKSFILTERFACTORY FilterFactory
,
3925 IN DEVICE_POWER_STATE State
);
3931 IN KSOBJECT_BAG ObjectBag
,
3932 IN OUT PVOID
* PointerToPointerToItem
,
3947 IN PKSDEVICE Device
);
3953 IN PDRIVER_OBJECT DriverObject
,
3954 IN PDEVICE_OBJECT PhysicalDeviceObject
);
3961 IN PKSEVENT_ENTRY EventEntry
);
3966 KsAddItemToObjectBag(
3967 IN KSOBJECT_BAG ObjectBag
,
3969 IN PFNKSFREE Free OPTIONAL
);
3974 KsRemoveItemFromObjectBag(
3975 IN KSOBJECT_BAG ObjectBag
,
3982 KsAllocateObjectBag(
3983 IN PKSDEVICE Device
,
3984 OUT KSOBJECT_BAG
* ObjectBag
);
3990 IN KSOBJECT_BAG ObjectBag
3996 KsCompletePendingRequest(
4002 KsCopyObjectBagItems(
4003 IN KSOBJECT_BAG ObjectBagDestination
,
4004 IN KSOBJECT_BAG ObjectBagSource
);
4010 IN PDRIVER_OBJECT DriverObject
,
4011 IN PDEVICE_OBJECT PhysicalDeviceObject
,
4012 IN
const KSDEVICE_DESCRIPTOR
* Descriptor OPTIONAL
,
4013 IN ULONG ExtensionSize OPTIONAL
,
4014 OUT PKSDEVICE
* Device OPTIONAL
);
4019 KsCreateFilterFactory(
4020 IN PDEVICE_OBJECT DeviceObject
,
4021 IN
const KSFILTER_DESCRIPTOR
* Descriptor
,
4022 IN PWCHAR RefString OPTIONAL
,
4023 IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL
,
4024 IN ULONG CreateItemFlags
,
4025 IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL
,
4026 IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL
,
4027 OUT PKSFILTERFACTORY
*FilterFactory OPTIONAL
);
4032 KsFilterFactoryUpdateCacheData(
4033 IN PKSFILTERFACTORY FilterFactory
,
4034 IN
const KSFILTER_DESCRIPTOR
*FilterDescriptor OPTIONAL
4054 KsDefaultAddEventHandler(
4056 IN PKSEVENTDATA EventData
,
4057 IN OUT PKSEVENT_ENTRY EventEntry
);
4062 KsDispatchQuerySecurity(
4063 IN PDEVICE_OBJECT DeviceObject
,
4070 KsDispatchSetSecurity(
4071 IN PDEVICE_OBJECT DeviceObject
,
4086 KsFilterGetParentFilterFactory(
4090 return (PKSFILTERFACTORY
) KsGetParent((PVOID
) Filter
);
4096 KsFilterFactoryGetParentDevice(
4097 IN PKSFILTERFACTORY FilterFactory
4100 return (PKSDEVICE
) KsGetParent((PVOID
) FilterFactory
);
4105 #define KsDeleteFilterFactory(FilterFactory) \
4106 KsFreeObjectCreateItemsByContext( \
4107 *(KSDEVICE_HEADER *)( \
4108 KsFilterFactoryGetParentDevice(FilterFactory)->FunctionalDeviceObject-> \
4116 IN PKSDEVICE Device
,
4133 KsDeviceGetFirstChildFilterFactory(
4134 IN PKSDEVICE Device
);
4136 #if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
4148 KsDeviceGetOuterUnknown(
4149 IN PKSDEVICE Device
)
4151 return KsGetOuterUnknown((PVOID
) Device
);
4157 KsDeviceRegisterAggregatedClientUnknown(
4158 IN PKSDEVICE Device
,
4159 IN PUNKNOWN ClientUnknown
);
4164 #if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
4166 typedef interface IKsReferenceClock
* PIKSREFERENCECLOCK
;
4169 #define INTERFACE IKsReferenceClock
4170 DECLARE_INTERFACE_(IKsReferenceClock
,IUnknown
)
4172 DEFINE_ABSTRACT_UNKNOWN() // For C
4174 STDMETHOD_(LONGLONG
,GetTime
)(THIS
4176 STDMETHOD_(LONGLONG
,GetPhysicalTime
)(THIS
4178 STDMETHOD_(LONGLONG
,GetCorrelatedTime
)(THIS_
4179 OUT PLONGLONG SystemTime
4181 STDMETHOD_(LONGLONG
,GetCorrelatedPhysicalTime
)(THIS_
4182 OUT PLONGLONG SystemTime
4184 STDMETHOD_(NTSTATUS
, GetResolution
)(THIS_
4185 OUT PKSRESOLUTION Resolution
4187 STDMETHOD_(NTSTATUS
, GetState
)(THIS_
4193 #define INTERFACE IKsControl
4195 DEFINE_GUID(IID_IKsControl
, 0x28F54685L
, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96);
4197 DECLARE_INTERFACE_(IKsControl
,IUnknown
)
4199 STDMETHOD_(NTSTATUS
, QueryInterface
)( THIS_
4201 PVOID
* Interface
)PURE
;
4203 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
4205 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
4207 STDMETHOD_(NTSTATUS
, KsProperty
)(THIS_
4208 IN PKSPROPERTY Property
,
4209 IN ULONG PropertyLength
,
4210 IN OUT PVOID PropertyData
,
4211 IN ULONG DataLength
,
4212 OUT ULONG
* BytesReturned
4214 STDMETHOD_(NTSTATUS
, KsMethod
)(THIS_
4215 IN PKSMETHOD Method
,
4216 IN ULONG MethodLength
,
4217 IN OUT PVOID MethodData
,
4218 IN ULONG DataLength
,
4219 OUT ULONG
* BytesReturned
4221 STDMETHOD_(NTSTATUS
, KsEvent
)(THIS_
4222 IN PKSEVENT Event OPTIONAL
,
4223 IN ULONG EventLength
,
4224 IN OUT PVOID EventData
,
4225 IN ULONG DataLength
,
4226 OUT ULONG
* BytesReturned
4231 typedef IKsControl
* PIKSCONTROL
;
4238 KsDeviceRegisterAdapterObject(
4239 IN PKSDEVICE Device
,
4240 IN PADAPTER_OBJECT AdapterObject
,
4241 IN ULONG MaxMappingByteCount
,
4242 IN ULONG MappingTableStride
);
4248 IN PKSDEVICE Device
,
4262 #define KsDiscard(object, pointer) \
4263 KsRemoveItemFromObjectBag(object->Bag, pointer, TRUE)
4265 #define KsFilterAcquireControl(Filter) \
4266 KsAcquireControl((PVOID) Filter);
4268 #define KsFilterReleaseControl(Filter) \
4269 KsReleaseControl((PVOID) Filter);
4271 #define KsFilterAddEvent(Filter, EventEntry) \
4272 KsAddEvent(Filter,EventEntry);
4277 KsFilterAcquireProcessingMutex(
4278 IN PKSFILTER Filter
);
4284 KsFilterAddTopologyConnections(
4285 IN PKSFILTER Filter
,
4286 IN ULONG NewConnectionsCount
,
4287 IN
const KSTOPOLOGY_CONNECTION
*const NewTopologyConnections
);
4292 KsFilterAttemptProcessing(
4293 IN PKSFILTER Filter
,
4294 IN BOOLEAN Asynchronous
);
4300 IN PKSFILTER Filter
,
4301 IN
const KSNODE_DESCRIPTOR
*const NodeDescriptor
,
4307 KsFilterCreatePinFactory(
4308 IN PKSFILTER Filter
,
4309 IN
const KSPIN_DESCRIPTOR_EX
*const PinDescriptor
,
4315 KsFilterFactoryGetDevice(
4316 IN PKSFILTERFACTORY FilterFactory
);
4319 #endif /* avstream */