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),
34 #pragma GCC system_header
44 #define KSDDKAPI DECLSPEC_IMPORT
47 #include <reactos/debug.h>
54 typedef PVOID PKSWORKER
;
56 /* ===============================================================
60 #define IOCTL_KS_DISABLE_EVENT \
67 #define IOCTL_KS_ENABLE_EVENT \
74 #define IOCTL_KS_METHOD \
81 #define IOCTL_KS_PROPERTY \
88 #define IOCTL_KS_WRITE_STREAM \
95 #define IOCTL_KS_READ_STREAM \
102 #define IOCTL_KS_RESET_STATE \
110 /* ===============================================================
111 Clock Properties/Methods/Events
114 #define KSPROPSETID_Clock \
115 0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
119 KSPROPERTY_CLOCK_TIME
,
120 KSPROPERTY_CLOCK_PHYSICALTIME
,
121 KSPROPERTY_CORRELATEDTIME
,
122 KSPROPERTY_CORRELATEDPHYSICALTIME
,
123 KSPROPERTY_CLOCK_RESOLUTION
,
124 KSPROPERTY_CLOCK_STATE
,
125 KSPROPERTY_CLOCK_FUNCTIONTABLE
128 #define KSEVENTSETID_Clock \
129 0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
133 KSEVENT_CLOCK_INTERVAL_MARK
,
134 KSEVENT_CLOCK_POSITION_MARK
135 } KSEVENT_CLOCK_POSITION
;
138 /* ===============================================================
139 Connection Properties/Methods/Events
142 #define KSPROPSETID_Connection \
143 0x1D58C920L, 0xAC9B, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
147 KSPROPERTY_CONNECTION_STATE
,
148 KSPROPERTY_CONNECTION_PRIORITY
,
149 KSPROPERTY_CONNECTION_DATAFORMAT
,
150 KSPROPERTY_CONNECTION_ALLOCATORFRAMING
,
151 KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT
,
152 KSPROPERTY_CONNECTION_ACQUIREORDERING
,
153 KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX
,
154 KSPROPERTY_CONNECTION_STARTAT
155 } KSPROPERTY_CONNECTION
;
157 #define KSEVENTSETID_Connection \
158 0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00
162 KSEVENT_CONNECTION_POSITIONUPDATE
,
163 KSEVENT_CONNECTION_DATADISCONTINUITY
,
164 KSEVENT_CONNECTION_TIMEDISCONTINUITY
,
165 KSEVENT_CONNECTION_PRIORITY
,
166 KSEVENT_CONNECTION_ENDOFSTREAM
167 } KSEVENT_CONNECTION
;
170 /* ===============================================================
172 Properties/Methods/Events
175 #define KSPROPSETID_General \
176 0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
180 KSPROPERTY_GENERAL_COMPONENTID
181 } KSPROPERTY_GENERAL
;
184 /* ===============================================================
186 Properties/Methods/Events
189 #define KSPROPSETID_GM \
190 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D
194 KSPROPERTY_GM_GRAPHMANAGER
,
195 KSPROPERTY_GM_TIMESTAMP_CLOCK
,
196 KSPROPERTY_GM_RATEMATCH
,
197 KSPROPERTY_GM_RENDERCLOCK
201 /* ===============================================================
203 Properties/Methods/Events
206 #define KSPROPSETID_MediaSeeking \
207 0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
211 KSPROPERTY_MEDIASEEKING_CAPABILITIES
,
212 KSPROPERTY_MEDIASEEKING_FORMATS
,
213 KSPROPERTY_MEDIASEEKING_TIMEFORMAT
,
214 KSPROPERTY_MEDIASEEKING_POSITION
,
215 KSPROPERTY_MEDIASEEKING_STOPPOSITION
,
216 KSPROPERTY_MEDIASEEKING_POSITIONS
,
217 KSPROPERTY_MEDIASEEKING_DURATION
,
218 KSPROPERTY_MEDIASEEKING_AVAILABLE
,
219 KSPROPERTY_MEDIASEEKING_PREROLL
,
220 KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
221 } KSPROPERTY_MEDIASEEKING
;
224 /* ===============================================================
226 Properties/Methods/Events
229 #define KSPROPSETID_Pin \
230 0x8C134960L, 0x51AD, 0x11CF, 0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00
234 KSPROPERTY_PIN_CINSTANCES
,
235 KSPROPERTY_PIN_CTYPES
,
236 KSPROPERTY_PIN_DATAFLOW
,
237 KSPROPERTY_PIN_DATARANGES
,
238 KSPROPERTY_PIN_DATAINTERSECTION
,
239 KSPROPERTY_PIN_INTERFACES
,
240 KSPROPERTY_PIN_MEDIUMS
,
241 KSPROPERTY_PIN_COMMUNICATION
,
242 KSPROPERTY_PIN_GLOBALCINSTANCES
,
243 KSPROPERTY_PIN_NECESSARYINSTANCES
,
244 KSPROPERTY_PIN_PHYSICALCONNECTION
,
245 KSPROPERTY_PIN_CATEGORY
,
247 KSPROPERTY_PIN_CONSTRAINEDDATARANGES
,
248 KSPROPERTY_PIN_PROPOSEDATAFORMAT
252 /* ===============================================================
254 Properties/Methods/Events
257 #define KSPROPSETID_Quality \
258 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
262 KSPROPERTY_QUALITY_REPORT
,
263 KSPROPERTY_QUALITY_ERROR
264 } KSPROPERTY_QUALITY
;
267 /* ===============================================================
269 Properties/Methods/Events
272 #define KSPROPSETID_Stream \
273 0x65aaba60L, 0x98ae, 0x11cf, 0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
277 KSPROPERTY_STREAM_ALLOCATOR
,
278 KSPROPERTY_STREAM_QUALITY
,
279 KSPROPERTY_STREAM_DEGRADATION
,
280 KSPROPERTY_STREAM_MASTERCLOCK
,
281 KSPROPERTY_STREAM_TIMEFORMAT
,
282 KSPROPERTY_STREAM_PRESENTATIONTIME
,
283 KSPROPERTY_STREAM_PRESENTATIONEXTENT
,
284 KSPROPERTY_STREAM_FRAMETIME
,
285 KSPROPERTY_STREAM_RATECAPABILITY
,
286 KSPROPERTY_STREAM_RATE
,
287 KSPROPERTY_STREAM_PIPE_ID
291 /* ===============================================================
293 Properties/Methods/Events
296 #define KSPROPSETID_StreamAllocator \
297 0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
301 KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE
,
302 KSPROPERTY_STREAMALLOCATOR_STATUS
303 } KSPROPERTY_STREAMALLOCATOR
;
305 #define KSMETHODSETID_StreamAllocator \
306 0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
310 KSMETHOD_STREAMALLOCATOR_ALLOC
,
311 KSMETHOD_STREAMALLOCATOR_FREE
312 } KSMETHOD_STREAMALLOCATOR
;
315 #define KSEVENTSETID_StreamAllocator
319 KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME
,
320 KSEVENT_STREAMALLOCATOR_FREEFRAME
321 } KSEVENT_STREAMALLOCATOR
;
324 /* ===============================================================
326 Properties/Methods/Events
329 #define KSPROPSETID_StreamInterface \
330 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
334 KSPROPERTY_STREAMINTERFACE_HEADERSIZE
335 } KSPROPERTY_STREAMINTERFACE
;
338 /* ===============================================================
340 Properties/Methods/Events
343 #define KSPROPSETID_Topology \
344 0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
348 KSPROPERTY_TOPOLOGY_CATEGORIES
,
349 KSPROPERTY_TOPOLOGY_CONNECTIONS
,
350 KSPROPERTY_TOPOLOGY_NAME
,
351 KSPROPERTY_TOPOLOGY_NODES
352 } KSPROPERTY_TOPOLOGY
;
356 /* ===============================================================
357 Property Sets for audio drivers - TODO
360 #define KSPROPSETID_AC3
362 KSPROPERTY_AC3_ALTERNATE_AUDIO
363 KSPROPERTY_AC3_BIT_STREAM_MODE
364 KSPROPERTY_AC3_DIALOGUE_LEVEL
365 KSPROPERTY_AC3_DOWNMIX
366 KSPROPERTY_AC3_ERROR_CONCEALMENT
367 KSPROPERTY_AC3_LANGUAGE_CODE
368 KSPROPERTY_AC3_ROOM_TYPE
371 #define KSPROPSETID_Acoustic_Echo_Cancel
374 KSPROPERTY_AEC_NOISE_FILL_ENABLE
375 KSPROPERTY_AEC_STATUS
378 #define KSPROPSETID_Audio
380 KSPROPERTY_AUDIO_3D_INTERFACE
382 KSPROPERTY_AUDIO_ALGORITHM_INSTANCE
383 KSPROPERTY_AUDIO_BASS
384 KSPROPERTY_AUDIO_BASS_BOOST
385 KSPROPERTY_AUDIO_CHANNEL_CONFIG
386 KSPROPERTY_AUDIO_CHORUS_LEVEL
387 KSPROPERTY_AUDIO_COPY_PROTECTION
388 KSPROPERTY_AUDIO_CPU_RESOURCES
389 KSPROPERTY_AUDIO_DELAY
390 KSPROPERTY_AUDIO_DEMUX_DEST
391 KSPROPERTY_AUDIO_DEV_SPECIFIC
392 KSPROPERTY_AUDIO_DYNAMIC_RANGE
393 KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE
394 KSPROPERTY_AUDIO_EQ_BANDS
395 KSPROPERTY_AUDIO_EQ_LEVEL
396 KSPROPERTY_AUDIO_FILTER_STATE
397 KSPROPERTY_AUDIO_LATENCY
398 KSPROPERTY_AUDIO_LOUDNESS
399 KSPROPERTY_AUDIO_MANUFACTURE_GUID
401 KSPROPERTY_AUDIO_MIX_LEVEL_CAPS
402 KSPROPERTY_AUDIO_MIX_LEVEL_TABLE
403 KSPROPERTY_AUDIO_MUTE
404 KSPROPERTY_AUDIO_MUX_SOURCE
405 KSPROPERTY_AUDIO_NUM_EQ_BANDS
406 KSPROPERTY_AUDIO_PEAKMETER
407 KSPROPERTY_AUDIO_POSITION
408 KSPROPERTY_AUDIO_PREFERRED_STATUS
409 KSPROPERTY_AUDIO_PRODUCT_GUID
410 KSPROPERTY_AUDIO_QUALITY
411 KSPROPERTY_AUDIO_REVERB_LEVEL
412 KSPROPERTY_AUDIO_SAMPLING_RATE
413 KSPROPERTY_AUDIO_STEREO_ENHANCE
414 KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY
415 KSPROPERTY_AUDIO_SURROUND_ENCODE
416 KSPROPERTY_AUDIO_TREBLE
417 KSPROPERTY_AUDIO_VOLUMELEVEL
418 KSPROPERTY_AUDIO_WIDE_MODE
419 KSPROPERTY_AUDIO_WIDENESS
422 #define KSPROPSETID_AudioGfx
424 KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID
425 KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID
428 #define KSPROPSETID_DirectSound3DBuffer
430 KSPROPERTY_DIRECTSOUND3DBUFFER_ALL
431 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES
432 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION
433 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME
434 KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE
435 KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE
436 KSPROPERTY_DIRECTSOUND3DBUFFER_MODE
437 KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION
438 KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY
441 #define KSPROPSETID_DirectSound3DListener
443 KSPROPERTY_DIRECTSOUND3DLISTENER_ALL
444 KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
445 KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH
446 KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR
447 KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR
448 KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION
449 KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION
450 KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR
451 KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY
454 #define KSPROPSETID_DrmAudioStream
456 KSPROPERTY_DRMAUDIOSTREAM_CONTENTID
459 #define KSPROPSETID_Hrtf3d
461 KSPROPERTY_HRTF3D_FILTER_FORMAT
462 KSPROPERTY_HRTF3D_INITIALIZE
463 KSPROPERTY_HRTF3D_PARAMS
466 #define KSPROPSETID_Itd3d
468 KSPROPERTY_ITD3D_PARAMS
471 #define KSPROPSETID_Synth
473 KSPROPERTY_SYNTH_CAPS
474 KSPROPERTY_SYNTH_CHANNELGROUPS
475 KSPROPERTY_SYNTH_LATENCYCLOCK
476 KSPROPERTY_SYNTH_MASTERCLOCK
477 KSPROPERTY_SYNTH_PORTPARAMETERS
478 KSPROPERTY_SYNTH_RUNNINGSTATS
479 KSPROPERTY_SYNTH_VOICEPRIORITY
480 KSPROPERTY_SYNTH_VOLUME
481 KSPROPERTY_SYNTH_VOLUMEBOOST
484 #define KSPROPSETID_Synth_Dls
486 KSPROPERTY_SYNTH_DLS_APPEND
487 KSPROPERTY_SYNTH_DLS_COMPACT
488 KSPROPERTY_SYNTH_DLS_DOWNLOAD
489 KSPROPERTY_SYNTH_DLS_UNLOAD
490 KSPROPERTY_SYNTH_DLS_WAVEFORMAT
493 #define KSPROPSETID_Sysaudio
495 KSPROPERTY_SYSAUDIO_COMPONENT_ID
496 KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE
497 KSPROPERTY_SYSAUDIO_DEVICE_COUNT
498 KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME
499 KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE
500 KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME
501 KSPROPERTY_SYSAUDIO_INSTANCE_INFO
502 KSPROPERTY_SYSAUDIO_SELECT_GRAPH
505 #define KSPROPSETID_Sysaudio_Pin
507 KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE
510 #define KSPROPSETID_TopologyNode
512 KSPROPERTY_TOPOLOGYNODE_ENABLE
513 KSPROPERTY_TOPOLOGYNODE_RESET
517 /* ===============================================================
518 Interface Sets - TODO
521 #define KSINTERFACESETID_Media
523 #define KSINTERFACESETID_Standard
524 #define KSINTERFACE_STANDARD_STREAMING
525 #define KSINTERFACE_STANDARD_LOOPED_STREAMING
526 #define KSINTERFACE_STANDARD_CONTROL
529 /* ===============================================================
530 Event Sets for audio drivers - TODO
532 #define KSEVENTSETID_AudioControlChange
534 KSEVENT_CONTROL_CHANGE
539 /* ===============================================================
543 KSNODETYPE_3D_EFFECTS
544 KSNODETYPE_ACOUSTIC_ECHO_CANCEL
551 KSNODETYPE_DEV_SPECIFIC
553 KSNODETYPE_DMSYNTH_CAPS
554 KSNODETYPE_DRM_DESCRAMBLE
560 KSNODETYPE_PROLOGIC_DECODER
561 KSNODETYPE_PROLOGIC_ENCODER
564 KSNODETYPE_STEREO_ENHANCE
565 KSNODETYPE_STEREO_WIDE
570 KSNODETYPE_SYNTHESIZER
576 typedef PVOID KSDEVICE_HEADER
,
583 /* ===============================================================
587 #define KSMETHOD_TYPE_NONE 0x00000000
588 #define KSMETHOD_TYPE_READ 0x00000001
589 #define KSMETHOD_TYPE_WRITE 0x00000002
590 #define KSMETHOD_TYPE_MODIFY 0x00000003
591 #define KSMETHOD_TYPE_SOURCE 0x00000004
592 #define KSMETHOD_TYPE_SEND 0x00000001
593 #define KSMETHOD_TYPE_SETSUPPORT 0x00000100
594 #define KSMETHOD_TYPE_BASICSUPPORT 0x00000200
597 /* ===============================================================
601 #define KSPROPERTY_TYPE_GET 0x00000001
602 #define KSPROPERTY_TYPE_SET 0x00000002
603 #define KSPROPERTY_TYPE_SETSUPPORT 0x00000100
604 #define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200
605 #define KSPROPERTY_TYPE_RELATIONS 0x00000400
606 #define KSPROPERTY_TYPE_SERIALIZESET 0x00000800
607 #define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
608 #define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000
609 #define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
610 #define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
611 #define KSPROPERTY_TYPE_DEFAULT_VALUES 0x00010000
614 /* ===============================================================
615 Topology Methods/Properties
618 #define KSMETHOD_TYPE_TOPOLOGY 0x10000000
619 #define KSPROPERTY_TYPE_TOPOLOGY 0x10000000
622 #define DEFINE_KS_GUID(GA,GB,GC,GD,GE,GF,GG,GH,GI,GJ,GK) \
623 DEFINE_GUID(??, 0x#GA#L, 0xGB, 0xGC, 0xGD, 0xGE, 0xGF, 0xGG, 0xGH, 0xGI, 0xGJ, 0xGK) \
624 "GA-GB-GC-GDGE-GFGGGHGIGJGK"
627 /* ===============================================================
630 BRIDGE - 0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
631 CAPTURE - 0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
632 RENDER - 0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
633 MIXER - 0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
634 SPLITTER - 0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
635 DATACOMPRESSOR - 0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
636 DATADECOMPRESSOR - 0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
637 DATATRANSFORM - 0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
638 COMMUNICATIONSTRANSFORM - 0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
639 INTERFACETRANSFORM - 0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
640 MEDIUMTRANSFORM - 0xCF1DDA2EL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
641 FILESYSTEM - 0x760FED5EL, 0x9357, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
642 CLOCK - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
643 PROXY - 0x97EBAACAL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
644 QUALITY - 0x97EBAACBL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
647 /* ===============================================================
648 KSNAME GUIDs (defined also as KSSTRING_Xxx L"{...}"
650 Filter - 0x9b365890L, 0x165f, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
651 Pin - 0x146F1A80L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
652 Clock - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
653 Allocator - 0x642F5D00L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
654 TopologyNode - 0x0621061AL, 0xEE75, 0x11D0, 0xB9, 0x15, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
657 /* ===============================================================
660 Standard - 0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
661 FileIo - 0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
664 /* ===============================================================
667 Standard - 0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
670 /* ===============================================================
673 General - 0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
674 StreamIo - 0x65D003CAL, 0x1523, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
675 MediaSeeking - 0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
676 Topology - 0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
677 GM - 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D
678 Quality - 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
679 Connection - 0x1D58C920L, 0xAC9B, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
682 /* ===============================================================
685 Event set - 0x75d95571L, 0x073c, 0x11d0, 0xa1, 0x61, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
686 Method set - 0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
687 Property set - 0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
690 /* ===============================================================
693 Property set - 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
696 /* ===============================================================
699 Property set - 0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
700 Event sets - 0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
703 /* ===============================================================
706 Event set - 0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00
709 /* ===============================================================
712 KSTIME_FORMAT_NONE (null guid)
713 FRAME - 0x7b785570L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
714 BYTE - 0x7b785571L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
715 SAMPLE - 0x7b785572L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
716 FIELD - 0x7b785573L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
717 MEDIA_TIME - 0x7b785574L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
720 /* ===============================================================
730 /* ===============================================================
733 WILDCARD, DONT_CARE = NULL
734 SYSTEM - 0x091bb638L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
735 USER - 0x8cb0fc28L, 0x7893, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
736 KERNEL_PAGED - 0xd833f8f8L, 0x7894, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
737 KERNEL_NONPAGED - 0x4a6d5fc4L, 0x7895, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
738 DEVICE_UNKNOWN - 0x091bb639L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
741 /* ===============================================================
743 (values have been checked)
749 KsObjectTypeFilterFactory
,
764 KSTARGET_STATE_DISABLED
,
765 KSTARGET_STATE_ENABLED
780 KSEVENTS_FMUTEXUNSAFE
,
787 KSDEGRADE_STANDARD_SIMPLE
,
788 KSDEGRADE_STANDARD_QUALITY
,
789 KSDEGRADE_STANDARD_COMPUTATION
,
790 KSDEGRADE_STANDARD_SKIP
791 } KSDEGRADE_STANDARD
;
795 KSPIN_DATAFLOW_IN
= 1,
801 KSPIN_COMMUNICATION_NONE
,
802 KSPIN_COMMUNICATION_SINK
,
803 KSPIN_COMMUNICATION_SOURCE
,
804 KSPIN_COMMUNICATION_BOTH
,
805 KSPIN_COMMUNICATION_BRIDGE
806 } KSPIN_COMMUNICATION
;
812 } KSLIST_ENTRY_LOCATION
;
816 KsStackCopyToNewLocation
,
817 KsStackReuseCurrentLocation
,
818 KsStackUseNewLocation
825 KsAcquireOnlySingleItem
,
826 KsAcquireAndRemoveOnlySingleItem
827 } KSIRP_REMOVAL_OPERATION
;
831 KsInvokeOnSuccess
= 1,
834 } KSCOMPLETION_INVOCATION
;
839 typedef NTSTATUS (*PFNKSCONTEXT_DISPATCH
)(
844 /* ===============================================================
850 } KS_FRAMING_ITEM
, *PKS_FRAMING_ITEM
;
854 } KS_FRAMING_RANGE
, *PKS_FRAMING_RANGE
;
859 } KS_FRAMING_RANGE_WEIGHTED
, *PKS_FRAMING_RANGE_WEIGHTED
;
864 } KS_COMPRESSION
, *PKS_COMPRESSION
;
867 /* ===============================================================
876 } KSIDENTIFIER
, *PKSIDENTIFIER
;
878 typedef KSIDENTIFIER KSPROPERTY
, *PKSPROPERTY
;
879 typedef KSIDENTIFIER KSMETHOD
, *PKSMETHOD
;
880 typedef KSIDENTIFIER KSEVENT
, *PKSEVENT
;
882 typedef KSIDENTIFIER KSDEGRADE
, *PKSDEGRADE
;
884 typedef KSIDENTIFIER KSPIN_INTERFACE
, *PKSPIN_INTERFACE
;
885 typedef KSIDENTIFIER KSPIN_MEDIUM
, *PKSPIN_MEDIUM
;
889 } KSDATARANGE
, *PKSDATARANGE
;
893 } KSDATAFORMAT
, *PKSDATAFORMAT
;
897 } KSATTRIBUTE
, *PKSATTRIBUTE
;
900 /* ===============================================================
904 #define KSPRIORITY_LOW 0x00000001
905 #define KSPRIORITY_NORMAL 0x40000000
906 #define KSPRIORITY_HIGH 0x80000000
907 #define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF
912 ULONG PrioritySubClass
;
913 } KSPRIORITY
, *PKSPRIORITY
;
916 /* =============================================================== */
920 } KSDISPATCH_TABLE
, *PKSDISPATCH_TABLE
;
924 } BUS_INTERFACE_REFERENCE
, *PBUS_INTERFACE_REFERENCE
;
928 } KSCOMPONENTID
, *PKSCOMPONENTID
;
932 } KSBUFFER_ITEM
, *PKSBUFFER_ITEM
;
934 /* ===============================================================
938 #define KSPROPERTY_MEMBER_RANGES 0x00000001
939 #define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002
940 #define KSPROPERTY_MEMBER_VALUES 0x00000003
941 #define KSPROPERTY_MEMBER_FLAG_DEFAULT KSPROPERTY_MEMBER_RANGES
945 } KSPROPERTY_BOUNDS_LONG
, *PKSPROPERTY_BOUNDS_LONG
;
949 } KSPROPERTY_BOUNDS_LONGLONG
, *PKSPROPERTY_BOUNDS_LONGLONG
;
953 } KSPROPERTY_DESCRIPTION
, *PKSPROPERTY_DESCRIPTION
;
957 } KSPROPERTY_ITEM
, *PKSPROPERTY_ITEM
;
961 } KSPROPERTY_MEDIAAVAILABLE
, *PKSPROPERTY_MEDIAAVAILABLE
;
965 } KSPROPERTY_MEMBERSHEADER
, *PKSPROPERTY_MEMBERSHEADER
;
969 } KSPROPERTY_MEMBERSLIST
, *PKSPROPERTY_MEMBERSLIST
;
973 } KSPROPERTY_POSITIONS
, *PKSPROPERTY_POSITIONS
;
977 } KSPROPERTY_SERIAL
, *PKSPROPERTY_SERIAL
;
981 } KSPROPERTY_SERIALHDR
, *PKSPROPERTY_SERIALHDR
;
985 } KSPROPERTY_SET
, *PKSPROPERTY_SET
;
989 } KSPROPERTY_STEPPING_LONG
, *PKSPROPERTY_STEPPING_LONG
;
993 } KSPROPERTY_STEPPING_LONGLONG
, *PKSPROPERTY_STEPPING_LONGLONG
;
997 } KSPROPERTY_VALUES
, *PKSPROPERTY_VALUES
;
1000 /* ===============================================================
1006 } KSALLOCATOR_FRAMING
, *PKSALLOCATOR_FRAMING
;
1010 } KSALLOCATOR_FRAMING_EX
, *PKSALLOCATOR_FRAMING_EX
;
1013 /* ===============================================================
1019 } KSQUALITY
, *PKSQUALITY
;
1023 HANDLE QualityManager
;
1025 } KSQUALITY_MANAGER
, *PKSQUALITY_MANAGER
;
1033 } KSRATE_CAPABILITY
, *PKSRATE_CAPABILITY
;
1037 LONGLONG Granularity
;
1039 } KSRESOLUTION
, *PKSRESOLUTION
;
1043 } KSRELATIVEEVENT
, *PKSRELATIVEEVENT
;
1046 /* ===============================================================
1059 } KSCORRELATED_TIME
, *PKSCORRELATED_TIME
;
1063 KSPROPERTY Property
;
1067 } KSP_TIMEFORMAT
, *PKSP_TIMEFORMAT
;
1071 } KSINTERVAL
, *PKSINTERVAL
;
1075 } KSFRAMETIME
, *PKSFRAMETIME
;
1078 /* ===============================================================
1084 } KSCLOCK
, *PKSCLOCK
, *PKSDEFAULTCLOCK
; /* OK ? */
1088 } KSCLOCK_CREATE
, *PKSCLOCK_CREATE
;
1092 } KSCLOCK_FUNCTIONTABLE
, *PKSCLOCK_FUNCTIONTABLE
;
1095 /* ===============================================================
1096 Objects ??? SORT ME!
1101 } KSOBJECT_CREATE
, *PKSOBJECT_CREATE
;
1105 } KSOBJECT_CREATE_ITEM
, *PKSOBJECT_CREATE_ITEM
;
1107 typedef VOID (*PFNKSITEMFREECALLBACK
)(
1108 IN PKSOBJECT_CREATE_ITEM CreateItem
);
1112 } KSMULTIPLE_ITEM
, *PKSMULTIPLE_ITEM
;
1116 } KSQUERYBUFFER
, *PKSQUERYBUFFER
;
1120 } KSERROR
, *PKSERROR
;
1124 } KSDPC_ITEM
, *PKSDPC_ITEM
;
1127 /* ===============================================================
1133 } KSMETHOD_SET
, *PKSMETHOD_SET
;
1137 } KSMETHOD_ITEM
, *PKSMETHOD_ITEM
;
1141 } KSFASTMETHOD_ITEM
, *PKSFASTMETHOD_ITEM
;
1144 /* ===============================================================
1150 } KSP_NODE
, *PKSP_NODE
;
1157 } KSM_NODE
, *PKSM_NODE
;
1161 } KSE_NODE
, *PKSE_NODE
;
1165 } KSNODE_CREATE
, *PKSNODE_CREATE
;
1168 /* ===============================================================
1174 } KSFASTPROPERTY_ITEM
, *PKSFASTPROPERTY_ITEM
;
1177 /* ===============================================================
1183 } KSEVENT_TIME_MARK
, *PKSEVENT_TIME_MARK
;
1187 } KSEVENT_TIME_INTERVAL
, *PKSEVENT_TIME_INTERVAL
;
1191 } KSEVENT_SET
, *PKSEVENT_SET
;
1195 } KSEVENT_ITEM
, *PKSEVENT_ITEM
;
1197 typedef struct _KSEVENT_ENTRY
1199 } KSEVENT_ENTRY
, *PKSEVENT_ENTRY
;
1203 } KSEVENTDATA
, *PKSEVENTDATA
;
1206 /* ===============================================================
1212 } KSPIN_DISPATCH
, *PKSPIN_DISPATCH
;
1216 } KSAUTOMATION_TABLE
, *PKSAUTOMATION_TABLE
;
1220 } KSPIN_DESCRIPTOR
, *PKSPIN_DESCRIPTOR
;
1223 /* This is just to shut the compiler up so DON'T USE IT! */
1224 typedef void (*PFNKSINTERSECTHANDLER
)(void);
1225 typedef void (*PFNKSINTERSECTHANDLEREX
)(void);
1229 const KSPIN_DISPATCH
* Dispatch
;
1230 const KSAUTOMATION_TABLE
* AutomationTable
;
1231 KSPIN_DESCRIPTOR PinDescriptor
;
1233 ULONG InstancesPossible
;
1234 ULONG InstancesNecessary
;
1235 const KSALLOCATOR_FRAMING_EX
* AllocatorFraming
;
1236 PFNKSINTERSECTHANDLEREX IntersectHandler
;
1237 } KSPIN_DESCRIPTOR_EX
, *PKSPIN_DESCRIPTOR_EX
;
1240 #define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING
1241 #define KSPIN_FLAG_CRITICAL_PROCESSING
1242 #define KSPIN_FLAG_HYPERCRITICAL_PROCESSING
1243 #define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING
1244 #define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING
1245 #define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL
1246 #define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING
1247 #define KSPIN_FLAG_ENFORCE_FIFO
1248 #define KSPIN_FLAG_GENERATE_MAPPINGS
1249 #define KSPIN_FLAG_DISTINCT_TRAILING_EDGE
1250 #define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY
1251 #define KSPIN_FLAG_SPLITTER
1252 #define KSPIN_FLAG_USE_STANDARD_TRANSPORT
1253 #define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT
1254 #define KSPIN_FLAG_FIXED_FORMAT
1255 #define KSPIN_FLAG_GENERATE_EOS_EVENTS
1256 #define KSPIN_FLAG_RENDERER
1257 #define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING
1258 #define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE
1259 #define KSPIN_FLAG_DENY_USERMODE_ACCESS
1260 #define KSPIN_FLAG_IMPLEMENT_CLOCK
1264 const KSPIN_DESCRIPTOR_EX
* Descriptor
;
1268 KSPIN_COMMUNICATION Communication
;
1269 BOOLEAN ConnectionIsExternal
;
1270 KSPIN_INTERFACE ConnectionInterface
;
1271 KSPIN_MEDIUM ConnectionMedium
;
1272 KSPRIORITY ConnectionPriority
;
1273 PKSDATAFORMAT ConnectionFormat
;
1274 PKSMULTIPLE_ITEM AttributeList
;
1275 ULONG StreamHeaderSize
;
1276 KSPIN_DATAFLOW DataFlow
;
1277 KSSTATE DeviceState
;
1279 KSSTATE ClientState
;
1284 KSPIN_INTERFACE Interface
;
1285 KSPIN_MEDIUM Medium
;
1288 KSPRIORITY Priority
;
1289 } KSPIN_CONNECT
, *PKSPIN_CONNECT
;
1293 } KSP_PIN
, *PKSP_PIN
;
1297 } KSPIN_PHYSICALCONNECTION
, *PKSPIN_PHYSICALCONNECTION
;
1300 /* ===============================================================
1310 } KSTOPOLOGY_CONNECTION
, *PKSTOPOLOGY_CONNECTION
;
1314 ULONG CategoriesCount
;
1315 const GUID
* Categories
;
1316 ULONG TopologyNodesCount
;
1317 const GUID
* TopologyNodes
;
1318 ULONG TopologyConnectionsCount
;
1319 const KSTOPOLOGY_CONNECTION
* TopologyConnections
;
1320 const GUID
* TopologyNodesNames
;
1322 } KSTOPOLOGY
, *PKSTOPOLOGY
;
1325 /* ===============================================================
1330 typedef void* UNKNOWN
;
1332 typedef PVOID (*PFNKSDEFAULTALLOCATE
)(
1335 typedef PVOID (*PFNKSDEFAULTFREE
)(
1339 typedef PVOID (*PFNKSINITIALIZEALLOCATOR
)(
1340 IN PVOID InitialContext
,
1341 IN PKSALLOCATOR_FRAMING AllocatorFraming
,
1342 OUT PVOID
* Context
);
1344 typedef PVOID (*PFNKSDELETEALLOCATOR
)(
1348 typedef NTSTATUS (*PFNKSALLOCATOR
)(
1350 IN ULONG BufferSize
,
1351 IN BOOL InputOperation
);
1353 typedef NTSTATUS (*PFNKSHANDLER
)(
1355 IN PKSIDENTIFIER Request
,
1358 typedef BOOLEAN (*PFNKSFASTHANDLER
)(
1359 IN PFILE_OBJECT FileObject
,
1360 IN PKSIDENTIFIER UNALIGNED Request
,
1361 IN ULONG RequestLength
,
1362 IN OUT PVOID UNALIGNED Data
,
1363 IN ULONG DataLength
,
1364 OUT PIO_STATUS_BLOCK IoStatus
);
1366 typedef NTSTATUS (*PFNKSADDEVENT
)(
1368 IN PKSEVENTDATA EventData
,
1369 IN
struct _KSEVENT_ENTRY
* EventEntry
);
1371 typedef NTSTATUS (*PFNKINTERSECTHANDLEREX
)(
1375 IN PKSDATARANGE DataRange
,
1376 IN PKSDATARANGE MatchingDataRange
,
1377 IN ULONG DataBufferSize
,
1378 OUT PVOID Data OPTIONAL
,
1379 OUT PULONG DataSize
);
1381 typedef UNKNOWN PFNALLOCATORE_ALLOCATEFRAME
;
1382 typedef UNKNOWN PFNALLOCATOR_FREEFRAME
;
1387 PFNALLOCATOR_ALLOCATEFRAME AllocateFrame;
1388 PFNALLOCATOR_FREEFRAME FreeFrame;
1394 KSALLOCATOR_FRAMING Framing
;
1395 ULONG AllocatedFrames
;
1397 } KSSTREAMALLOCATOR_STATUS
, *PKSSTREAMALLOCATOR_STATUS
;
1401 KSALLOCATOR_FRAMING_EX Framing
;
1402 ULONG AllocatedFrames
;
1404 } KSSTREAMALLOCATOR_STATUS_EX
, *PKSSTREAMALLOCATOR_STATUS_EX
;
1409 ULONG TypeSpecificFlags
;
1410 KSTIME PresentationTime
;
1416 } KSSTREAM_HEADER
, *PKSSTREAM_HEADER
;
1420 /* ===============================================================
1427 } KSPROCESSPIN
, *PKSPROCESSPIN
;
1431 PKSPROCESSPIN
* Pins
;
1433 } KSPROCESSPIN_INDEXENTRY
, *PKSPROCESSPIN_INDEXENTRY
;
1436 /* ===============================================================
1443 } KSDEVICE
, *PKSDEVICE
;
1445 typedef NTSTATUS (*PFNKSDEVICECREATE
)(
1446 IN PKSDEVICE Device
);
1448 typedef NTSTATUS (*PFNKSDEVICEPNPSTART
)(
1449 IN PKSDEVICE Device
,
1451 IN PCM_RESOURCE_LIST TranslatedResourceList OPTIONAL
,
1452 IN PCM_RESOURCE_LIST UntranslatedResourceList OPTIONAL
);
1454 typedef NTSTATUS (*PFNKSDEVICE
)(
1455 IN PKSDEVICE Device
);
1457 typedef NTSTATUS (*PFNKSDEVICEIRP
)(
1458 IN PKSDEVICE Device
,
1461 typedef VOID (*PFNKSDEVICEIRPVOID
)(
1462 IN PKSDEVICE Device
,
1465 typedef NTSTATUS (*PFNKSDEVICEQUERYCAPABILITIES
)(
1466 IN PKSDEVICE Device
,
1468 IN OUT PDEVICE_CAPABILITIES Capabilities
);
1470 typedef NTSTATUS (*PFNKSDEVICEQUERYPOWER
)(
1471 IN PKSDEVICE Device
,
1473 IN DEVICE_POWER_STATE DeviceTo
,
1474 IN DEVICE_POWER_STATE DeviceFrom
,
1475 IN SYSTEM_POWER_STATE SystemTo
,
1476 IN SYSTEM_POWER_STATE SystemFrom
,
1477 IN POWER_ACTION Action
);
1479 typedef VOID (*PFNKSDEVICESETPOWER
)(
1480 IN PKSDEVICE Device
,
1482 IN DEVICE_POWER_STATE To
,
1483 IN DEVICE_POWER_STATE From
);
1485 typedef struct _KSDEVICE_DISPATCH
1487 PFNKSDEVICECREATE Add
;
1488 PFNKSDEVICEPNPSTART Start
;
1489 PFNKSDEVICE PostStart
;
1490 PFNKSDEVICEIRP QueryStop
;
1491 PFNKSDEVICEIRPVOID CancelStop
;
1492 PFNKSDEVICEIRPVOID Stop
;
1493 PFNKSDEVICEIRP QueryRemove
;
1494 PFNKSDEVICEIRPVOID CancelRemove
;
1495 PFNKSDEVICEIRPVOID Remove
;
1496 PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities
;
1497 PFNKSDEVICEIRPVOID SurpriseRemoval
;
1498 PFNKSDEVICEQUERYPOWER Querypower
;
1499 PFNKSDEVICESETPOWER SetPower
;
1500 } KSDEVICE_DISPATCH
, *PKSDEVICE_DISPATCH
;
1503 /* ===============================================================
1509 } KSFILTER
, *PKSFILTER
;
1511 typedef NTSTATUS (*PFNKSFILTERIRP
)(
1512 IN PKSFILTER Filter
,
1515 typedef NTSTATUS (*PFNKSFILTERPROCESS
)(
1516 IN PKSFILTER FIlter
,
1517 IN PKSPROCESSPIN_INDEXENTRY ProcessPinsIndex
);
1519 typedef NTSTATUS (*PFNKSFILTERVOID
)(
1520 IN PKSFILTER Filter
);
1522 typedef struct _KSFILTER_DISPATCH
1524 PFNKSFILTERIRP Create
;
1525 PFNKSFILTERIRP Close
;
1526 PFNKSFILTERPROCESS Process
;
1527 PFNKSFILTERVOID Reset
;
1528 } KSFILTER_DISPATCH
, *PKSFILTER_DISPATCH
;
1531 /* ===============================================================
1532 Minidriver Callbacks
1535 typedef NTSTATUS (*KStrMethodHandler
)(
1537 IN PKSIDENTIFIER Request
,
1540 typedef NTSTATUS (*KStrSupportHandler
)(
1542 IN PKSIDENTIFIER Request
,
1546 /* ===============================================================
1550 KSDDKAPI NTSTATUS NTAPI
1552 IN HANDLE ConnectionHandle
,
1553 IN PKSALLOCATOR_FRAMING AllocatorFraming
,
1554 OUT PHANDLE AllocatorHandle
);
1556 KSDDKAPI NTSTATUS NTAPI
1557 KsCreateDefaultAllocator(
1560 KSDDKAPI NTSTATUS NTAPI
1561 KsValidateAllocatorCreateRequest(
1563 OUT PKSALLOCATOR_FRAMING
* AllocatorFraming
);
1565 KSDDKAPI NTSTATUS NTAPI
1566 KsCreateDefaultAllocatorEx(
1568 IN PVOID InitializeContext OPTIONAL
,
1569 IN PFNKSDEFAULTALLOCATE DefaultAllocate OPTIONAL
,
1570 IN PFNKSDEFAULTFREE DefaultFree OPTIONAL
,
1571 IN PFNKSINITIALIZEALLOCATOR InitializeAllocator OPTIONAL
,
1572 IN PFNKSDELETEALLOCATOR DeleteAllocator OPTIONAL
);
1574 KSDDKAPI NTSTATUS NTAPI
1575 KsValidateAllocatorFramingEx(
1576 IN PKSALLOCATOR_FRAMING_EX Framing
,
1577 IN ULONG BufferSize
,
1578 IN
const KSALLOCATOR_FRAMING_EX
* PinFraming
);
1581 /* ===============================================================
1585 typedef BOOLEAN (*PFNKSSETTIMER
)(
1588 IN LARGE_INTEGER DueTime
,
1591 typedef BOOLEAN (*PFNKSCANCELTIMER
)(
1595 typedef LONGLONG (FASTCALL
*PFNKSCORRELATEDTIME
)(
1597 OUT PLONGLONG SystemTime
);
1599 KSDDKAPI NTSTATUS NTAPI
1601 IN HANDLE ConnectionHandle
,
1602 IN PKSCLOCK_CREATE ClockCreate
,
1603 OUT PHANDLE ClockHandle
);
1605 KSDDKAPI NTSTATUS NTAPI
1606 KsCreateDefaultClock(
1608 IN PKSDEFAULTCLOCK DefaultClock
);
1610 KSDDKAPI NTSTATUS NTAPI
1611 KsAllocateDefaultClock(
1612 OUT PKSDEFAULTCLOCK
* DefaultClock
);
1614 KSDDKAPI NTSTATUS NTAPI
1615 KsAllocateDefaultClockEx(
1616 OUT PKSDEFAULTCLOCK
* DefaultClock
,
1617 IN PVOID Context OPTIONAL
,
1618 IN PFNKSSETTIMER SetTimer OPTIONAL
,
1619 IN PFNKSCANCELTIMER CancelTimer OPTIONAL
,
1620 IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL
,
1621 IN
const KSRESOLUTION
* Resolution OPTIONAL
,
1626 IN PKSDEFAULTCLOCK DefaultClock
);
1628 KSDDKAPI NTSTATUS NTAPI
1629 KsValidateClockCreateRequest(
1631 OUT PKSCLOCK_CREATE
* ClockCreate
);
1633 KSDDKAPI KSSTATE NTAPI
1634 KsGetDefaultClockState(
1635 IN PKSDEFAULTCLOCK DefaultClock
);
1638 KsSetDefaultClockState(
1639 IN PKSDEFAULTCLOCK DefaultClock
,
1642 KSDDKAPI LONGLONG NTAPI
1643 KsGetDefaultClockTime(
1644 IN PKSDEFAULTCLOCK DefaultClock
);
1647 KsSetDefaultClockTime(
1648 IN PKSDEFAULTCLOCK DefaultClock
,
1652 /* ===============================================================
1656 /* Method sets - TODO: Make into macros! */
1660 KSMETHOD_SET_IRP_STORAGE(
1664 KSMETHOD_ITEM_IRP_STORAGE(
1668 KSMETHOD_TYPE_IRP_STORAGE(
1672 KSDDKAPI NTSTATUS NTAPI
1675 IN ULONG MethodSetsCount
,
1676 IN PKSMETHOD_SET MethodSet
);
1678 KSDDKAPI NTSTATUS NTAPI
1679 KsMethodHandlerWithAllocator(
1681 IN ULONG MethodSetsCount
,
1682 IN PKSMETHOD_SET MethodSet
,
1683 IN PFNKSALLOCATOR Allocator OPTIONAL
,
1684 IN ULONG MethodItemSize OPTIONAL
);
1686 KSDDKAPI BOOLEAN NTAPI
1687 KsFastMethodHandler(
1688 IN PFILE_OBJECT FileObject
,
1689 IN PKSMETHOD UNALIGNED Method
,
1690 IN ULONG MethodLength
,
1691 IN OUT PVOID UNALIGNED Data
,
1692 IN ULONG DataLength
,
1693 OUT PIO_STATUS_BLOCK IoStatus
,
1694 IN ULONG MethodSetsCount
,
1695 IN
const KSMETHOD_SET
* MethodSet
);
1698 /* ===============================================================
1702 KSDDKAPI NTSTATUS NTAPI
1705 IN ULONG PropertySetsCount
,
1706 IN
const KSPROPERTY_SET
* PropertySet
);
1708 KSDDKAPI NTSTATUS NTAPI
1709 KsPropertyHandlerWithAllocator(
1711 IN ULONG PropertySetsCount
,
1712 IN PKSPROPERTY_SET PropertySet
,
1713 IN PFNKSALLOCATOR Allocator OPTIONAL
,
1714 IN ULONG PropertyItemSize OPTIONAL
);
1716 KSDDKAPI NTSTATUS NTAPI
1717 KsUnserializeObjectPropertiesFromRegistry(
1718 IN PFILE_OBJECT FileObject
,
1719 IN HANDLE ParentKey OPTIONAL
,
1720 IN PUNICODE_STRING RegistryPath OPTIONAL
);
1722 KSDDKAPI BOOLEAN NTAPI
1723 KsFastPropertyHandler(
1724 IN PFILE_OBJECT FileObject
,
1725 IN PKSPROPERTY UNALIGNED Property
,
1726 IN ULONG PropertyLength
,
1727 IN OUT PVOID UNALIGNED Data
,
1728 IN ULONG DataLength
,
1729 OUT PIO_STATUS_BLOCK IoStatus
,
1730 IN ULONG PropertySetsCount
,
1731 IN
const KSPROPERTY_SET
* PropertySet
);
1734 /* ===============================================================
1738 KSDDKAPI NTSTATUS NTAPI
1740 IN PKSEVENT_ENTRY EntryEvent
);
1742 KSDDKAPI NTSTATUS NTAPI
1743 KsEnableEventWithAllocator(
1745 IN ULONG EventSetsCount
,
1746 IN PKSEVENT_SET EventSet
,
1747 IN OUT PLIST_ENTRY EventsList OPTIONAL
,
1748 IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL
,
1749 IN PVOID EventsLock OPTIONAL
,
1750 IN PFNKSALLOCATOR Allocator OPTIONAL
,
1751 IN ULONG EventItemSize OPTIONAL
);
1753 KSDDKAPI NTSTATUS NTAPI
1754 KsGenerateDataEvent(
1755 IN PKSEVENT_ENTRY EventEntry
,
1759 KSDDKAPI NTSTATUS NTAPI
1762 IN ULONG EventSetsCount
,
1763 IN KSEVENT_SET
* EventSet
,
1764 IN OUT PLIST_ENTRY EventsList OPTIONAL
,
1765 IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL
,
1766 IN PVOID EventsLock OPTIONAL
);
1770 IN PKSEVENT_ENTRY EventEntry
);
1772 KSDDKAPI NTSTATUS NTAPI
1775 IN OUT PLIST_ENTRY EventsList
,
1776 IN KSEVENTS_LOCKTYPE EventsFlags
,
1777 IN PVOID EventsLock
);
1781 IN PFILE_OBJECT FileObject
,
1782 IN OUT PLIST_ENTRY EventsList
,
1783 IN KSEVENTS_LOCKTYPE EVentsFlags
,
1784 IN PVOID EventsLock
);
1787 /* ===============================================================
1791 KSDDKAPI NTSTATUS NTAPI
1792 KsValidateTopologyNodeCreateRequest(
1794 IN PKSTOPOLOGY Topology
,
1795 OUT PKSNODE_CREATE
* NodeCreate
);
1797 KSDDKAPI NTSTATUS NTAPI
1798 KsCreateTopologyNode(
1799 IN HANDLE ParentHandle
,
1800 IN PKSNODE_CREATE NodeCreate
,
1801 IN ACCESS_MASK DesiredAccess
,
1802 OUT PHANDLE NodeHandle
);
1804 KSDDKAPI NTSTATUS NTAPI
1805 KsTopologyPropertyHandler(
1807 IN PKSPROPERTY Property
,
1809 IN
const KSTOPOLOGY
* Topology
);
1813 /* ===============================================================
1814 Connectivity Functions
1817 KSDDKAPI NTSTATUS NTAPI
1819 IN HANDLE FilterHandle
,
1820 IN PKSPIN_CONNECT Connect
,
1821 IN ACCESS_MASK DesiredAccess
,
1822 OUT PHANDLE ConnectionHandle
);
1824 KSDDKAPI NTSTATUS NTAPI
1825 KsValidateConnectRequest(
1827 IN ULONG DescriptorsCount
,
1828 IN KSPIN_DESCRIPTOR
* Descriptor
,
1829 OUT PKSPIN_CONNECT
* Connect
);
1831 KSDDKAPI NTSTATUS NTAPI
1832 KsPinPropertyHandler(
1834 IN PKSPROPERTY Property
,
1836 IN ULONG DescriptorsCount
,
1837 IN
const KSPIN_DESCRIPTOR
* Descriptor
);
1839 KSDDKAPI NTSTATUS NTAPI
1840 KsPinDataIntersection(
1844 IN ULONG DescriptorsCount
,
1845 IN
const KSPIN_DESCRIPTOR
* Descriptor
,
1846 IN PFNKSINTERSECTHANDLER IntersectHandler
);
1848 KSDDKAPI NTSTATUS NTAPI
1849 KsPinDataIntersectionEx(
1853 IN ULONG DescriptorsCount
,
1854 IN
const KSPIN_DESCRIPTOR
* Descriptor
,
1855 IN ULONG DescriptorSize
,
1856 IN PFNKSINTERSECTHANDLEREX IntersectHandler OPTIONAL
,
1857 IN PVOID HandlerContext OPTIONAL
);
1859 /* Does this belong here? */
1861 KSDDKAPI NTSTATUS NTAPI
1862 KsHandleSizedListQuery(
1864 IN ULONG DataItemsCount
,
1865 IN ULONG DataItemSize
,
1866 IN
const VOID
* DataItems
);
1869 /* ===============================================================
1870 IRP Helper Functions
1873 typedef NTSTATUS (*PFNKSIRPLISTCALLBACK
)(
1877 KSDDKAPI NTSTATUS NTAPI
1878 KsAcquireResetValue(
1880 OUT KSRESET
* ResetValue
);
1883 KsAddIrpToCancelableQueue(
1884 IN OUT PLIST_ENTRY QueueHead
,
1885 IN PKSPIN_LOCK SpinLock
,
1887 IN KSLIST_ENTRY_LOCATION ListLocation
,
1888 IN PDRIVER_CANCEL DriverCancel OPTIONAL
);
1890 KSDDKAPI NTSTATUS NTAPI
1891 KsAddObjectCreateItemToDeviceHeader(
1892 IN KSDEVICE_HEADER Header
,
1893 IN PDRIVER_DISPATCH Create
,
1895 IN PWCHAR ObjectClass
,
1896 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
1898 KSDDKAPI NTSTATUS NTAPI
1899 KsAddObjectCreateItemToObjectHeader(
1900 IN KSOBJECT_HEADER Header
,
1901 IN PDRIVER_DISPATCH Create
,
1903 IN PWCHAR ObjectClass
,
1904 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
1906 KSDDKAPI NTSTATUS NTAPI
1907 KsAllocateDeviceHeader(
1909 IN ULONG ItemsCount
,
1910 IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL
);
1912 KSDDKAPI NTSTATUS NTAPI
1913 KsAllocateExtraData(
1916 OUT PVOID
* ExtraBuffer
);
1918 KSDDKAPI NTSTATUS NTAPI
1919 KsAllocateObjectCreateItem(
1920 IN KSDEVICE_HEADER Header
,
1921 IN PKSOBJECT_CREATE_ITEM CreateItem
,
1922 IN BOOL AllocateEntry
,
1923 IN PFNKSITEMFREECALLBACK ItemFreeCallback OPTIONAL
);
1925 KSDDKAPI NTSTATUS NTAPI
1926 KsAllocateObjectHeader(
1928 IN ULONG ItemsCount
,
1929 IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL
,
1931 IN KSDISPATCH_TABLE
* Table
);
1935 IN OUT PLIST_ENTRY QueueHead
,
1936 IN PKSPIN_LOCK SpinLock
);
1940 IN PDEVICE_OBJECT DeviceObject
,
1943 KSDDKAPI NTSTATUS NTAPI
1944 KsDefaultDeviceIoCompletion(
1945 IN PDEVICE_OBJECT DeviceObject
,
1949 KSDDKAPI ULONG NTAPI
1950 KsDecrementCountedWorker(
1951 IN PKSWORKER Worker);
1954 KSDDKAPI BOOLEAN NTAPI
1955 KsDispatchFastIoDeviceControlFailure(
1956 IN PFILE_OBJECT FileObject
,
1958 IN PVOID InputBuffer OPTIONAL
,
1959 IN ULONG InputBufferLength
,
1960 OUT PVOID OutputBuffer OPTIONAL
,
1961 IN ULONG OutputBufferLength
,
1962 IN ULONG IoControlCode
,
1963 OUT PIO_STATUS_BLOCK IoStatus
,
1964 IN PDEVICE_OBJECT DeviceObject
); /* always return false */
1966 KSDDKAPI BOOLEAN NTAPI
1967 KsDispatchFastReadFailure(
1968 IN PFILE_OBJECT FileObject
,
1969 IN PLARGE_INTEGER FileOffset
,
1974 OUT PIO_STATUS_BLOCK IoStatus
,
1975 IN PDEVICE_OBJECT DeviceObject
); /* always return false */
1977 /* This function does the same as the above */
1978 #define KsDispatchFastWriteFailure KsDispatchFastReadFailure
1980 KSDDKAPI NTSTATUS NTAPI
1981 KsDispatchInvalidDeviceRequest(
1982 IN PDEVICE_OBJECT DeviceObject
,
1985 KSDDKAPI NTSTATUS NTAPI
1987 IN PDEVICE_OBJECT DeviceObject
,
1990 KSDDKAPI NTSTATUS NTAPI
1991 KsDispatchSpecificMethod(
1993 IN PFNKSHANDLER Handler
);
1995 KSDDKAPI NTSTATUS NTAPI
1996 KsDispatchSpecificProperty(
1998 IN PFNKSHANDLER Handler
);
2000 KSDDKAPI NTSTATUS NTAPI
2001 KsForwardAndCatchIrp(
2002 IN PDEVICE_OBJECT DeviceObject
,
2004 IN PFILE_OBJECT FileObject
,
2005 IN KSSTACK_USE StackUse
);
2007 KSDDKAPI NTSTATUS NTAPI
2010 IN PFILE_OBJECT FileObject
,
2011 IN BOOLEAN ReuseStackLocation
);
2021 KSDDKAPI NTSTATUS NTAPI
2022 KsGetChildCreateParameter(
2024 OUT PVOID
* CreateParameter
);
2026 KSDDKAPI NTSTATUS NTAPI
2027 KsMoveIrpsOnCancelableQueue(
2028 IN OUT PLIST_ENTRY SourceList
,
2029 IN PKSPIN_LOCK SourceLock
,
2030 IN OUT PLIST_ENTRY DestinationList
,
2031 IN PKSPIN_LOCK DestinationLock OPTIONAL
,
2032 IN KSLIST_ENTRY_LOCATION ListLocation
,
2033 IN PFNKSIRPLISTCALLBACK ListCallback
,
2036 KSDDKAPI NTSTATUS NTAPI
2039 IN ULONG ProbeFlags
,
2040 IN ULONG HeaderSize
);
2042 KSDDKAPI NTSTATUS NTAPI
2043 KsQueryInformationFile(
2044 IN PFILE_OBJECT FileObject
,
2045 OUT PVOID FileInformation
,
2047 IN FILE_INFORMATION_CLASS FileInformationClass
);
2049 KSDDKAPI ACCESS_MASK NTAPI
2050 KsQueryObjectAccessMask(
2051 IN KSOBJECT_HEADER Header
);
2053 KSDDKAPI PKSOBJECT_CREATE_ITEM NTAPI
2054 KsQueryObjectCreateItem(
2055 IN KSOBJECT_HEADER Header
);
2057 KSDDKAPI NTSTATUS NTAPI
2059 IN PFILE_OBJECT FileObject
,
2060 IN PKEVENT Event OPTIONAL
,
2061 IN PVOID PortContext OPTIONAL
,
2062 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2065 IN ULONG Key OPTIONAL
,
2066 IN KPROCESSOR_MODE RequestorMode
);
2069 KsReleaseIrpOnCancelableQueue(
2071 IN PDRIVER_CANCEL DriverCancel OPTIONAL
);
2074 KsRemoveIrpFromCancelableQueue(
2075 IN OUT PLIST_ENTRY QueueHead
,
2076 IN PKSPIN_LOCK SpinLock
,
2077 IN KSLIST_ENTRY_LOCATION ListLocation
,
2078 IN KSIRP_REMOVAL_OPERATION RemovalOperation
);
2081 KsRemoveSpecificIrpFromCancelableQueue(
2084 KSDDKAPI NTSTATUS NTAPI
2085 KsSetInformationFile(
2086 IN PFILE_OBJECT FileObject
,
2087 IN PVOID FileInformation
,
2089 IN FILE_INFORMATION_CLASS FileInformationClass
);
2091 KSDDKAPI NTSTATUS NTAPI
2092 KsSetMajorFunctionHandler(
2093 IN PDRIVER_OBJECT DriverObject
,
2094 IN ULONG MajorFunction
);
2096 KSDDKAPI NTSTATUS NTAPI
2098 IN PFILE_OBJECT FileObject
,
2099 IN PKEVENT Event OPTIONAL
,
2100 IN PVOID PortContext OPTIONAL
,
2101 IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL
,
2102 IN PVOID CompletionContext OPTIONAL
,
2103 IN KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL
,
2104 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2105 IN OUT PVOID StreamHeaders
,
2108 IN KPROCESSOR_MODE RequestorMode
);
2110 KSDDKAPI NTSTATUS NTAPI
2112 IN PFILE_OBJECT FileObject
,
2113 IN PKEVENT Event OPTIONAL
,
2114 IN PVOID PortContext OPTIONAL
,
2115 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2118 IN ULONG Key OPTIONAL
,
2119 IN KPROCESSOR_MODE RequestorMode
);
2122 /* ===============================================================
2123 Worker Management Functions
2126 KSDDKAPI NTSTATUS NTAPI
2128 IN WORK_QUEUE_TYPE WorkQueueType
,
2129 OUT PKSWORKER
* Worker
);
2133 IN PKSWORKER Worker
);
2135 KSDDKAPI NTSTATUS NTAPI
2136 KsRegisterCountedWorker(
2137 IN WORK_QUEUE_TYPE WorkQueueType
,
2138 IN PWORK_QUEUE_ITEM CountedWorkItem
,
2139 OUT PKSWORKER
* Worker
);
2141 KSDDKAPI ULONG NTAPI
2142 KsDecrementCountedWorker(
2143 IN PKSWORKER Worker
);
2145 KSDDKAPI ULONG NTAPI
2146 KsIncrementCountedWorker(
2147 IN PKSWORKER Worker
);
2149 KSDDKAPI NTSTATUS NTAPI
2151 IN PKSWORKER Worker
,
2152 IN PWORK_QUEUE_ITEM WorkItem
);
2155 /* ===============================================================
2159 KSDDKAPI NTSTATUS NTAPI
2162 IN POOL_TYPE PoolType
,
2163 IN ULONG_PTR ResourceName
,
2164 IN ULONG ResourceType
,
2165 OUT PVOID
* Resource
,
2166 OUT PULONG ResourceSize
);
2169 KSDDKAPI NTSTATUS NTAPI
2170 KsGetImageNameAndResourceId(
2172 OUT PUNICODE_STRING ImageName,
2173 OUT PULONG_PTR ResourceId,
2174 OUT PULONG ValueType);
2176 KSDDKAPI NTSTATUS NTAPI
2178 IN PDEVICE_OBJECT PhysicalDeviceObject,
2179 IN PUNICODE_STRING ModuleName,
2180 OUT PUNICODE_STRING ImageName,
2181 OUT PULONG_PTR ResourceId,
2182 OUT PULONG ValueType);
2186 /* ===============================================================
2187 Misc. Helper Functions
2190 KSDDKAPI NTSTATUS NTAPI
2192 IN PUNICODE_STRING SymbolicLink
,
2193 IN PKSPIN_MEDIUM Medium
,
2194 IN DWORD PinDirection
);
2196 KSDDKAPI NTSTATUS NTAPI
2197 KsDefaultDispatchPnp(
2198 IN PDEVICE_OBJECT DeviceObject
,
2202 KsSetDevicePnpAndBaseObject(
2203 IN KSDEVICE_HEADER Header
,
2204 IN PDEVICE_OBJECT PnpDeviceObject
,
2205 IN PDEVICE_OBJECT BaseDevice
);
2207 KSDDKAPI NTSTATUS NTAPI
2208 KsDefaultDispatchPower(
2209 IN PDEVICE_OBJECT DeviceObject
,
2214 IN KSOBJECT_HEADER Header
,
2215 IN PFNKSCONTEXT_DISPATCH PowerDispatch OPTIONAL
,
2216 IN PVOID PowerContext OPTIONAL
);
2218 KSDDKAPI NTSTATUS NTAPI
2219 KsReferenceBusObject(
2220 IN KSDEVICE_HEADER Header
);
2223 KsDereferenceBusObject(
2224 IN KSDEVICE_HEADER Header
);
2226 KSDDKAPI NTSTATUS NTAPI
2227 KsFreeObjectCreateItem(
2228 IN KSDEVICE_HEADER Header
,
2229 IN PUNICODE_STRING CreateItem
);
2231 KSDDKAPI NTSTATUS NTAPI
2232 KsFreeObjectCreateItemsByContext(
2233 IN KSDEVICE_HEADER Header
,
2238 IN PDRIVER_OBJECT DriverObject
);
2240 KSDDKAPI PDEVICE_OBJECT NTAPI
2241 KsQueryDevicePnpObject(
2242 IN KSDEVICE_HEADER Header
);
2245 KsRecalculateStackDepth(
2246 IN KSDEVICE_HEADER Header
,
2247 IN BOOLEAN ReuseStackLocation
);
2250 KsSetTargetDeviceObject(
2251 IN KSOBJECT_HEADER Header
,
2252 IN PDEVICE_OBJECT TargetDevice OPTIONAL
);
2256 IN KSOBJECT_HEADER Header
,
2257 IN KSTARGET_STATE TargetState
);
2259 KSDDKAPI NTSTATUS NTAPI
2260 KsSynchronousIoControlDevice(
2261 IN PFILE_OBJECT FileObject
,
2262 IN KPROCESSOR_MODE RequestorMode
,
2266 OUT PVOID OutBuffer
,
2268 OUT PULONG BytesReturned
);
2271 /* ===============================================================
2272 AVStream Functions (XP / DirectX 8)
2274 http://www.osronline.com/ddkx/stream/avstream_5q9f.htm
2278 typedef void (*PFNKSFILTERFACTORYPOWER
)(
2279 IN PKSFILTERFACTORY FilterFactory
,
2280 IN DEVICE_POWER_STATE State
);
2282 KSDDKAPI NTSTATUS NTAPI
2284 IN KSOBJECT_BAG ObjectBag
,
2285 IN OUT PVOID
* PointerToPointerToItem
,
2298 IN PKSDEVICE Device
)
2304 IN PDRIVER_OBJECT DriverObject
,
2305 IN PDEVICE_OBJECT PhysicalDeviceObject
)
2312 IN PKSEVENT_ENTRY EventEntry
)
2317 KsAddItemToObjectBag(
2318 IN KSOBJECT_BAG ObjectBag
,
2320 IN PFNKSFREE Free OPTIONAL
)
2325 KsAllocateObjectBag(
2326 IN PKSDEVICE Device
,
2327 OUT KSOBJECT_BAG
* ObjectBag
)
2332 KsCompletePendingRequest(
2338 KsCopyObjectBagItems(
2339 IN KSOBJECT_BAG ObjectBagDestination
,
2340 IN KSOBJECT_BAG ObjectBagSource
)
2346 IN PDRIVER_OBJECT DriverObject
,
2347 IN PDEVICE_OBJECT PhysicalDeviceObject
,
2348 IN
const KSDEVICE_DESCRIPTOR
* Descriptor OPTIONAL
,
2349 IN ULONG ExtensionSize OPTIONAL
,
2350 OUT PKSDEVICE
* Device OPTIONAL
)
2355 KsCreateFilterFactory(
2356 IN PDEVICE_OBJECT DeviceObject
,
2357 IN
const KSFILTER_DESCRIPTOR
* Descriptor
,
2358 IN PWCHAR RefString OPTIONAL
,
2359 IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL
,
2360 IN ULONG CreateItemFlags
,
2361 IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL
,
2362 IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL
,
2363 OUT PKFSFILTERFACTORY FilterFactory OPTIONAL
)
2368 KsDefaultAddEventHandler(
2370 IN PKSEVENTDATA EventData
,
2371 IN OUT PKSEVENT_ENTRY EventEntry
)
2376 KsDeleteFilterFactory(
2377 IN PKSFILTERFACTORY FilterFactory
)
2383 IN PKSDEVICE Device
,
2392 KsDeviceGetFirstChildFilterFactory(
2393 IN PKSDEVICE Device
)
2398 KsDeviceGetOuterUnknown(
2399 IN PKSDEVICE Device
)
2404 KsDeviceRegisterAdapterObject(
2405 IN PKSDEVICE Device
,
2406 IN PADAPTER_OBJECT AdapterObject
,
2407 IN ULONG MaxMappingByteCount
,
2408 IN ULONG MappingTableStride
)
2412 KSDDKAPI PUNKNOWN NTAPI
2413 KsDeviceRegisterAggregatedClientUnknown(
2414 IN PKSDEVICE Device
,
2415 IN PUNKNOWN ClientUnknown
);
2419 IN PKSDEVICE Device
,
2427 #define KsDiscard(object, pointer) \
2428 KsRemoveItemFromObjectBag(object->Bag, pointer, TRUE)
2431 KsFilterAcquireControl(
2432 IN PKSFILTER Filter
)
2437 KsFilterAcquireProcessingMutex(
2438 IN PKSFILTER Filter
);
2442 IN PKSFILTER Filter
,
2443 IN PKSEVENT_ENTRY EventEntry
)
2447 KSDDKAPI NTSTATUS NTAPI
2448 KsFilterAddTopologyConnections(
2449 IN PKSFILTER Filter
,
2450 IN ULONG NewConnectionsCount
,
2451 IN
const KSTOPOLOGY_CONNECTION
* NewTopologyConnections
);
2454 KsFilterAttemptProcessing(
2455 IN PKSFILTER Filter
,
2456 IN BOOLEAN Asynchronous
);
2458 KSDDKAPI NTSTATUS NTAPI
2460 IN PKSFILTER Filter
,
2461 IN
const KSNODE_DESCRIPTOR
* NodeDescriptor
,
2464 KSDDKAPI NTSTATUS NTAPI
2465 KsFilterCreatePinFactory(
2466 IN PKSFILTER Filter
,
2467 IN
const KSPIN_DESCRIPTOR_EX
* PinDescriptor
,
2471 KsFilterFactoryGetDevice(
2472 IN PKSFILTERFACTORY FilterFactory
);
2475 #endif /* avstream */