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)
58typedef PVOID PKSWORKER;
62#define SIZEOF_ARRAY(a) (sizeof(a)/sizeof((a)[0]))
73#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name
75#define DEFINE_GUIDEX(name) EXTERN_C const GUID name
80#define STATICGUIDOF(guid) STATIC_##guid
85#if defined(__cplusplus)
88#define DEFINE_GUIDSTRUCT(guid, name) struct __declspec(uuid(guid)) name
89#define DEFINE_GUIDNAMED(name) __uuidof(struct name)
91#define DEFINE_GUIDSTRUCT(guid, name) \
92 extern const DECLSPEC_SELECTANY GUID __uuid__##name={STATIC_##name};
93#define DEFINE_GUIDNAMED(name) __uuid__##name
98#define DEFINE_GUIDSTRUCT(guid, name) DEFINE_GUIDEX(name)
99#define DEFINE_GUIDNAMED(name) name
103#define STATIC_GUID_NULL \
104 0x00000000L, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
106#define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL)
108#define STATIC_KSNAME_Filter\
109 0x9b365890L, 0x165f, 0x11d0, {0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
111#define KSNAME_Filter DEFINE_GUIDNAMED(KSNAME_Filter)
113#define STATIC_KSMEMORY_TYPE_KERNEL_PAGED \
114 0xd833f8f8L, 0x7894, 0x11d1, {0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02}
116#define KSMEMORY_TYPE_KERNEL_PAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_PAGED)
118#define STATIC_KSDATAFORMAT_SUBTYPE_NONE \
119 0xe436eb8eL, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}
121#define KSDATAFORMAT_SUBTYPE_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NONE)
127#define IOCTL_KS_PROPERTY \
128 CTL_CODE(FILE_DEVICE_KS, 0x000, METHOD_NEITHER, FILE_ANY_ACCESS)
130#define IOCTL_KS_ENABLE_EVENT \
131 CTL_CODE(FILE_DEVICE_KS, 0x001, METHOD_NEITHER, FILE_ANY_ACCESS)
133#define IOCTL_KS_DISABLE_EVENT \
134 CTL_CODE(FILE_DEVICE_KS, 0x002, METHOD_NEITHER, FILE_ANY_ACCESS)
136#define IOCTL_KS_METHOD \
137 CTL_CODE(FILE_DEVICE_KS, 0x003, METHOD_NEITHER, FILE_ANY_ACCESS)
139#define IOCTL_KS_WRITE_STREAM \
140 CTL_CODE(FILE_DEVICE_KS, 0x004, METHOD_NEITHER, FILE_WRITE_ACCESS)
142#define IOCTL_KS_READ_STREAM \
143 CTL_CODE(FILE_DEVICE_KS, 0x005, METHOD_NEITHER, FILE_READ_ACCESS)
145#define IOCTL_KS_RESET_STATE \
146 CTL_CODE(FILE_DEVICE_KS, 0x006, METHOD_NEITHER, FILE_ANY_ACCESS)
152#define STATIC_KSCATEGORY_BRIDGE \
153 0x085AFF00L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
155#define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE)
157#define STATIC_KSCATEGORY_CAPTURE \
158 0x65E8773DL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
160#define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE)
162#define STATIC_KSCATEGORY_RENDER \
163 0x65E8773EL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
165#define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER)
167#define STATIC_KSCATEGORY_MIXER \
168 0xAD809C00L, 0x7B88, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
170#define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER)
172#define STATIC_KSCATEGORY_SPLITTER \
173 0x0A4252A0L, 0x7E70, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
175#define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER)
177#define STATIC_KSCATEGORY_DATACOMPRESSOR \
178 0x1E84C900L, 0x7E70, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
180#define KSCATEGORY_DATACOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATACOMPRESSOR)
182#define STATIC_KSCATEGORY_DATADECOMPRESSOR \
183 0x2721AE20L, 0x7E70, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
185#define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR)
187#define STATIC_KSCATEGORY_DATATRANSFORM \
188 0x2EB07EA0L, 0x7E70, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
190#define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM)
192#define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \
193 0xCF1DDA2CL, 0x9743, 0x11D0, {0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
195#define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM)
197#define STATIC_KSCATEGORY_INTERFACETRANSFORM \
198 0xCF1DDA2DL, 0x9743, 0x11D0, {0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
200#define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANSFORM)
202#define STATIC_KSCATEGORY_MEDIUMTRANSFORM \
203 0xCF1DDA2EL, 0x9743, 0x11D0, {0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
205#define KSCATEGORY_MEDIUMTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_MEDIUMTRANSFORM)
207#define STATIC_KSCATEGORY_FILESYSTEM \
208 0x760FED5EL, 0x9357, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
210#define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM)
212#define STATIC_KSCATEGORY_CLOCK \
213 0x53172480L, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
215#define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK)
217#define STATIC_KSCATEGORY_PROXY \
218 0x97EBAACAL, 0x95BD, 0x11D0, {0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
220#define KSCATEGORY_PROXY DEFINE_GUIDNAMED(KSCATEGORY_PROXY)
222#define STATIC_KSCATEGORY_QUALITY \
223 0x97EBAACBL, 0x95BD, 0x11D0, {0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
225#define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(KSCATEGORY_QUALITY)
271#define KSINTERFACESETID_Media
272#define KSINTERFACE_STANDARD_STREAMING
273#define KSINTERFACE_STANDARD_LOOPED_STREAMING
274#define KSINTERFACE_STANDARD_CONTROL
277#define STATIC_KSINTERFACESETID_Standard \
278 0x1A8766A0L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
280#define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard)
288#define STATIC_KSINTERFACESETID_FileIo \
289 0x8C6F932CL, 0xE771, 0x11D0, {0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
291#define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo)
301#define KSMEDIUM_TYPE_ANYINSTANCE 0
303#define STATIC_KSMEDIUMSETID_Standard \
304 0x4747B320L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
306#define KSMEDIUMSETID_Standard DEFINE_GUIDNAMED(KSMEDIUMSETID_Standard)
312#define STATIC_KSPROPSETID_Clock \
313 0xDF12A4C0L, 0xAC17, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
315#define KSPROPSETID_Clock DEFINE_GUIDNAMED(KSPROPSETID_Clock)
325 KSPROPERTY_CLOCK_FUNCTIONTABLE
329#define STATIC_KSEVENTSETID_Clock \
330 0x364D8E20L, 0x62C7, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
332#define KSEVENTSETID_Clock DEFINE_GUIDNAMED(KSEVENTSETID_Clock)
343#define STATIC_KSPROPSETID_Connection \
344 0x1D58C920L, 0xAC9B, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
346#define KSPROPSETID_Connection DEFINE_GUIDNAMED(KSPROPSETID_Connection)
359#define DEFINE_KSPROPERTY_ITEM_CONNECTION_STATE(GetHandler, SetHandler)\
360 DEFINE_KSPROPERTY_ITEM(\
361 KSPROPERTY_CONNECTION_STATE,\
366 NULL, 0, NULL, NULL, 0)
368#define DEFINE_KSPROPERTY_ITEM_CONNECTION_PRIORITY(GetHandler, SetHandler)\
369 DEFINE_KSPROPERTY_ITEM(\
370 KSPROPERTY_CONNECTION_PRIORITY,\
375 NULL, 0, NULL, NULL, 0)
377#define DEFINE_KSPROPERTY_ITEM_CONNECTION_DATAFORMAT(GetHandler, SetHandler)\
378 DEFINE_KSPROPERTY_ITEM(\
379 KSPROPERTY_CONNECTION_DATAFORMAT,\
384 NULL, 0, NULL, NULL, 0)
386#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING(Handler)\
387 DEFINE_KSPROPERTY_ITEM(\
388 KSPROPERTY_CONNECTION_ALLOCATORFRAMING,\
391 sizeof(KSALLOCATOR_FRAMING),\
392 NULL, NULL, 0, NULL, NULL, 0)
394#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING_EX(Handler)\
395 DEFINE_KSPROPERTY_ITEM(\
396 KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,\
400 NULL, NULL, 0, NULL, NULL, 0)
402#define DEFINE_KSPROPERTY_ITEM_CONNECTION_PROPOSEDATAFORMAT(Handler)\
403 DEFINE_KSPROPERTY_ITEM(\
404 KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,\
407 sizeof(KSDATAFORMAT),\
409 NULL, 0, NULL, NULL, 0)
411#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ACQUIREORDERING(Handler)\
412 DEFINE_KSPROPERTY_ITEM(\
413 KSPROPERTY_CONNECTION_ACQUIREORDERING,\
417 NULL, NULL, 0, NULL, NULL, 0)
419#define DEFINE_KSPROPERTY_ITEM_CONNECTION_STARTAT(Handler)\
420 DEFINE_KSPROPERTY_ITEM(\
421 KSPROPERTY_CONNECTION_STARTAT,\
424 sizeof(KSRELATIVEEVENT),\
426 NULL, 0, NULL, NULL, 0)
441#define STATIC_KSPROPSETID_General\
442 0x1464EDA5L, 0x6A8F, 0x11D1, {0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
444#define KSPROPSETID_General DEFINE_GUIDNAMED(KSPROPSETID_General)
455#define KSPROPSETID_GM \
456 0xAF627536L, 0xE719, 0x11D2, {0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D}
470#define STATIC_KSPROPSETID_MediaSeeking\
471 0xEE904F0CL, 0xD09B, 0x11D0, {0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
473#define KSPROPSETID_MediaSeeking DEFINE_GUIDNAMED(KSPROPSETID_MediaSeeking)
527#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CAPABILITIES(Handler)\
528 DEFINE_KSPROPERTY_ITEM(\
529 KSPROPERTY_MEDIASEEKING_CAPABILITIES,\
532 sizeof(KS_SEEKING_CAPABILITIES),\
533 NULL, NULL, 0, NULL, NULL, 0)
535#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_FORMATS(Handler)\
536 DEFINE_KSPROPERTY_ITEM(\
537 KSPROPERTY_MEDIASEEKING_FORMATS,\
541 NULL, NULL, 0, NULL, NULL, 0)
543#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_TIMEFORMAT(GetHandler, SetHandler)\
544 DEFINE_KSPROPERTY_ITEM(\
545 KSPROPERTY_MEDIASEEKING_TIMEFORMAT,\
550 NULL, 0, NULL, NULL, 0)
552#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITION(Handler)\
553 DEFINE_KSPROPERTY_ITEM(\
554 KSPROPERTY_MEDIASEEKING_POSITION,\
558 NULL, NULL, 0, NULL, NULL, 0)
560#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_STOPPOSITION(Handler)\
561 DEFINE_KSPROPERTY_ITEM(\
562 KSPROPERTY_MEDIASEEKING_STOPPOSITION,\
566 NULL, NULL, 0, NULL, NULL, 0)
568#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITIONS(Handler)\
569 DEFINE_KSPROPERTY_ITEM(\
570 KSPROPERTY_MEDIASEEKING_POSITIONS,\
573 sizeof(KSPROPERTY_POSITIONS),\
575 NULL, 0, NULL, NULL, 0)
577#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_DURATION(Handler)\
578 DEFINE_KSPROPERTY_ITEM(\
579 KSPROPERTY_MEDIASEEKING_DURATION,\
583 NULL, NULL, 0, NULL, NULL, 0)
585#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_AVAILABLE(Handler)\
586 DEFINE_KSPROPERTY_ITEM(\
587 KSPROPERTY_MEDIASEEKING_AVAILABLE,\
590 sizeof(KSPROPERTY_MEDIAAVAILABLE),\
591 NULL, NULL, 0, NULL, NULL, 0)
593#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_PREROLL(Handler)\
594 DEFINE_KSPROPERTY_ITEM(\
595 KSPROPERTY_MEDIASEEKING_PREROLL,\
599 NULL, NULL, 0, NULL, NULL, 0)
601#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CONVERTTIMEFORMAT(Handler)\
602 DEFINE_KSPROPERTY_ITEM(\
603 KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT,\
605 sizeof(KSP_TIMEFORMAT),\
607 NULL, NULL, 0, NULL, NULL, 0)
614#define STATIC_KSPROPSETID_Pin\
615 0x8C134960L, 0x51AD, 0x11CF, {0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00}
617#define KSPROPSETID_Pin DEFINE_GUIDNAMED(KSPROPSETID_Pin)
619#define STATIC_KSNAME_Pin\
620 0x146F1A80L, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
622#define KSNAME_Pin DEFINE_GUIDNAMED(KSNAME_Pin)
648#define KSINSTANCE_INDETERMINATE ((ULONG)-1)
666#define KSPROPSETID_Quality \
667 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
679#define STATIC_KSPROPSETID_Stream\
680 0x65aaba60L, 0x98ae, 0x11cf, {0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
682#define KSPROPSETID_Stream DEFINE_GUIDNAMED(KSPROPSETID_Stream)
698#define DEFINE_KSPROPERTY_ITEM_STREAM_ALLOCATOR(GetHandler, SetHandler)\
699 DEFINE_KSPROPERTY_ITEM(\
700 KSPROPERTY_STREAM_ALLOCATOR,\
705 NULL, 0, NULL, NULL, 0)
707#define DEFINE_KSPROPERTY_ITEM_STREAM_QUALITY(Handler)\
708 DEFINE_KSPROPERTY_ITEM(\
709 KSPROPERTY_STREAM_QUALITY,\
712 sizeof(KSQUALITY_MANAGER),\
713 NULL, NULL, 0, NULL, NULL, 0)
715#define DEFINE_KSPROPERTY_ITEM_STREAM_DEGRADATION(GetHandler, SetHandler)\
716 DEFINE_KSPROPERTY_ITEM(\
717 KSPROPERTY_STREAM_DEGRADATION,\
722 NULL, 0, NULL, NULL, 0)
724#define DEFINE_KSPROPERTY_ITEM_STREAM_MASTERCLOCK(GetHandler, SetHandler)\
725 DEFINE_KSPROPERTY_ITEM(\
726 KSPROPERTY_STREAM_MASTERCLOCK,\
731 NULL, 0, NULL, NULL, 0)
733#define DEFINE_KSPROPERTY_ITEM_STREAM_TIMEFORMAT(Handler)\
734 DEFINE_KSPROPERTY_ITEM(\
735 KSPROPERTY_STREAM_TIMEFORMAT,\
739 NULL, NULL, 0, NULL, NULL, 0)
741#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONTIME(GetHandler, SetHandler)\
742 DEFINE_KSPROPERTY_ITEM(\
743 KSPROPERTY_STREAM_PRESENTATIONTIME,\
748 NULL, 0, NULL, NULL, 0)
750#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONEXTENT(Handler)\
751 DEFINE_KSPROPERTY_ITEM(\
752 KSPROPERTY_STREAM_PRESENTATIONEXTENT,\
756 NULL, NULL, 0, NULL, NULL, 0)
758#define DEFINE_KSPROPERTY_ITEM_STREAM_FRAMETIME(Handler)\
759 DEFINE_KSPROPERTY_ITEM(\
760 KSPROPERTY_STREAM_FRAMETIME,\
763 sizeof(KSFRAMETIME),\
764 NULL, NULL, 0, NULL, NULL, 0)
766#define DEFINE_KSPROPERTY_ITEM_STREAM_RATECAPABILITY(Handler)\
767 DEFINE_KSPROPERTY_ITEM(\
768 KSPROPERTY_STREAM_RATECAPABILITY,\
770 sizeof(KSRATE_CAPABILITY),\
772 NULL, NULL, 0, NULL, NULL, 0)
774#define DEFINE_KSPROPERTY_ITEM_STREAM_RATE(GetHandler, SetHandler)\
775 DEFINE_KSPROPERTY_ITEM(\
776 KSPROPERTY_STREAM_RATE,\
781 NULL, 0, NULL, NULL, 0)
783#define DEFINE_KSPROPERTY_ITEM_STREAM_PIPE_ID(GetHandler, SetHandler)\
784 DEFINE_KSPROPERTY_ITEM(\
785 KSPROPERTY_STREAM_PIPE_ID,\
790 NULL, 0, NULL, NULL, 0)
797#define STATIC_KSPROPSETID_StreamAllocator\
798 0xcf6e4342L, 0xec87, 0x11cf, {0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
800#define KSPROPSETID_StreamAllocator DEFINE_GUIDNAMED(KSPROPSETID_StreamAllocator)
807#define KSMETHODSETID_StreamAllocator \
808 0xcf6e4341L, 0xec87, 0x11cf, {0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
815#define KSEVENTSETID_StreamAllocator
827#define KSPROPSETID_StreamInterface \
828 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
839#define STATIC_KSPROPSETID_Topology\
840 0x720D4AC0L, 0x7533, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
842#define KSPROPSETID_Topology DEFINE_GUIDNAMED(KSPROPSETID_Topology)
855#define STATIC_KSPROPTYPESETID_General \
856 0x97E99BA0L, 0xBDEA, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
858#define KSPROPTYPESETID_General DEFINE_GUIDNAMED(KSPROPTYPESETID_General)
870#define KSPROPSETID_Acoustic_Echo_Cancel
920#define KSPROPSETID_AudioGfx
926#define KSPROPSETID_DirectSound3DBuffer
939#define KSPROPSETID_DirectSound3DListener
952#define KSPROPSETID_Hrtf3d
959#define KSPROPSETID_Itd3d
964#define KSPROPSETID_TopologyNode
1013#define KSMETHOD_TYPE_NONE 0x00000000
1014#define KSMETHOD_TYPE_READ 0x00000001
1015#define KSMETHOD_TYPE_WRITE 0x00000002
1016#define KSMETHOD_TYPE_MODIFY 0x00000003
1017#define KSMETHOD_TYPE_SOURCE 0x00000004
1018#define KSMETHOD_TYPE_SEND 0x00000001
1019#define KSMETHOD_TYPE_SETSUPPORT 0x00000100
1020#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200
1026#define KSPROPERTY_TYPE_GET 0x00000001
1027#define KSPROPERTY_TYPE_SET 0x00000002
1028#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100
1029#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200
1030#define KSPROPERTY_TYPE_RELATIONS 0x00000400
1031#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800
1032#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
1033#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000
1034#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
1035#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
1036#define KSPROPERTY_TYPE_DEFAULT_VALUES 0x00010000
1042#define KSMETHOD_TYPE_TOPOLOGY 0x10000000
1043#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000
1154#define STATIC_KSDATAFORMAT_SPECIFIER_NONE\
1155 0x0F6417D6L, 0xC318, 0x11D0, {0xA4, 0x3F, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
1157#define KSDATAFORMAT_SPECIFIER_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_NONE)
1177#define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\
1181 Values, RelationsCount, Relations, SupportHandler,\
1184 PropertyId, {(PFNKSHANDLER)GetHandler}, MinProperty, MinData,\
1185 {(PFNKSHANDLER)SetHandler},\
1186 (PKSPROPERTY_VALUES)Values, RelationsCount, (PKSPROPERTY)Relations,\
1187 (PFNKSHANDLER)SupportHandler, (ULONG)SerializedSize\
1192#define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\
1196 Values, RelationsCount, Relations, SupportHandler,\
1199 PropertyId, (PFNKSHANDLER)GetHandler, MinProperty, MinData,\
1200 (PFNKSHANDLER)SetHandler,\
1201 (PKSPROPERTY_VALUES)Values, RelationsCount, (PKSPROPERTY)Relations,\
1202 (PFNKSHANDLER)SupportHandler, (ULONG)SerializedSize\
1285#if defined(_NTDDK_) && !defined(__wtypes_h__)
1337#define STATIC_KSDATAFORMAT_TYPE_WILDCARD STATIC_GUID_NULL
1338#define KSDATAFORMAT_TYPE_WILDCARD GUID_NULL
1340#define STATIC_KSDATAFORMAT_SUBTYPE_WILDCARD STATIC_GUID_NULL
1341#define KSDATAFORMAT_SUBTYPE_WILDCARD GUID_NULL
1343#define STATIC_KSDATAFORMAT_SPECIFIER_WILDCARD STATIC_GUID_NULL
1344#define KSDATAFORMAT_SPECIFIER_WILDCARD GUID_NULL
1385#define KSPRIORITY_LOW 0x00000001
1386#define KSPRIORITY_NORMAL 0x40000000
1387#define KSPRIORITY_HIGH 0x80000000
1388#define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF
1413} KSDISPATCH_TABLE, *PKSDISPATCH_TABLE;
1415#define KSCREATE_ITEM_IRP_STORAGE(Irp) (*(PKSOBJECT_CREATE_ITEM*)&(Irp)->Tail.Overlay.DriverContext[0])
1416#define KSEVENT_SET_IRP_STORAGE(Irp) (*(const KSEVENT_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
1417#define KSEVENT_ITEM_IRP_STORAGE(Irp) (*(const KSEVENT_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
1418#define KSEVENT_ENTRY_IRP_STORAGE(Irp) (*(PKSEVENT_ENTRY*)&(Irp)->Tail.Overlay.DriverContext[0])
1419#define KSMETHOD_SET_IRP_STORAGE(Irp) (*(const KSMETHOD_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
1420#define KSMETHOD_ITEM_IRP_STORAGE(Irp) (*(const KSMETHOD_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
1421#define KSMETHOD_TYPE_IRP_STORAGE(Irp) (*(ULONG_PTR*)(&(Irp)->Tail.Overlay.DriverContext[2]))
1422#define KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) (*(PKSPIN_LOCK*)&(Irp)->Tail.Overlay.DriverContext[1])
1423#define KSPROPERTY_SET_IRP_STORAGE(Irp) (*(const KSPROPERTY_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
1424#define KSPROPERTY_ITEM_IRP_STORAGE(Irp) (*(const KSPROPERTY_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
1425#define KSPROPERTY_ATTRIBUTES_IRP_STORAGE(Irp) (*(PKSATTRIBUTE_LIST*)&(Irp)->Tail.Overlay.DriverContext[2])
1429(
NTAPI *PFNREFERENCEDEVICEOBJECT)(
1434(
NTAPI *PFNDEREFERENCEDEVICEOBJECT)(
1439(
NTAPI *PFNQUERYREFERENCESTRING)(
1445 PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject;
1446 PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject;
1447 PFNQUERYREFERENCESTRING QueryReferenceString;
1448} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE;
1452 ULONG ReferenceCount;
1454} KSDPC_ITEM, *PKSDPC_ITEM;
1459} KSBUFFER_ITEM, *PKSBUFFER_ITEM;
1472#define DEFINE_KSPROPERTY_ITEM_GENERAL_COMPONENTID(Handler)\
1473 DEFINE_KSPROPERTY_ITEM(\
1474 KSPROPERTY_GENERAL_COMPONENTID,\
1476 sizeof(KSPROPERTY),\
1477 sizeof(KSCOMPONENTID),\
1478 NULL, NULL, 0, NULL, NULL, 0)
1499#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1507#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1518#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1531#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1558#define KSPROPERTY_MEMBER_RANGES 0x00000001
1559#define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002
1560#define KSPROPERTY_MEMBER_VALUES 0x00000003
1562#define KSPROPERTY_MEMBER_FLAG_DEFAULT 0x00000001
1563#if (NTDDI_VERSION >= NTDDI_WINXP)
1564#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_MULTICHANNEL 0x00000002
1565#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_UNIFORM 0x00000004
1578(
NTAPI *PFNKSCONTEXT_DISPATCH)(
1584(
NTAPI *PFNKSHANDLER)(
1592 PFNKSHANDLER GetPropertyHandler;
1598 PFNKSHANDLER SetPropertyHandler;
1602 ULONG RelationsCount;
1604 PFNKSHANDLER SupportHandler;
1605 ULONG SerializedSize;
1606} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM;
1610(
NTAPI *PFNKSFASTHANDLER)(
1621 PFNKSFASTHANDLER GetPropertyHandler;
1625 PFNKSFASTHANDLER SetPropertyHandler;
1629} KSFASTPROPERTY_ITEM, *PKSFASTPROPERTY_ITEM;
1633 ULONG PropertiesCount;
1636 const KSFASTPROPERTY_ITEM *FastIoTable;
1637} KSPROPERTY_SET, *PKSPROPERTY_SET;
1684#define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER 0x00000001
1685#define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY 0x00000002
1686#define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY 0x00000004
1687#define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE 0x00000008
1688#define KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY 0x80000000
1690#define KSALLOCATOR_OPTIONF_COMPATIBLE 0x00000001
1691#define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY 0x00000002
1692#define KSALLOCATOR_OPTIONF_VALID 0x00000003
1694#define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT 0x00000010
1695#define KSALLOCATOR_FLAG_DEVICE_SPECIFIC 0x00000020
1696#define KSALLOCATOR_FLAG_CAN_ALLOCATE 0x00000040
1697#define KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO 0x00000080
1757 ULONG ReferenceCount;
1767 PKSWORKER KsWorkerObject;
1778#define KSEVENTF_EVENT_HANDLE 0x00000001
1779#define KSEVENTF_SEMAPHORE_HANDLE 0x00000002
1781#define KSEVENTF_EVENT_OBJECT 0x00000004
1782#define KSEVENTF_SEMAPHORE_OBJECT 0x00000008
1783#define KSEVENTF_DPC 0x00000010
1784#define KSEVENTF_WORKITEM 0x00000020
1785#define KSEVENTF_KSWORKITEM 0x00000080
1789#define KSEVENT_TYPE_ENABLE 0x00000001
1790#define KSEVENT_TYPE_ONESHOT 0x00000002
1791#define KSEVENT_TYPE_ENABLEBUFFERED 0x00000004
1792#define KSEVENT_TYPE_SETSUPPORT 0x00000100
1793#define KSEVENT_TYPE_BASICSUPPORT 0x00000200
1794#define KSEVENT_TYPE_QUERYBUFFER 0x00000400
1796#define KSEVENT_TYPE_TOPOLOGY 0x10000000
1810#define KSRELATIVEEVENT_FLAG_HANDLE 0x00000001
1811#define KSRELATIVEEVENT_FLAG_POINTER 0x00000002
1869(
FASTCALL *PFNKSCLOCK_CORRELATEDTIME)(
1875 PFNKSCLOCK_GETTIME GetPhysicalTime;
1876 PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime;
1877 PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime;
1878} KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE;
1880#define DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(Handler)\
1881 DEFINE_KSPROPERTY_ITEM(\
1882 KSPROPERTY_CLOCK_TIME,\
1884 sizeof(KSPROPERTY),\
1886 NULL, NULL, 0, NULL, NULL, 0)
1888#define DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(Handler)\
1889 DEFINE_KSPROPERTY_ITEM(\
1890 KSPROPERTY_CLOCK_PHYSICALTIME,\
1892 sizeof(KSPROPERTY),\
1894 NULL, NULL, 0, NULL, NULL, 0)
1896#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(Handler)\
1897 DEFINE_KSPROPERTY_ITEM(\
1898 KSPROPERTY_CLOCK_CORRELATEDTIME,\
1900 sizeof(KSPROPERTY),\
1901 sizeof(KSCORRELATED_TIME),\
1902 NULL, NULL, 0, NULL, NULL, 0)
1904#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(Handler)\
1905 DEFINE_KSPROPERTY_ITEM(\
1906 KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,\
1908 sizeof(KSPROPERTY),\
1909 sizeof(KSCORRELATED_TIME),\
1910 NULL, NULL, 0, NULL, NULL, 0)
1912#define DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(Handler)\
1913 DEFINE_KSPROPERTY_ITEM(\
1914 KSPROPERTY_CLOCK_RESOLUTION,\
1916 sizeof(KSPROPERTY),\
1917 sizeof(KSRESOLUTION),\
1918 NULL, NULL, 0, NULL, NULL, 0)
1920#define DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(Handler)\
1921 DEFINE_KSPROPERTY_ITEM(\
1922 KSPROPERTY_CLOCK_STATE,\
1924 sizeof(KSPROPERTY),\
1926 NULL, NULL, 0, NULL, NULL, 0)
1928#define DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(Handler)\
1929 DEFINE_KSPROPERTY_ITEM(\
1930 KSPROPERTY_CLOCK_FUNCTIONTABLE,\
1932 sizeof(KSPROPERTY),\
1933 sizeof(KSCLOCK_FUNCTIONTABLE),\
1934 NULL, NULL, 0, NULL, NULL, 0)
1936#define DEFINE_KSPROPERTY_CLOCKSET(ClockSet,\
1937 PropTime, PropPhysicalTime,\
1938 PropCorrelatedTime, PropCorrelatedPhysicalTime,\
1939 PropResolution, PropState, PropFunctionTable)\
1940DEFINE_KSPROPERTY_TABLE(ClockSet) {\
1941 DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(PropTime),\
1942 DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(PropPhysicalTime),\
1943 DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(PropCorrelatedTime),\
1944 DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(PropCorrelatedPhysicalTime),\
1945 DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(PropResolution),\
1946 DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(PropState),\
1947 DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(PropFunctionTable)\
1954#define KSCREATE_ITEM_SECURITYCHANGED 0x1
1955#define KSCREATE_ITEM_WILDCARD 0x2
1956#define KSCREATE_ITEM_NOPARAMETERS 0x4
1957#define KSCREATE_ITEM_FREEONSTOP 0x8
1965} KSOBJECT_CREATE_ITEM, *PKSOBJECT_CREATE_ITEM;
1968 ULONG CreateItemsCount;
1969 _Field_size_(CreateItemsCount) PKSOBJECT_CREATE_ITEM CreateItemsList;
1970} KSOBJECT_CREATE, *PKSOBJECT_CREATE;
1973(
NTAPI *PFNKSITEMFREECALLBACK)(
2003 PFNKSHANDLER MethodHandler;
2008 PFNKSHANDLER SupportHandler;
2010} KSMETHOD_ITEM, *PKSMETHOD_ITEM;
2014#define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\
2016 MinMethod, MinData, SupportHandler)\
2018 MethodId, {(PFNKSHANDLER)MethodHandler}, MinMethod, MinData,\
2019 SupportHandler, Flags\
2024#define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\
2026 MinMethod, MinData, SupportHandler)\
2028 MethodId, (PFNKSHANDLER)MethodHandler, MinMethod, MinData,\
2029 SupportHandler, Flags\
2037 PFNKSFASTHANDLER MethodHandler;
2040} KSFASTMETHOD_ITEM, *PKSFASTMETHOD_ITEM;
2042#define DEFINE_KSFASTMETHOD_ITEM(MethodId, MethodHandler)\
2044 MethodId, (PFNKSFASTHANDLER)MethodHandler\
2050 _Field_size_(MethodsCount)
const KSMETHOD_ITEM *MethodItem;
2052 _Field_size_(FastIoCount)
const KSFASTMETHOD_ITEM *FastIoTable;
2053} KSMETHOD_SET, *PKSMETHOD_SET;
2055#define DEFINE_KSMETHOD_SET(Set,\
2106(
NTAPI *PFNKSADDEVENT)(
2109 _In_ struct _KSEVENT_ENTRY *EventEntry);
2112(
NTAPI *PFNKSREMOVEEVENT)(
2114 _In_ struct _KSEVENT_ENTRY *EventEntry);
2119 ULONG ExtraEntryData;
2120 PFNKSADDEVENT AddHandler;
2121 PFNKSREMOVEEVENT RemoveHandler;
2122 PFNKSHANDLER SupportHandler;
2123} KSEVENT_ITEM, *PKSEVENT_ITEM;
2128 _Field_size_(EventsCount)
const KSEVENT_ITEM *EventItem;
2129} KSEVENT_SET, *PKSEVENT_SET;
2131struct _KSEVENT_ENTRY {
2135 PKSDPC_ITEM DpcItem;
2136 PKSBUFFER_ITEM BufferItem;
2140 const KSEVENT_SET *EventSet;
2141 const KSEVENT_ITEM *EventItem;
2143 ULONG SemaphoreAdjustment;
2156typedef struct _KSPIN KSPIN, *PKSPIN;
2157typedef struct _KSSTREAM_POINTER KSSTREAM_POINTER, *PKSSTREAM_POINTER;
2159typedef struct _KSMAPPING KSMAPPING, *PKSMAPPING;
2160typedef struct _KSPROCESSPIN KSPROCESSPIN, *PKSPROCESSPIN;
2162#define IOCTL_KS_HANDSHAKE \
2163 CTL_CODE(FILE_DEVICE_KS, 0x007, METHOD_NEITHER, FILE_ANY_ACCESS)
2169} KSHANDSHAKE, *PKSHANDSHAKE;
2173(
NTAPI *PFNKSPINHANDSHAKE)(
2180(
NTAPI *PFNKSPINPOWER)(
2185(
NTAPI *PFNKSPINFRAMERETURN)(
2195(
NTAPI *PFNKSPINIRPCOMPLETION)(
2201(
NTAPI *PFNKSPINIRP)(
2211(
NTAPI *PFNKSPINVOID)(
2216(
NTAPI *PFNKSSTREAMPOINTER)(
2217 _In_ PKSSTREAM_POINTER StreamPointer);
2222} KSATTRIBUTE_LIST, *PKSATTRIBUTE_LIST;
2226(
NTAPI *PFNKSPINSETDATAFORMAT)(
2231 _In_opt_ const KSATTRIBUTE_LIST* AttributeRange);
2235(
NTAPI *PFNKSPINSETDEVICESTATE)(
2240typedef struct _KSCLOCK_DISPATCH KSCLOCK_DISPATCH, *PKSCLOCK_DISPATCH;
2241typedef struct _KSALLOCATOR_DISPATCH KSALLOCATOR_DISPATCH, *PKSALLOCATOR_DISPATCH;
2248 PFNKSPINSETDATAFORMAT SetDataFormat;
2249 PFNKSPINSETDEVICESTATE SetDeviceState;
2251 PFNKSPINVOID Disconnect;
2252 const KSCLOCK_DISPATCH*
Clock;
2253 const KSALLOCATOR_DISPATCH* Allocator;
2254} KSPIN_DISPATCH, *PKSPIN_DISPATCH;
2258(
NTAPI *PFNKSPINSETTIMER)(
2266(
NTAPI *PFNKSPINCANCELTIMER)(
2278(
NTAPI *PFNKSPINRESOLUTION)(
2282struct _KSCLOCK_DISPATCH {
2284 PFNKSPINCANCELTIMER CancelTimer;
2285 PFNKSPINCORRELATEDTIME CorrelatedTime;
2291(
NTAPI *PFNKSPININITIALIZEALLOCATOR)(
2297(
NTAPI *PFNKSDELETEALLOCATOR)(
2301(
NTAPI *PFNKSDEFAULTALLOCATE)(
2305(
NTAPI *PFNKSDEFAULTFREE)(
2309struct _KSALLOCATOR_DISPATCH {
2310 PFNKSPININITIALIZEALLOCATOR InitializeAllocator;
2311 PFNKSDELETEALLOCATOR DeleteAllocator;
2313 PFNKSDEFAULTFREE
Free;
2316typedef struct KSAUTOMATION_TABLE_ {
2317 ULONG PropertySetsCount;
2318 ULONG PropertyItemSize;
2319 _Field_size_bytes_(PropertySetsCount * PropertyItemSize)
const KSPROPERTY_SET *PropertySets;
2320 ULONG MethodSetsCount;
2321 ULONG MethodItemSize;
2323 ULONG EventSetsCount;
2324 ULONG EventItemSize;
2329} KSAUTOMATION_TABLE, *PKSAUTOMATION_TABLE;
2332 ULONG InterfacesCount;
2336 ULONG DataRangesCount;
2340 const GUID *Category;
2345 ULONG ConstrainedDataRangesCount;
2349} KSPIN_DESCRIPTOR, *PKSPIN_DESCRIPTOR;
2354(
NTAPI *PFNKSINTERSECTHANDLER)(
2363(
NTAPI *PFNKSINTERSECTHANDLEREX)(
2375 const KSAUTOMATION_TABLE* AutomationTable;
2376 KSPIN_DESCRIPTOR PinDescriptor;
2378 ULONG InstancesPossible;
2379 ULONG InstancesNecessary;
2381 PFNKSINTERSECTHANDLEREX IntersectHandler;
2382} KSPIN_DESCRIPTOR_EX, *PKSPIN_DESCRIPTOR_EX;
2384#define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001
2385#define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002
2386#define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004
2387#define KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES 0x00000008
2388#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
2389#define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000
2392#define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING
2393#define KSPIN_FLAG_CRITICAL_PROCESSING KSFILTER_FLAG_CRITICAL_PROCESSING
2394#define KSPIN_FLAG_HYPERCRITICAL_PROCESSING KSFILTER_FLAG_HYPERCRITICAL_PROCESSING
2396#define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING 0x00000008
2397#define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING 0x00000010
2398#define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL 0x00000020
2399#define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING 0x00000040
2400#define KSPIN_FLAG_ENFORCE_FIFO 0x00000080
2402#define KSPIN_FLAG_GENERATE_MAPPINGS 0x00000100
2403#define KSPIN_FLAG_DISTINCT_TRAILING_EDGE 0x00000200
2405#define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY 0x00010000
2406#define KSPIN_FLAG_SPLITTER 0x00020000
2407#define KSPIN_FLAG_USE_STANDARD_TRANSPORT 0x00040000
2408#define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT 0x00080000
2409#define KSPIN_FLAG_FIXED_FORMAT 0x00100000
2410#define KSPIN_FLAG_GENERATE_EOS_EVENTS 0x00200000
2412#define KSPIN_FLAG_RENDERER (KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY|KSPIN_FLAG_GENERATE_EOS_EVENTS)
2414#define KSPIN_FLAG_IMPLEMENT_CLOCK 0x00400000
2415#define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING 0x00800000
2416#define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE 0x01000000
2417#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
2418#define KSPIN_FLAG_DENY_USERMODE_ACCESS 0x80000000
2433 ULONG StreamHeaderSize;
2440#define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler)\
2441 DEFINE_KSPROPERTY_ITEM(\
2442 KSPROPERTY_PIN_CINSTANCES,\
2445 sizeof(KSPIN_CINSTANCES),\
2446 NULL, NULL, 0, NULL, NULL, 0)
2448#define DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(Handler)\
2449 DEFINE_KSPROPERTY_ITEM(\
2450 KSPROPERTY_PIN_CTYPES,\
2452 sizeof(KSPROPERTY),\
2454 NULL, NULL, 0, NULL, NULL, 0)
2456#define DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(Handler)\
2457 DEFINE_KSPROPERTY_ITEM(\
2458 KSPROPERTY_PIN_DATAFLOW,\
2461 sizeof(KSPIN_DATAFLOW),\
2462 NULL, NULL, 0, NULL, NULL, 0)
2464#define DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(Handler)\
2465 DEFINE_KSPROPERTY_ITEM(\
2466 KSPROPERTY_PIN_DATARANGES,\
2470 NULL, NULL, 0, NULL, NULL, 0)
2472#define DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(Handler)\
2473 DEFINE_KSPROPERTY_ITEM(\
2474 KSPROPERTY_PIN_DATAINTERSECTION,\
2476 sizeof(KSP_PIN) + sizeof(KSMULTIPLE_ITEM),\
2478 NULL, NULL, 0, NULL, NULL, 0)
2480#define DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(Handler)\
2481 DEFINE_KSPROPERTY_ITEM(\
2482 KSPROPERTY_PIN_INTERFACES,\
2486 NULL, NULL, 0, NULL, NULL, 0)
2488#define DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(Handler)\
2489 DEFINE_KSPROPERTY_ITEM(\
2490 KSPROPERTY_PIN_MEDIUMS,\
2494 NULL, NULL, 0, NULL, NULL, 0)
2496#define DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(Handler)\
2497 DEFINE_KSPROPERTY_ITEM(\
2498 KSPROPERTY_PIN_COMMUNICATION,\
2501 sizeof(KSPIN_COMMUNICATION),\
2502 NULL, NULL, 0, NULL, NULL, 0)
2504#define DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(Handler)\
2505 DEFINE_KSPROPERTY_ITEM(\
2506 KSPROPERTY_PIN_GLOBALCINSTANCES,\
2509 sizeof(KSPIN_CINSTANCES),\
2510 NULL, NULL, 0, NULL, NULL, 0)
2512#define DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(Handler)\
2513 DEFINE_KSPROPERTY_ITEM(\
2514 KSPROPERTY_PIN_NECESSARYINSTANCES,\
2518 NULL, NULL, 0, NULL, NULL, 0)
2520#define DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(Handler)\
2521 DEFINE_KSPROPERTY_ITEM(\
2522 KSPROPERTY_PIN_PHYSICALCONNECTION,\
2526 NULL, NULL, 0, NULL, NULL, 0)
2528#define DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(Handler)\
2529 DEFINE_KSPROPERTY_ITEM(\
2530 KSPROPERTY_PIN_CATEGORY,\
2534 NULL, NULL, 0, NULL, NULL, 0)
2536#define DEFINE_KSPROPERTY_ITEM_PIN_NAME(Handler)\
2537 DEFINE_KSPROPERTY_ITEM(\
2538 KSPROPERTY_PIN_NAME,\
2542 NULL, NULL, 0, NULL, NULL, 0)
2544#define DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(Handler)\
2545 DEFINE_KSPROPERTY_ITEM(\
2546 KSPROPERTY_PIN_CONSTRAINEDDATARANGES,\
2550 NULL, NULL, 0, NULL, NULL, 0)
2552#define DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(Handler)\
2553 DEFINE_KSPROPERTY_ITEM(\
2554 KSPROPERTY_PIN_PROPOSEDATAFORMAT,\
2557 sizeof(KSDATAFORMAT),\
2558 (Handler), NULL, 0, NULL, NULL, 0)
2560#define DEFINE_KSPROPERTY_PINSET(PinSet,\
2561 PropGeneral, PropInstances, PropIntersection)\
2562DEFINE_KSPROPERTY_TABLE(PinSet) {\
2563 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
2564 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
2565 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
2566 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
2567 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
2568 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
2569 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
2570 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
2571 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
2572 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral)\
2575#define DEFINE_KSPROPERTY_PINSETCONSTRAINED(PinSet,\
2576 PropGeneral, PropInstances, PropIntersection)\
2577DEFINE_KSPROPERTY_TABLE(PinSet) {\
2578 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
2579 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
2580 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
2581 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
2582 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
2583 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
2584 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
2585 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
2586 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
2587 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
2588 DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)\
2595#define DEFINE_KSPROPERTY_TABLE(tablename) \
2596 const KSPROPERTY_ITEM tablename[] =
2631#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler)\
2632 DEFINE_KSPROPERTY_ITEM(\
2633 KSPROPERTY_TOPOLOGY_CATEGORIES,\
2635 sizeof(KSPROPERTY),\
2637 NULL, NULL, 0, NULL, NULL, 0)
2639#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler)\
2640 DEFINE_KSPROPERTY_ITEM(\
2641 KSPROPERTY_TOPOLOGY_NODES,\
2643 sizeof(KSPROPERTY),\
2645 NULL, NULL, 0, NULL, NULL, 0)
2647#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler)\
2648 DEFINE_KSPROPERTY_ITEM(\
2649 KSPROPERTY_TOPOLOGY_CONNECTIONS,\
2651 sizeof(KSPROPERTY),\
2653 NULL, NULL, 0, NULL, NULL, 0)
2655#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\
2656 DEFINE_KSPROPERTY_ITEM(\
2657 KSPROPERTY_TOPOLOGY_NAME,\
2661 NULL, NULL, 0, NULL, NULL, 0)
2663#define DEFINE_KSPROPERTY_TOPOLOGYSET(TopologySet, Handler)\
2664DEFINE_KSPROPERTY_TABLE(TopologySet) {\
2665 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler),\
2666 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler),\
2667 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler),\
2668 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\
2688(
NTAPI *PFNKSALLOCATOR)(
2696(
NTAPI *PFNKINTERSECTHANDLEREX)(
2707(
NTAPI *PFNALLOCATOR_ALLOCATEFRAME)(
2712(
NTAPI *PFNALLOCATOR_FREEFRAME)(
2717 PFNALLOCATOR_ALLOCATEFRAME AllocateFrame;
2718 PFNALLOCATOR_FREEFRAME FreeFrame;
2719} KSSTREAMALLOCATOR_FUNCTIONTABLE, *PKSSTREAMALLOCATOR_FUNCTIONTABLE;
2749#define KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT 0x00000001
2750#define KSSTREAM_HEADER_OPTIONSF_PREROLL 0x00000002
2751#define KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY 0x00000004
2752#define KSSTREAM_HEADER_OPTIONSF_TYPECHANGED 0x00000008
2753#define KSSTREAM_HEADER_OPTIONSF_TIMEVALID 0x00000010
2754#define KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY 0x00000040
2755#define KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE 0x00000080
2756#define KSSTREAM_HEADER_OPTIONSF_DURATIONVALID 0x00000100
2757#define KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 0x00000200
2758#define KSSTREAM_HEADER_OPTIONSF_BUFFEREDTRANSFER 0x00000400
2759#define KSSTREAM_HEADER_OPTIONSF_VRAM_DATA_TRANSFER 0x00000800
2760#define KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA 0x80000000
2768typedef struct _KSGATE KSGATE, *PKSGATE;
2793 Gate = Gate->NextGate;
2806 Gate = Gate->NextGate;
2814KsGateGetStateUnsafe(
2818 return((
BOOLEAN)(Gate->Count > 0));
2825KsGateCaptureThreshold(
2836 KsGateTurnInputOff(Gate->NextGate);
2853 Gate->Count = InitialCount;
2854 Gate->NextGate = NextGate;
2858 if (InitialCount > 0)
2860 if (StateToPropagate)
2862 KsGateTurnInputOn(NextGate);
2867 if (!StateToPropagate)
2869 KsGateTurnInputOff(NextGate);
2880 _In_ PKSGATE AndGate,
2883 KsGateInitialize(AndGate,1,NextOrGate,
TRUE);
2891 _In_ PKSGATE OrGate,
2894 KsGateInitialize(OrGate,0,NextAndGate,
FALSE);
2901KsGateAddOnInputToAnd(
2902 _In_ PKSGATE AndGate)
2911KsGateAddOffInputToAnd(
2912 _In_ PKSGATE AndGate)
2914 KsGateTurnInputOff(AndGate);
2921KsGateRemoveOnInputFromAnd(
2922 _In_ PKSGATE AndGate)
2931KsGateRemoveOffInputFromAnd(
2932 _In_ PKSGATE AndGate)
2934 KsGateTurnInputOn(AndGate);
2941KsGateAddOnInputToOr(
2942 _In_ PKSGATE OrGate)
2944 KsGateTurnInputOn(OrGate);
2951KsGateAddOffInputToOr(
2952 _In_ PKSGATE OrGate)
2961KsGateRemoveOnInputFromOr(
2962 _In_ PKSGATE OrGate)
2964 KsGateTurnInputOff(OrGate);
2971KsGateRemoveOffInputFromOr(
2972 _In_ PKSGATE OrGate)
2982 _In_ PKSGATE AndGate)
2985 if (KsGateGetStateUnsafe(AndGate))
2987 KsGateRemoveOnInputFromOr(AndGate->NextGate);
2991 KsGateRemoveOffInputFromOr(AndGate->NextGate);
3000 _In_ PKSGATE OrGate)
3003 if (KsGateGetStateUnsafe(OrGate))
3005 KsGateRemoveOnInputFromAnd(OrGate->NextGate);
3009 KsGateRemoveOffInputFromAnd(OrGate->NextGate);
3034 PKSMAPPING Mappings;
3048struct _KSSTREAM_POINTER {
3052 PKSSTREAM_POINTER_OFFSET
Offset;
3053 KSSTREAM_POINTER_OFFSET OffsetIn;
3054 KSSTREAM_POINTER_OFFSET OffsetOut;
3057struct _KSPROCESSPIN {
3059 PKSSTREAM_POINTER StreamPointer;
3060 PKSPROCESSPIN InPlaceCounterpart;
3061 PKSPROCESSPIN DelegateBranch;
3062 PKSPROCESSPIN CopySource;
3064 ULONG BytesAvailable;
3070struct _KSPROCESSPIN_INDEXENTRY {
3083typedef struct _KSFILTER_DISPATCH KSFILTER_DISPATCH, *PKSFILTER_DISPATCH;
3084typedef struct _KSDEVICE KSDEVICE, *PKSDEVICE;
3085typedef struct _KSFILTER KSFILTER, *PKSFILTER;
3086typedef struct _KSNODE_DESCRIPTOR KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;
3087typedef struct _KSFILTER_DESCRIPTOR KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR;
3088typedef struct _KSDEVICE_DESCRIPTOR KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR;
3092(
NTAPI *PFNKSDEVICECREATE)(
3097(
NTAPI *PFNKSDEVICEPNPSTART)(
3105(
NTAPI *PFNKSDEVICE)(
3110(
NTAPI *PFNKSDEVICEIRP)(
3116(
NTAPI *PFNKSDEVICEIRPVOID)(
3122(
NTAPI *PFNKSDEVICEQUERYCAPABILITIES)(
3129(
NTAPI *PFNKSDEVICEQUERYPOWER)(
3140(
NTAPI *PFNKSDEVICESETPOWER)(
3146typedef struct _KSDEVICE_DISPATCH {
3147 PFNKSDEVICECREATE Add;
3148 PFNKSDEVICEPNPSTART
Start;
3149 PFNKSDEVICE PostStart;
3150 PFNKSDEVICEIRP QueryStop;
3151 PFNKSDEVICEIRPVOID CancelStop;
3152 PFNKSDEVICEIRPVOID
Stop;
3153 PFNKSDEVICEIRP QueryRemove;
3154 PFNKSDEVICEIRPVOID CancelRemove;
3155 PFNKSDEVICEIRPVOID
Remove;
3156 PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities;
3157 PFNKSDEVICEIRPVOID SurpriseRemoval;
3158 PFNKSDEVICEQUERYPOWER QueryPower;
3159 PFNKSDEVICESETPOWER SetPower;
3161} KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH;
3163#if (NTDDI_VERSION >= NTDDI_LONGHORN)
3164#define KSDEVICE_DESCRIPTOR_VERSION_2 (0x110)
3165#define MIN_DEV_VER_FOR_FLAGS (0x110)
3196(
NTAPI *PFNKSFILTERPOWER)(
3202(
NTAPI *PFNKSFILTERIRP)(
3207(
NTAPI *PFNKSFILTERPROCESS)(
3213(
NTAPI *PFNKSFILTERVOID)(
3216struct _KSFILTER_DISPATCH {
3218 PFNKSFILTERIRP
Close;
3220 PFNKSFILTERVOID Reset;
3223struct _KSNODE_DESCRIPTOR {
3224 const KSAUTOMATION_TABLE *AutomationTable;
3232struct _KSFILTER_DESCRIPTOR {
3234 const KSAUTOMATION_TABLE *AutomationTable;
3237 const GUID *ReferenceGuid;
3238 ULONG PinDescriptorsCount;
3239 ULONG PinDescriptorSize;
3241 ULONG CategoriesCount;
3243 ULONG NodeDescriptorsCount;
3244 ULONG NodeDescriptorSize;
3245 _Field_size_bytes_(NodeDescriptorsCount * NodeDescriptorSize)
const KSNODE_DESCRIPTOR *NodeDescriptors;
3246 ULONG ConnectionsCount;
3251#define KSFILTER_DESCRIPTOR_VERSION ((ULONG)-1)
3253struct _KSDEVICE_DESCRIPTOR {
3255 ULONG FilterDescriptorsCount;
3261struct _KSFILTERFACTORY {
3267#define DEFINE_KSFILTER_DESCRIPTOR(descriptor)\
3268 const KSFILTER_DESCRIPTOR descriptor =
3270#define DEFINE_KSFILTER_PIN_DESCRIPTORS(table)\
3271 SIZEOF_ARRAY(table),\
3275#define DEFINE_KSFILTER_CATEGORIES(table)\
3276 SIZEOF_ARRAY(table),\
3279#define DEFINE_KSFILTER_CATEGORY(category)\
3283#define DEFINE_KSFILTER_CATEGORIES_NULL\
3287#define DEFINE_KSFILTER_NODE_DESCRIPTORS(table)\
3288 SIZEOF_ARRAY(table),\
3292#define DEFINE_KSFILTER_NODE_DESCRIPTORS_NULL\
3294 sizeof(KSNODE_DESCRIPTOR),\
3297#define DEFINE_KSFILTER_CONNECTIONS(table)\
3298 SIZEOF_ARRAY(table),\
3301#define DEFINE_KSFILTER_DEFAULT_CONNECTIONS\
3314(
NTAPI *KStrMethodHandler)(
3320(
NTAPI *KStrSupportHandler)(
3364 _In_opt_ PFNKSDEFAULTALLOCATE DefaultAllocate,
3365 _In_opt_ PFNKSDEFAULTFREE DefaultFree,
3367 _In_opt_ PFNKSDELETEALLOCATOR DeleteAllocator);
3388(
NTAPI *PFNKSSETTIMER)(
3396(
NTAPI *PFNKSCANCELTIMER)(
3437 _In_opt_ PFNKSCANCELTIMER CancelTimer,
3438 _In_opt_ PFNKSCORRELATEDTIME CorrelatedTime,
3499KSMETHOD_SET_IRP_STORAGE(
3503KSMETHOD_ITEM_IRP_STORAGE(
3507KSMETHOD_TYPE_IRP_STORAGE(
3519 _In_reads_(MethodSetsCount)
const KSMETHOD_SET* MethodSet);
3525KsMethodHandlerWithAllocator(
3528 _In_reads_(MethodSetsCount)
const KSMETHOD_SET* MethodSet,
3544 _In_reads_(MethodSetsCount)
const KSMETHOD_SET *MethodSet);
3561 _In_reads_(PropertySetsCount)
const KSPROPERTY_SET *PropertySet);
3567KsPropertyHandlerWithAllocator(
3570 _In_reads_(PropertySetsCount)
const KSPROPERTY_SET* PropertySet,
3595 _In_reads_(PropertySetsCount)
const KSPROPERTY_SET *PropertySet);
3605#define KSPROBE_STREAMREAD 0x00000000
3606#define KSPROBE_STREAMWRITE 0x00000001
3607#define KSPROBE_ALLOCATEMDL 0x00000010
3608#define KSPROBE_PROBEANDLOCK 0x00000020
3609#define KSPROBE_SYSTEMADDRESS 0x00000040
3610#define KSPROBE_MODIFY 0x00000200
3611#define KSPROBE_STREAMWRITEMODIFY (KSPROBE_MODIFY | KSPROBE_STREAMWRITE)
3612#define KSPROBE_ALLOWFORMATCHANGE 0x00000080
3614#define KSSTREAM_READ KSPROBE_STREAMREAD
3615#define KSSTREAM_WRITE KSPROBE_STREAMWRITE
3616#define KSSTREAM_PAGED_DATA 0x00000000
3617#define KSSTREAM_NONPAGED_DATA 0x00000100
3618#define KSSTREAM_SYNCHRONOUS 0x00001000
3619#define KSSTREAM_FAILUREEXCEPTION 0x00002000
3623(
NTAPI *PFNKSGENERATEEVENTCALLBACK)(
3643 _In_opt_ PFNKSGENERATEEVENTCALLBACK CallBack,
3650KsEnableEventWithAllocator(
3653 _In_reads_(EventSetsCount)
const KSEVENT_SET* EventSet,
3675 _In_reads_(EventSetsCount) KSEVENT_SET *EventSet,
3786 _In_ PFNKSINTERSECTHANDLER IntersectHandler);
3800 _In_opt_ PFNKSINTERSECTHANDLEREX IntersectHandler,
3830 _In_ PKSSTREAM_POINTER StreamPointer,
3839 _In_ PKSSTREAM_POINTER StreamPointer
3847 _In_ PKSSTREAM_POINTER StreamPointer,
3848 _In_opt_ PFNKSSTREAMPOINTER CancelCallback,
3850 _Out_ PKSSTREAM_POINTER* CloneStreamPointer
3872(
NTAPI *PFNKSIRPLISTCALLBACK)(
3943 _In_opt_ PFNKSITEMFREECALLBACK ItemFreeCallback);
4010#define KsDispatchFastWriteFailure KsDispatchFastReadFailure
4080KsGetChildCreateParameter(
4094 _In_ PFNKSIRPLISTCALLBACK ListCallback,
4125PKSOBJECT_CREATE_ITEM
4217 _In_ PKSSTREAM_POINTER StreamPointer,
4225 _In_ PKSSTREAM_POINTER StreamPointer,
4236 _In_ PKSSTREAM_POINTER StreamPointer);
4243 _In_ PKSSTREAM_POINTER StreamPointer,
4281 _Out_ PKSWORKER* Worker);
4288 _In_ PKSWORKER Worker);
4297 _Out_ PKSWORKER *Worker);
4304 _In_ PKSWORKER Worker);
4311 _In_ PKSWORKER Worker);
4318 _In_ PKSWORKER Worker,
4407 _In_opt_ PFNKSCONTEXT_DISPATCH PowerDispatch,
4510#if !defined( KS_NO_CREATE_FUNCTIONS )
4567 _Out_ PKSAUTOMATION_TABLE *AutomationTableAB,
4568 _In_opt_ PKSAUTOMATION_TABLE AutomationTableA,
4569 _In_opt_ PKSAUTOMATION_TABLE AutomationTableB,
4582typedef struct _KSFILTERFACTORY KSFILTERFACTORY, *PKSFILTERFACTORY;
4596(
NTAPI *PFNKSFILTERFACTORYPOWER)(
4597 _In_ PKSFILTERFACTORY FilterFactory,