8 This is a basic stubbing of the Kernel Streaming API header. It is
9 very incomplete - a lot of the #defines are not set to any value at all.
11 Some of the structs/funcs may be incorrectly grouped.
13 GUIDs need to be defined properly.
15 AVStream functionality (XP and above, DirectX 8.0 and above) will NOT
16 implemented for a while.
18 Some example code for interaction from usermode:
25 sizeof(KS_SEEKING_CAPABILITIES),
42 #define KSDDKAPI //DECLSPEC_IMPORT /* TODO */
48 #define KSSTRING_Filter L"{9B365890-165F-11D0-A195-0020AFD156E4}"
49 #define KSSTRING_Pin L"{146F1A80-4791-11D0-A5D6-28DB04C10000}"
50 #define KSSTRING_Clock L"{53172480-4791-11D0-A5D6-28DB04C10000}"
51 #define KSSTRING_Allocator L"{642F5D00-4791-11D0-A5D6-28DB04C10000}"
52 #define KSSTRING_AllocatorEx L"{091BB63B-603F-11D1-B067-00A0C9062802}"
53 #define KSSTRING_TopologyNode L"{0621061A-EE75-11D0-B915-00A0C9223196}"
55 #define KSDATAFORMAT_BIT_ATTRIBUTES 1
56 #define KSDATAFORMAT_ATTRIBUTES (1 << KSDATAFORMAT_BIT_ATTRIBUTES)
57 typedef PVOID PKSWORKER
;
59 /* ===============================================================
60 GUID definition helpers
66 #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name
68 #define DEFINE_GUIDEX(name) EXTERN_C const GUID name
73 #define STATICGUIDOF(guid) STATIC_##guid
77 #if defined(__cplusplus) && _MSC_VER >= 1100
78 #define DEFINE_GUIDSTRUCT(guid, name) struct __declspec(uuid(guid)) name
79 #define DEFINE_GUIDNAMED(name) __uidof(struct name)
81 #define DEFINE_GUIDSTRUCT(guid, name) DEFINE_GUIDEX(name)
82 #define DEFINE_GUIDNAMED(name) name
86 #define STATIC_GUID_NULL \
87 0x00000000L, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
88 DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000", GUID_NULL
);
89 #define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL)
92 /* ===============================================================
96 #define IOCTL_KS_DISABLE_EVENT \
103 #define IOCTL_KS_ENABLE_EVENT \
111 #define IOCTL_KS_METHOD \
119 #define IOCTL_KS_PROPERTY \
126 #define IOCTL_KS_WRITE_STREAM \
133 #define IOCTL_KS_READ_STREAM \
140 #define IOCTL_KS_RESET_STATE \
148 /* ===============================================================
152 #define STATIC_KSCATEGORY_BRIDGE \
153 0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
154 DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000", KSCATEGORY_BRIDGE
);
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
159 DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_CAPTURE
);
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
164 DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_RENDER
);
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
169 DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000", KSCATEGORY_MIXER
);
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
174 DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_SPLITTER
);
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
179 DEFINE_GUIDSTRUCT("1E84C900-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATACOMPRESSOR
);
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
184 DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATADECOMPRESSOR
);
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
189 DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATATRANSFORM
);
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
194 DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_COMMUNICATIONSTRANSFORM
);
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
199 DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_INTERFACETRANSFORM
);
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
204 DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_MEDIUMTRANSFORM
);
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
209 DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196", KSCATEGORY_FILESYSTEM
);
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
214 DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000", KSCATEGORY_CLOCK
);
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
219 DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_PROXY
);
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
224 DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_QUALITY
);
225 #define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(KSCATEGORY_QUALITY)
227 /* ===============================================================
236 } KSIDENTIFIER
, *PKSIDENTIFIER
;
238 typedef KSIDENTIFIER KSPROPERTY
, *PKSPROPERTY
;
239 typedef KSIDENTIFIER KSMETHOD
, *PKSMETHOD
;
240 typedef KSIDENTIFIER KSEVENT
, *PKSEVENT
;
242 typedef KSIDENTIFIER KSDEGRADE
, *PKSDEGRADE
;
244 typedef KSIDENTIFIER KSPIN_INTERFACE
, *PKSPIN_INTERFACE
;
245 typedef KSIDENTIFIER KSPIN_MEDIUM
, *PKSPIN_MEDIUM
;
259 } KSDATAFORMAT
, *PKSDATAFORMAT
, KSDATARANGE
, *PKSDATARANGE
;
263 } KSATTRIBUTE
, *PKSATTRIBUTE
;
267 /* ===============================================================
268 Interface Sets - TODO
272 #define KSINTERFACESETID_Media
274 #define KSINTERFACESETID_Standard
275 #define KSINTERFACE_STANDARD_STREAMING
276 #define KSINTERFACE_STANDARD_LOOPED_STREAMING
277 #define KSINTERFACE_STANDARD_CONTROL
280 #define STATIC_KSINTERFACESETID_Standard \
281 0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
282 DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000", KSINTERFACESETID_Standard
);
283 #define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard)
287 KSINTERFACE_STANDARD_STREAMING
,
288 KSINTERFACE_STANDARD_LOOPED_STREAMING
,
289 KSINTERFACE_STANDARD_CONTROL
290 } KSINTERFACE_STANDARD
;
292 #define STATIC_KSINTERFACESETID_FileIo \
293 0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
294 DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196", KSINTERFACESETID_FileIo
);
295 #define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo)
298 /* ===============================================================
304 KSINTERFACE_FILEIO_STREAMING
305 } KSINTERFACE_FILEIO
;
307 #define KSMEDIUM_TYPE_ANYINSTANCE 0
309 #define STATIC_KSMEDIUMSETID_Standard \
310 0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
311 DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000", KSMEDIUMSETID_Standard
);
312 #define KSMEDIUMSETID_Standard DEFINE_GUIDNAMED(KSMEDIUMSETID_Standard)
315 /* ===============================================================
316 Clock Properties/Methods/Events
319 #define KSPROPSETID_Clock \
320 0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
324 KSPROPERTY_CLOCK_TIME
,
325 KSPROPERTY_CLOCK_PHYSICALTIME
,
326 KSPROPERTY_CORRELATEDTIME
,
327 KSPROPERTY_CORRELATEDPHYSICALTIME
,
328 KSPROPERTY_CLOCK_RESOLUTION
,
329 KSPROPERTY_CLOCK_STATE
,
330 KSPROPERTY_CLOCK_FUNCTIONTABLE
333 #define KSEVENTSETID_Clock \
334 0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
338 KSEVENT_CLOCK_INTERVAL_MARK
,
339 KSEVENT_CLOCK_POSITION_MARK
340 } KSEVENT_CLOCK_POSITION
;
343 /* ===============================================================
344 Connection Properties/Methods/Events
347 #define STATIC_KSPROPSETID_Connection \
348 0x1D58C920L, 0xAC9B, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
349 DEFINE_GUIDSTRUCT("1D58C920-AC9B-11CF-A5D6-28DB04C10000", KSPROPSETID_Connection
);
350 #define KSPROPSETID_Connection DEFINE_GUIDNAMED(KSPROPSETID_Connection)
355 KSPROPERTY_CONNECTION_STATE
,
356 KSPROPERTY_CONNECTION_PRIORITY
,
357 KSPROPERTY_CONNECTION_DATAFORMAT
,
358 KSPROPERTY_CONNECTION_ALLOCATORFRAMING
,
359 KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT
,
360 KSPROPERTY_CONNECTION_ACQUIREORDERING
,
361 KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX
,
362 KSPROPERTY_CONNECTION_STARTAT
363 } KSPROPERTY_CONNECTION
;
365 #define KSEVENTSETID_Connection \
366 0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00
370 KSEVENT_CONNECTION_POSITIONUPDATE
,
371 KSEVENT_CONNECTION_DATADISCONTINUITY
,
372 KSEVENT_CONNECTION_TIMEDISCONTINUITY
,
373 KSEVENT_CONNECTION_PRIORITY
,
374 KSEVENT_CONNECTION_ENDOFSTREAM
375 } KSEVENT_CONNECTION
;
378 /* ===============================================================
380 Properties/Methods/Events
383 #define KSPROPSETID_General \
384 0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
388 KSPROPERTY_GENERAL_COMPONENTID
389 } KSPROPERTY_GENERAL
;
392 /* ===============================================================
394 Properties/Methods/Events
397 #define KSPROPSETID_GM \
398 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D
402 KSPROPERTY_GM_GRAPHMANAGER
,
403 KSPROPERTY_GM_TIMESTAMP_CLOCK
,
404 KSPROPERTY_GM_RATEMATCH
,
405 KSPROPERTY_GM_RENDERCLOCK
409 /* ===============================================================
411 Properties/Methods/Events
414 #define KSPROPSETID_MediaSeeking \
415 0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
419 KSPROPERTY_MEDIASEEKING_CAPABILITIES
,
420 KSPROPERTY_MEDIASEEKING_FORMATS
,
421 KSPROPERTY_MEDIASEEKING_TIMEFORMAT
,
422 KSPROPERTY_MEDIASEEKING_POSITION
,
423 KSPROPERTY_MEDIASEEKING_STOPPOSITION
,
424 KSPROPERTY_MEDIASEEKING_POSITIONS
,
425 KSPROPERTY_MEDIASEEKING_DURATION
,
426 KSPROPERTY_MEDIASEEKING_AVAILABLE
,
427 KSPROPERTY_MEDIASEEKING_PREROLL
,
428 KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
429 } KSPROPERTY_MEDIASEEKING
;
432 /* ===============================================================
434 Properties/Methods/Events
437 #define STATIC_KSPROPSETID_Pin\
438 0x8C134960L, 0x51AD, 0x11CF, 0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00
439 DEFINE_GUIDSTRUCT("8C134960-51AD-11CF-878A-94F801C10000", KSPROPSETID_Pin
);
440 #define KSPROPSETID_Pin DEFINE_GUIDNAMED(KSPROPSETID_Pin)
444 KSPROPERTY_PIN_CINSTANCES
,
445 KSPROPERTY_PIN_CTYPES
,
446 KSPROPERTY_PIN_DATAFLOW
,
447 KSPROPERTY_PIN_DATARANGES
,
448 KSPROPERTY_PIN_DATAINTERSECTION
,
449 KSPROPERTY_PIN_INTERFACES
,
450 KSPROPERTY_PIN_MEDIUMS
,
451 KSPROPERTY_PIN_COMMUNICATION
,
452 KSPROPERTY_PIN_GLOBALCINSTANCES
,
453 KSPROPERTY_PIN_NECESSARYINSTANCES
,
454 KSPROPERTY_PIN_PHYSICALCONNECTION
,
455 KSPROPERTY_PIN_CATEGORY
,
457 KSPROPERTY_PIN_CONSTRAINEDDATARANGES
,
458 KSPROPERTY_PIN_PROPOSEDATAFORMAT
466 } KSP_PIN
, *PKSP_PIN
;
468 #define KSINSTANCE_INDETERMINATE ((ULONG)-1)
474 } KSPIN_CINSTANCES
, *PKSPIN_CINSTANCES
;
480 WCHAR SymbolicLinkName
[1];
481 } KSPIN_PHYSICALCONNECTION
, *PKSPIN_PHYSICALCONNECTION
;
484 /* ===============================================================
486 Properties/Methods/Events
489 #define KSPROPSETID_Quality \
490 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
494 KSPROPERTY_QUALITY_REPORT
,
495 KSPROPERTY_QUALITY_ERROR
496 } KSPROPERTY_QUALITY
;
499 /* ===============================================================
501 Properties/Methods/Events
504 #define KSPROPSETID_Stream \
505 0x65aaba60L, 0x98ae, 0x11cf, 0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
509 KSPROPERTY_STREAM_ALLOCATOR
,
510 KSPROPERTY_STREAM_QUALITY
,
511 KSPROPERTY_STREAM_DEGRADATION
,
512 KSPROPERTY_STREAM_MASTERCLOCK
,
513 KSPROPERTY_STREAM_TIMEFORMAT
,
514 KSPROPERTY_STREAM_PRESENTATIONTIME
,
515 KSPROPERTY_STREAM_PRESENTATIONEXTENT
,
516 KSPROPERTY_STREAM_FRAMETIME
,
517 KSPROPERTY_STREAM_RATECAPABILITY
,
518 KSPROPERTY_STREAM_RATE
,
519 KSPROPERTY_STREAM_PIPE_ID
523 /* ===============================================================
525 Properties/Methods/Events
528 #define KSPROPSETID_StreamAllocator \
529 0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
533 KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE
,
534 KSPROPERTY_STREAMALLOCATOR_STATUS
535 } KSPROPERTY_STREAMALLOCATOR
;
537 #define KSMETHODSETID_StreamAllocator \
538 0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
542 KSMETHOD_STREAMALLOCATOR_ALLOC
,
543 KSMETHOD_STREAMALLOCATOR_FREE
544 } KSMETHOD_STREAMALLOCATOR
;
547 #define KSEVENTSETID_StreamAllocator
551 KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME
,
552 KSEVENT_STREAMALLOCATOR_FREEFRAME
553 } KSEVENT_STREAMALLOCATOR
;
556 /* ===============================================================
558 Properties/Methods/Events
561 #define KSPROPSETID_StreamInterface \
562 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
566 KSPROPERTY_STREAMINTERFACE_HEADERSIZE
567 } KSPROPERTY_STREAMINTERFACE
;
570 /* ===============================================================
572 Properties/Methods/Events
575 #define KSPROPSETID_Topology \
576 0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
580 KSPROPERTY_TOPOLOGY_CATEGORIES
,
581 KSPROPERTY_TOPOLOGY_CONNECTIONS
,
582 KSPROPERTY_TOPOLOGY_NAME
,
583 KSPROPERTY_TOPOLOGY_NODES
584 } KSPROPERTY_TOPOLOGY
;
588 /* ===============================================================
589 Property Sets for audio drivers - TODO
592 #define KSPROPSETID_AC3
594 KSPROPERTY_AC3_ALTERNATE_AUDIO
595 KSPROPERTY_AC3_BIT_STREAM_MODE
596 KSPROPERTY_AC3_DIALOGUE_LEVEL
597 KSPROPERTY_AC3_DOWNMIX
598 KSPROPERTY_AC3_ERROR_CONCEALMENT
599 KSPROPERTY_AC3_LANGUAGE_CODE
600 KSPROPERTY_AC3_ROOM_TYPE
603 #define KSPROPSETID_Acoustic_Echo_Cancel
606 KSPROPERTY_AEC_NOISE_FILL_ENABLE
607 KSPROPERTY_AEC_STATUS
610 #define KSPROPSETID_Audio
612 KSPROPERTY_AUDIO_3D_INTERFACE
614 KSPROPERTY_AUDIO_ALGORITHM_INSTANCE
615 KSPROPERTY_AUDIO_BASS
616 KSPROPERTY_AUDIO_BASS_BOOST
617 KSPROPERTY_AUDIO_CHANNEL_CONFIG
618 KSPROPERTY_AUDIO_CHORUS_LEVEL
619 KSPROPERTY_AUDIO_COPY_PROTECTION
620 KSPROPERTY_AUDIO_CPU_RESOURCES
621 KSPROPERTY_AUDIO_DELAY
622 KSPROPERTY_AUDIO_DEMUX_DEST
623 KSPROPERTY_AUDIO_DEV_SPECIFIC
624 KSPROPERTY_AUDIO_DYNAMIC_RANGE
625 KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE
626 KSPROPERTY_AUDIO_EQ_BANDS
627 KSPROPERTY_AUDIO_EQ_LEVEL
628 KSPROPERTY_AUDIO_FILTER_STATE
629 KSPROPERTY_AUDIO_LATENCY
630 KSPROPERTY_AUDIO_LOUDNESS
631 KSPROPERTY_AUDIO_MANUFACTURE_GUID
633 KSPROPERTY_AUDIO_MIX_LEVEL_CAPS
634 KSPROPERTY_AUDIO_MIX_LEVEL_TABLE
635 KSPROPERTY_AUDIO_MUTE
636 KSPROPERTY_AUDIO_MUX_SOURCE
637 KSPROPERTY_AUDIO_NUM_EQ_BANDS
638 KSPROPERTY_AUDIO_PEAKMETER
639 KSPROPERTY_AUDIO_POSITION
640 KSPROPERTY_AUDIO_PREFERRED_STATUS
641 KSPROPERTY_AUDIO_PRODUCT_GUID
642 KSPROPERTY_AUDIO_QUALITY
643 KSPROPERTY_AUDIO_REVERB_LEVEL
644 KSPROPERTY_AUDIO_SAMPLING_RATE
645 KSPROPERTY_AUDIO_STEREO_ENHANCE
646 KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY
647 KSPROPERTY_AUDIO_SURROUND_ENCODE
648 KSPROPERTY_AUDIO_TREBLE
649 KSPROPERTY_AUDIO_VOLUMELEVEL
650 KSPROPERTY_AUDIO_WIDE_MODE
651 KSPROPERTY_AUDIO_WIDENESS
654 #define KSPROPSETID_AudioGfx
656 KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID
657 KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID
660 #define KSPROPSETID_DirectSound3DBuffer
662 KSPROPERTY_DIRECTSOUND3DBUFFER_ALL
663 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES
664 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION
665 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME
666 KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE
667 KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE
668 KSPROPERTY_DIRECTSOUND3DBUFFER_MODE
669 KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION
670 KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY
673 #define KSPROPSETID_DirectSound3DListener
675 KSPROPERTY_DIRECTSOUND3DLISTENER_ALL
676 KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
677 KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH
678 KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR
679 KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR
680 KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION
681 KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION
682 KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR
683 KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY
686 #define KSPROPSETID_DrmAudioStream
688 KSPROPERTY_DRMAUDIOSTREAM_CONTENTID
691 #define KSPROPSETID_Hrtf3d
693 KSPROPERTY_HRTF3D_FILTER_FORMAT
694 KSPROPERTY_HRTF3D_INITIALIZE
695 KSPROPERTY_HRTF3D_PARAMS
698 #define KSPROPSETID_Itd3d
700 KSPROPERTY_ITD3D_PARAMS
703 #define KSPROPSETID_Synth
705 KSPROPERTY_SYNTH_CAPS
706 KSPROPERTY_SYNTH_CHANNELGROUPS
707 KSPROPERTY_SYNTH_LATENCYCLOCK
708 KSPROPERTY_SYNTH_MASTERCLOCK
709 KSPROPERTY_SYNTH_PORTPARAMETERS
710 KSPROPERTY_SYNTH_RUNNINGSTATS
711 KSPROPERTY_SYNTH_VOICEPRIORITY
712 KSPROPERTY_SYNTH_VOLUME
713 KSPROPERTY_SYNTH_VOLUMEBOOST
716 #define KSPROPSETID_Synth_Dls
718 KSPROPERTY_SYNTH_DLS_APPEND
719 KSPROPERTY_SYNTH_DLS_COMPACT
720 KSPROPERTY_SYNTH_DLS_DOWNLOAD
721 KSPROPERTY_SYNTH_DLS_UNLOAD
722 KSPROPERTY_SYNTH_DLS_WAVEFORMAT
725 /* #define KSPROPSETID_Sysaudio */
727 KSPROPERTY_SYSAUDIO_COMPONENT_ID
728 KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE
729 KSPROPERTY_SYSAUDIO_DEVICE_COUNT
730 KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME
731 KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE
732 KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME
733 KSPROPERTY_SYSAUDIO_INSTANCE_INFO
734 KSPROPERTY_SYSAUDIO_SELECT_GRAPH
737 #define KSPROPSETID_Sysaudio_Pin
739 KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE
742 #define KSPROPSETID_TopologyNode
744 KSPROPERTY_TOPOLOGYNODE_ENABLE
745 KSPROPERTY_TOPOLOGYNODE_RESET
751 /* ===============================================================
752 Event Sets for audio drivers - TODO
754 #define KSEVENTSETID_AudioControlChange
756 KSEVENT_CONTROL_CHANGE
761 /* ===============================================================
765 KSNODETYPE_3D_EFFECTS
766 KSNODETYPE_ACOUSTIC_ECHO_CANCEL
773 KSNODETYPE_DEV_SPECIFIC
775 KSNODETYPE_DMSYNTH_CAPS
776 KSNODETYPE_DRM_DESCRAMBLE
782 KSNODETYPE_PROLOGIC_DECODER
783 KSNODETYPE_PROLOGIC_ENCODER
786 KSNODETYPE_STEREO_ENHANCE
787 KSNODETYPE_STEREO_WIDE
792 KSNODETYPE_SYNTHESIZER
798 typedef PVOID KSDEVICE_HEADER
,
805 /* ===============================================================
809 #define KSMETHOD_TYPE_NONE 0x00000000
810 #define KSMETHOD_TYPE_READ 0x00000001
811 #define KSMETHOD_TYPE_WRITE 0x00000002
812 #define KSMETHOD_TYPE_MODIFY 0x00000003
813 #define KSMETHOD_TYPE_SOURCE 0x00000004
814 #define KSMETHOD_TYPE_SEND 0x00000001
815 #define KSMETHOD_TYPE_SETSUPPORT 0x00000100
816 #define KSMETHOD_TYPE_BASICSUPPORT 0x00000200
819 /* ===============================================================
823 #define KSPROPERTY_TYPE_GET 0x00000001
824 #define KSPROPERTY_TYPE_SET 0x00000002
825 #define KSPROPERTY_TYPE_SETSUPPORT 0x00000100
826 #define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200
827 #define KSPROPERTY_TYPE_RELATIONS 0x00000400
828 #define KSPROPERTY_TYPE_SERIALIZESET 0x00000800
829 #define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
830 #define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000
831 #define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
832 #define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
833 #define KSPROPERTY_TYPE_DEFAULT_VALUES 0x00010000
836 /* ===============================================================
837 Topology Methods/Properties
840 #define KSMETHOD_TYPE_TOPOLOGY 0x10000000
841 #define KSPROPERTY_TYPE_TOPOLOGY 0x10000000
844 #define DEFINE_KS_GUID(GA,GB,GC,GD,GE,GF,GG,GH,GI,GJ,GK) \
845 DEFINE_GUID(??, 0x#GA#L, 0xGB, 0xGC, 0xGD, 0xGE, 0xGF, 0xGG, 0xGH, 0xGI, 0xGJ, 0xGK) \
846 "GA-GB-GC-GDGE-GFGGGHGIGJGK"
849 /* ===============================================================
852 BRIDGE - 0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
853 CAPTURE - 0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
854 RENDER - 0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
855 MIXER - 0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
856 SPLITTER - 0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
857 DATACOMPRESSOR - 0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
858 DATADECOMPRESSOR - 0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
859 DATATRANSFORM - 0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
860 COMMUNICATIONSTRANSFORM - 0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
861 INTERFACETRANSFORM - 0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
862 MEDIUMTRANSFORM - 0xCF1DDA2EL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
863 FILESYSTEM - 0x760FED5EL, 0x9357, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
864 CLOCK - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
865 PROXY - 0x97EBAACAL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
866 QUALITY - 0x97EBAACBL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
869 /* ===============================================================
870 KSNAME GUIDs (defined also as KSSTRING_Xxx L"{...}"
872 Filter - 0x9b365890L, 0x165f, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
873 Pin - 0x146F1A80L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
874 Clock - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
875 Allocator - 0x642F5D00L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
876 TopologyNode - 0x0621061AL, 0xEE75, 0x11D0, 0xB9, 0x15, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
879 /* ===============================================================
882 Standard - 0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
883 FileIo - 0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
886 /* ===============================================================
889 Standard - 0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
892 /* ===============================================================
895 General - 0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
896 StreamIo - 0x65D003CAL, 0x1523, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
897 MediaSeeking - 0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
898 Topology - 0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
899 GM - 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D
900 Quality - 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
901 Connection - 0x1D58C920L, 0xAC9B, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
904 /* ===============================================================
907 Event set - 0x75d95571L, 0x073c, 0x11d0, 0xa1, 0x61, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
908 Method set - 0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
909 Property set - 0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
912 /* ===============================================================
915 Property set - 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
918 /* ===============================================================
921 Property set - 0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
922 Event sets - 0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
925 /* ===============================================================
928 Event set - 0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00
931 /* ===============================================================
934 KSTIME_FORMAT_NONE (null guid)
935 FRAME - 0x7b785570L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
936 BYTE - 0x7b785571L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
937 SAMPLE - 0x7b785572L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
938 FIELD - 0x7b785573L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
939 MEDIA_TIME - 0x7b785574L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
942 /* ===============================================================
952 /* ===============================================================
955 WILDCARD, DONT_CARE = NULL
956 SYSTEM - 0x091bb638L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
957 USER - 0x8cb0fc28L, 0x7893, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
958 KERNEL_PAGED - 0xd833f8f8L, 0x7894, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
959 KERNEL_NONPAGED - 0x4a6d5fc4L, 0x7895, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
960 DEVICE_UNKNOWN - 0x091bb639L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
963 /* ===============================================================
965 (values have been checked)
971 KsObjectTypeFilterFactory
,
986 KSTARGET_STATE_DISABLED
,
987 KSTARGET_STATE_ENABLED
1002 KSEVENTS_FMUTEXUNSAFE
,
1005 } KSEVENTS_LOCKTYPE
;
1009 KSDEGRADE_STANDARD_SIMPLE
,
1010 KSDEGRADE_STANDARD_QUALITY
,
1011 KSDEGRADE_STANDARD_COMPUTATION
,
1012 KSDEGRADE_STANDARD_SKIP
1013 } KSDEGRADE_STANDARD
;
1017 KSPIN_DATAFLOW_IN
= 1,
1023 KSPIN_COMMUNICATION_NONE
,
1024 KSPIN_COMMUNICATION_SINK
,
1025 KSPIN_COMMUNICATION_SOURCE
,
1026 KSPIN_COMMUNICATION_BOTH
,
1027 KSPIN_COMMUNICATION_BRIDGE
1028 } KSPIN_COMMUNICATION
;
1034 } KSLIST_ENTRY_LOCATION
;
1038 KsStackCopyToNewLocation
,
1039 KsStackReuseCurrentLocation
,
1040 KsStackUseNewLocation
1047 KsAcquireOnlySingleItem
,
1048 KsAcquireAndRemoveOnlySingleItem
1049 } KSIRP_REMOVAL_OPERATION
;
1053 KsInvokeOnSuccess
= 1,
1054 KsInvokeOnError
= 2,
1055 KsInvokeOnCancel
= 4
1056 } KSCOMPLETION_INVOCATION
;
1059 #if defined(__NTDDK_H)
1061 typedef NTSTATUS (*PFNKSCONTEXT_DISPATCH
)(
1066 /* ===============================================================
1072 } KS_FRAMING_ITEM
, *PKS_FRAMING_ITEM
;
1076 } KS_FRAMING_RANGE
, *PKS_FRAMING_RANGE
;
1081 } KS_FRAMING_RANGE_WEIGHTED
, *PKS_FRAMING_RANGE_WEIGHTED
;
1086 } KS_COMPRESSION
, *PKS_COMPRESSION
;
1089 /* ===============================================================
1093 #define KSPRIORITY_LOW 0x00000001
1094 #define KSPRIORITY_NORMAL 0x40000000
1095 #define KSPRIORITY_HIGH 0x80000000
1096 #define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF
1100 ULONG PriorityClass
;
1101 ULONG PrioritySubClass
;
1102 } KSPRIORITY
, *PKSPRIORITY
;
1105 /* ===============================================================
1107 http://www.osronline.com/DDKx/stream/ks-struct_494j.htm
1109 #if defined(__NTDDK_H)
1112 PDRIVER_DISPATCH DeviceIoControl
;
1113 PDRIVER_DISPATCH Read
;
1114 PDRIVER_DISPATCH Write
;
1115 PDRIVER_DISPATCH Flush
;
1116 PDRIVER_DISPATCH Close
;
1117 PDRIVER_DISPATCH QuerySecurity
;
1118 PDRIVER_DISPATCH SetSecurity
;
1119 PFAST_IO_DEVICE_CONTROL FastDeviceIoControl
;
1120 PFAST_IO_READ FastRead
;
1121 PFAST_IO_WRITE FastWrite
;
1122 } KSDISPATCH_TABLE
, *PKSDISPATCH_TABLE
;
1127 } BUS_INTERFACE_REFERENCE
, *PBUS_INTERFACE_REFERENCE
;
1137 } KSCOMPONENTID
, *PKSCOMPONENTID
;
1141 } KSBUFFER_ITEM
, *PKSBUFFER_ITEM
;
1143 /* ===============================================================
1147 #define KSPROPERTY_MEMBER_RANGES 0x00000001
1148 #define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002
1149 #define KSPROPERTY_MEMBER_VALUES 0x00000003
1150 #define KSPROPERTY_MEMBER_FLAG_DEFAULT KSPROPERTY_MEMBER_RANGES
1154 } KSPROPERTY_BOUNDS_LONG
, *PKSPROPERTY_BOUNDS_LONG
;
1158 } KSPROPERTY_BOUNDS_LONGLONG
, *PKSPROPERTY_BOUNDS_LONGLONG
;
1162 } KSPROPERTY_DESCRIPTION
, *PKSPROPERTY_DESCRIPTION
;
1166 } KSPROPERTY_ITEM
, *PKSPROPERTY_ITEM
;
1170 } KSPROPERTY_MEDIAAVAILABLE
, *PKSPROPERTY_MEDIAAVAILABLE
;
1174 } KSPROPERTY_MEMBERSHEADER
, *PKSPROPERTY_MEMBERSHEADER
;
1178 } KSPROPERTY_MEMBERSLIST
, *PKSPROPERTY_MEMBERSLIST
;
1182 } KSPROPERTY_POSITIONS
, *PKSPROPERTY_POSITIONS
;
1186 } KSPROPERTY_SERIAL
, *PKSPROPERTY_SERIAL
;
1190 } KSPROPERTY_SERIALHDR
, *PKSPROPERTY_SERIALHDR
;
1194 } KSPROPERTY_SET
, *PKSPROPERTY_SET
;
1198 } KSPROPERTY_STEPPING_LONG
, *PKSPROPERTY_STEPPING_LONG
;
1202 } KSPROPERTY_STEPPING_LONGLONG
, *PKSPROPERTY_STEPPING_LONGLONG
;
1206 } KSPROPERTY_VALUES
, *PKSPROPERTY_VALUES
;
1209 /* ===============================================================
1215 } KSALLOCATOR_FRAMING
, *PKSALLOCATOR_FRAMING
;
1219 } KSALLOCATOR_FRAMING_EX
, *PKSALLOCATOR_FRAMING_EX
;
1222 /* ===============================================================
1228 } KSQUALITY
, *PKSQUALITY
;
1232 HANDLE QualityManager
;
1234 } KSQUALITY_MANAGER
, *PKSQUALITY_MANAGER
;
1242 } KSRATE_CAPABILITY
, *PKSRATE_CAPABILITY
;
1246 LONGLONG Granularity
;
1248 } KSRESOLUTION
, *PKSRESOLUTION
;
1252 } KSRELATIVEEVENT
, *PKSRELATIVEEVENT
;
1255 /* ===============================================================
1268 } KSCORRELATED_TIME
, *PKSCORRELATED_TIME
;
1272 KSPROPERTY Property
;
1276 } KSP_TIMEFORMAT
, *PKSP_TIMEFORMAT
;
1280 } KSINTERVAL
, *PKSINTERVAL
;
1284 } KSFRAMETIME
, *PKSFRAMETIME
;
1287 /* ===============================================================
1293 } KSCLOCK
, *PKSCLOCK
, *PKSDEFAULTCLOCK
; /* OK ? */
1297 } KSCLOCK_CREATE
, *PKSCLOCK_CREATE
;
1301 } KSCLOCK_FUNCTIONTABLE
, *PKSCLOCK_FUNCTIONTABLE
;
1304 /* ===============================================================
1305 Objects ??? SORT ME!
1310 } KSOBJECT_CREATE
, *PKSOBJECT_CREATE
;
1312 #if defined(__NTDDK_H)
1315 PDRIVER_DISPATCH Create
;
1317 UNICODE_STRING ObjectClass
;
1318 PSECURITY_DESCRIPTOR SecurityDescriptor
;
1320 } KSOBJECT_CREATE_ITEM
, *PKSOBJECT_CREATE_ITEM
;
1323 typedef VOID (*PFNKSITEMFREECALLBACK
)(
1324 IN PKSOBJECT_CREATE_ITEM CreateItem
);
1331 } KSMULTIPLE_ITEM
, *PKSMULTIPLE_ITEM
;
1335 } KSQUERYBUFFER
, *PKSQUERYBUFFER
;
1339 } KSERROR
, *PKSERROR
;
1343 } KSDPC_ITEM
, *PKSDPC_ITEM
;
1346 /* ===============================================================
1352 } KSMETHOD_SET
, *PKSMETHOD_SET
;
1356 } KSMETHOD_ITEM
, *PKSMETHOD_ITEM
;
1360 } KSFASTMETHOD_ITEM
, *PKSFASTMETHOD_ITEM
;
1363 /* ===============================================================
1369 } KSP_NODE
, *PKSP_NODE
;
1376 } KSM_NODE
, *PKSM_NODE
;
1380 } KSE_NODE
, *PKSE_NODE
;
1384 } KSNODE_CREATE
, *PKSNODE_CREATE
;
1387 /* ===============================================================
1393 } KSFASTPROPERTY_ITEM
, *PKSFASTPROPERTY_ITEM
;
1396 /* ===============================================================
1402 } KSEVENT_TIME_MARK
, *PKSEVENT_TIME_MARK
;
1406 } KSEVENT_TIME_INTERVAL
, *PKSEVENT_TIME_INTERVAL
;
1410 } KSEVENT_SET
, *PKSEVENT_SET
;
1414 } KSEVENT_ITEM
, *PKSEVENT_ITEM
;
1416 typedef struct _KSEVENT_ENTRY
1418 } KSEVENT_ENTRY
, *PKSEVENT_ENTRY
;
1422 } KSEVENTDATA
, *PKSEVENTDATA
;
1425 /* ===============================================================
1431 } KSPIN_DISPATCH
, *PKSPIN_DISPATCH
;
1435 } KSAUTOMATION_TABLE
, *PKSAUTOMATION_TABLE
;
1439 } KSPIN_DESCRIPTOR
, *PKSPIN_DESCRIPTOR
;
1442 /* This is just to shut the compiler up so DON'T USE IT! */
1443 typedef void (*PFNKSINTERSECTHANDLER
)(void);
1444 typedef void (*PFNKSINTERSECTHANDLEREX
)(void);
1448 const KSPIN_DISPATCH
* Dispatch
;
1449 const KSAUTOMATION_TABLE
* AutomationTable
;
1450 KSPIN_DESCRIPTOR PinDescriptor
;
1452 ULONG InstancesPossible
;
1453 ULONG InstancesNecessary
;
1454 const KSALLOCATOR_FRAMING_EX
* AllocatorFraming
;
1455 PFNKSINTERSECTHANDLEREX IntersectHandler
;
1456 } KSPIN_DESCRIPTOR_EX
, *PKSPIN_DESCRIPTOR_EX
;
1459 #define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING
1460 #define KSPIN_FLAG_CRITICAL_PROCESSING
1461 #define KSPIN_FLAG_HYPERCRITICAL_PROCESSING
1462 #define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING
1463 #define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING
1464 #define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL
1465 #define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING
1466 #define KSPIN_FLAG_ENFORCE_FIFO
1467 #define KSPIN_FLAG_GENERATE_MAPPINGS
1468 #define KSPIN_FLAG_DISTINCT_TRAILING_EDGE
1469 #define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY
1470 #define KSPIN_FLAG_SPLITTER
1471 #define KSPIN_FLAG_USE_STANDARD_TRANSPORT
1472 #define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT
1473 #define KSPIN_FLAG_FIXED_FORMAT
1474 #define KSPIN_FLAG_GENERATE_EOS_EVENTS
1475 #define KSPIN_FLAG_RENDERER
1476 #define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING
1477 #define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE
1478 #define KSPIN_FLAG_DENY_USERMODE_ACCESS
1479 #define KSPIN_FLAG_IMPLEMENT_CLOCK
1483 const KSPIN_DESCRIPTOR_EX
* Descriptor
;
1487 KSPIN_COMMUNICATION Communication
;
1488 BOOLEAN ConnectionIsExternal
;
1489 KSPIN_INTERFACE ConnectionInterface
;
1490 KSPIN_MEDIUM ConnectionMedium
;
1491 KSPRIORITY ConnectionPriority
;
1492 PKSDATAFORMAT ConnectionFormat
;
1493 PKSMULTIPLE_ITEM AttributeList
;
1494 ULONG StreamHeaderSize
;
1495 KSPIN_DATAFLOW DataFlow
;
1496 KSSTATE DeviceState
;
1498 KSSTATE ClientState
;
1503 KSPIN_INTERFACE Interface
;
1504 KSPIN_MEDIUM Medium
;
1507 KSPRIORITY Priority
;
1508 } KSPIN_CONNECT
, *PKSPIN_CONNECT
;
1511 /* ===============================================================
1521 } KSTOPOLOGY_CONNECTION
, *PKSTOPOLOGY_CONNECTION
;
1525 ULONG CategoriesCount
;
1526 const GUID
* Categories
;
1527 ULONG TopologyNodesCount
;
1528 const GUID
* TopologyNodes
;
1529 ULONG TopologyConnectionsCount
;
1530 const KSTOPOLOGY_CONNECTION
* TopologyConnections
;
1531 const GUID
* TopologyNodesNames
;
1533 } KSTOPOLOGY
, *PKSTOPOLOGY
;
1536 /* ===============================================================
1541 typedef void* UNKNOWN
;
1543 typedef PVOID (*PFNKSDEFAULTALLOCATE
)(
1546 typedef PVOID (*PFNKSDEFAULTFREE
)(
1550 typedef PVOID (*PFNKSINITIALIZEALLOCATOR
)(
1551 IN PVOID InitialContext
,
1552 IN PKSALLOCATOR_FRAMING AllocatorFraming
,
1553 OUT PVOID
* Context
);
1555 typedef PVOID (*PFNKSDELETEALLOCATOR
)(
1558 #if defined(__NTDDK_H)
1559 typedef NTSTATUS (*PFNKSALLOCATOR
)(
1561 IN ULONG BufferSize
,
1562 IN BOOLEAN InputOperation
);
1564 typedef NTSTATUS (*PFNKSHANDLER
)(
1566 IN PKSIDENTIFIER Request
,
1569 typedef BOOLEAN (*PFNKSFASTHANDLER
)(
1570 IN PFILE_OBJECT FileObject
,
1571 IN PKSIDENTIFIER UNALIGNED Request
,
1572 IN ULONG RequestLength
,
1573 IN OUT PVOID UNALIGNED Data
,
1574 IN ULONG DataLength
,
1575 OUT PIO_STATUS_BLOCK IoStatus
);
1577 typedef NTSTATUS (*PFNKSADDEVENT
)(
1579 IN PKSEVENTDATA EventData
,
1580 IN
struct _KSEVENT_ENTRY
* EventEntry
);
1582 typedef NTSTATUS (*PFNKINTERSECTHANDLEREX
)(
1586 IN PKSDATARANGE DataRange
,
1587 IN PKSDATARANGE MatchingDataRange
,
1588 IN ULONG DataBufferSize
,
1589 OUT PVOID Data OPTIONAL
,
1590 OUT PULONG DataSize
);
1593 typedef UNKNOWN PFNALLOCATORE_ALLOCATEFRAME
;
1594 typedef UNKNOWN PFNALLOCATOR_FREEFRAME
;
1599 PFNALLOCATOR_ALLOCATEFRAME AllocateFrame;
1600 PFNALLOCATOR_FREEFRAME FreeFrame;
1606 KSALLOCATOR_FRAMING Framing
;
1607 ULONG AllocatedFrames
;
1609 } KSSTREAMALLOCATOR_STATUS
, *PKSSTREAMALLOCATOR_STATUS
;
1613 KSALLOCATOR_FRAMING_EX Framing
;
1614 ULONG AllocatedFrames
;
1616 } KSSTREAMALLOCATOR_STATUS_EX
, *PKSSTREAMALLOCATOR_STATUS_EX
;
1621 ULONG TypeSpecificFlags
;
1622 KSTIME PresentationTime
;
1628 } KSSTREAM_HEADER
, *PKSSTREAM_HEADER
;
1632 /* ===============================================================
1639 } KSPROCESSPIN
, *PKSPROCESSPIN
;
1643 PKSPROCESSPIN
* Pins
;
1645 } KSPROCESSPIN_INDEXENTRY
, *PKSPROCESSPIN_INDEXENTRY
;
1648 /* ===============================================================
1651 #if defined(_NTDDK_)
1655 } KSDEVICE
, *PKSDEVICE
;
1657 typedef NTSTATUS (*PFNKSDEVICECREATE
)(
1658 IN PKSDEVICE Device
);
1660 typedef NTSTATUS (*PFNKSDEVICEPNPSTART
)(
1661 IN PKSDEVICE Device
,
1663 IN PCM_RESOURCE_LIST TranslatedResourceList OPTIONAL
,
1664 IN PCM_RESOURCE_LIST UntranslatedResourceList OPTIONAL
);
1666 typedef NTSTATUS (*PFNKSDEVICE
)(
1667 IN PKSDEVICE Device
);
1669 typedef NTSTATUS (*PFNKSDEVICEIRP
)(
1670 IN PKSDEVICE Device
,
1673 typedef VOID (*PFNKSDEVICEIRPVOID
)(
1674 IN PKSDEVICE Device
,
1677 typedef NTSTATUS (*PFNKSDEVICEQUERYCAPABILITIES
)(
1678 IN PKSDEVICE Device
,
1680 IN OUT PDEVICE_CAPABILITIES Capabilities
);
1682 typedef NTSTATUS (*PFNKSDEVICEQUERYPOWER
)(
1683 IN PKSDEVICE Device
,
1685 IN DEVICE_POWER_STATE DeviceTo
,
1686 IN DEVICE_POWER_STATE DeviceFrom
,
1687 IN SYSTEM_POWER_STATE SystemTo
,
1688 IN SYSTEM_POWER_STATE SystemFrom
,
1689 IN POWER_ACTION Action
);
1691 typedef VOID (*PFNKSDEVICESETPOWER
)(
1692 IN PKSDEVICE Device
,
1694 IN DEVICE_POWER_STATE To
,
1695 IN DEVICE_POWER_STATE From
);
1697 typedef struct _KSDEVICE_DISPATCH
1699 PFNKSDEVICECREATE Add
;
1700 PFNKSDEVICEPNPSTART Start
;
1701 PFNKSDEVICE PostStart
;
1702 PFNKSDEVICEIRP QueryStop
;
1703 PFNKSDEVICEIRPVOID CancelStop
;
1704 PFNKSDEVICEIRPVOID Stop
;
1705 PFNKSDEVICEIRP QueryRemove
;
1706 PFNKSDEVICEIRPVOID CancelRemove
;
1707 PFNKSDEVICEIRPVOID Remove
;
1708 PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities
;
1709 PFNKSDEVICEIRPVOID SurpriseRemoval
;
1710 PFNKSDEVICEQUERYPOWER Querypower
;
1711 PFNKSDEVICESETPOWER SetPower
;
1712 } KSDEVICE_DISPATCH
, *PKSDEVICE_DISPATCH
;
1715 /* ===============================================================
1718 #if defined(_NTDDK_)
1721 } KSFILTER
, *PKSFILTER
;
1723 typedef NTSTATUS (*PFNKSFILTERIRP
)(
1724 IN PKSFILTER Filter
,
1727 typedef NTSTATUS (*PFNKSFILTERPROCESS
)(
1728 IN PKSFILTER FIlter
,
1729 IN PKSPROCESSPIN_INDEXENTRY ProcessPinsIndex
);
1731 typedef NTSTATUS (*PFNKSFILTERVOID
)(
1732 IN PKSFILTER Filter
);
1734 typedef struct _KSFILTER_DISPATCH
1736 PFNKSFILTERIRP Create
;
1737 PFNKSFILTERIRP Close
;
1738 PFNKSFILTERPROCESS Process
;
1739 PFNKSFILTERVOID Reset
;
1740 } KSFILTER_DISPATCH
, *PKSFILTER_DISPATCH
;
1743 const KSAUTOMATION_TABLE
* AutomationTable
;
1746 } KSNODE_DESCRIPTOR
, *PKSNODE_DESCRIPTOR
;
1749 const KSFILTER_DISPATCH
* Dispatch
;
1750 const KSAUTOMATION_TABLE
* AutomationTable
;
1753 const GUID
* ReferenceGuid
;
1754 ULONG PinDescriptorsCount
;
1755 ULONG PinDescriptorSize
;
1756 const KSPIN_DESCRIPTOR_EX
* PinDescriptors
;
1757 ULONG CategoriesCount
;
1758 const GUID
* Categories
;
1759 ULONG NodeDescriptorsCount
;
1760 ULONG NodeDescriptorSize
;
1761 const KSNODE_DESCRIPTOR
* NodeDescriptors
;
1762 ULONG ConnectionsCount
;
1763 const KSTOPOLOGY_CONNECTION
* Connections
;
1764 const KSCOMPONENTID
* ComponentId
;
1765 } KSFILTER_DESCRIPTOR
, *PKSFILTER_DESCRIPTOR
;
1769 const KSDEVICE_DISPATCH
* Dispatch
;
1770 ULONG FilterDescriptorsCount
;
1771 const KSFILTER_DESCRIPTOR
*const* FilterDescriptors
;
1772 } KSDEVICE_DESCRIPTOR
, *PKSDEVICE_DESCRIPTOR
;
1774 /* ===============================================================
1775 Minidriver Callbacks
1777 #if defined(_NTDDK_)
1778 typedef NTSTATUS (*KStrMethodHandler
)(
1780 IN PKSIDENTIFIER Request
,
1783 typedef NTSTATUS (*KStrSupportHandler
)(
1785 IN PKSIDENTIFIER Request
,
1789 /* ===============================================================
1792 #if defined(_NTDDK_)
1793 KSDDKAPI NTSTATUS NTAPI
1795 IN HANDLE ConnectionHandle
,
1796 IN PKSALLOCATOR_FRAMING AllocatorFraming
,
1797 OUT PHANDLE AllocatorHandle
);
1799 KSDDKAPI NTSTATUS NTAPI
1800 KsCreateDefaultAllocator(
1803 KSDDKAPI NTSTATUS NTAPI
1804 KsValidateAllocatorCreateRequest(
1806 OUT PKSALLOCATOR_FRAMING
* AllocatorFraming
);
1808 KSDDKAPI NTSTATUS NTAPI
1809 KsCreateDefaultAllocatorEx(
1811 IN PVOID InitializeContext OPTIONAL
,
1812 IN PFNKSDEFAULTALLOCATE DefaultAllocate OPTIONAL
,
1813 IN PFNKSDEFAULTFREE DefaultFree OPTIONAL
,
1814 IN PFNKSINITIALIZEALLOCATOR InitializeAllocator OPTIONAL
,
1815 IN PFNKSDELETEALLOCATOR DeleteAllocator OPTIONAL
);
1817 KSDDKAPI NTSTATUS NTAPI
1818 KsValidateAllocatorFramingEx(
1819 IN PKSALLOCATOR_FRAMING_EX Framing
,
1820 IN ULONG BufferSize
,
1821 IN
const KSALLOCATOR_FRAMING_EX
* PinFraming
);
1824 /* ===============================================================
1827 #if defined(_NTDDK_)
1828 typedef BOOLEAN (*PFNKSSETTIMER
)(
1831 IN LARGE_INTEGER DueTime
,
1834 typedef BOOLEAN (*PFNKSCANCELTIMER
)(
1838 typedef LONGLONG (FASTCALL
*PFNKSCORRELATEDTIME
)(
1840 OUT PLONGLONG SystemTime
);
1842 KSDDKAPI NTSTATUS NTAPI
1844 IN HANDLE ConnectionHandle
,
1845 IN PKSCLOCK_CREATE ClockCreate
,
1846 OUT PHANDLE ClockHandle
);
1848 KSDDKAPI NTSTATUS NTAPI
1849 KsCreateDefaultClock(
1851 IN PKSDEFAULTCLOCK DefaultClock
);
1853 KSDDKAPI NTSTATUS NTAPI
1854 KsAllocateDefaultClock(
1855 OUT PKSDEFAULTCLOCK
* DefaultClock
);
1857 KSDDKAPI NTSTATUS NTAPI
1858 KsAllocateDefaultClockEx(
1859 OUT PKSDEFAULTCLOCK
* DefaultClock
,
1860 IN PVOID Context OPTIONAL
,
1861 IN PFNKSSETTIMER SetTimer OPTIONAL
,
1862 IN PFNKSCANCELTIMER CancelTimer OPTIONAL
,
1863 IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL
,
1864 IN
const KSRESOLUTION
* Resolution OPTIONAL
,
1869 IN PKSDEFAULTCLOCK DefaultClock
);
1871 KSDDKAPI NTSTATUS NTAPI
1872 KsValidateClockCreateRequest(
1874 OUT PKSCLOCK_CREATE
* ClockCreate
);
1876 KSDDKAPI KSSTATE NTAPI
1877 KsGetDefaultClockState(
1878 IN PKSDEFAULTCLOCK DefaultClock
);
1881 KsSetDefaultClockState(
1882 IN PKSDEFAULTCLOCK DefaultClock
,
1885 KSDDKAPI LONGLONG NTAPI
1886 KsGetDefaultClockTime(
1887 IN PKSDEFAULTCLOCK DefaultClock
);
1890 KsSetDefaultClockTime(
1891 IN PKSDEFAULTCLOCK DefaultClock
,
1895 /* ===============================================================
1899 /* Method sets - TODO: Make into macros! */
1900 #if defined(_NTDDK_)
1903 KSMETHOD_SET_IRP_STORAGE(
1907 KSMETHOD_ITEM_IRP_STORAGE(
1911 KSMETHOD_TYPE_IRP_STORAGE(
1915 KSDDKAPI NTSTATUS NTAPI
1918 IN ULONG MethodSetsCount
,
1919 IN PKSMETHOD_SET MethodSet
);
1921 KSDDKAPI NTSTATUS NTAPI
1922 KsMethodHandlerWithAllocator(
1924 IN ULONG MethodSetsCount
,
1925 IN PKSMETHOD_SET MethodSet
,
1926 IN PFNKSALLOCATOR Allocator OPTIONAL
,
1927 IN ULONG MethodItemSize OPTIONAL
);
1929 KSDDKAPI BOOLEAN NTAPI
1930 KsFastMethodHandler(
1931 IN PFILE_OBJECT FileObject
,
1932 IN PKSMETHOD UNALIGNED Method
,
1933 IN ULONG MethodLength
,
1934 IN OUT PVOID UNALIGNED Data
,
1935 IN ULONG DataLength
,
1936 OUT PIO_STATUS_BLOCK IoStatus
,
1937 IN ULONG MethodSetsCount
,
1938 IN
const KSMETHOD_SET
* MethodSet
);
1941 /* ===============================================================
1944 #if defined(_NTDDK_)
1945 KSDDKAPI NTSTATUS NTAPI
1948 IN ULONG PropertySetsCount
,
1949 IN
const KSPROPERTY_SET
* PropertySet
);
1951 KSDDKAPI NTSTATUS NTAPI
1952 KsPropertyHandlerWithAllocator(
1954 IN ULONG PropertySetsCount
,
1955 IN PKSPROPERTY_SET PropertySet
,
1956 IN PFNKSALLOCATOR Allocator OPTIONAL
,
1957 IN ULONG PropertyItemSize OPTIONAL
);
1959 KSDDKAPI NTSTATUS NTAPI
1960 KsUnserializeObjectPropertiesFromRegistry(
1961 IN PFILE_OBJECT FileObject
,
1962 IN HANDLE ParentKey OPTIONAL
,
1963 IN PUNICODE_STRING RegistryPath OPTIONAL
);
1965 KSDDKAPI BOOLEAN NTAPI
1966 KsFastPropertyHandler(
1967 IN PFILE_OBJECT FileObject
,
1968 IN PKSPROPERTY UNALIGNED Property
,
1969 IN ULONG PropertyLength
,
1970 IN OUT PVOID UNALIGNED Data
,
1971 IN ULONG DataLength
,
1972 OUT PIO_STATUS_BLOCK IoStatus
,
1973 IN ULONG PropertySetsCount
,
1974 IN
const KSPROPERTY_SET
* PropertySet
);
1977 /* ===============================================================
1980 #if defined(_NTDDK_)
1981 KSDDKAPI NTSTATUS NTAPI
1983 IN PKSEVENT_ENTRY EntryEvent
);
1985 KSDDKAPI NTSTATUS NTAPI
1986 KsEnableEventWithAllocator(
1988 IN ULONG EventSetsCount
,
1989 IN PKSEVENT_SET EventSet
,
1990 IN OUT PLIST_ENTRY EventsList OPTIONAL
,
1991 IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL
,
1992 IN PVOID EventsLock OPTIONAL
,
1993 IN PFNKSALLOCATOR Allocator OPTIONAL
,
1994 IN ULONG EventItemSize OPTIONAL
);
1996 KSDDKAPI NTSTATUS NTAPI
1997 KsGenerateDataEvent(
1998 IN PKSEVENT_ENTRY EventEntry
,
2002 KSDDKAPI NTSTATUS NTAPI
2005 IN ULONG EventSetsCount
,
2006 IN KSEVENT_SET
* EventSet
,
2007 IN OUT PLIST_ENTRY EventsList OPTIONAL
,
2008 IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL
,
2009 IN PVOID EventsLock OPTIONAL
);
2013 IN PKSEVENT_ENTRY EventEntry
);
2015 KSDDKAPI NTSTATUS NTAPI
2018 IN OUT PLIST_ENTRY EventsList
,
2019 IN KSEVENTS_LOCKTYPE EventsFlags
,
2020 IN PVOID EventsLock
);
2024 IN PFILE_OBJECT FileObject
,
2025 IN OUT PLIST_ENTRY EventsList
,
2026 IN KSEVENTS_LOCKTYPE EVentsFlags
,
2027 IN PVOID EventsLock
);
2029 /* ===============================================================
2033 KSDDKAPI NTSTATUS NTAPI
2034 KsValidateTopologyNodeCreateRequest(
2036 IN PKSTOPOLOGY Topology
,
2037 OUT PKSNODE_CREATE
* NodeCreate
);
2039 KSDDKAPI NTSTATUS NTAPI
2040 KsCreateTopologyNode(
2041 IN HANDLE ParentHandle
,
2042 IN PKSNODE_CREATE NodeCreate
,
2043 IN ACCESS_MASK DesiredAccess
,
2044 OUT PHANDLE NodeHandle
);
2046 KSDDKAPI NTSTATUS NTAPI
2047 KsTopologyPropertyHandler(
2049 IN PKSPROPERTY Property
,
2051 IN
const KSTOPOLOGY
* Topology
);
2055 /* ===============================================================
2056 Connectivity Functions
2059 KSDDKAPI NTSTATUS NTAPI
2061 IN HANDLE FilterHandle
,
2062 IN PKSPIN_CONNECT Connect
,
2063 IN ACCESS_MASK DesiredAccess
,
2064 OUT PHANDLE ConnectionHandle
);
2066 KSDDKAPI NTSTATUS NTAPI
2067 KsValidateConnectRequest(
2069 IN ULONG DescriptorsCount
,
2070 IN KSPIN_DESCRIPTOR
* Descriptor
,
2071 OUT PKSPIN_CONNECT
* Connect
);
2073 KSDDKAPI NTSTATUS NTAPI
2074 KsPinPropertyHandler(
2076 IN PKSPROPERTY Property
,
2078 IN ULONG DescriptorsCount
,
2079 IN
const KSPIN_DESCRIPTOR
* Descriptor
);
2081 KSDDKAPI NTSTATUS NTAPI
2082 KsPinDataIntersection(
2086 IN ULONG DescriptorsCount
,
2087 IN
const KSPIN_DESCRIPTOR
* Descriptor
,
2088 IN PFNKSINTERSECTHANDLER IntersectHandler
);
2090 KSDDKAPI NTSTATUS NTAPI
2091 KsPinDataIntersectionEx(
2095 IN ULONG DescriptorsCount
,
2096 IN
const KSPIN_DESCRIPTOR
* Descriptor
,
2097 IN ULONG DescriptorSize
,
2098 IN PFNKSINTERSECTHANDLEREX IntersectHandler OPTIONAL
,
2099 IN PVOID HandlerContext OPTIONAL
);
2101 /* Does this belong here? */
2103 KSDDKAPI NTSTATUS NTAPI
2104 KsHandleSizedListQuery(
2106 IN ULONG DataItemsCount
,
2107 IN ULONG DataItemSize
,
2108 IN
const VOID
* DataItems
);
2111 /* ===============================================================
2112 IRP Helper Functions
2115 typedef NTSTATUS (*PFNKSIRPLISTCALLBACK
)(
2119 KSDDKAPI NTSTATUS NTAPI
2120 KsAcquireResetValue(
2122 OUT KSRESET
* ResetValue
);
2125 KsAddIrpToCancelableQueue(
2126 IN OUT PLIST_ENTRY QueueHead
,
2127 IN PKSPIN_LOCK SpinLock
,
2129 IN KSLIST_ENTRY_LOCATION ListLocation
,
2130 IN PDRIVER_CANCEL DriverCancel OPTIONAL
);
2132 KSDDKAPI NTSTATUS NTAPI
2133 KsAddObjectCreateItemToDeviceHeader(
2134 IN KSDEVICE_HEADER Header
,
2135 IN PDRIVER_DISPATCH Create
,
2137 IN PWCHAR ObjectClass
,
2138 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
2140 KSDDKAPI NTSTATUS NTAPI
2141 KsAddObjectCreateItemToObjectHeader(
2142 IN KSOBJECT_HEADER Header
,
2143 IN PDRIVER_DISPATCH Create
,
2145 IN PWCHAR ObjectClass
,
2146 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
2148 KSDDKAPI NTSTATUS NTAPI
2149 KsAllocateDeviceHeader(
2150 OUT KSDEVICE_HEADER
* Header
,
2151 IN ULONG ItemsCount
,
2152 IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL
);
2154 KSDDKAPI NTSTATUS NTAPI
2155 KsAllocateExtraData(
2158 OUT PVOID
* ExtraBuffer
);
2160 KSDDKAPI NTSTATUS NTAPI
2161 KsAllocateObjectCreateItem(
2162 IN KSDEVICE_HEADER Header
,
2163 IN PKSOBJECT_CREATE_ITEM CreateItem
,
2164 IN BOOLEAN AllocateEntry
,
2165 IN PFNKSITEMFREECALLBACK ItemFreeCallback OPTIONAL
);
2167 KSDDKAPI NTSTATUS NTAPI
2168 KsAllocateObjectHeader(
2170 IN ULONG ItemsCount
,
2171 IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL
,
2173 IN KSDISPATCH_TABLE
* Table
);
2177 IN OUT PLIST_ENTRY QueueHead
,
2178 IN PKSPIN_LOCK SpinLock
);
2182 IN PDEVICE_OBJECT DeviceObject
,
2185 KSDDKAPI NTSTATUS NTAPI
2186 KsDefaultDeviceIoCompletion(
2187 IN PDEVICE_OBJECT DeviceObject
,
2191 KSDDKAPI ULONG NTAPI
2192 KsDecrementCountedWorker(
2193 IN PKSWORKER Worker);
2196 KSDDKAPI BOOLEAN NTAPI
2197 KsDispatchFastIoDeviceControlFailure(
2198 IN PFILE_OBJECT FileObject
,
2200 IN PVOID InputBuffer OPTIONAL
,
2201 IN ULONG InputBufferLength
,
2202 OUT PVOID OutputBuffer OPTIONAL
,
2203 IN ULONG OutputBufferLength
,
2204 IN ULONG IoControlCode
,
2205 OUT PIO_STATUS_BLOCK IoStatus
,
2206 IN PDEVICE_OBJECT DeviceObject
); /* always return false */
2208 KSDDKAPI BOOLEAN NTAPI
2209 KsDispatchFastReadFailure(
2210 IN PFILE_OBJECT FileObject
,
2211 IN PLARGE_INTEGER FileOffset
,
2216 OUT PIO_STATUS_BLOCK IoStatus
,
2217 IN PDEVICE_OBJECT DeviceObject
); /* always return false */
2219 /* This function does the same as the above */
2220 #define KsDispatchFastWriteFailure KsDispatchFastReadFailure
2222 KSDDKAPI NTSTATUS NTAPI
2223 KsDispatchInvalidDeviceRequest(
2224 IN PDEVICE_OBJECT DeviceObject
,
2227 KSDDKAPI NTSTATUS NTAPI
2229 IN PDEVICE_OBJECT DeviceObject
,
2232 KSDDKAPI NTSTATUS NTAPI
2233 KsDispatchSpecificMethod(
2235 IN PFNKSHANDLER Handler
);
2237 KSDDKAPI NTSTATUS NTAPI
2238 KsDispatchSpecificProperty(
2240 IN PFNKSHANDLER Handler
);
2242 KSDDKAPI NTSTATUS NTAPI
2243 KsForwardAndCatchIrp(
2244 IN PDEVICE_OBJECT DeviceObject
,
2246 IN PFILE_OBJECT FileObject
,
2247 IN KSSTACK_USE StackUse
);
2249 KSDDKAPI NTSTATUS NTAPI
2252 IN PFILE_OBJECT FileObject
,
2253 IN BOOLEAN ReuseStackLocation
);
2257 IN KSDEVICE_HEADER Header
);
2263 KSDDKAPI NTSTATUS NTAPI
2264 KsGetChildCreateParameter(
2266 OUT PVOID
* CreateParameter
);
2268 KSDDKAPI NTSTATUS NTAPI
2269 KsMoveIrpsOnCancelableQueue(
2270 IN OUT PLIST_ENTRY SourceList
,
2271 IN PKSPIN_LOCK SourceLock
,
2272 IN OUT PLIST_ENTRY DestinationList
,
2273 IN PKSPIN_LOCK DestinationLock OPTIONAL
,
2274 IN KSLIST_ENTRY_LOCATION ListLocation
,
2275 IN PFNKSIRPLISTCALLBACK ListCallback
,
2278 KSDDKAPI NTSTATUS NTAPI
2281 IN ULONG ProbeFlags
,
2282 IN ULONG HeaderSize
);
2284 KSDDKAPI NTSTATUS NTAPI
2285 KsQueryInformationFile(
2286 IN PFILE_OBJECT FileObject
,
2287 OUT PVOID FileInformation
,
2289 IN FILE_INFORMATION_CLASS FileInformationClass
);
2291 KSDDKAPI ACCESS_MASK NTAPI
2292 KsQueryObjectAccessMask(
2293 IN KSOBJECT_HEADER Header
);
2295 KSDDKAPI PKSOBJECT_CREATE_ITEM NTAPI
2296 KsQueryObjectCreateItem(
2297 IN KSOBJECT_HEADER Header
);
2299 KSDDKAPI NTSTATUS NTAPI
2301 IN PFILE_OBJECT FileObject
,
2302 IN PKEVENT Event OPTIONAL
,
2303 IN PVOID PortContext OPTIONAL
,
2304 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2307 IN ULONG Key OPTIONAL
,
2308 IN KPROCESSOR_MODE RequestorMode
);
2311 KsReleaseIrpOnCancelableQueue(
2313 IN PDRIVER_CANCEL DriverCancel OPTIONAL
);
2316 KsRemoveIrpFromCancelableQueue(
2317 IN OUT PLIST_ENTRY QueueHead
,
2318 IN PKSPIN_LOCK SpinLock
,
2319 IN KSLIST_ENTRY_LOCATION ListLocation
,
2320 IN KSIRP_REMOVAL_OPERATION RemovalOperation
);
2323 KsRemoveSpecificIrpFromCancelableQueue(
2326 KSDDKAPI NTSTATUS NTAPI
2327 KsSetInformationFile(
2328 IN PFILE_OBJECT FileObject
,
2329 IN PVOID FileInformation
,
2331 IN FILE_INFORMATION_CLASS FileInformationClass
);
2333 KSDDKAPI NTSTATUS NTAPI
2334 KsSetMajorFunctionHandler(
2335 IN PDRIVER_OBJECT DriverObject
,
2336 IN ULONG MajorFunction
);
2338 KSDDKAPI NTSTATUS NTAPI
2340 IN PFILE_OBJECT FileObject
,
2341 IN PKEVENT Event OPTIONAL
,
2342 IN PVOID PortContext OPTIONAL
,
2343 IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL
,
2344 IN PVOID CompletionContext OPTIONAL
,
2345 IN KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL
,
2346 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2347 IN OUT PVOID StreamHeaders
,
2350 IN KPROCESSOR_MODE RequestorMode
);
2352 KSDDKAPI NTSTATUS NTAPI
2354 IN PFILE_OBJECT FileObject
,
2355 IN PKEVENT Event OPTIONAL
,
2356 IN PVOID PortContext OPTIONAL
,
2357 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2360 IN ULONG Key OPTIONAL
,
2361 IN KPROCESSOR_MODE RequestorMode
);
2364 KSDDKAPI NTSTATUS NTAPI
2365 KsDefaultForwardIrp(
2366 IN PDEVICE_OBJECT DeviceObject
,
2369 /* ===============================================================
2370 Worker Management Functions
2373 KSDDKAPI NTSTATUS NTAPI
2375 IN WORK_QUEUE_TYPE WorkQueueType
,
2376 OUT PKSWORKER
* Worker
);
2380 IN PKSWORKER Worker
);
2382 KSDDKAPI NTSTATUS NTAPI
2383 KsRegisterCountedWorker(
2384 IN WORK_QUEUE_TYPE WorkQueueType
,
2385 IN PWORK_QUEUE_ITEM CountedWorkItem
,
2386 OUT PKSWORKER
* Worker
);
2388 KSDDKAPI ULONG NTAPI
2389 KsDecrementCountedWorker(
2390 IN PKSWORKER Worker
);
2392 KSDDKAPI ULONG NTAPI
2393 KsIncrementCountedWorker(
2394 IN PKSWORKER Worker
);
2396 KSDDKAPI NTSTATUS NTAPI
2398 IN PKSWORKER Worker
,
2399 IN PWORK_QUEUE_ITEM WorkItem
);
2402 /* ===============================================================
2406 KSDDKAPI NTSTATUS NTAPI
2409 IN POOL_TYPE PoolType
,
2410 IN ULONG_PTR ResourceName
,
2411 IN ULONG ResourceType
,
2412 OUT PVOID
* Resource
,
2413 OUT PULONG ResourceSize
);
2416 KSDDKAPI NTSTATUS NTAPI
2417 KsGetImageNameAndResourceId(
2419 OUT PUNICODE_STRING ImageName,
2420 OUT PULONG_PTR ResourceId,
2421 OUT PULONG ValueType);
2423 KSDDKAPI NTSTATUS NTAPI
2425 IN PDEVICE_OBJECT PhysicalDeviceObject,
2426 IN PUNICODE_STRING ModuleName,
2427 OUT PUNICODE_STRING ImageName,
2428 OUT PULONG_PTR ResourceId,
2429 OUT PULONG ValueType);
2433 /* ===============================================================
2434 Misc. Helper Functions
2437 KSDDKAPI NTSTATUS NTAPI
2439 IN PUNICODE_STRING SymbolicLink
,
2440 IN PKSPIN_MEDIUM Medium
,
2441 IN ULONG PinDirection
);
2443 KSDDKAPI NTSTATUS NTAPI
2444 KsDefaultDispatchPnp(
2445 IN PDEVICE_OBJECT DeviceObject
,
2449 KsSetDevicePnpAndBaseObject(
2450 IN KSDEVICE_HEADER Header
,
2451 IN PDEVICE_OBJECT PnpDeviceObject
,
2452 IN PDEVICE_OBJECT BaseDevice
);
2454 KSDDKAPI NTSTATUS NTAPI
2455 KsDefaultDispatchPower(
2456 IN PDEVICE_OBJECT DeviceObject
,
2461 IN KSOBJECT_HEADER Header
,
2462 IN PFNKSCONTEXT_DISPATCH PowerDispatch OPTIONAL
,
2463 IN PVOID PowerContext OPTIONAL
);
2465 KSDDKAPI NTSTATUS NTAPI
2466 KsReferenceBusObject(
2467 IN KSDEVICE_HEADER Header
);
2470 KsDereferenceBusObject(
2471 IN KSDEVICE_HEADER Header
);
2473 KSDDKAPI NTSTATUS NTAPI
2474 KsFreeObjectCreateItem(
2475 IN KSDEVICE_HEADER Header
,
2476 IN PUNICODE_STRING CreateItem
);
2478 KSDDKAPI NTSTATUS NTAPI
2479 KsFreeObjectCreateItemsByContext(
2480 IN KSDEVICE_HEADER Header
,
2485 IN PDRIVER_OBJECT DriverObject
);
2487 KSDDKAPI PDEVICE_OBJECT NTAPI
2488 KsQueryDevicePnpObject(
2489 IN KSDEVICE_HEADER Header
);
2492 KsRecalculateStackDepth(
2493 IN KSDEVICE_HEADER Header
,
2494 IN BOOLEAN ReuseStackLocation
);
2497 KsSetTargetDeviceObject(
2498 IN KSOBJECT_HEADER Header
,
2499 IN PDEVICE_OBJECT TargetDevice OPTIONAL
);
2503 IN KSOBJECT_HEADER Header
,
2504 IN KSTARGET_STATE TargetState
);
2506 KSDDKAPI NTSTATUS NTAPI
2507 KsSynchronousIoControlDevice(
2508 IN PFILE_OBJECT FileObject
,
2509 IN KPROCESSOR_MODE RequestorMode
,
2513 OUT PVOID OutBuffer
,
2515 OUT PULONG BytesReturned
);
2519 /* ===============================================================
2520 AVStream Functions (XP / DirectX 8)
2522 http://www.osronline.com/ddkx/stream/avstream_5q9f.htm
2525 #if defined(_NTDDK_)
2526 KSDDKAPI NTSTATUS NTAPI
2528 IN PDRIVER_OBJECT DriverObject
,
2529 IN PUNICODE_STRING RegistryPath
,
2530 IN
const KSDEVICE_DESCRIPTOR
*Descriptor OPTIONAL
);
2534 typedef void (*PFNKSFILTERFACTORYPOWER
)(
2535 IN PKSFILTERFACTORY FilterFactory
,
2536 IN DEVICE_POWER_STATE State
);
2538 KSDDKAPI NTSTATUS NTAPI
2540 IN KSOBJECT_BAG ObjectBag
,
2541 IN OUT PVOID
* PointerToPointerToItem
,
2554 IN PKSDEVICE Device
)
2560 IN PDRIVER_OBJECT DriverObject
,
2561 IN PDEVICE_OBJECT PhysicalDeviceObject
)
2568 IN PKSEVENT_ENTRY EventEntry
)
2573 KsAddItemToObjectBag(
2574 IN KSOBJECT_BAG ObjectBag
,
2576 IN PFNKSFREE Free OPTIONAL
)
2581 KsAllocateObjectBag(
2582 IN PKSDEVICE Device
,
2583 OUT KSOBJECT_BAG
* ObjectBag
)
2588 KsCompletePendingRequest(
2594 KsCopyObjectBagItems(
2595 IN KSOBJECT_BAG ObjectBagDestination
,
2596 IN KSOBJECT_BAG ObjectBagSource
)
2602 IN PDRIVER_OBJECT DriverObject
,
2603 IN PDEVICE_OBJECT PhysicalDeviceObject
,
2604 IN
const KSDEVICE_DESCRIPTOR
* Descriptor OPTIONAL
,
2605 IN ULONG ExtensionSize OPTIONAL
,
2606 OUT PKSDEVICE
* Device OPTIONAL
)
2611 KsCreateFilterFactory(
2612 IN PDEVICE_OBJECT DeviceObject
,
2613 IN
const KSFILTER_DESCRIPTOR
* Descriptor
,
2614 IN PWCHAR RefString OPTIONAL
,
2615 IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL
,
2616 IN ULONG CreateItemFlags
,
2617 IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL
,
2618 IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL
,
2619 OUT PKFSFILTERFACTORY FilterFactory OPTIONAL
)
2624 KsDefaultAddEventHandler(
2626 IN PKSEVENTDATA EventData
,
2627 IN OUT PKSEVENT_ENTRY EventEntry
)
2632 KsDeleteFilterFactory(
2633 IN PKSFILTERFACTORY FilterFactory
)
2639 IN PKSDEVICE Device
,
2648 KsDeviceGetFirstChildFilterFactory(
2649 IN PKSDEVICE Device
)
2654 KsDeviceGetOuterUnknown(
2655 IN PKSDEVICE Device
)
2660 KsDeviceRegisterAdapterObject(
2661 IN PKSDEVICE Device
,
2662 IN PADAPTER_OBJECT AdapterObject
,
2663 IN ULONG MaxMappingByteCount
,
2664 IN ULONG MappingTableStride
)
2668 KSDDKAPI PUNKNOWN NTAPI
2669 KsDeviceRegisterAggregatedClientUnknown(
2670 IN PKSDEVICE Device
,
2671 IN PUNKNOWN ClientUnknown
);
2675 IN PKSDEVICE Device
,
2683 #define KsDiscard(object, pointer) \
2684 KsRemoveItemFromObjectBag(object->Bag, pointer, TRUE)
2687 KsFilterAcquireControl(
2688 IN PKSFILTER Filter
)
2693 KsFilterAcquireProcessingMutex(
2694 IN PKSFILTER Filter
);
2698 IN PKSFILTER Filter
,
2699 IN PKSEVENT_ENTRY EventEntry
)
2703 KSDDKAPI NTSTATUS NTAPI
2704 KsFilterAddTopologyConnections(
2705 IN PKSFILTER Filter
,
2706 IN ULONG NewConnectionsCount
,
2707 IN
const KSTOPOLOGY_CONNECTION
* NewTopologyConnections
);
2710 KsFilterAttemptProcessing(
2711 IN PKSFILTER Filter
,
2712 IN BOOLEAN Asynchronous
);
2714 KSDDKAPI NTSTATUS NTAPI
2716 IN PKSFILTER Filter
,
2717 IN
const KSNODE_DESCRIPTOR
* NodeDescriptor
,
2720 KSDDKAPI NTSTATUS NTAPI
2721 KsFilterCreatePinFactory(
2722 IN PKSFILTER Filter
,
2723 IN
const KSPIN_DESCRIPTOR_EX
* PinDescriptor
,
2727 KsFilterFactoryGetDevice(
2728 IN PKSFILTERFACTORY FilterFactory
);
2731 #endif /* avstream */