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,
4713 _In_opt_ PFNKSFILTERFACTORYPOWER SleepCallback,
4714 _In_opt_ PFNKSFILTERFACTORYPOWER WakeCallback,
4715 _Out_opt_ PKSFILTERFACTORY *FilterFactory);
4722 _In_ PKSFILTERFACTORY FilterFactory,
4731 _In_ PKSFILTERFACTORY FilterFactory,
4806KsFilterGetParentFilterFactory(
4816KsFilterFactoryGetParentDevice(
4817 _In_ PKSFILTERFACTORY FilterFactory)
4822#define KsDeleteFilterFactory(FilterFactory) \
4823 KsFreeObjectCreateItemsByContext( \
4824 *(KSDEVICE_HEADER *)( \
4825 KsFilterFactoryGetParentDevice(FilterFactory)->FunctionalDeviceObject-> \
4851KsDeviceGetFirstChildFilterFactory(
4854#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
4867KsDeviceGetOuterUnknown(
4877KsDeviceRegisterAggregatedClientUnknown(
4883#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
4885typedef interface IKsReferenceClock* PIKSREFERENCECLOCK;
4888#define INTERFACE IKsReferenceClock
4912#define INTERFACE IKsControl
4914DEFINE_GUID(
IID_IKsControl, 0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96);
4982#define KsDiscard(object, pointer) \
4983 KsRemoveItemFromObjectBag(object->Bag, pointer, TRUE)
4985#define KsFilterAcquireControl(Filter) \
4986 KsAcquireControl((PVOID) Filter);
4988#define KsFilterReleaseControl(Filter) \
4989 KsReleaseControl((PVOID) Filter);
4991#define KsFilterAddEvent(Filter, EventEntry) \
4992 KsAddEvent(Filter,EventEntry);
5033 _In_ const KSPIN_DESCRIPTOR_EX *
const PinDescriptor,
5047KsFilterFactoryGetDevice(
5048 _In_ PKSFILTERFACTORY FilterFactory)
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char const char * ModuleName
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char const char UINT32 ComponentId
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER Handler
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocator(IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocatorEx(IN PIRP Irp, IN PVOID InitializeContext OPTIONAL, IN PFNKSDEFAULTALLOCATE DefaultAllocate OPTIONAL, IN PFNKSDEFAULTFREE DefaultFree OPTIONAL, IN PFNKSINITIALIZEALLOCATOR InitializeAllocator OPTIONAL, IN PFNKSDELETEALLOCATOR DeleteAllocator OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorFramingEx(IN PKSALLOCATOR_FRAMING_EX Framing, IN ULONG BufferSize, IN const KSALLOCATOR_FRAMING_EX *PinFraming)
KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorCreateRequest(IN PIRP Irp, OUT PKSALLOCATOR_FRAMING *OutAllocatorFraming)
#define InterlockedIncrement
#define InterlockedDecrement
NTSTATUS NTAPI KsAddItemToObjectBag(IN KSOBJECT_BAG ObjectBag, IN PVOID Item, IN PFNKSFREE Free OPTIONAL)
KSDDKAPI VOID NTAPI KsFreeObjectBag(IN KSOBJECT_BAG ObjectBag)
KSDDKAPI NTSTATUS NTAPI _KsEdit(IN KSOBJECT_BAG ObjectBag, IN OUT PVOID *PointerToPointerToItem, IN ULONG NewSize, IN ULONG OldSize, IN ULONG Tag)
KSDDKAPI ULONG NTAPI KsRemoveItemFromObjectBag(IN KSOBJECT_BAG ObjectBag, IN PVOID Item, IN BOOLEAN Free)
KSDDKAPI NTSTATUS NTAPI KsCopyObjectBagItems(IN KSOBJECT_BAG ObjectBagDestination, IN KSOBJECT_BAG ObjectBagSource)
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectBag(IN PKSDEVICE Device, OUT KSOBJECT_BAG *ObjectBag)
#define DECLARE_INTERFACE_(i, b)
PDEVICE_OBJECT PhysicalDeviceObject
_In_ PFCB _In_ LONGLONG FileOffset
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
_In_ PSTORAGE_PROPERTY_ID PropertyId
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
KSDDKAPI NTSTATUS NTAPI KsValidateClockCreateRequest(IN PIRP Irp, OUT PKSCLOCK_CREATE *OutClockCreate)
KSDDKAPI VOID NTAPI KsFreeDefaultClock(IN PKSDEFAULTCLOCK DefaultClock)
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultClock(IN PIRP Irp, IN PKSDEFAULTCLOCK DefaultClock)
KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClock(OUT PKSDEFAULTCLOCK *DefaultClock)
KSDDKAPI KSSTATE NTAPI KsGetDefaultClockState(IN PKSDEFAULTCLOCK DefaultClock)
KSDDKAPI VOID NTAPI KsSetDefaultClockTime(IN PKSDEFAULTCLOCK DefaultClock, IN LONGLONG Time)
KSDDKAPI VOID NTAPI KsSetDefaultClockState(IN PKSDEFAULTCLOCK DefaultClock, IN KSSTATE State)
KSDDKAPI LONGLONG NTAPI KsGetDefaultClockTime(IN PKSDEFAULTCLOCK DefaultClock)
KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClockEx(OUT PKSDEFAULTCLOCK *DefaultClock, IN PVOID Context OPTIONAL, IN PFNKSSETTIMER SetTimer OPTIONAL, IN PFNKSCANCELTIMER CancelTimer OPTIONAL, IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL, IN const KSRESOLUTION *Resolution OPTIONAL, IN ULONG Flags)
KSDDKAPI NTSTATUS NTAPI KsPinDataIntersection(IN PIRP Irp, IN PKSP_PIN Pin, OUT PVOID Data, IN ULONG DescriptorsCount, IN const KSPIN_DESCRIPTOR *Descriptor, IN PFNKSINTERSECTHANDLER IntersectHandler)
KSDDKAPI NTSTATUS NTAPI KsHandleSizedListQuery(IN PIRP Irp, IN ULONG DataItemsCount, IN ULONG DataItemSize, IN const VOID *DataItems)
KSDDKAPI NTSTATUS NTAPI KsValidateConnectRequest(IN PIRP Irp, IN ULONG DescriptorsCount, IN KSPIN_DESCRIPTOR *Descriptor, OUT PKSPIN_CONNECT *Connect)
KSDDKAPI NTSTATUS NTAPI KsPinDataIntersectionEx(IN PIRP Irp, IN PKSP_PIN Pin, OUT PVOID Data, IN ULONG DescriptorsCount, IN const KSPIN_DESCRIPTOR *Descriptor, IN ULONG DescriptorSize, IN PFNKSINTERSECTHANDLEREX IntersectHandler OPTIONAL, IN PVOID HandlerContext OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsPinPropertyHandler(IN PIRP Irp, IN PKSPROPERTY Property, IN OUT PVOID Data, IN ULONG DescriptorsCount, IN const KSPIN_DESCRIPTOR *Descriptor)
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
static const WCHAR SymbolicLink[]
static const WCHAR Connections[]
NTSTATUS NTAPI KsMergeAutomationTables(OUT PKSAUTOMATION_TABLE *AutomationTableAB, IN PKSAUTOMATION_TABLE AutomationTableA OPTIONAL, IN PKSAUTOMATION_TABLE AutomationTableB OPTIONAL, IN KSOBJECT_BAG Bag OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsAddObjectCreateItemToObjectHeader(IN KSOBJECT_HEADER ObjectHeader, IN PDRIVER_DISPATCH Create, IN PVOID Context, IN PWCHAR ObjectClass, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI void NTAPI KsDeviceRegisterAdapterObject(IN PKSDEVICE Device, IN PADAPTER_OBJECT AdapterObject, IN ULONG MaxMappingsByteCount, IN ULONG MappingTableStride)
KSDDKAPI NTSTATUS NTAPI KsForwardIrp(IN PIRP Irp, IN PFILE_OBJECT FileObject, IN BOOLEAN ReuseStackLocation)
KSDDKAPI VOID NTAPI KsRecalculateStackDepth(IN KSDEVICE_HEADER Header, IN BOOLEAN ReuseStackLocation)
KSDDKAPI ACCESS_MASK NTAPI KsQueryObjectAccessMask(IN KSOBJECT_HEADER Header)
KSDDKAPI VOID NTAPI KsAcquireControl(IN PVOID Object)
KSDDKAPI VOID NTAPI KsFreeObjectHeader(IN PVOID Header)
KSDDKAPI NTSTATUS NTAPI KsFreeObjectCreateItemsByContext(IN KSDEVICE_HEADER Header, IN PVOID Context)
KSDDKAPI PVOID NTAPI KsGetFirstChild(IN PVOID Object)
VOID NTAPI KsReleaseControl(IN PVOID Object)
KSDDKAPI VOID NTAPI KsSetDevicePnpAndBaseObject(IN KSDEVICE_HEADER Header, IN PDEVICE_OBJECT PnpDeviceObject, IN PDEVICE_OBJECT BaseDevice)
KSDDKAPI PDEVICE_OBJECT NTAPI KsQueryDevicePnpObject(IN KSDEVICE_HEADER Header)
KSDDKAPI VOID NTAPI KsSetTargetDeviceObject(IN KSOBJECT_HEADER Header, IN PDEVICE_OBJECT TargetDevice OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsCacheMedium(IN PUNICODE_STRING SymbolicLink, IN PKSPIN_MEDIUM Medium, IN ULONG PinDirection)
KSDDKAPI VOID NTAPI KsSetPowerDispatch(IN KSOBJECT_HEADER Header, IN PFNKSCONTEXT_DISPATCH PowerDispatch OPTIONAL, IN PVOID PowerContext OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsSynchronousIoControlDevice(IN PFILE_OBJECT FileObject, IN KPROCESSOR_MODE RequestorMode, IN ULONG IoControl, IN PVOID InBuffer, IN ULONG InSize, OUT PVOID OutBuffer, IN ULONG OutSize, OUT PULONG BytesReturned)
KSDDKAPI PKSOBJECT_CREATE_ITEM NTAPI KsQueryObjectCreateItem(IN KSOBJECT_HEADER Header)
KSDDKAPI NTSTATUS NTAPI KsAllocateDeviceHeader(OUT KSDEVICE_HEADER *OutHeader, IN ULONG ItemsCount, IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsForwardAndCatchIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PFILE_OBJECT FileObject, IN KSSTACK_USE StackUse)
KSDDKAPI NTSTATUS NTAPI KsAcquireResetValue(IN PIRP Irp, OUT KSRESET *ResetValue)
KSDDKAPI NTSTATUS NTAPI KsUnserializeObjectPropertiesFromRegistry(IN PFILE_OBJECT FileObject, IN HANDLE ParentKey OPTIONAL, IN PUNICODE_STRING RegistryPath OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsAddObjectCreateItemToDeviceHeader(IN KSDEVICE_HEADER DevHeader, IN PDRIVER_DISPATCH Create, IN PVOID Context, IN PWCHAR ObjectClass, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
KSDDKAPI VOID NTAPI KsFreeDeviceHeader(IN KSDEVICE_HEADER DevHeader)
VOID NTAPI KsReleaseDevice(IN PKSDEVICE Device)
KSDDKAPI NTSTATUS NTAPI KsFreeObjectCreateItem(IN KSDEVICE_HEADER Header, IN PUNICODE_STRING CreateItem)
KSDDKAPI NTSTATUS NTAPI KsDefaultForwardIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI ULONG NTAPI KsDeviceGetBusData(IN PKSDEVICE Device, IN ULONG DataType, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
KSDDKAPI ULONG NTAPI KsDeviceSetBusData(IN PKSDEVICE Device, IN ULONG DataType, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
KSDDKAPI VOID NTAPI KsCompletePendingRequest(IN PIRP Irp)
KSDDKAPI PVOID NTAPI KsGetNextSibling(IN PVOID Object)
KSDDKAPI VOID NTAPI KsSetTargetState(IN KSOBJECT_HEADER Header, IN KSTARGET_STATE TargetState)
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectHeader(OUT KSOBJECT_HEADER *Header, IN ULONG ItemsCount, IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL, IN PIRP Irp, IN KSDISPATCH_TABLE *Table)
KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectCreateItem(IN KSDEVICE_HEADER DevHeader, IN PKSOBJECT_CREATE_ITEM CreateItem, IN BOOLEAN AllocateEntry, IN PFNKSITEMFREECALLBACK ItemFreeCallback OPTIONAL)
KSDDKAPI VOID NTAPI KsAcquireDevice(IN PKSDEVICE Device)
KSDDKAPI NTSTATUS NTAPI KsInitializeDevice(IN PDEVICE_OBJECT FunctionalDeviceObject, IN PDEVICE_OBJECT PhysicalDeviceObject, IN PDEVICE_OBJECT NextDeviceObject, IN const KSDEVICE_DESCRIPTOR *Descriptor OPTIONAL)
KSDDKAPI VOID NTAPI KsDereferenceBusObject(IN KSDEVICE_HEADER Header)
KSDDKAPI NTSTATUS NTAPI KsReferenceBusObject(IN KSDEVICE_HEADER Header)
KSDDKAPI PKSDEVICE NTAPI KsGetDevice(IN PVOID Object)
KSDDKAPI NTSTATUS NTAPI KsInitializeDriver(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath, IN const KSDEVICE_DESCRIPTOR *Descriptor OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsCreateDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject, IN const KSDEVICE_DESCRIPTOR *Descriptor OPTIONAL, IN ULONG ExtensionSize OPTIONAL, OUT PKSDEVICE *Device OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
KSDDKAPI void NTAPI KsGenerateEvents(IN PVOID Object, IN const GUID *EventSet OPTIONAL, IN ULONG EventId, IN ULONG DataSize, IN PVOID Data OPTIONAL, IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL, IN PVOID CallBackContext OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsEnableEvent(IN PIRP Irp, IN ULONG EventSetsCount, IN KSEVENT_SET *EventSet, IN OUT PLIST_ENTRY EventsList OPTIONAL, IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL, IN PVOID EventsLock OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsGenerateEvent(IN PKSEVENT_ENTRY EntryEvent)
KSDDKAPI NTSTATUS NTAPI KsDisableEvent(IN PIRP Irp, IN OUT PLIST_ENTRY EventsList, IN KSEVENTS_LOCKTYPE EventsFlags, IN PVOID EventsLock)
KSDDKAPI VOID NTAPI KsFreeEventList(IN PFILE_OBJECT FileObject, IN OUT PLIST_ENTRY EventsList, IN KSEVENTS_LOCKTYPE EventsFlags, IN PVOID EventsLock)
KSDDKAPI VOID NTAPI KsAddEvent(IN PVOID Object, IN PKSEVENT_ENTRY EventEntry)
NTSTATUS NTAPI KsDefaultAddEventHandler(IN PIRP Irp, IN PKSEVENTDATA EventData, IN OUT PKSEVENT_ENTRY EventEntry)
KSDDKAPI NTSTATUS NTAPI KsGenerateDataEvent(IN PKSEVENT_ENTRY EventEntry, IN ULONG DataSize, IN PVOID Data)
KSDDKAPI VOID NTAPI KsDiscardEvent(IN PKSEVENT_ENTRY EventEntry)
KSDDKAPI NTSTATUS NTAPI KsFilterCreateNode(IN PKSFILTER Filter, IN const KSNODE_DESCRIPTOR *const NodeDescriptor, OUT PULONG NodeID)
KSDDKAPI NTSTATUS NTAPI KsFilterCreatePinFactory(IN PKSFILTER Filter, IN const KSPIN_DESCRIPTOR_EX *const InPinDescriptor, OUT PULONG PinID)
KSDDKAPI VOID NTAPI KsFilterAcquireProcessingMutex(IN PKSFILTER Filter)
KSDDKAPI NTSTATUS NTAPI KsFilterAddTopologyConnections(IN PKSFILTER Filter, IN ULONG NewConnectionsCount, IN const KSTOPOLOGY_CONNECTION *const NewTopologyConnections)
KSDDKAPI VOID NTAPI KsFilterAttemptProcessing(IN PKSFILTER Filter, IN BOOLEAN Asynchronous)
KSDDKAPI PKSPIN NTAPI KsFilterGetFirstChildPin(IN PKSFILTER Filter, IN ULONG PinId)
const GUID IID_IKsControl
KSDDKAPI PKSFILTER NTAPI KsGetFilterFromIrp(IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsMapModuleName(IN PDEVICE_OBJECT PhysicalDeviceObject, IN PUNICODE_STRING ModuleName, OUT PUNICODE_STRING ImageName, OUT PULONG_PTR ResourceId, OUT PULONG ValueType)
KSDDKAPI NTSTATUS NTAPI KsLoadResource(IN PVOID ImageBase, IN POOL_TYPE PoolType, IN ULONG_PTR ResourceName, IN ULONG ResourceType, OUT PVOID *Resource, OUT PULONG ResourceSize)
KSDDKAPI NTSTATUS NTAPI KsGetImageNameAndResourceId(IN HANDLE RegKey, OUT PUNICODE_STRING ImageName, OUT PULONG_PTR ResourceId, OUT PULONG ValueType)
KSDDKAPI VOID NTAPI KsCancelIo(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock)
KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI VOID NTAPI KsAddIrpToCancelableQueue(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock, IN PIRP Irp, IN KSLIST_ENTRY_LOCATION ListLocation, IN PDRIVER_CANCEL DriverCancel OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsQueryInformationFile(IN PFILE_OBJECT FileObject, OUT PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass)
KSDDKAPI NTSTATUS NTAPI KsStreamIo(IN PFILE_OBJECT FileObject, IN PKEVENT Event OPTIONAL, IN PVOID PortContext OPTIONAL, IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL, IN PVOID CompletionContext OPTIONAL, IN KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN OUT PVOID StreamHeaders, IN ULONG Length, IN ULONG Flags, IN KPROCESSOR_MODE RequestorMode)
KSDDKAPI NTSTATUS NTAPI KsSetMajorFunctionHandler(IN PDRIVER_OBJECT DriverObject, IN ULONG MajorFunction)
KSDDKAPI NTSTATUS NTAPI KsDispatchIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI VOID NTAPI KsRemoveSpecificIrpFromCancelableQueue(IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsProbeStreamIrp(IN PIRP Irp, IN ULONG ProbeFlags, IN ULONG HeaderSize)
KSDDKAPI BOOLEAN NTAPI KsDispatchFastReadFailure(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
KSDDKAPI NTSTATUS NTAPI KsDefaultDeviceIoCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsWriteFile(IN PFILE_OBJECT FileObject, IN PKEVENT Event OPTIONAL, IN PVOID PortContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PVOID Buffer, IN ULONG Length, IN ULONG Key OPTIONAL, IN KPROCESSOR_MODE RequestorMode)
KSDDKAPI NTSTATUS NTAPI KsAllocateExtraData(IN PIRP Irp, IN ULONG ExtraSize, OUT PVOID *ExtraBuffer)
KSDDKAPI NTSTATUS NTAPI KsReadFile(IN PFILE_OBJECT FileObject, IN PKEVENT Event OPTIONAL, IN PVOID PortContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID Buffer, IN ULONG Length, IN ULONG Key OPTIONAL, IN KPROCESSOR_MODE RequestorMode)
KSDDKAPI NTSTATUS NTAPI KsDispatchSetSecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsMoveIrpsOnCancelableQueue(IN OUT PLIST_ENTRY SourceList, IN PKSPIN_LOCK SourceLock, IN OUT PLIST_ENTRY DestinationList, IN PKSPIN_LOCK DestinationLock OPTIONAL, IN KSLIST_ENTRY_LOCATION ListLocation, IN PFNKSIRPLISTCALLBACK ListCallback, IN PVOID Context)
KSDDKAPI NTSTATUS NTAPI KsDispatchQuerySecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI VOID NTAPI KsNullDriverUnload(IN PDRIVER_OBJECT DriverObject)
KSDDKAPI BOOLEAN NTAPI KsDispatchFastIoDeviceControlFailure(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength, IN ULONG IoControlCode, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
KSDDKAPI VOID NTAPI KsCancelRoutine(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsSetInformationFile(IN PFILE_OBJECT FileObject, IN PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass)
KSDDKAPI NTSTATUS NTAPI KsDispatchSpecificMethod(IN PIRP Irp, IN PFNKSHANDLER Handler)
KSDDKAPI VOID NTAPI KsReleaseIrpOnCancelableQueue(IN PIRP Irp, IN PDRIVER_CANCEL DriverCancel OPTIONAL)
KSDDKAPI PIRP NTAPI KsRemoveIrpFromCancelableQueue(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock, IN KSLIST_ENTRY_LOCATION ListLocation, IN KSIRP_REMOVAL_OPERATION RemovalOperation)
KSDDKAPI PVOID NTAPI KsGetParent(IN PVOID Object)
PUNKNOWN NTAPI KsGetOuterUnknown(IN PVOID Object)
PKSFILTER NTAPI KsPinGetParentFilter(IN PKSPIN Pin)
KSDDKAPI VOID NTAPI KsStreamPointerAdvanceOffsetsAndUnlock(IN PKSSTREAM_POINTER StreamPointer, IN ULONG InUsed, IN ULONG OutUsed, IN BOOLEAN Eject)
KSDDKAPI PKSPIN NTAPI KsGetPinFromIrp(IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvance(IN PKSSTREAM_POINTER StreamPointer)
KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetLeadingEdgeStreamPointer(IN PKSPIN Pin, IN KSSTREAM_POINTER_STATE State)
KSDDKAPI NTSTATUS NTAPI KsStreamPointerClone(IN PKSSTREAM_POINTER StreamPointer, IN PFNKSSTREAMPOINTER CancelCallback OPTIONAL, IN ULONG ContextSize, OUT PKSSTREAM_POINTER *CloneStreamPointer)
VOID NTAPI KsPinAttemptProcessing(IN PKSPIN Pin, IN BOOLEAN Asynchronous)
PFILE_OBJECT NTAPI KsPinGetConnectedPinFileObject(IN PKSPIN Pin)
KSDDKAPI NTSTATUS NTAPI KsStreamPointerSetStatusCode(IN PKSSTREAM_POINTER StreamPointer, IN NTSTATUS Status)
PKSGATE NTAPI KsPinGetAndGate(IN PKSPIN Pin)
VOID NTAPI KsPinReleaseProcessingMutex(IN PKSPIN Pin)
KSDDKAPI VOID NTAPI KsStreamPointerUnlock(IN PKSSTREAM_POINTER StreamPointer, IN BOOLEAN Eject)
PKSPIN NTAPI KsPinGetNextSiblingPin(IN PKSPIN Pin)
VOID NTAPI KsPinAcquireProcessingMutex(IN PKSPIN Pin)
KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvanceOffsets(IN PKSSTREAM_POINTER StreamPointer, IN ULONG InUsed, IN ULONG OutUsed, IN BOOLEAN Eject)
KSDDKAPI VOID NTAPI KsStreamPointerDelete(IN PKSSTREAM_POINTER StreamPointer)
KSDDKAPI BOOLEAN NTAPI KsFastPropertyHandler(IN PFILE_OBJECT FileObject, IN PKSPROPERTY UNALIGNED Property, IN ULONG PropertyLength, IN OUT PVOID UNALIGNED Data, IN ULONG DataLength, OUT PIO_STATUS_BLOCK IoStatus, IN ULONG PropertySetsCount, IN const KSPROPERTY_SET *PropertySet)
KSDDKAPI NTSTATUS NTAPI KsPropertyHandler(IN PIRP Irp, IN ULONG PropertySetsCount, IN const KSPROPERTY_SET *PropertySet)
KSDDKAPI NTSTATUS NTAPI KsDispatchSpecificProperty(IN PIRP Irp, IN PFNKSHANDLER Handler)
KSDDKAPI NTSTATUS NTAPI KsTopologyPropertyHandler(IN PIRP Irp, IN PKSPROPERTY Property, IN OUT PVOID Data, IN const KSTOPOLOGY *Topology)
KSDDKAPI NTSTATUS NTAPI KsValidateTopologyNodeCreateRequest(IN PIRP Irp, IN PKSTOPOLOGY Topology, OUT PKSNODE_CREATE *OutNodeCreate)
#define _IRQL_requires_max_(irql)
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG Increment
KSDDKAPI NTSTATUS NTAPI KsCreateFilterFactory(IN PDEVICE_OBJECT DeviceObject, IN const KSFILTER_DESCRIPTOR *Descriptor, IN PWSTR RefString OPTIONAL, IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, IN ULONG CreateItemFlags, IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL, IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL, OUT PKSFILTERFACTORY *FilterFactory OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsFilterFactorySetDeviceClassesState(IN PKSFILTERFACTORY FilterFactory, IN BOOLEAN NewState)
KSDDKAPI NTSTATUS NTAPI KsFilterFactoryUpdateCacheData(IN PKSFILTERFACTORY FilterFactory, IN const KSFILTER_DESCRIPTOR *FilterDescriptor OPTIONAL)
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T ContextSize
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
_Must_inspect_result_ _In_ USHORT NewSize
static CABITEM * CreateItem(LPCWSTR Path, UINT Attrib, UINT Size, UINT DateTime)
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
union Alignment_ Alignment
_In_ WDFDEVICE _In_ PWDF_DEVICE_INTERFACE_PROPERTY_DATA PropertyData
__in WDFDEVICE __in CONST GUID __in_opt PCUNICODE_STRING RefString
return pTarget GetState()
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
#define InterlockedCompareExchange
unsigned long long DWORDLONG
#define KSDATAFORMAT_SPECIFIER_NONE
struct KSERROR * PKSERROR
_In_ PKSCLOCK_CREATE ClockCreate
KSPROPERTY_STREAMALLOCATOR
@ KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE
@ KSPROPERTY_STREAMALLOCATOR_STATUS
#define KSCATEGORY_FILESYSTEM
struct _KSPROCESSPIN_INDEXENTRY KSPROCESSPIN_INDEXENTRY
struct KSRATE_CAPABILITY * PKSRATE_CAPABILITY
_In_ PKSNODE_CREATE NodeCreate
_In_ PKSNODE_CREATE _In_ ACCESS_MASK _Out_ PHANDLE NodeHandle
_In_ PKSALLOCATOR_FRAMING AllocatorFraming
struct KS_COMPRESSION * PKS_COMPRESSION
struct KSPROPERTY_MEMBERSLIST * PKSPROPERTY_MEMBERSLIST
struct KSSTREAMALLOCATOR_STATUS_EX * PKSSTREAMALLOCATOR_STATUS_EX
@ KS_SEEKING_CanSeekForwards
@ KS_SEEKING_CanPlayBackwards
@ KS_SEEKING_CanSeekAbsolute
@ KS_SEEKING_CanGetCurrentPos
@ KS_SEEKING_CanGetDuration
@ KS_SEEKING_CanGetStopPos
@ KS_SEEKING_CanSeekBackwards
struct KSPRIORITY * PKSPRIORITY
union KSPROPERTY_BOUNDS_LONG * PKSPROPERTY_BOUNDS_LONG
struct KSINTERVAL * PKSINTERVAL
struct KSQUERYBUFFER * PKSQUERYBUFFER
@ KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT
@ KSPROPERTY_CONNECTION_DATAFORMAT
@ KSPROPERTY_CONNECTION_STARTAT
@ KSPROPERTY_CONNECTION_ALLOCATORFRAMING
@ KSPROPERTY_CONNECTION_PRIORITY
@ KSPROPERTY_CONNECTION_ACQUIREORDERING
@ KSPROPERTY_CONNECTION_STATE
@ KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX
@ KSTARGET_STATE_DISABLED
struct KSQUALITY_MANAGER * PKSQUALITY_MANAGER
#define KSPROPSETID_MediaSeeking
struct KSPIN_PHYSICALCONNECTION * PKSPIN_PHYSICALCONNECTION
KSIDENTIFIER KSPIN_MEDIUM
union KSDATAFORMAT KSDATARANGE
struct _KSPROCESSPIN_INDEXENTRY * PKSPROCESSPIN_INDEXENTRY
#define KSMEDIUMSETID_Standard
struct KSSTREAM_HEADER * PKSSTREAM_HEADER
@ KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME
@ KSEVENT_STREAMALLOCATOR_FREEFRAME
struct KSPROPERTY_STEPPING_LONGLONG * PKSPROPERTY_STEPPING_LONGLONG
struct KSTOPOLOGY * PKSTOPOLOGY
@ KSMETHOD_STREAMALLOCATOR_FREE
@ KSMETHOD_STREAMALLOCATOR_ALLOC
struct KSQUALITY * PKSQUALITY
struct KSNODE_CREATE * PKSNODE_CREATE
#define KSCATEGORY_DATACOMPRESSOR
@ KSDEGRADE_STANDARD_COMPUTATION
@ KSDEGRADE_STANDARD_QUALITY
@ KSDEGRADE_STANDARD_SIMPLE
@ KSDEGRADE_STANDARD_SKIP
struct KSPIN_CONNECT * PKSPIN_CONNECT
struct KSP_PIN * PKSP_PIN
@ KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
@ KSPROPERTY_MEDIASEEKING_CAPABILITIES
@ KSPROPERTY_MEDIASEEKING_TIMEFORMAT
@ KSPROPERTY_MEDIASEEKING_DURATION
@ KSPROPERTY_MEDIASEEKING_PREROLL
@ KSPROPERTY_MEDIASEEKING_STOPPOSITION
@ KSPROPERTY_MEDIASEEKING_POSITION
@ KSPROPERTY_MEDIASEEKING_FORMATS
@ KSPROPERTY_MEDIASEEKING_AVAILABLE
@ KSPROPERTY_MEDIASEEKING_POSITIONS
union KSDATAFORMAT * PKSDATAFORMAT
#define KSCATEGORY_DATADECOMPRESSOR
struct KSCLOCK_CREATE * PKSCLOCK_CREATE
@ KSPROPERTY_GM_RATEMATCH
@ KSPROPERTY_GM_GRAPHMANAGER
@ KSPROPERTY_GM_TIMESTAMP_CLOCK
@ KSPROPERTY_GM_RENDERCLOCK
#define KSCATEGORY_COMMUNICATIONSTRANSFORM
#define KSCATEGORY_BRIDGE
#define KSMEMORY_TYPE_KERNEL_PAGED
@ KSPROPERTY_TOPOLOGY_CATEGORIES
@ KSPROPERTY_TOPOLOGY_NAME
@ KSPROPERTY_TOPOLOGY_NODES
@ KSPROPERTY_TOPOLOGY_CONNECTIONS
@ KsObjectTypeFilterFactory
@ KSPROPERTY_PIN_COMMUNICATION
@ KSPROPERTY_PIN_CATEGORY
@ KSPROPERTY_PIN_DATAINTERSECTION
@ KSPROPERTY_PIN_NECESSARYINSTANCES
@ KSPROPERTY_PIN_GLOBALCINSTANCES
@ KSPROPERTY_PIN_CINSTANCES
@ KSPROPERTY_PIN_PROPOSEDATAFORMAT
@ KSPROPERTY_PIN_CONSTRAINEDDATARANGES
@ KSPROPERTY_PIN_DATARANGES
@ KSPROPERTY_PIN_PHYSICALCONNECTION
@ KSPROPERTY_PIN_DATAFLOW
@ KSPROPERTY_PIN_INTERFACES
struct KSE_NODE * PKSE_NODE
struct KSPIN_CINSTANCES * PKSPIN_CINSTANCES
@ KSEVENT_CLOCK_POSITION_MARK
@ KSEVENT_CLOCK_INTERVAL_MARK
#define KSPROPSETID_Stream
enum KSPIN_DATAFLOW * PKSPIN_DATAFLOW
struct KSCORRELATED_TIME * PKSCORRELATED_TIME
#define KSPROPSETID_Connection
struct KSCOMPONENTID * PKSCOMPONENTID
@ KSPIN_COMMUNICATION_BRIDGE
@ KSPIN_COMMUNICATION_NONE
@ KSPIN_COMMUNICATION_BOTH
@ KSPIN_COMMUNICATION_SOURCE
@ KSPIN_COMMUNICATION_SINK
#define KSCATEGORY_SPLITTER
struct KSPROPERTY_POSITIONS * PKSPROPERTY_POSITIONS
struct KSFRAMETIME * PKSFRAMETIME
KSIDENTIFIER * PKSDEGRADE
@ KSEVENT_CONNECTION_TIMEDISCONTINUITY
@ KSEVENT_CONNECTION_POSITIONUPDATE
@ KSEVENT_CONNECTION_PRIORITY
@ KSEVENT_CONNECTION_ENDOFSTREAM
@ KSEVENT_CONNECTION_DATADISCONTINUITY
@ KsAcquireOnlySingleItem
@ KsAcquireAndRemoveOnlySingleItem
@ KS_SEEKING_AbsolutePositioning
@ KS_SEEKING_RelativePositioning
@ KS_SEEKING_PositioningBitsMask
@ KS_SEEKING_SeekToKeyFrame
@ KS_SEEKING_NoPositioning
@ KS_SEEKING_IncrementalPositioning
struct KSATTRIBUTE * PKSATTRIBUTE
#define KSPROPSETID_StreamAllocator
#define KSEVENTSETID_Clock
struct _KSEVENT_ENTRY * PKSEVENT_ENTRY
struct KSALLOCATOR_FRAMING * PKSALLOCATOR_FRAMING
#define KSCATEGORY_CAPTURE
#define KSCATEGORY_MEDIUMTRANSFORM
struct KSM_NODE * PKSM_NODE
KSIDENTIFIER * PKSPIN_INTERFACE
struct KSEVENTDATA * PKSEVENTDATA
struct KSPROPERTY_SERIAL * PKSPROPERTY_SERIAL
#define KSCATEGORY_RENDER
KSIDENTIFIER * PKSPROPERTY
@ KSINTERFACE_FILEIO_STREAMING
_In_ PKSPIN_CONNECT Connect
#define KSCATEGORY_DATATRANSFORM
struct _KSEVENT_ENTRY KSEVENT_ENTRY
struct KSIDENTIFIER * PKSIDENTIFIER
struct KSEVENT_TIME_INTERVAL * PKSEVENT_TIME_INTERVAL
#define KSCATEGORY_QUALITY
_In_ PKSCLOCK_CREATE _Out_ PHANDLE ClockHandle
#define KSPROPTYPESETID_General
KSPROPERTY_STREAMINTERFACE
@ KSPROPERTY_STREAMINTERFACE_HEADERSIZE
#define DEFINE_GUIDSTRUCT(guid, name)
struct KSPROPERTY_STEPPING_LONG * PKSPROPERTY_STEPPING_LONG
@ KSPROPERTY_CLOCK_CORRELATEDTIME
@ KSPROPERTY_CLOCK_RESOLUTION
@ KSPROPERTY_CLOCK_PHYSICALTIME
@ KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME
struct KSPROPERTY_SERIALHDR * PKSPROPERTY_SERIALHDR
KSIDENTIFIER * PKSPIN_MEDIUM
@ KSSTREAM_POINTER_STATE_LOCKED
@ KSSTREAM_POINTER_STATE_UNLOCKED
@ KSINTERFACE_STANDARD_STREAMING
@ KSINTERFACE_STANDARD_LOOPED_STREAMING
@ KSINTERFACE_STANDARD_CONTROL
struct KSP_NODE * PKSP_NODE
@ KSPROPERTY_STREAM_TIMEFORMAT
@ KSPROPERTY_STREAM_PRESENTATIONEXTENT
@ KSPROPERTY_STREAM_PIPE_ID
@ KSPROPERTY_STREAM_DEGRADATION
@ KSPROPERTY_STREAM_QUALITY
@ KSPROPERTY_STREAM_ALLOCATOR
@ KSPROPERTY_STREAM_PRESENTATIONTIME
@ KSPROPERTY_STREAM_FRAMETIME
@ KSPROPERTY_STREAM_MASTERCLOCK
@ KSPROPERTY_STREAM_RATECAPABILITY
struct KSRESOLUTION * PKSRESOLUTION
PVOID(NTAPI * PFNKSINITIALIZEALLOCATOR)(_In_ PVOID InitialContext, _In_ PKSALLOCATOR_FRAMING AllocatorFraming, _Outptr_ PVOID *Context)
struct KSSTREAMALLOCATOR_STATUS * PKSSTREAMALLOCATOR_STATUS
#define KSPROPSETID_Topology
struct KSPROPERTY_VALUES * PKSPROPERTY_VALUES
@ KSPROPERTY_QUALITY_REPORT
@ KSPROPERTY_QUALITY_ERROR
union KSDATAFORMAT * PKSDATARANGE
@ KsStackReuseCurrentLocation
@ KsStackCopyToNewLocation
struct KS_FRAMING_ITEM * PKS_FRAMING_ITEM
struct KSPROPERTY_DESCRIPTION * PKSPROPERTY_DESCRIPTION
struct KSPROPERTY_MEDIAAVAILABLE * PKSPROPERTY_MEDIAAVAILABLE
_In_ PKSPIN_CONNECT _In_ ACCESS_MASK _Out_ PHANDLE ConnectionHandle
KSIDENTIFIER KSPIN_INTERFACE
struct KS_FRAMING_RANGE_WEIGHTED * PKS_FRAMING_RANGE_WEIGHTED
#define KSCATEGORY_INTERFACETRANSFORM
struct KSEVENT_TIME_MARK * PKSEVENT_TIME_MARK
struct KS_FRAMING_RANGE * PKS_FRAMING_RANGE
struct KSMULTIPLE_ITEM * PKSMULTIPLE_ITEM
_In_ PKSALLOCATOR_FRAMING _Out_ PHANDLE AllocatorHandle
struct KSPROPERTY_MEMBERSHEADER * PKSPROPERTY_MEMBERSHEADER
#define KSINTERFACESETID_Standard
struct KSTOPOLOGY_CONNECTION * PKSTOPOLOGY_CONNECTION
struct KSALLOCATOR_FRAMING_EX * PKSALLOCATOR_FRAMING_EX
struct KSP_TIMEFORMAT * PKSP_TIMEFORMAT
enum KSPIN_COMMUNICATION * PKSPIN_COMMUNICATION
#define KSPROPSETID_General
union KSPROPERTY_BOUNDS_LONGLONG * PKSPROPERTY_BOUNDS_LONGLONG
#define KSDATAFORMAT_SUBTYPE_NONE
#define KSPROPSETID_Clock
struct KSRELATIVEEVENT * PKSRELATIVEEVENT
@ KSPROPERTY_GENERAL_COMPONENTID
#define KSINTERFACESETID_FileIo
#define DEFINE_ABSTRACT_UNKNOWN()
KSDDKAPI DWORD NTAPI KsCreatePin(HANDLE FilterHandle, PKSPIN_CONNECT Connect, ACCESS_MASK DesiredAccess, PHANDLE ConnectionHandle)
KSDDKAPI DWORD NTAPI KsCreateTopologyNode(HANDLE ParentHandle, PKSNODE_CREATE NodeCreate, IN ACCESS_MASK DesiredAccess, OUT PHANDLE NodeHandle)
KSDDKAPI DWORD NTAPI KsCreateClock(HANDLE ConnectionHandle, PKSCLOCK_CREATE ClockCreate, PHANDLE ClockHandle)
KSDDKAPI DWORD NTAPI KsCreateAllocator(HANDLE ConnectionHandle, PKSALLOCATOR_FRAMING AllocatorFraming, PHANDLE AllocatorHandle)
_In_opt_ PVOID _Out_ BOOLEAN * Stop
KSDDKAPI BOOLEAN NTAPI KsFastMethodHandler(IN PFILE_OBJECT FileObject, IN PKSMETHOD UNALIGNED Method, IN ULONG MethodLength, IN OUT PVOID UNALIGNED Data, IN ULONG DataLength, OUT PIO_STATUS_BLOCK IoStatus, IN ULONG MethodSetsCount, IN const KSMETHOD_SET *MethodSet)
static PCNODE_DESCRIPTOR TopologyNodes[]
static const char * ImageName
static HRESULT QueryInterface(REFIID, void **)
static OUT PIO_STATUS_BLOCK IoStatusBlock
static OUT PIO_STATUS_BLOCK OUT PVOID FileInformation
static OUT PIO_STATUS_BLOCK OUT PVOID IN ULONG IN FILE_INFORMATION_CLASS FileInformationClass
static PLARGE_INTEGER Time
static ULONG WINAPI AddRef(IStream *iface)
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT * FunctionalDeviceObject
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT * NextDeviceObject
#define _In_reads_bytes_(s)
#define _Outptr_result_bytebuffer_(s)
#define _Field_size_bytes_(s)
#define _Out_writes_bytes_opt_(s)
#define _Out_writes_bytes_to_(s, c)
#define _Must_inspect_result_
#define _In_reads_opt_(s)
#define _Out_writes_bytes_to_opt_(s, c)
#define _Inout_updates_bytes_(s)
#define _Out_writes_bytes_(s)
#define _In_reads_bytes_opt_(s)
#define UNREFERENCED_PARAMETER(P)
__GNU_EXTENSION typedef __int64 * PLONGLONG
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
_In_ SYSTEM_POWER_STATE _In_ ULONG _In_ BOOLEAN Asynchronous
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
_In_ UCHAR _In_ ULONG _Out_ PUCHAR _Outptr_result_bytebuffer_ OutBufferLength PVOID * OutBuffer
STDMETHOD() Reset(THIS) PURE
const KSFILTER_DESCRIPTOR FilterDescriptor
const KSFILTER_DESCRIPTOR * FilterDescriptors
const KSNODE_DESCRIPTOR NodeDescriptor[]
const KSPIN_DESCRIPTOR_EX PinDescriptors[]
KS_COMPRESSION OutputCompression
KSPIN_INTERFACE Interface
KSPROPERTY_MEMBERSHEADER MembersHeader
KS_SEEKING_FLAGS StopFlags
KS_SEEKING_FLAGS CurrentFlags
KSPROPERTY_BOUNDS_LONGLONG Bounds
KSPROPERTY_BOUNDS_LONG Bounds
_Field_size_(MembersListCount) const KSPROPERTY_MEMBERSLIST *MembersList
KSPIN_INTERFACE Interface
LONGLONG PresentationStart
KSALLOCATOR_FRAMING_EX Framing
KSALLOCATOR_FRAMING Framing
_Field_size_(TopologyNodesCount) const GUID *TopologyNodesNames
ULONG TopologyConnectionsCount
_Field_size_(CategoriesCount) const GUID *Categories
_Field_size_(TopologyConnectionsCount) const KSTOPOLOGY_CONNECTION *TopologyConnections
_Field_size_(TopologyNodesCount) const GUID *TopologyNodes
ULONG RatioConstantMargin
KS_FRAMING_RANGE PhysicalRange
KS_FRAMING_RANGE_WEIGHTED FramingRange
VOID InitializeContext(IN PCALLBACK16 Context, IN USHORT Segment, IN USHORT Offset)
_In_ SIZE_T DescriptorSize
DWORDLONG UnsignedMaximum
DWORDLONG UnsignedMinimum
static BOOL Write(PBYTE Address, PBYTE Data, SIZE_T Size)
_Must_inspect_result_ _In_ WDFDEVICE Device
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFDEVICE _Out_ PWDF_DEVICE_STATE DeviceState
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_In_ WDF_SPECIAL_FILE_TYPE NotificationType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING SymbolicLinkName
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_In_ WDF_POWER_DEVICE_STATE TargetState
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_In_ WDFDPC _In_ BOOLEAN Wait
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesReturned
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
_Must_inspect_result_ _In_opt_ WDFKEY ParentKey
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG _Out_opt_ PULONG _Out_opt_ PULONG ValueType
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE _In_opt_ __drv_aliasesMem WDFCONTEXT CompletionContext
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFSPINLOCK * SpinLock
_In_ WDFTIMER _In_ LONGLONG DueTime
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
_Reserved_ PVOID Reserved
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
KSDDKAPI ULONG NTAPI KsDecrementCountedWorker(IN PKSWORKER Worker)
KSDDKAPI NTSTATUS NTAPI KsQueueWorkItem(IN PKSWORKER Worker, IN PWORK_QUEUE_ITEM WorkItem)
KSDDKAPI NTSTATUS NTAPI KsRegisterWorker(IN WORK_QUEUE_TYPE WorkQueueType, OUT PKSWORKER *Worker)
KSDDKAPI VOID NTAPI KsUnregisterWorker(IN PKSWORKER Worker)
KSDDKAPI ULONG NTAPI KsIncrementCountedWorker(IN PKSWORKER Worker)
KSDDKAPI NTSTATUS NTAPI KsRegisterCountedWorker(IN WORK_QUEUE_TYPE WorkQueueType, IN PWORK_QUEUE_ITEM CountedWorkItem, OUT PKSWORKER *Worker)
_In_ IN_ADDR _In_ IN_ADDR _Out_ MULTICAST_MODE_TYPE _Inout_ ULONG _Out_writes_ SourceCount IN_ADDR * SourceList
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH * Dispatch
_Must_inspect_result_ _In_ ULONG Flags
_IRQL_requires_same_ _In_opt_ PVOID Argument1
_In_opt_ PALLOCATE_FUNCTION Allocate
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
enum _WORK_QUEUE_TYPE WORK_QUEUE_TYPE
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT _In_ PDEVICE_OBJECT TargetDevice
_Out_ PHANDLE EventHandle
FAST_IO_DEVICE_CONTROL * PFAST_IO_DEVICE_CONTROL
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
IO_COMPLETION_ROUTINE * PIO_COMPLETION_ROUTINE
DRIVER_CANCEL * PDRIVER_CANCEL
DRIVER_DISPATCH * PDRIVER_DISPATCH
FAST_IO_WRITE * PFAST_IO_WRITE
_In_ SYSTEM_POWER_STATE SystemPowerState
FAST_IO_READ * PFAST_IO_READ
_In_ KPRIORITY _In_ LONG Adjustment