ReactOS 0.4.15-dev-7788-g1ad9096
ks.h
Go to the documentation of this file.
1/*
2 ReactOS
3 Kernel Streaming API
4
5 by Andrew Greenwood
6
7 NOTES:
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.
10
11 Some of the structs/funcs may be incorrectly grouped.
12
13 GUIDs need to be defined properly.
14
15 AVStream functionality (XP and above, DirectX 8.0 and above) will NOT
16 implemented for a while.
17
18 Some example code for interaction from usermode:
19 DeviceIoControl(
20 FilterHandle,
21 IOCTL_KS_PROPERTY,
22 &Property,
23 sizeof(KSPROPERTY),
24 &SeekingCapabilities,
25 sizeof(KS_SEEKING_CAPABILITIES),
26 &BytesReturned,
27 &Overlapped);
28*/
29
30#ifndef _KS_
31#define _KS_
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37#ifdef BUILDING_KS
38 #define KSDDKAPI
39#else
40 #define KSDDKAPI //DECLSPEC_IMPORT /* TODO */
41#endif
42
43
44#define KSFILTER_NODE ((ULONG)-1)
45#define KSALL_NODES ((ULONG)-1)
46
47#define KSSTRING_Filter L"{9B365890-165F-11D0-A195-0020AFD156E4}"
48#define KSSTRING_Pin L"{146F1A80-4791-11D0-A5D6-28DB04C10000}"
49#define KSSTRING_Clock L"{53172480-4791-11D0-A5D6-28DB04C10000}"
50#define KSSTRING_Allocator L"{642F5D00-4791-11D0-A5D6-28DB04C10000}"
51#define KSSTRING_AllocatorEx L"{091BB63B-603F-11D1-B067-00A0C9062802}"
52#define KSSTRING_TopologyNode L"{0621061A-EE75-11D0-B915-00A0C9223196}"
53
54#define KSDATAFORMAT_BIT_ATTRIBUTES 1
55#define KSDATAFORMAT_ATTRIBUTES (1 << KSDATAFORMAT_BIT_ATTRIBUTES)
56
57#if defined(_NTDDK_)
58typedef PVOID PKSWORKER;
59#endif
60
61#ifndef SIZEOF_ARRAY
62#define SIZEOF_ARRAY(a) (sizeof(a)/sizeof((a)[0]))
63#endif
64
65/* ===============================================================
66 GUID definition helpers
67*/
68
69#ifndef _NTRTL_
70
71#ifndef DEFINE_GUIDEX
72#ifdef _MSC_VER
73#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name
74#else
75#define DEFINE_GUIDEX(name) EXTERN_C const GUID name
76#endif
77#endif /* !DEFINE_GUIDEX */
78
79#ifndef STATICGUIDOF
80#define STATICGUIDOF(guid) STATIC_##guid
81#endif
82
83#endif /* !_NTRTL_ */
84
85#if defined(__cplusplus)
86
87#if _MSC_VER >= 1100
88#define DEFINE_GUIDSTRUCT(guid, name) struct __declspec(uuid(guid)) name
89#define DEFINE_GUIDNAMED(name) __uuidof(struct name)
90#else
91#define DEFINE_GUIDSTRUCT(guid, name) \
92 extern const DECLSPEC_SELECTANY GUID __uuid__##name={STATIC_##name};
93#define DEFINE_GUIDNAMED(name) __uuid__##name
94#endif
95
96#else /* __cplusplus */
97
98#define DEFINE_GUIDSTRUCT(guid, name) DEFINE_GUIDEX(name)
99#define DEFINE_GUIDNAMED(name) name
100
101#endif /* __cplusplus */
102
103#define STATIC_GUID_NULL \
104 0x00000000L, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
105DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000", GUID_NULL);
106#define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL)
107
108#define STATIC_KSNAME_Filter\
109 0x9b365890L, 0x165f, 0x11d0, {0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
110DEFINE_GUIDSTRUCT("9b365890-165f-11d0-a195-0020afd156e4", KSNAME_Filter);
111#define KSNAME_Filter DEFINE_GUIDNAMED(KSNAME_Filter)
112
113#define STATIC_KSMEMORY_TYPE_KERNEL_PAGED \
114 0xd833f8f8L, 0x7894, 0x11d1, {0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02}
115DEFINE_GUIDSTRUCT("d833f8f8-7894-11d1-b069-00a0c9062802", KSMEMORY_TYPE_KERNEL_PAGED);
116#define KSMEMORY_TYPE_KERNEL_PAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_PAGED)
117
118#define STATIC_KSDATAFORMAT_SUBTYPE_NONE \
119 0xe436eb8eL, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}
120DEFINE_GUIDSTRUCT("e436eb8e-524f-11ce-9f53-0020af0ba770", KSDATAFORMAT_SUBTYPE_NONE);
121#define KSDATAFORMAT_SUBTYPE_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NONE)
122
123/* ===============================================================
124 I/O Control Codes
125*/
126
127#define IOCTL_KS_PROPERTY \
128 CTL_CODE(FILE_DEVICE_KS, 0x000, METHOD_NEITHER, FILE_ANY_ACCESS)
129
130#define IOCTL_KS_ENABLE_EVENT \
131 CTL_CODE(FILE_DEVICE_KS, 0x001, METHOD_NEITHER, FILE_ANY_ACCESS)
132
133#define IOCTL_KS_DISABLE_EVENT \
134 CTL_CODE(FILE_DEVICE_KS, 0x002, METHOD_NEITHER, FILE_ANY_ACCESS)
135
136#define IOCTL_KS_METHOD \
137 CTL_CODE(FILE_DEVICE_KS, 0x003, METHOD_NEITHER, FILE_ANY_ACCESS)
138
139#define IOCTL_KS_WRITE_STREAM \
140 CTL_CODE(FILE_DEVICE_KS, 0x004, METHOD_NEITHER, FILE_WRITE_ACCESS)
141
142#define IOCTL_KS_READ_STREAM \
143 CTL_CODE(FILE_DEVICE_KS, 0x005, METHOD_NEITHER, FILE_READ_ACCESS)
144
145#define IOCTL_KS_RESET_STATE \
146 CTL_CODE(FILE_DEVICE_KS, 0x006, METHOD_NEITHER, FILE_ANY_ACCESS)
147
148/* ===============================================================
149 Categories
150*/
151
152#define STATIC_KSCATEGORY_BRIDGE \
153 0x085AFF00L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
154DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000", KSCATEGORY_BRIDGE);
155#define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE)
156
157#define STATIC_KSCATEGORY_CAPTURE \
158 0x65E8773DL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
159DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_CAPTURE);
160#define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE)
161
162#define STATIC_KSCATEGORY_RENDER \
163 0x65E8773EL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
164DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_RENDER);
165#define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER)
166
167#define STATIC_KSCATEGORY_MIXER \
168 0xAD809C00L, 0x7B88, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
169DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000", KSCATEGORY_MIXER);
170#define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER)
171
172#define STATIC_KSCATEGORY_SPLITTER \
173 0x0A4252A0L, 0x7E70, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
174DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_SPLITTER);
175#define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER)
176
177#define STATIC_KSCATEGORY_DATACOMPRESSOR \
178 0x1E84C900L, 0x7E70, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
179DEFINE_GUIDSTRUCT("1E84C900-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATACOMPRESSOR);
180#define KSCATEGORY_DATACOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATACOMPRESSOR)
181
182#define STATIC_KSCATEGORY_DATADECOMPRESSOR \
183 0x2721AE20L, 0x7E70, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
184DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATADECOMPRESSOR);
185#define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR)
186
187#define STATIC_KSCATEGORY_DATATRANSFORM \
188 0x2EB07EA0L, 0x7E70, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
189DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATATRANSFORM);
190#define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM)
191
192#define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \
193 0xCF1DDA2CL, 0x9743, 0x11D0, {0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
194DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_COMMUNICATIONSTRANSFORM);
195#define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM)
196
197#define STATIC_KSCATEGORY_INTERFACETRANSFORM \
198 0xCF1DDA2DL, 0x9743, 0x11D0, {0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
199DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_INTERFACETRANSFORM);
200#define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANSFORM)
201
202#define STATIC_KSCATEGORY_MEDIUMTRANSFORM \
203 0xCF1DDA2EL, 0x9743, 0x11D0, {0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
204DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_MEDIUMTRANSFORM);
205#define KSCATEGORY_MEDIUMTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_MEDIUMTRANSFORM)
206
207#define STATIC_KSCATEGORY_FILESYSTEM \
208 0x760FED5EL, 0x9357, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
209DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196", KSCATEGORY_FILESYSTEM);
210#define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM)
211
212#define STATIC_KSCATEGORY_CLOCK \
213 0x53172480L, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
214DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000", KSCATEGORY_CLOCK);
215#define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK)
216
217#define STATIC_KSCATEGORY_PROXY \
218 0x97EBAACAL, 0x95BD, 0x11D0, {0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
219DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_PROXY);
220#define KSCATEGORY_PROXY DEFINE_GUIDNAMED(KSCATEGORY_PROXY)
221
222#define STATIC_KSCATEGORY_QUALITY \
223 0x97EBAACBL, 0x95BD, 0x11D0, {0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
224DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_QUALITY);
225#define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(KSCATEGORY_QUALITY)
226
227/* ===============================================================
228 Common
229*/
230
231typedef struct {
232 GUID Set;
233 ULONG Id;
234 ULONG Flags;
236
240
242
245
246typedef union {
247 struct {
248 ULONG FormatSize;
249 ULONG Flags;
250 ULONG SampleSize;
252 GUID MajorFormat;
253 GUID SubFormat;
254 GUID Specifier;
255 };
258
259typedef struct {
264
265
266/* ===============================================================
267 Interface Sets - TODO
268*/
269
270#if 0
271#define KSINTERFACESETID_Media
272#define KSINTERFACE_STANDARD_STREAMING
273#define KSINTERFACE_STANDARD_LOOPED_STREAMING
274#define KSINTERFACE_STANDARD_CONTROL
275#endif
276
277#define STATIC_KSINTERFACESETID_Standard \
278 0x1A8766A0L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
279DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000", KSINTERFACESETID_Standard);
280#define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard)
281
282typedef enum {
287
288#define STATIC_KSINTERFACESETID_FileIo \
289 0x8C6F932CL, 0xE771, 0x11D0, {0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
290DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196", KSINTERFACESETID_FileIo);
291#define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo)
292
293/* ===============================================================
294 Mediums
295*/
296
297typedef enum {
300
301#define KSMEDIUM_TYPE_ANYINSTANCE 0
302
303#define STATIC_KSMEDIUMSETID_Standard \
304 0x4747B320L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
305DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000", KSMEDIUMSETID_Standard);
306#define KSMEDIUMSETID_Standard DEFINE_GUIDNAMED(KSMEDIUMSETID_Standard)
307
308/* ===============================================================
309 Clock Properties/Methods/Events
310*/
311
312#define STATIC_KSPROPSETID_Clock \
313 0xDF12A4C0L, 0xAC17, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
314DEFINE_GUIDSTRUCT("DF12A4C0-AC17-11CF-A5D6-28DB04C10000", KSPROPSETID_Clock);
315#define KSPROPSETID_Clock DEFINE_GUIDNAMED(KSPROPSETID_Clock)
316
317typedef enum {
324#if defined(_NTDDK_)
325 KSPROPERTY_CLOCK_FUNCTIONTABLE
326#endif // defined(_NTDDK_)
328
329#define STATIC_KSEVENTSETID_Clock \
330 0x364D8E20L, 0x62C7, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
331DEFINE_GUIDSTRUCT("364D8E20-62C7-11CF-A5D6-28DB04C10000", KSEVENTSETID_Clock);
332#define KSEVENTSETID_Clock DEFINE_GUIDNAMED(KSEVENTSETID_Clock)
333
334typedef enum {
338
339/* ===============================================================
340 Connection Properties/Methods/Events
341*/
342
343#define STATIC_KSPROPSETID_Connection \
344 0x1D58C920L, 0xAC9B, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
345DEFINE_GUIDSTRUCT("1D58C920-AC9B-11CF-A5D6-28DB04C10000", KSPROPSETID_Connection);
346#define KSPROPSETID_Connection DEFINE_GUIDNAMED(KSPROPSETID_Connection)
347
348typedef enum {
358
359#define DEFINE_KSPROPERTY_ITEM_CONNECTION_STATE(GetHandler, SetHandler)\
360 DEFINE_KSPROPERTY_ITEM(\
361 KSPROPERTY_CONNECTION_STATE,\
362 (GetHandler),\
363 sizeof(KSPROPERTY),\
364 sizeof(KSSTATE),\
365 (SetHandler),\
366 NULL, 0, NULL, NULL, 0)
367
368#define DEFINE_KSPROPERTY_ITEM_CONNECTION_PRIORITY(GetHandler, SetHandler)\
369 DEFINE_KSPROPERTY_ITEM(\
370 KSPROPERTY_CONNECTION_PRIORITY,\
371 (GetHandler),\
372 sizeof(KSPROPERTY),\
373 sizeof(KSPRIORITY),\
374 (SetHandler),\
375 NULL, 0, NULL, NULL, 0)
376
377#define DEFINE_KSPROPERTY_ITEM_CONNECTION_DATAFORMAT(GetHandler, SetHandler)\
378 DEFINE_KSPROPERTY_ITEM(\
379 KSPROPERTY_CONNECTION_DATAFORMAT,\
380 (GetHandler),\
381 sizeof(KSPROPERTY),\
382 0,\
383 (SetHandler),\
384 NULL, 0, NULL, NULL, 0)
385
386#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING(Handler)\
387 DEFINE_KSPROPERTY_ITEM(\
388 KSPROPERTY_CONNECTION_ALLOCATORFRAMING,\
389 (Handler),\
390 sizeof(KSPROPERTY),\
391 sizeof(KSALLOCATOR_FRAMING),\
392 NULL, NULL, 0, NULL, NULL, 0)
393
394#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING_EX(Handler)\
395 DEFINE_KSPROPERTY_ITEM(\
396 KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,\
397 (Handler),\
398 sizeof(KSPROPERTY),\
399 0,\
400 NULL, NULL, 0, NULL, NULL, 0)
401
402#define DEFINE_KSPROPERTY_ITEM_CONNECTION_PROPOSEDATAFORMAT(Handler)\
403 DEFINE_KSPROPERTY_ITEM(\
404 KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,\
405 NULL,\
406 sizeof(KSPROPERTY),\
407 sizeof(KSDATAFORMAT),\
408 (Handler),\
409 NULL, 0, NULL, NULL, 0)
410
411#define DEFINE_KSPROPERTY_ITEM_CONNECTION_ACQUIREORDERING(Handler)\
412 DEFINE_KSPROPERTY_ITEM(\
413 KSPROPERTY_CONNECTION_ACQUIREORDERING,\
414 (Handler),\
415 sizeof(KSPROPERTY),\
416 sizeof(int),\
417 NULL, NULL, 0, NULL, NULL, 0)
418
419#define DEFINE_KSPROPERTY_ITEM_CONNECTION_STARTAT(Handler)\
420 DEFINE_KSPROPERTY_ITEM(\
421 KSPROPERTY_CONNECTION_STARTAT,\
422 NULL,\
423 sizeof(KSPROPERTY),\
424 sizeof(KSRELATIVEEVENT),\
425 (Handler),\
426 NULL, 0, NULL, NULL, 0)
427
428typedef enum {
435
436/* ===============================================================
437 General
438 Properties/Methods/Events
439*/
440
441#define STATIC_KSPROPSETID_General\
442 0x1464EDA5L, 0x6A8F, 0x11D1, {0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
443DEFINE_GUIDSTRUCT("1464EDA5-6A8F-11D1-9AA7-00A0C9223196", KSPROPSETID_General);
444#define KSPROPSETID_General DEFINE_GUIDNAMED(KSPROPSETID_General)
445
446typedef enum {
449
450/* ===============================================================
451 Graph Manager
452 Properties/Methods/Events
453*/
454
455#define KSPROPSETID_GM \
456 0xAF627536L, 0xE719, 0x11D2, {0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D}
457
458typedef enum {
464
465/* ===============================================================
466 Media Seeking
467 Properties/Methods/Events
468*/
469
470#define STATIC_KSPROPSETID_MediaSeeking\
471 0xEE904F0CL, 0xD09B, 0x11D0, {0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
472DEFINE_GUIDSTRUCT("EE904F0C-D09B-11D0-ABE9-00A0C9223196", KSPROPSETID_MediaSeeking);
473#define KSPROPSETID_MediaSeeking DEFINE_GUIDNAMED(KSPROPSETID_MediaSeeking)
474
475typedef enum {
487
488typedef enum {
497
498typedef enum {
507
508typedef struct {
514
515typedef struct {
519
520typedef struct {
526
527#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CAPABILITIES(Handler)\
528 DEFINE_KSPROPERTY_ITEM(\
529 KSPROPERTY_MEDIASEEKING_CAPABILITIES,\
530 (Handler),\
531 sizeof(KSPROPERTY),\
532 sizeof(KS_SEEKING_CAPABILITIES),\
533 NULL, NULL, 0, NULL, NULL, 0)
534
535#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_FORMATS(Handler)\
536 DEFINE_KSPROPERTY_ITEM(\
537 KSPROPERTY_MEDIASEEKING_FORMATS,\
538 (Handler),\
539 sizeof(KSPROPERTY),\
540 0,\
541 NULL, NULL, 0, NULL, NULL, 0)
542
543#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_TIMEFORMAT(GetHandler, SetHandler)\
544 DEFINE_KSPROPERTY_ITEM(\
545 KSPROPERTY_MEDIASEEKING_TIMEFORMAT,\
546 (GetHandler),\
547 sizeof(KSPROPERTY),\
548 sizeof(GUID),\
549 (SetHandler),\
550 NULL, 0, NULL, NULL, 0)
551
552#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITION(Handler)\
553 DEFINE_KSPROPERTY_ITEM(\
554 KSPROPERTY_MEDIASEEKING_POSITION,\
555 (Handler),\
556 sizeof(KSPROPERTY),\
557 sizeof(LONGLONG),\
558 NULL, NULL, 0, NULL, NULL, 0)
559
560#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_STOPPOSITION(Handler)\
561 DEFINE_KSPROPERTY_ITEM(\
562 KSPROPERTY_MEDIASEEKING_STOPPOSITION,\
563 (Handler),\
564 sizeof(KSPROPERTY),\
565 sizeof(LONGLONG),\
566 NULL, NULL, 0, NULL, NULL, 0)
567
568#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITIONS(Handler)\
569 DEFINE_KSPROPERTY_ITEM(\
570 KSPROPERTY_MEDIASEEKING_POSITIONS,\
571 NULL,\
572 sizeof(KSPROPERTY),\
573 sizeof(KSPROPERTY_POSITIONS),\
574 (Handler),\
575 NULL, 0, NULL, NULL, 0)
576
577#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_DURATION(Handler)\
578 DEFINE_KSPROPERTY_ITEM(\
579 KSPROPERTY_MEDIASEEKING_DURATION,\
580 (Handler),\
581 sizeof(KSPROPERTY),\
582 sizeof(LONGLONG),\
583 NULL, NULL, 0, NULL, NULL, 0)
584
585#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_AVAILABLE(Handler)\
586 DEFINE_KSPROPERTY_ITEM(\
587 KSPROPERTY_MEDIASEEKING_AVAILABLE,\
588 (Handler),\
589 sizeof(KSPROPERTY),\
590 sizeof(KSPROPERTY_MEDIAAVAILABLE),\
591 NULL, NULL, 0, NULL, NULL, 0)
592
593#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_PREROLL(Handler)\
594 DEFINE_KSPROPERTY_ITEM(\
595 KSPROPERTY_MEDIASEEKING_PREROLL,\
596 (Handler),\
597 sizeof(KSPROPERTY),\
598 sizeof(LONGLONG),\
599 NULL, NULL, 0, NULL, NULL, 0)
600
601#define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CONVERTTIMEFORMAT(Handler)\
602 DEFINE_KSPROPERTY_ITEM(\
603 KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT,\
604 (Handler),\
605 sizeof(KSP_TIMEFORMAT),\
606 sizeof(LONGLONG),\
607 NULL, NULL, 0, NULL, NULL, 0)
608
609/* ===============================================================
610 Pin
611 Properties/Methods/Events
612*/
613
614#define STATIC_KSPROPSETID_Pin\
615 0x8C134960L, 0x51AD, 0x11CF, {0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00}
616DEFINE_GUIDSTRUCT("8C134960-51AD-11CF-878A-94F801C10000", KSPROPSETID_Pin);
617#define KSPROPSETID_Pin DEFINE_GUIDNAMED(KSPROPSETID_Pin)
618
619#define STATIC_KSNAME_Pin\
620 0x146F1A80L, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
621DEFINE_GUIDSTRUCT("146F1A80-4791-11D0-A5D6-28DB04C10000", KSNAME_Pin);
622#define KSNAME_Pin DEFINE_GUIDNAMED(KSNAME_Pin)
623
624typedef enum {
641
642typedef struct {
647
648#define KSINSTANCE_INDETERMINATE ((ULONG)-1)
649
650typedef struct {
654
655typedef struct {
660
661/* ===============================================================
662 Quality
663 Properties/Methods/Events
664*/
665
666#define KSPROPSETID_Quality \
667 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
668
669typedef enum {
673
674/* ===============================================================
675 Stream
676 Properties/Methods/Events
677*/
678
679#define STATIC_KSPROPSETID_Stream\
680 0x65aaba60L, 0x98ae, 0x11cf, {0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
681DEFINE_GUIDSTRUCT("65aaba60-98ae-11cf-a10d-0020afd156e4", KSPROPSETID_Stream);
682#define KSPROPSETID_Stream DEFINE_GUIDNAMED(KSPROPSETID_Stream)
683
684typedef enum {
697
698#define DEFINE_KSPROPERTY_ITEM_STREAM_ALLOCATOR(GetHandler, SetHandler)\
699 DEFINE_KSPROPERTY_ITEM(\
700 KSPROPERTY_STREAM_ALLOCATOR,\
701 (GetHandler),\
702 sizeof(KSPROPERTY),\
703 sizeof(HANDLE),\
704 (SetHandler),\
705 NULL, 0, NULL, NULL, 0)
706
707#define DEFINE_KSPROPERTY_ITEM_STREAM_QUALITY(Handler)\
708 DEFINE_KSPROPERTY_ITEM(\
709 KSPROPERTY_STREAM_QUALITY,\
710 (Handler),\
711 sizeof(KSPROPERTY),\
712 sizeof(KSQUALITY_MANAGER),\
713 NULL, NULL, 0, NULL, NULL, 0)
714
715#define DEFINE_KSPROPERTY_ITEM_STREAM_DEGRADATION(GetHandler, SetHandler)\
716 DEFINE_KSPROPERTY_ITEM(\
717 KSPROPERTY_STREAM_DEGRADATION,\
718 (GetHandler),\
719 sizeof(KSPROPERTY),\
720 0,\
721 (SetHandler),\
722 NULL, 0, NULL, NULL, 0)
723
724#define DEFINE_KSPROPERTY_ITEM_STREAM_MASTERCLOCK(GetHandler, SetHandler)\
725 DEFINE_KSPROPERTY_ITEM(\
726 KSPROPERTY_STREAM_MASTERCLOCK,\
727 (GetHandler),\
728 sizeof(KSPROPERTY),\
729 sizeof(HANDLE),\
730 (SetHandler),\
731 NULL, 0, NULL, NULL, 0)
732
733#define DEFINE_KSPROPERTY_ITEM_STREAM_TIMEFORMAT(Handler)\
734 DEFINE_KSPROPERTY_ITEM(\
735 KSPROPERTY_STREAM_TIMEFORMAT,\
736 (Handler),\
737 sizeof(KSPROPERTY),\
738 sizeof(GUID),\
739 NULL, NULL, 0, NULL, NULL, 0)
740
741#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONTIME(GetHandler, SetHandler)\
742 DEFINE_KSPROPERTY_ITEM(\
743 KSPROPERTY_STREAM_PRESENTATIONTIME,\
744 (GetHandler),\
745 sizeof(KSPROPERTY),\
746 sizeof(KSTIME),\
747 (SetHandler),\
748 NULL, 0, NULL, NULL, 0)
749
750#define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONEXTENT(Handler)\
751 DEFINE_KSPROPERTY_ITEM(\
752 KSPROPERTY_STREAM_PRESENTATIONEXTENT,\
753 (Handler),\
754 sizeof(KSPROPERTY),\
755 sizeof(LONGLONG),\
756 NULL, NULL, 0, NULL, NULL, 0)
757
758#define DEFINE_KSPROPERTY_ITEM_STREAM_FRAMETIME(Handler)\
759 DEFINE_KSPROPERTY_ITEM(\
760 KSPROPERTY_STREAM_FRAMETIME,\
761 (Handler),\
762 sizeof(KSPROPERTY),\
763 sizeof(KSFRAMETIME),\
764 NULL, NULL, 0, NULL, NULL, 0)
765
766#define DEFINE_KSPROPERTY_ITEM_STREAM_RATECAPABILITY(Handler)\
767 DEFINE_KSPROPERTY_ITEM(\
768 KSPROPERTY_STREAM_RATECAPABILITY,\
769 (Handler),\
770 sizeof(KSRATE_CAPABILITY),\
771 sizeof(KSRATE),\
772 NULL, NULL, 0, NULL, NULL, 0)
773
774#define DEFINE_KSPROPERTY_ITEM_STREAM_RATE(GetHandler, SetHandler)\
775 DEFINE_KSPROPERTY_ITEM(\
776 KSPROPERTY_STREAM_RATE,\
777 (GetHandler),\
778 sizeof(KSPROPERTY),\
779 sizeof(KSRATE),\
780 (SetHandler),\
781 NULL, 0, NULL, NULL, 0)
782
783#define DEFINE_KSPROPERTY_ITEM_STREAM_PIPE_ID(GetHandler, SetHandler)\
784 DEFINE_KSPROPERTY_ITEM(\
785 KSPROPERTY_STREAM_PIPE_ID,\
786 (GetHandler),\
787 sizeof(KSPROPERTY),\
788 sizeof(HANDLE),\
789 (SetHandler),\
790 NULL, 0, NULL, NULL, 0)
791
792/* ===============================================================
793 StreamAllocator
794 Properties/Methods/Events
795*/
796
797#define STATIC_KSPROPSETID_StreamAllocator\
798 0xcf6e4342L, 0xec87, 0x11cf, {0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
799DEFINE_GUIDSTRUCT("cf6e4342-ec87-11cf-a130-0020afd156e4", KSPROPSETID_StreamAllocator);
800#define KSPROPSETID_StreamAllocator DEFINE_GUIDNAMED(KSPROPSETID_StreamAllocator)
801
802typedef enum {
806
807#define KSMETHODSETID_StreamAllocator \
808 0xcf6e4341L, 0xec87, 0x11cf, {0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}
809
810typedef enum {
814
815#define KSEVENTSETID_StreamAllocator
816
817typedef enum {
821
822/* ===============================================================
823 StreamInterface
824 Properties/Methods/Events
825*/
826
827#define KSPROPSETID_StreamInterface \
828 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
829
830typedef enum {
833
834/* ===============================================================
835 Topology
836 Properties/Methods/Events
837*/
838
839#define STATIC_KSPROPSETID_Topology\
840 0x720D4AC0L, 0x7533, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
841DEFINE_GUIDSTRUCT("720D4AC0-7533-11D0-A5D6-28DB04C10000", KSPROPSETID_Topology);
842#define KSPROPSETID_Topology DEFINE_GUIDNAMED(KSPROPSETID_Topology)
843
844typedef enum {
850
851/* ===============================================================
852 Property Sets for audio drivers - TODO
853*/
854
855#define STATIC_KSPROPTYPESETID_General \
856 0x97E99BA0L, 0xBDEA, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}
857DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000", KSPROPTYPESETID_General);
858#define KSPROPTYPESETID_General DEFINE_GUIDNAMED(KSPROPTYPESETID_General)
859
860/*
861 KSPROPERTY_AC3_ALTERNATE_AUDIO
862 KSPROPERTY_AC3_BIT_STREAM_MODE
863 KSPROPERTY_AC3_DIALOGUE_LEVEL
864 KSPROPERTY_AC3_DOWNMIX
865 KSPROPERTY_AC3_ERROR_CONCEALMENT
866 KSPROPERTY_AC3_LANGUAGE_CODE
867 KSPROPERTY_AC3_ROOM_TYPE
868*/
869
870#define KSPROPSETID_Acoustic_Echo_Cancel
871/*
872 KSPROPERTY_AEC_MODE
873 KSPROPERTY_AEC_NOISE_FILL_ENABLE
874 KSPROPERTY_AEC_STATUS
875*/
876
877/*
878 KSPROPERTY_AUDIO_3D_INTERFACE
879 KSPROPERTY_AUDIO_AGC
880 KSPROPERTY_AUDIO_ALGORITHM_INSTANCE
881 KSPROPERTY_AUDIO_BASS
882 KSPROPERTY_AUDIO_BASS_BOOST
883 KSPROPERTY_AUDIO_CHANNEL_CONFIG
884 KSPROPERTY_AUDIO_CHORUS_LEVEL
885 KSPROPERTY_AUDIO_COPY_PROTECTION
886 KSPROPERTY_AUDIO_CPU_RESOURCES
887 KSPROPERTY_AUDIO_DELAY
888 KSPROPERTY_AUDIO_DEMUX_DEST
889 KSPROPERTY_AUDIO_DEV_SPECIFIC
890 KSPROPERTY_AUDIO_DYNAMIC_RANGE
891 KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE
892 KSPROPERTY_AUDIO_EQ_BANDS
893 KSPROPERTY_AUDIO_EQ_LEVEL
894 KSPROPERTY_AUDIO_FILTER_STATE
895 KSPROPERTY_AUDIO_LATENCY
896 KSPROPERTY_AUDIO_LOUDNESS
897 KSPROPERTY_AUDIO_MANUFACTURE_GUID
898 KSPROPERTY_AUDIO_MID
899 KSPROPERTY_AUDIO_MIX_LEVEL_CAPS
900 KSPROPERTY_AUDIO_MIX_LEVEL_TABLE
901 KSPROPERTY_AUDIO_MUTE
902 KSPROPERTY_AUDIO_MUX_SOURCE
903 KSPROPERTY_AUDIO_NUM_EQ_BANDS
904 KSPROPERTY_AUDIO_PEAKMETER
905 KSPROPERTY_AUDIO_POSITION
906 KSPROPERTY_AUDIO_PREFERRED_STATUS
907 KSPROPERTY_AUDIO_PRODUCT_GUID
908 KSPROPERTY_AUDIO_QUALITY
909 KSPROPERTY_AUDIO_REVERB_LEVEL
910 KSPROPERTY_AUDIO_SAMPLING_RATE
911 KSPROPERTY_AUDIO_STEREO_ENHANCE
912 KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY
913 KSPROPERTY_AUDIO_SURROUND_ENCODE
914 KSPROPERTY_AUDIO_TREBLE
915 KSPROPERTY_AUDIO_VOLUMELEVEL
916 KSPROPERTY_AUDIO_WIDE_MODE
917 KSPROPERTY_AUDIO_WIDENESS
918*/
919
920#define KSPROPSETID_AudioGfx
921/*
922 KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID
923 KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID
924*/
925
926#define KSPROPSETID_DirectSound3DBuffer
927/*
928 KSPROPERTY_DIRECTSOUND3DBUFFER_ALL
929 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES
930 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION
931 KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME
932 KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE
933 KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE
934 KSPROPERTY_DIRECTSOUND3DBUFFER_MODE
935 KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION
936 KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY
937*/
938
939#define KSPROPSETID_DirectSound3DListener
940/*
941 KSPROPERTY_DIRECTSOUND3DLISTENER_ALL
942 KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
943 KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH
944 KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR
945 KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR
946 KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION
947 KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION
948 KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR
949 KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY
950*/
951
952#define KSPROPSETID_Hrtf3d
953/*
954 KSPROPERTY_HRTF3D_FILTER_FORMAT
955 KSPROPERTY_HRTF3D_INITIALIZE
956 KSPROPERTY_HRTF3D_PARAMS
957*/
958
959#define KSPROPSETID_Itd3d
960/*
961 KSPROPERTY_ITD3D_PARAMS
962*/
963
964#define KSPROPSETID_TopologyNode
965/*
966 KSPROPERTY_TOPOLOGYNODE_ENABLE
967 KSPROPERTY_TOPOLOGYNODE_RESET
968*/
969
970
971/* ===============================================================
972 Node Types
973*/
974/*
975 KSNODETYPE_3D_EFFECTS
976 KSNODETYPE_ACOUSTIC_ECHO_CANCEL
977 KSNODETYPE_ADC
978 KSNODETYPE_AGC
979 KSNODETYPE_CHORUS
980 KSNODETYPE_DAC
981 KSNODETYPE_DELAY
982 KSNODETYPE_DEMUX
983 KSNODETYPE_DEV_SPECIFIC
984 KSNODETYPE_DMSYNTH
985 KSNODETYPE_DMSYNTH_CAPS
986 KSNODETYPE_DRM_DESCRAMBLE
987 KSNODETYPE_EQUALIZER
988 KSNODETYPE_LOUDNESS
989 KSNODETYPE_MUTE
990 KSNODETYPE_MUX
991 KSNODETYPE_PEAKMETER
992 KSNODETYPE_PROLOGIC_DECODER
993 KSNODETYPE_PROLOGIC_ENCODER
994 KSNODETYPE_REVERB
995 KSNODETYPE_SRC
996 KSNODETYPE_STEREO_ENHANCE
997 KSNODETYPE_STEREO_WIDE
998 KSNODETYPE_SUM
999 KSNODETYPE_SUPERMIX
1000 KSNODETYPE_SWMIDI
1001 KSNODETYPE_SWSYNTH
1002 KSNODETYPE_SYNTHESIZER
1003 KSNODETYPE_TONE
1004 KSNODETYPE_VOLUME
1005*/
1006
1008
1009/* ===============================================================
1010 Method Types
1011*/
1012
1013#define KSMETHOD_TYPE_NONE 0x00000000
1014#define KSMETHOD_TYPE_READ 0x00000001
1015#define KSMETHOD_TYPE_WRITE 0x00000002
1016#define KSMETHOD_TYPE_MODIFY 0x00000003
1017#define KSMETHOD_TYPE_SOURCE 0x00000004
1018#define KSMETHOD_TYPE_SEND 0x00000001
1019#define KSMETHOD_TYPE_SETSUPPORT 0x00000100
1020#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200
1021
1022/* ===============================================================
1023 Property Types
1024*/
1025
1026#define KSPROPERTY_TYPE_GET 0x00000001
1027#define KSPROPERTY_TYPE_SET 0x00000002
1028#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100
1029#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200
1030#define KSPROPERTY_TYPE_RELATIONS 0x00000400
1031#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800
1032#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
1033#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000
1034#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
1035#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
1036#define KSPROPERTY_TYPE_DEFAULT_VALUES 0x00010000
1037
1038/* ===============================================================
1039 Topology Methods/Properties
1040*/
1041
1042#define KSMETHOD_TYPE_TOPOLOGY 0x10000000
1043#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000
1044
1045/*
1046#define DEFINE_KS_GUID(GA,GB,GC,GD,GE,GF,GG,GH,GI,GJ,GK) \
1047 DEFINE_GUID(??, 0x#GA#L, 0xGB, 0xGC, 0xGD, 0xGE, 0xGF, 0xGG, 0xGH, 0xGI, 0xGJ, 0xGK) \
1048 "GA-GB-GC-GDGE-GFGGGHGIGJGK"
1049*/
1050
1051/* ===============================================================
1052 KS Category GUIDs
1053
1054 BRIDGE - 0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1055 CAPTURE - 0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1056 RENDER - 0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1057 MIXER - 0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1058 SPLITTER - 0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1059 DATACOMPRESSOR - 0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1060 DATADECOMPRESSOR - 0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1061 DATATRANSFORM - 0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1062 COMMUNICATIONSTRANSFORM - 0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1063 INTERFACETRANSFORM - 0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1064 MEDIUMTRANSFORM - 0xCF1DDA2EL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1065 FILESYSTEM - 0x760FED5EL, 0x9357, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1066 CLOCK - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1067 PROXY - 0x97EBAACAL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1068 QUALITY - 0x97EBAACBL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1069*/
1070
1071/* ===============================================================
1072 KSNAME GUIDs (defined also as KSSTRING_Xxx L"{...}"
1073
1074 Filter - 0x9b365890L, 0x165f, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
1075 Pin - 0x146F1A80L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1076 Clock - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1077 Allocator - 0x642F5D00L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1078 TopologyNode - 0x0621061AL, 0xEE75, 0x11D0, 0xB9, 0x15, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1079*/
1080
1081/* ===============================================================
1082 Interface GUIDs
1083
1084 Standard - 0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1085 FileIo - 0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1086*/
1087
1088/* ===============================================================
1089 Medium Type GUIDs
1090
1091 Standard - 0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1092*/
1093
1094/* ===============================================================
1095 Property Set GUIDs
1096
1097 General - 0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1098 StreamIo - 0x65D003CAL, 0x1523, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1099 MediaSeeking - 0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
1100 Topology - 0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1101 GM - 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D
1102 Quality - 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1103 Connection - 0x1D58C920L, 0xAC9B, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1104*/
1105
1106/* ===============================================================
1107 StreamAllocator Sets
1108
1109 Event set - 0x75d95571L, 0x073c, 0x11d0, 0xa1, 0x61, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
1110 Method set - 0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
1111 Property set - 0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
1112*/
1113
1114/* ===============================================================
1115 StreamInterface Sets
1116
1117 Property set - 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
1118*/
1119
1120/* ===============================================================
1121 Clock Sets
1122
1123 Property set - 0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1124 Event sets - 0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
1125*/
1126
1127/* ===============================================================
1128 Connection Sets
1129
1130 Event set - 0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00
1131*/
1132
1133/* ===============================================================
1134 Time Format GUIDs
1135
1136 KSTIME_FORMAT_NONE (null guid)
1137 FRAME - 0x7b785570L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
1138 BYTE - 0x7b785571L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
1139 SAMPLE - 0x7b785572L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
1140 FIELD - 0x7b785573L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
1141 MEDIA_TIME - 0x7b785574L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
1142*/
1143
1144/* ===============================================================
1145 Media Type GUIDs
1146
1147 NULL
1148 Stream -
1149 None -
1150
1151 TODO ...
1152*/
1153
1154#define STATIC_KSDATAFORMAT_SPECIFIER_NONE\
1155 0x0F6417D6L, 0xC318, 0x11D0, {0xA4, 0x3F, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
1156DEFINE_GUIDSTRUCT("0F6417D6-C318-11D0-A43F-00A0C9223196", KSDATAFORMAT_SPECIFIER_NONE);
1157#define KSDATAFORMAT_SPECIFIER_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_NONE)
1158
1159/* ===============================================================
1160 KSMEMORY_TYPE_xxx
1161
1162 WILDCARD, DONT_CARE = NULL
1163 SYSTEM - 0x091bb638L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
1164 USER - 0x8cb0fc28L, 0x7893, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
1165 KERNEL_PAGED - 0xd833f8f8L, 0x7894, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
1166 KERNEL_NONPAGED - 0x4a6d5fc4L, 0x7895, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
1167 DEVICE_UNKNOWN - 0x091bb639L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
1168*/
1169
1170/* ===============================================================
1171 Enums
1172 (values have been checked)
1173*/
1174
1175#ifndef _MSC_VER
1176
1177#define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\
1178 MinProperty,\
1179 MinData,\
1180 SetHandler,\
1181 Values, RelationsCount, Relations, SupportHandler,\
1182 SerializedSize)\
1183{\
1184 PropertyId, {(PFNKSHANDLER)GetHandler}, MinProperty, MinData,\
1185 {(PFNKSHANDLER)SetHandler},\
1186 (PKSPROPERTY_VALUES)Values, RelationsCount, (PKSPROPERTY)Relations,\
1187 (PFNKSHANDLER)SupportHandler, (ULONG)SerializedSize\
1188}
1189
1190#else
1191
1192#define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\
1193 MinProperty,\
1194 MinData,\
1195 SetHandler,\
1196 Values, RelationsCount, Relations, SupportHandler,\
1197 SerializedSize)\
1198{\
1199 PropertyId, (PFNKSHANDLER)GetHandler, MinProperty, MinData,\
1200 (PFNKSHANDLER)SetHandler,\
1201 (PKSPROPERTY_VALUES)Values, RelationsCount, (PKSPROPERTY)Relations,\
1202 (PFNKSHANDLER)SupportHandler, (ULONG)SerializedSize\
1203}
1204
1205#endif
1206
1207typedef enum {
1213
1214typedef enum {
1220
1221typedef enum {
1225
1226typedef enum {
1230
1231typedef enum {
1240
1241typedef enum {
1247
1248typedef enum {
1252
1253typedef enum {
1260
1261typedef enum {
1265
1266typedef enum {
1271
1272typedef enum {
1278
1279typedef enum {
1284
1285#if defined(_NTDDK_) && !defined(__wtypes_h__)
1286enum VARENUM {
1287 VT_EMPTY = 0,
1288 VT_NULL = 1,
1289 VT_I2 = 2,
1290 VT_I4 = 3,
1291 VT_R4 = 4,
1292 VT_R8 = 5,
1293 VT_CY = 6,
1294 VT_DATE = 7,
1295 VT_BSTR = 8,
1296 VT_DISPATCH = 9,
1297 VT_ERROR = 10,
1298 VT_BOOL = 11,
1299 VT_VARIANT = 12,
1300 VT_UNKNOWN = 13,
1301 VT_DECIMAL = 14,
1302 VT_I1 = 16,
1303 VT_UI1 = 17,
1304 VT_UI2 = 18,
1305 VT_UI4 = 19,
1306 VT_I8 = 20,
1307 VT_UI8 = 21,
1308 VT_INT = 22,
1309 VT_UINT = 23,
1310 VT_VOID = 24,
1311 VT_HRESULT = 25,
1312 VT_PTR = 26,
1313 VT_SAFEARRAY = 27,
1314 VT_CARRAY = 28,
1315 VT_USERDEFINED = 29,
1316 VT_LPSTR = 30,
1317 VT_LPWSTR = 31,
1318 VT_FILETIME = 64,
1319 VT_BLOB = 65,
1320 VT_STREAM = 66,
1321 VT_STORAGE = 67,
1322 VT_STREAMED_OBJECT = 68,
1323 VT_STORED_OBJECT = 69,
1324 VT_BLOB_OBJECT = 70,
1325 VT_CF = 71,
1326 VT_CLSID = 72,
1327 VT_VECTOR = 0x1000,
1328 VT_ARRAY = 0x2000,
1329 VT_BYREF = 0x4000,
1330 VT_RESERVED = 0x8000,
1331 VT_ILLEGAL = 0xffff,
1332 VT_ILLEGALMASKED = 0xfff,
1333 VT_TYPEMASK = 0xfff
1334};
1335#endif
1336
1337#define STATIC_KSDATAFORMAT_TYPE_WILDCARD STATIC_GUID_NULL
1338#define KSDATAFORMAT_TYPE_WILDCARD GUID_NULL
1339
1340#define STATIC_KSDATAFORMAT_SUBTYPE_WILDCARD STATIC_GUID_NULL
1341#define KSDATAFORMAT_SUBTYPE_WILDCARD GUID_NULL
1342
1343#define STATIC_KSDATAFORMAT_SPECIFIER_WILDCARD STATIC_GUID_NULL
1344#define KSDATAFORMAT_SPECIFIER_WILDCARD GUID_NULL
1345
1346/* ===============================================================
1347 Framing
1348*/
1349
1350typedef struct {
1355
1356typedef struct {
1361
1362typedef struct {
1374
1375typedef struct {
1380
1381/* ===============================================================
1382 Priorities
1383*/
1384
1385#define KSPRIORITY_LOW 0x00000001
1386#define KSPRIORITY_NORMAL 0x40000000
1387#define KSPRIORITY_HIGH 0x80000000
1388#define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF
1389
1390typedef struct {
1394
1395/* ===============================================================
1396 Dispatch Table
1397 http://www.osronline.com/DDKx/stream/ks-struct_494j.htm
1398*/
1399
1400#if defined(_NTDDK_)
1401
1402typedef struct {
1408 PDRIVER_DISPATCH QuerySecurity;
1409 PDRIVER_DISPATCH SetSecurity;
1410 PFAST_IO_DEVICE_CONTROL FastDeviceIoControl;
1411 PFAST_IO_READ FastRead;
1412 PFAST_IO_WRITE FastWrite;
1413} KSDISPATCH_TABLE, *PKSDISPATCH_TABLE;
1414
1415#define KSCREATE_ITEM_IRP_STORAGE(Irp) (*(PKSOBJECT_CREATE_ITEM*)&(Irp)->Tail.Overlay.DriverContext[0])
1416#define KSEVENT_SET_IRP_STORAGE(Irp) (*(const KSEVENT_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
1417#define KSEVENT_ITEM_IRP_STORAGE(Irp) (*(const KSEVENT_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
1418#define KSEVENT_ENTRY_IRP_STORAGE(Irp) (*(PKSEVENT_ENTRY*)&(Irp)->Tail.Overlay.DriverContext[0])
1419#define KSMETHOD_SET_IRP_STORAGE(Irp) (*(const KSMETHOD_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
1420#define KSMETHOD_ITEM_IRP_STORAGE(Irp) (*(const KSMETHOD_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
1421#define KSMETHOD_TYPE_IRP_STORAGE(Irp) (*(ULONG_PTR*)(&(Irp)->Tail.Overlay.DriverContext[2]))
1422#define KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) (*(PKSPIN_LOCK*)&(Irp)->Tail.Overlay.DriverContext[1])
1423#define KSPROPERTY_SET_IRP_STORAGE(Irp) (*(const KSPROPERTY_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
1424#define KSPROPERTY_ITEM_IRP_STORAGE(Irp) (*(const KSPROPERTY_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
1425#define KSPROPERTY_ATTRIBUTES_IRP_STORAGE(Irp) (*(PKSATTRIBUTE_LIST*)&(Irp)->Tail.Overlay.DriverContext[2])
1426
1428typedef VOID
1429(NTAPI *PFNREFERENCEDEVICEOBJECT)(
1431
1433typedef VOID
1434(NTAPI *PFNDEREFERENCEDEVICEOBJECT)(
1436
1438typedef NTSTATUS
1439(NTAPI *PFNQUERYREFERENCESTRING)(
1442
1443typedef struct {
1445 PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject;
1446 PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject;
1447 PFNQUERYREFERENCESTRING QueryReferenceString;
1448} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE;
1449
1450typedef struct {
1451 KDPC Dpc;
1452 ULONG ReferenceCount;
1453 KSPIN_LOCK AccessLock;
1454} KSDPC_ITEM, *PKSDPC_ITEM;
1455
1456typedef struct {
1457 KSDPC_ITEM DpcItem;
1458 LIST_ENTRY BufferList;
1459} KSBUFFER_ITEM, *PKSBUFFER_ITEM;
1460
1461#endif /* _NTDDK_ */
1462
1463typedef struct {
1471
1472#define DEFINE_KSPROPERTY_ITEM_GENERAL_COMPONENTID(Handler)\
1473 DEFINE_KSPROPERTY_ITEM(\
1474 KSPROPERTY_GENERAL_COMPONENTID,\
1475 (Handler),\
1476 sizeof(KSPROPERTY),\
1477 sizeof(KSCOMPONENTID),\
1478 NULL, NULL, 0, NULL, NULL, 0)
1479
1480/* ===============================================================
1481 Properties
1482*/
1483
1484typedef struct {
1488
1489typedef struct {
1494
1495typedef union {
1496 struct {
1499#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1500 } _SIGNED;
1501#else
1502 };
1503#endif
1504 struct {
1507#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1508 } _UNSIGNED;
1509#else
1510 };
1511#endif
1513
1514typedef union {
1515 struct {
1518#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1519 } _SIGNED64;
1520#else
1521 };
1522#endif
1523 struct {
1524#if defined(_NTDDK_)
1525 ULONGLONG UnsignedMinimum;
1526 ULONGLONG UnsignedMaximum;
1527#else
1530#endif
1531#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ )
1532 } _UNSIGNED64;
1533#else
1534 };
1535#endif
1537
1538typedef struct {
1545
1546typedef struct {
1552
1553typedef struct {
1557
1558#define KSPROPERTY_MEMBER_RANGES 0x00000001
1559#define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002
1560#define KSPROPERTY_MEMBER_VALUES 0x00000003
1561
1562#define KSPROPERTY_MEMBER_FLAG_DEFAULT 0x00000001
1563#if (NTDDI_VERSION >= NTDDI_WINXP)
1564#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_MULTICHANNEL 0x00000002
1565#define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_UNIFORM 0x00000004
1566#endif
1567
1568typedef struct {
1571 _Field_size_(MembersListCount) const KSPROPERTY_MEMBERSLIST *MembersList;
1573
1574#if defined(_NTDDK_)
1575
1577typedef NTSTATUS
1578(NTAPI *PFNKSCONTEXT_DISPATCH)(
1580 _In_ PIRP Irp);
1581
1583typedef NTSTATUS
1584(NTAPI *PFNKSHANDLER)(
1585 _In_ PIRP Irp,
1588
1589typedef struct {
1591 union {
1592 PFNKSHANDLER GetPropertyHandler;
1593 BOOLEAN GetSupported;
1594 };
1595 ULONG MinProperty;
1596 ULONG MinData;
1597 union {
1598 PFNKSHANDLER SetPropertyHandler;
1599 BOOLEAN SetSupported;
1600 };
1601 const KSPROPERTY_VALUES *Values;
1602 ULONG RelationsCount;
1603 _Field_size_(RelationsCount) const KSPROPERTY *Relations;
1604 PFNKSHANDLER SupportHandler;
1605 ULONG SerializedSize;
1606} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM;
1607
1609typedef BOOLEAN
1610(NTAPI *PFNKSFASTHANDLER)(
1612 _In_reads_bytes_(RequestLength) PKSIDENTIFIER Request,
1613 _In_ ULONG RequestLength,
1617
1618typedef struct {
1620 union {
1621 PFNKSFASTHANDLER GetPropertyHandler;
1622 BOOLEAN GetSupported;
1623 };
1624 union {
1625 PFNKSFASTHANDLER SetPropertyHandler;
1626 BOOLEAN SetSupported;
1627 };
1629} KSFASTPROPERTY_ITEM, *PKSFASTPROPERTY_ITEM;
1630
1631typedef struct {
1632 const GUID *Set;
1633 ULONG PropertiesCount;
1634 _Field_size_(PropertiesCount) const KSPROPERTY_ITEM *PropertyItem;
1635 ULONG FastIoCount;
1636 const KSFASTPROPERTY_ITEM *FastIoTable;
1637} KSPROPERTY_SET, *PKSPROPERTY_SET;
1638
1639#endif /* _NTDDK_ */
1640
1641typedef struct {
1646
1647typedef struct {
1648#if defined(_NTDDK_)
1649 ULONGLONG SteppingDelta;
1650#else
1652#endif
1655
1656/* ===============================================================
1657 Allocator Framing
1658*/
1659
1660typedef struct {
1661 union {
1664 };
1665#if defined(_NTDDK_)
1667#else
1669#endif
1675
1676typedef struct {
1681 KS_FRAMING_ITEM FramingItem[1];
1683
1684#define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER 0x00000001
1685#define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY 0x00000002
1686#define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY 0x00000004
1687#define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE 0x00000008
1688#define KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY 0x80000000
1689
1690#define KSALLOCATOR_OPTIONF_COMPATIBLE 0x00000001
1691#define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY 0x00000002
1692#define KSALLOCATOR_OPTIONF_VALID 0x00000003
1693
1694#define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT 0x00000010
1695#define KSALLOCATOR_FLAG_DEVICE_SPECIFIC 0x00000020
1696#define KSALLOCATOR_FLAG_CAN_ALLOCATE 0x00000040
1697#define KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO 0x00000080
1698
1699/* ===============================================================
1700 Quality
1701*/
1702
1703typedef struct {
1708
1709typedef struct {
1713
1714typedef struct {
1721
1722typedef struct {
1726
1727typedef struct {
1731
1732typedef struct {
1734 union {
1735 struct {
1739 struct {
1743 } SemaphoreHandle;
1744#if defined(_NTDDK_)
1745 struct {
1746 PVOID Event;
1749 } EventObject;
1750 struct {
1751 PVOID Semaphore;
1755 struct {
1756 PKDPC Dpc;
1757 ULONG ReferenceCount;
1759 } Dpc;
1760 struct {
1761 PWORK_QUEUE_ITEM WorkQueueItem;
1762 WORK_QUEUE_TYPE WorkQueueType;
1764 } WorkItem;
1765 struct {
1766 PWORK_QUEUE_ITEM WorkQueueItem;
1767 PKSWORKER KsWorkerObject;
1769 } KsWorkItem;
1770#endif
1771 struct {
1775 };
1777
1778#define KSEVENTF_EVENT_HANDLE 0x00000001
1779#define KSEVENTF_SEMAPHORE_HANDLE 0x00000002
1780#if defined(_NTDDK_)
1781#define KSEVENTF_EVENT_OBJECT 0x00000004
1782#define KSEVENTF_SEMAPHORE_OBJECT 0x00000008
1783#define KSEVENTF_DPC 0x00000010
1784#define KSEVENTF_WORKITEM 0x00000020
1785#define KSEVENTF_KSWORKITEM 0x00000080
1786#endif
1787
1788
1789#define KSEVENT_TYPE_ENABLE 0x00000001
1790#define KSEVENT_TYPE_ONESHOT 0x00000002
1791#define KSEVENT_TYPE_ENABLEBUFFERED 0x00000004
1792#define KSEVENT_TYPE_SETSUPPORT 0x00000100
1793#define KSEVENT_TYPE_BASICSUPPORT 0x00000200
1794#define KSEVENT_TYPE_QUERYBUFFER 0x00000400
1795
1796#define KSEVENT_TYPE_TOPOLOGY 0x10000000
1797
1798typedef struct {
1801 union {
1804 };
1809
1810#define KSRELATIVEEVENT_FLAG_HANDLE 0x00000001
1811#define KSRELATIVEEVENT_FLAG_POINTER 0x00000002
1812
1813/* ===============================================================
1814 Timing
1815*/
1816
1817typedef struct {
1821
1822typedef struct {
1827
1828typedef struct {
1832
1833typedef struct {
1838
1839typedef struct {
1843
1844typedef struct {
1849
1850/* ===============================================================
1851 Clocks
1852*/
1853
1855
1856typedef struct {
1859
1860#if defined(_NTDDK_)
1861
1863typedef LONGLONG
1864(FASTCALL *PFNKSCLOCK_GETTIME)(
1866
1868typedef LONGLONG
1869(FASTCALL *PFNKSCLOCK_CORRELATEDTIME)(
1871 _Out_ PLONGLONG SystemTime);
1872
1873typedef struct {
1874 PFNKSCLOCK_GETTIME GetTime;
1875 PFNKSCLOCK_GETTIME GetPhysicalTime;
1876 PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime;
1877 PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime;
1878} KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE;
1879
1880#define DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(Handler)\
1881 DEFINE_KSPROPERTY_ITEM(\
1882 KSPROPERTY_CLOCK_TIME,\
1883 (Handler),\
1884 sizeof(KSPROPERTY),\
1885 sizeof(LONGLONG),\
1886 NULL, NULL, 0, NULL, NULL, 0)
1887
1888#define DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(Handler)\
1889 DEFINE_KSPROPERTY_ITEM(\
1890 KSPROPERTY_CLOCK_PHYSICALTIME,\
1891 (Handler),\
1892 sizeof(KSPROPERTY),\
1893 sizeof(LONGLONG),\
1894 NULL, NULL, 0, NULL, NULL, 0)
1895
1896#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(Handler)\
1897 DEFINE_KSPROPERTY_ITEM(\
1898 KSPROPERTY_CLOCK_CORRELATEDTIME,\
1899 (Handler),\
1900 sizeof(KSPROPERTY),\
1901 sizeof(KSCORRELATED_TIME),\
1902 NULL, NULL, 0, NULL, NULL, 0)
1903
1904#define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(Handler)\
1905 DEFINE_KSPROPERTY_ITEM(\
1906 KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,\
1907 (Handler),\
1908 sizeof(KSPROPERTY),\
1909 sizeof(KSCORRELATED_TIME),\
1910 NULL, NULL, 0, NULL, NULL, 0)
1911
1912#define DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(Handler)\
1913 DEFINE_KSPROPERTY_ITEM(\
1914 KSPROPERTY_CLOCK_RESOLUTION,\
1915 (Handler),\
1916 sizeof(KSPROPERTY),\
1917 sizeof(KSRESOLUTION),\
1918 NULL, NULL, 0, NULL, NULL, 0)
1919
1920#define DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(Handler)\
1921 DEFINE_KSPROPERTY_ITEM(\
1922 KSPROPERTY_CLOCK_STATE,\
1923 (Handler),\
1924 sizeof(KSPROPERTY),\
1925 sizeof(KSSTATE),\
1926 NULL, NULL, 0, NULL, NULL, 0)
1927
1928#define DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(Handler)\
1929 DEFINE_KSPROPERTY_ITEM(\
1930 KSPROPERTY_CLOCK_FUNCTIONTABLE,\
1931 (Handler),\
1932 sizeof(KSPROPERTY),\
1933 sizeof(KSCLOCK_FUNCTIONTABLE),\
1934 NULL, NULL, 0, NULL, NULL, 0)
1935
1936#define DEFINE_KSPROPERTY_CLOCKSET(ClockSet,\
1937 PropTime, PropPhysicalTime,\
1938 PropCorrelatedTime, PropCorrelatedPhysicalTime,\
1939 PropResolution, PropState, PropFunctionTable)\
1940DEFINE_KSPROPERTY_TABLE(ClockSet) {\
1941 DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(PropTime),\
1942 DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(PropPhysicalTime),\
1943 DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(PropCorrelatedTime),\
1944 DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(PropCorrelatedPhysicalTime),\
1945 DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(PropResolution),\
1946 DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(PropState),\
1947 DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(PropFunctionTable)\
1948}
1949
1950/* ===============================================================
1951 Objects ??? SORT ME!
1952*/
1953
1954#define KSCREATE_ITEM_SECURITYCHANGED 0x1
1955#define KSCREATE_ITEM_WILDCARD 0x2
1956#define KSCREATE_ITEM_NOPARAMETERS 0x4
1957#define KSCREATE_ITEM_FREEONSTOP 0x8
1958
1959typedef struct {
1961 PVOID Context;
1962 UNICODE_STRING ObjectClass;
1964 ULONG Flags;
1965} KSOBJECT_CREATE_ITEM, *PKSOBJECT_CREATE_ITEM;
1966
1967typedef struct {
1968 ULONG CreateItemsCount;
1969 _Field_size_(CreateItemsCount) PKSOBJECT_CREATE_ITEM CreateItemsList;
1970} KSOBJECT_CREATE, *PKSOBJECT_CREATE;
1971
1972typedef VOID
1973(NTAPI *PFNKSITEMFREECALLBACK)(
1974 _In_ PKSOBJECT_CREATE_ITEM CreateItem);
1975
1976#endif /* _NTDDK_ */
1977
1978typedef struct {
1982
1983typedef struct {
1988
1989typedef struct {
1993
1994/* ===============================================================
1995 Methods
1996*/
1997
1998#if defined(_NTDDK_)
1999
2000typedef struct {
2002 union {
2003 PFNKSHANDLER MethodHandler;
2004 BOOLEAN MethodSupported;
2005 };
2006 ULONG MinMethod;
2007 ULONG MinData;
2008 PFNKSHANDLER SupportHandler;
2009 ULONG Flags;
2010} KSMETHOD_ITEM, *PKSMETHOD_ITEM;
2011
2012#ifndef _MSC_VER
2013
2014#define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\
2015 MethodHandler,\
2016 MinMethod, MinData, SupportHandler)\
2017{\
2018 MethodId, {(PFNKSHANDLER)MethodHandler}, MinMethod, MinData,\
2019 SupportHandler, Flags\
2020}
2021
2022#else
2023
2024#define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\
2025 MethodHandler,\
2026 MinMethod, MinData, SupportHandler)\
2027{\
2028 MethodId, (PFNKSHANDLER)MethodHandler, MinMethod, MinData,\
2029 SupportHandler, Flags\
2030}
2031
2032#endif
2033
2034typedef struct {
2036 union {
2037 PFNKSFASTHANDLER MethodHandler;
2038 BOOLEAN MethodSupported;
2039 };
2040} KSFASTMETHOD_ITEM, *PKSFASTMETHOD_ITEM;
2041
2042#define DEFINE_KSFASTMETHOD_ITEM(MethodId, MethodHandler)\
2043{\
2044 MethodId, (PFNKSFASTHANDLER)MethodHandler\
2045}
2046
2047typedef struct {
2048 const GUID *Set;
2049 ULONG MethodsCount;
2050 _Field_size_(MethodsCount) const KSMETHOD_ITEM *MethodItem;
2051 ULONG FastIoCount;
2052 _Field_size_(FastIoCount) const KSFASTMETHOD_ITEM *FastIoTable;
2053} KSMETHOD_SET, *PKSMETHOD_SET;
2054
2055#define DEFINE_KSMETHOD_SET(Set,\
2056 MethodsCount,\
2057 MethodItem,\
2058 FastIoCount,\
2059 FastIoTable)\
2060{\
2061 Set,\
2062 MethodsCount,\
2063 MethodItem,\
2064 FastIoCount,\
2065 FastIoTable\
2066}
2067
2068#endif /* _NTDDK_ */
2069
2070/* ===============================================================
2071 Nodes
2072*/
2073
2074typedef struct {
2079
2080typedef struct {
2085
2086typedef struct {
2091
2092typedef struct {
2096
2097/* ===============================================================
2098 Events
2099*/
2100
2101typedef struct _KSEVENT_ENTRY KSEVENT_ENTRY, *PKSEVENT_ENTRY;
2102
2103#if defined(_NTDDK_)
2104
2105typedef NTSTATUS
2106(NTAPI *PFNKSADDEVENT)(
2107 _In_ PIRP Irp,
2108 _In_ PKSEVENTDATA EventData,
2109 _In_ struct _KSEVENT_ENTRY *EventEntry);
2110
2111typedef VOID
2112(NTAPI *PFNKSREMOVEEVENT)(
2114 _In_ struct _KSEVENT_ENTRY *EventEntry);
2115
2116typedef struct {
2117 ULONG EventId;
2118 ULONG DataInput;
2119 ULONG ExtraEntryData;
2120 PFNKSADDEVENT AddHandler;
2121 PFNKSREMOVEEVENT RemoveHandler;
2122 PFNKSHANDLER SupportHandler;
2123} KSEVENT_ITEM, *PKSEVENT_ITEM;
2124
2125typedef struct {
2126 const GUID *Set;
2127 ULONG EventsCount;
2128 _Field_size_(EventsCount) const KSEVENT_ITEM *EventItem;
2129} KSEVENT_SET, *PKSEVENT_SET;
2130
2131struct _KSEVENT_ENTRY {
2132 LIST_ENTRY ListEntry;
2133 PVOID Object;
2134 union {
2135 PKSDPC_ITEM DpcItem;
2136 PKSBUFFER_ITEM BufferItem;
2137 };
2138 PKSEVENTDATA EventData;
2140 const KSEVENT_SET *EventSet;
2141 const KSEVENT_ITEM *EventItem;
2143 ULONG SemaphoreAdjustment;
2145 ULONG Flags;
2146};
2147
2148#endif /* _NTDDK_ */
2149
2150/* ===============================================================
2151 Pins
2152*/
2153
2154#if defined(_NTDDK_)
2155
2156typedef struct _KSPIN KSPIN, *PKSPIN;
2157typedef struct _KSSTREAM_POINTER KSSTREAM_POINTER, *PKSSTREAM_POINTER;
2158typedef struct _KSSTREAM_POINTER_OFFSET KSSTREAM_POINTER_OFFSET, *PKSSTREAM_POINTER_OFFSET;
2159typedef struct _KSMAPPING KSMAPPING, *PKSMAPPING;
2160typedef struct _KSPROCESSPIN KSPROCESSPIN, *PKSPROCESSPIN;
2161
2162#define IOCTL_KS_HANDSHAKE \
2163 CTL_CODE(FILE_DEVICE_KS, 0x007, METHOD_NEITHER, FILE_ANY_ACCESS)
2164
2165typedef struct {
2169} KSHANDSHAKE, *PKSHANDSHAKE;
2170
2172typedef NTSTATUS
2173(NTAPI *PFNKSPINHANDSHAKE)(
2174 _In_ PKSPIN Pin,
2175 _In_ PKSHANDSHAKE In,
2176 _In_ PKSHANDSHAKE Out);
2177
2179typedef void
2180(NTAPI *PFNKSPINPOWER)(
2181 _In_ PKSPIN Pin,
2183
2184typedef void
2185(NTAPI *PFNKSPINFRAMERETURN)(
2186 _In_ PKSPIN Pin,
2192
2194typedef void
2195(NTAPI *PFNKSPINIRPCOMPLETION)(
2196 _In_ PKSPIN Pin,
2197 _In_ PIRP Irp);
2198
2200typedef NTSTATUS
2201(NTAPI *PFNKSPINIRP)(
2202 _In_ PKSPIN Pin,
2203 _In_ PIRP Irp);
2204
2205typedef NTSTATUS
2206(NTAPI *PFNKSPIN)(
2207 _In_ PKSPIN Pin);
2208
2210typedef void
2211(NTAPI *PFNKSPINVOID)(
2212 _In_ PKSPIN Pin);
2213
2215typedef void
2216(NTAPI *PFNKSSTREAMPOINTER)(
2217 _In_ PKSSTREAM_POINTER StreamPointer);
2218
2219typedef struct {
2220 ULONG Count;
2222} KSATTRIBUTE_LIST, *PKSATTRIBUTE_LIST;
2223
2225typedef NTSTATUS
2226(NTAPI *PFNKSPINSETDATAFORMAT)(
2227 _In_ PKSPIN Pin,
2228 _In_opt_ PKSDATAFORMAT OldFormat,
2229 _In_opt_ PKSMULTIPLE_ITEM OldAttributeList,
2230 _In_ const KSDATARANGE* DataRange,
2231 _In_opt_ const KSATTRIBUTE_LIST* AttributeRange);
2232
2234typedef NTSTATUS
2235(NTAPI *PFNKSPINSETDEVICESTATE)(
2236 _In_ PKSPIN Pin,
2237 _In_ KSSTATE ToState,
2238 _In_ KSSTATE FromState);
2239
2240typedef struct _KSCLOCK_DISPATCH KSCLOCK_DISPATCH, *PKSCLOCK_DISPATCH;
2241typedef struct _KSALLOCATOR_DISPATCH KSALLOCATOR_DISPATCH, *PKSALLOCATOR_DISPATCH;
2242
2243typedef struct {
2244 PFNKSPINIRP Create;
2245 PFNKSPINIRP Close;
2246 PFNKSPIN Process;
2247 PFNKSPINVOID Reset;
2248 PFNKSPINSETDATAFORMAT SetDataFormat;
2249 PFNKSPINSETDEVICESTATE SetDeviceState;
2250 PFNKSPIN Connect;
2251 PFNKSPINVOID Disconnect;
2252 const KSCLOCK_DISPATCH* Clock;
2253 const KSALLOCATOR_DISPATCH* Allocator;
2254} KSPIN_DISPATCH, *PKSPIN_DISPATCH;
2255
2257typedef BOOLEAN
2258(NTAPI *PFNKSPINSETTIMER)(
2259 _In_ PKSPIN Pin,
2262 _In_ PKDPC Dpc);
2263
2265typedef BOOLEAN
2266(NTAPI *PFNKSPINCANCELTIMER)(
2267 _In_ PKSPIN Pin,
2269
2271typedef LONGLONG
2272(FASTCALL *PFNKSPINCORRELATEDTIME)(
2273 _In_ PKSPIN Pin,
2274 _Out_ PLONGLONG SystemTime);
2275
2277typedef void
2278(NTAPI *PFNKSPINRESOLUTION)(
2279 _In_ PKSPIN Pin,
2281
2282struct _KSCLOCK_DISPATCH {
2283 PFNKSPINSETTIMER SetTimer;
2284 PFNKSPINCANCELTIMER CancelTimer;
2285 PFNKSPINCORRELATEDTIME CorrelatedTime;
2286 PFNKSPINRESOLUTION Resolution;
2287};
2288
2290typedef NTSTATUS
2291(NTAPI *PFNKSPININITIALIZEALLOCATOR)(
2292 _In_ PKSPIN Pin,
2295
2296typedef PVOID
2297(NTAPI *PFNKSDELETEALLOCATOR)(
2299
2300typedef PVOID
2301(NTAPI *PFNKSDEFAULTALLOCATE)(
2303
2304typedef PVOID
2305(NTAPI *PFNKSDEFAULTFREE)(
2307 _In_ PVOID Buffer);
2308
2309struct _KSALLOCATOR_DISPATCH {
2310 PFNKSPININITIALIZEALLOCATOR InitializeAllocator;
2311 PFNKSDELETEALLOCATOR DeleteAllocator;
2312 PFNKSDEFAULTALLOCATE Allocate;
2313 PFNKSDEFAULTFREE Free;
2314};
2315
2316typedef struct KSAUTOMATION_TABLE_ {
2317 ULONG PropertySetsCount;
2318 ULONG PropertyItemSize;
2319 _Field_size_bytes_(PropertySetsCount * PropertyItemSize) const KSPROPERTY_SET *PropertySets;
2320 ULONG MethodSetsCount;
2321 ULONG MethodItemSize;
2322 _Field_size_bytes_(MethodSetsCount * MethodItemSize) const KSMETHOD_SET *MethodSets;
2323 ULONG EventSetsCount;
2324 ULONG EventItemSize;
2325 _Field_size_bytes_(EventSetsCount * EventItemSize) const KSEVENT_SET *EventSets;
2326#if !defined(_WIN64)
2328#endif
2329} KSAUTOMATION_TABLE, *PKSAUTOMATION_TABLE;
2330
2331typedef struct {
2332 ULONG InterfacesCount;
2333 _Field_size_(InterfacesCount) const KSPIN_INTERFACE *Interfaces;
2334 ULONG MediumsCount;
2335 _Field_size_(MediumsCount) const KSPIN_MEDIUM *Mediums;
2336 ULONG DataRangesCount;
2337 _Field_size_(DataRangesCount) const PKSDATARANGE *DataRanges;
2339 KSPIN_COMMUNICATION Communication;
2340 const GUID *Category;
2341 const GUID *Name;
2342 union {
2344 struct {
2345 ULONG ConstrainedDataRangesCount;
2346 _Field_size_(ConstrainedDataRangesCount) PKSDATARANGE *ConstrainedDataRanges;
2347 };
2348 };
2349} KSPIN_DESCRIPTOR, *PKSPIN_DESCRIPTOR;
2350
2353typedef NTSTATUS
2354(NTAPI *PFNKSINTERSECTHANDLER)(
2355 _In_ PIRP Irp,
2357 _In_ PKSDATARANGE DataRange,
2359
2362typedef NTSTATUS
2363(NTAPI *PFNKSINTERSECTHANDLEREX)(
2365 _In_ PIRP Irp,
2367 _In_ PKSDATARANGE DataRange,
2368 _In_ PKSDATARANGE MatchingDataRange,
2369 _In_ ULONG DataBufferSize,
2370 _Out_writes_bytes_to_opt_(DataBufferSize, *DataSize) PVOID Data,
2372
2373typedef struct {
2374 const KSPIN_DISPATCH* Dispatch;
2375 const KSAUTOMATION_TABLE* AutomationTable;
2376 KSPIN_DESCRIPTOR PinDescriptor;
2377 ULONG Flags;
2378 ULONG InstancesPossible;
2379 ULONG InstancesNecessary;
2381 PFNKSINTERSECTHANDLEREX IntersectHandler;
2382} KSPIN_DESCRIPTOR_EX, *PKSPIN_DESCRIPTOR_EX;
2383
2384#define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001
2385#define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002
2386#define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004
2387#define KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES 0x00000008
2388#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
2389#define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000
2390#endif
2391
2392#define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING
2393#define KSPIN_FLAG_CRITICAL_PROCESSING KSFILTER_FLAG_CRITICAL_PROCESSING
2394#define KSPIN_FLAG_HYPERCRITICAL_PROCESSING KSFILTER_FLAG_HYPERCRITICAL_PROCESSING
2395
2396#define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING 0x00000008
2397#define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING 0x00000010
2398#define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL 0x00000020
2399#define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING 0x00000040
2400#define KSPIN_FLAG_ENFORCE_FIFO 0x00000080
2401
2402#define KSPIN_FLAG_GENERATE_MAPPINGS 0x00000100
2403#define KSPIN_FLAG_DISTINCT_TRAILING_EDGE 0x00000200
2404
2405#define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY 0x00010000
2406#define KSPIN_FLAG_SPLITTER 0x00020000
2407#define KSPIN_FLAG_USE_STANDARD_TRANSPORT 0x00040000
2408#define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT 0x00080000
2409#define KSPIN_FLAG_FIXED_FORMAT 0x00100000
2410#define KSPIN_FLAG_GENERATE_EOS_EVENTS 0x00200000
2411
2412#define KSPIN_FLAG_RENDERER (KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY|KSPIN_FLAG_GENERATE_EOS_EVENTS)
2413
2414#define KSPIN_FLAG_IMPLEMENT_CLOCK 0x00400000
2415#define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING 0x00800000
2416#define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE 0x01000000
2417#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
2418#define KSPIN_FLAG_DENY_USERMODE_ACCESS 0x80000000
2419#endif
2420
2421struct _KSPIN {
2422 const KSPIN_DESCRIPTOR_EX *Descriptor;
2423 KSOBJECT_BAG Bag;
2424 PVOID Context;
2425 ULONG Id;
2426 KSPIN_COMMUNICATION Communication;
2427 BOOLEAN ConnectionIsExternal;
2428 KSPIN_INTERFACE ConnectionInterface;
2429 KSPIN_MEDIUM ConnectionMedium;
2430 KSPRIORITY ConnectionPriority;
2431 PKSDATAFORMAT ConnectionFormat;
2432 PKSMULTIPLE_ITEM AttributeList;
2433 ULONG StreamHeaderSize;
2437 KSSTATE ClientState;
2438};
2439
2440#define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler)\
2441 DEFINE_KSPROPERTY_ITEM(\
2442 KSPROPERTY_PIN_CINSTANCES,\
2443 (Handler),\
2444 sizeof(KSP_PIN),\
2445 sizeof(KSPIN_CINSTANCES),\
2446 NULL, NULL, 0, NULL, NULL, 0)
2447
2448#define DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(Handler)\
2449 DEFINE_KSPROPERTY_ITEM(\
2450 KSPROPERTY_PIN_CTYPES,\
2451 (Handler),\
2452 sizeof(KSPROPERTY),\
2453 sizeof(ULONG),\
2454 NULL, NULL, 0, NULL, NULL, 0)
2455
2456#define DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(Handler)\
2457 DEFINE_KSPROPERTY_ITEM(\
2458 KSPROPERTY_PIN_DATAFLOW,\
2459 (Handler),\
2460 sizeof(KSP_PIN),\
2461 sizeof(KSPIN_DATAFLOW),\
2462 NULL, NULL, 0, NULL, NULL, 0)
2463
2464#define DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(Handler)\
2465 DEFINE_KSPROPERTY_ITEM(\
2466 KSPROPERTY_PIN_DATARANGES,\
2467 (Handler),\
2468 sizeof(KSP_PIN),\
2469 0,\
2470 NULL, NULL, 0, NULL, NULL, 0)
2471
2472#define DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(Handler)\
2473 DEFINE_KSPROPERTY_ITEM(\
2474 KSPROPERTY_PIN_DATAINTERSECTION,\
2475 (Handler),\
2476 sizeof(KSP_PIN) + sizeof(KSMULTIPLE_ITEM),\
2477 0,\
2478 NULL, NULL, 0, NULL, NULL, 0)
2479
2480#define DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(Handler)\
2481 DEFINE_KSPROPERTY_ITEM(\
2482 KSPROPERTY_PIN_INTERFACES,\
2483 (Handler),\
2484 sizeof(KSP_PIN),\
2485 0,\
2486 NULL, NULL, 0, NULL, NULL, 0)
2487
2488#define DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(Handler)\
2489 DEFINE_KSPROPERTY_ITEM(\
2490 KSPROPERTY_PIN_MEDIUMS,\
2491 (Handler),\
2492 sizeof(KSP_PIN),\
2493 0,\
2494 NULL, NULL, 0, NULL, NULL, 0)
2495
2496#define DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(Handler)\
2497 DEFINE_KSPROPERTY_ITEM(\
2498 KSPROPERTY_PIN_COMMUNICATION,\
2499 (Handler),\
2500 sizeof(KSP_PIN),\
2501 sizeof(KSPIN_COMMUNICATION),\
2502 NULL, NULL, 0, NULL, NULL, 0)
2503
2504#define DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(Handler)\
2505 DEFINE_KSPROPERTY_ITEM(\
2506 KSPROPERTY_PIN_GLOBALCINSTANCES,\
2507 (Handler),\
2508 sizeof(KSP_PIN),\
2509 sizeof(KSPIN_CINSTANCES),\
2510 NULL, NULL, 0, NULL, NULL, 0)
2511
2512#define DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(Handler)\
2513 DEFINE_KSPROPERTY_ITEM(\
2514 KSPROPERTY_PIN_NECESSARYINSTANCES,\
2515 (Handler),\
2516 sizeof(KSP_PIN),\
2517 sizeof(ULONG),\
2518 NULL, NULL, 0, NULL, NULL, 0)
2519
2520#define DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(Handler)\
2521 DEFINE_KSPROPERTY_ITEM(\
2522 KSPROPERTY_PIN_PHYSICALCONNECTION,\
2523 (Handler),\
2524 sizeof(KSP_PIN),\
2525 0,\
2526 NULL, NULL, 0, NULL, NULL, 0)
2527
2528#define DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(Handler)\
2529 DEFINE_KSPROPERTY_ITEM(\
2530 KSPROPERTY_PIN_CATEGORY,\
2531 (Handler),\
2532 sizeof(KSP_PIN),\
2533 sizeof(GUID),\
2534 NULL, NULL, 0, NULL, NULL, 0)
2535
2536#define DEFINE_KSPROPERTY_ITEM_PIN_NAME(Handler)\
2537 DEFINE_KSPROPERTY_ITEM(\
2538 KSPROPERTY_PIN_NAME,\
2539 (Handler),\
2540 sizeof(KSP_PIN),\
2541 0,\
2542 NULL, NULL, 0, NULL, NULL, 0)
2543
2544#define DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(Handler)\
2545 DEFINE_KSPROPERTY_ITEM(\
2546 KSPROPERTY_PIN_CONSTRAINEDDATARANGES,\
2547 (Handler),\
2548 sizeof(KSP_PIN),\
2549 0,\
2550 NULL, NULL, 0, NULL, NULL, 0)
2551
2552#define DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(Handler)\
2553 DEFINE_KSPROPERTY_ITEM(\
2554 KSPROPERTY_PIN_PROPOSEDATAFORMAT,\
2555 NULL,\
2556 sizeof(KSP_PIN),\
2557 sizeof(KSDATAFORMAT),\
2558 (Handler), NULL, 0, NULL, NULL, 0)
2559
2560#define DEFINE_KSPROPERTY_PINSET(PinSet,\
2561 PropGeneral, PropInstances, PropIntersection)\
2562DEFINE_KSPROPERTY_TABLE(PinSet) {\
2563 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
2564 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
2565 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
2566 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
2567 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
2568 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
2569 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
2570 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
2571 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
2572 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral)\
2573}
2574
2575#define DEFINE_KSPROPERTY_PINSETCONSTRAINED(PinSet,\
2576 PropGeneral, PropInstances, PropIntersection)\
2577DEFINE_KSPROPERTY_TABLE(PinSet) {\
2578 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
2579 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
2580 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
2581 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
2582 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
2583 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
2584 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
2585 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
2586 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
2587 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
2588 DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)\
2589}
2590
2591typedef void
2592(NTAPI *PFNKSFREE)(
2593 _In_ PVOID Data);
2594
2595#define DEFINE_KSPROPERTY_TABLE(tablename) \
2596 const KSPROPERTY_ITEM tablename[] =
2597
2598#endif /* _NTDDK_ */
2599
2600typedef struct {
2607
2608/* ===============================================================
2609 Topology
2610*/
2611
2612typedef struct {
2613 ULONG FromNode;
2614 ULONG FromNodePin;
2615 ULONG ToNode;
2616 ULONG ToNodePin;
2618
2619typedef struct {
2621 _Field_size_(CategoriesCount) const GUID *Categories;
2623 _Field_size_(TopologyNodesCount) const GUID *TopologyNodes;
2625 _Field_size_(TopologyConnectionsCount) const KSTOPOLOGY_CONNECTION *TopologyConnections;
2626 _Field_size_(TopologyNodesCount) const GUID *TopologyNodesNames;
2629
2630
2631#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler)\
2632 DEFINE_KSPROPERTY_ITEM(\
2633 KSPROPERTY_TOPOLOGY_CATEGORIES,\
2634 (Handler),\
2635 sizeof(KSPROPERTY),\
2636 0,\
2637 NULL, NULL, 0, NULL, NULL, 0)
2638
2639#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler)\
2640 DEFINE_KSPROPERTY_ITEM(\
2641 KSPROPERTY_TOPOLOGY_NODES,\
2642 (Handler),\
2643 sizeof(KSPROPERTY),\
2644 0,\
2645 NULL, NULL, 0, NULL, NULL, 0)
2646
2647#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler)\
2648 DEFINE_KSPROPERTY_ITEM(\
2649 KSPROPERTY_TOPOLOGY_CONNECTIONS,\
2650 (Handler),\
2651 sizeof(KSPROPERTY),\
2652 0,\
2653 NULL, NULL, 0, NULL, NULL, 0)
2654
2655#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\
2656 DEFINE_KSPROPERTY_ITEM(\
2657 KSPROPERTY_TOPOLOGY_NAME,\
2658 (Handler),\
2659 sizeof(KSP_NODE),\
2660 0,\
2661 NULL, NULL, 0, NULL, NULL, 0)
2662
2663#define DEFINE_KSPROPERTY_TOPOLOGYSET(TopologySet, Handler)\
2664DEFINE_KSPROPERTY_TABLE(TopologySet) {\
2665 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler),\
2666 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler),\
2667 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler),\
2668 DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\
2669}
2670
2671/* ===============================================================
2672 ??? SORT ME
2673*/
2674
2675/* TODO */
2676typedef void* UNKNOWN;
2677
2678typedef PVOID
2680 _In_ PVOID InitialContext,
2683
2684#if defined(_NTDDK_)
2685
2687typedef NTSTATUS
2688(NTAPI *PFNKSALLOCATOR)(
2689 _In_ PIRP Irp,
2691 _In_ BOOLEAN InputOperation);
2692
2695typedef NTSTATUS
2696(NTAPI *PFNKINTERSECTHANDLEREX)(
2698 _In_ PIRP Irp,
2700 _In_ PKSDATARANGE DataRange,
2701 _In_ PKSDATARANGE MatchingDataRange,
2702 _In_ ULONG DataBufferSize,
2703 _Out_writes_bytes_to_opt_(DataBufferSize, *DataSize) PVOID Data,
2705
2706typedef NTSTATUS
2707(NTAPI *PFNALLOCATOR_ALLOCATEFRAME)(
2709 _Outptr_ PVOID *Frame);
2710
2711typedef VOID
2712(NTAPI *PFNALLOCATOR_FREEFRAME)(
2714 _In_ PVOID Frame);
2715
2716typedef struct {
2717 PFNALLOCATOR_ALLOCATEFRAME AllocateFrame;
2718 PFNALLOCATOR_FREEFRAME FreeFrame;
2719} KSSTREAMALLOCATOR_FUNCTIONTABLE, *PKSSTREAMALLOCATOR_FUNCTIONTABLE;
2720
2721#endif /* _NTDDK_ */
2722
2723typedef struct {
2728
2729typedef struct {
2734
2735typedef struct {
2744#ifdef _WIN64
2746#endif
2748
2749#define KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT 0x00000001
2750#define KSSTREAM_HEADER_OPTIONSF_PREROLL 0x00000002
2751#define KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY 0x00000004
2752#define KSSTREAM_HEADER_OPTIONSF_TYPECHANGED 0x00000008
2753#define KSSTREAM_HEADER_OPTIONSF_TIMEVALID 0x00000010
2754#define KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY 0x00000040
2755#define KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE 0x00000080
2756#define KSSTREAM_HEADER_OPTIONSF_DURATIONVALID 0x00000100
2757#define KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 0x00000200
2758#define KSSTREAM_HEADER_OPTIONSF_BUFFEREDTRANSFER 0x00000400
2759#define KSSTREAM_HEADER_OPTIONSF_VRAM_DATA_TRANSFER 0x00000800
2760#define KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA 0x80000000
2761
2762/* ===============================================================
2763 XP / DX8
2764*/
2765
2766#if defined(_NTDDK_)
2767
2768typedef struct _KSGATE KSGATE, *PKSGATE;
2769
2770struct _KSGATE {
2771 LONG Count;
2772 PKSGATE NextGate;
2773};
2774
2775#ifndef _NTOS_
2776
2779PKSGATE
2780NTAPI
2782 _In_ PKSPIN Pin);
2783
2785static
2786__inline
2787void
2788KsGateTurnInputOn(
2789 _In_opt_ PKSGATE Gate)
2790{
2791 while (Gate && (InterlockedIncrement(&Gate->Count) == 1))
2792 {
2793 Gate = Gate->NextGate;
2794 }
2795}
2796
2798static
2799__inline
2800void
2801KsGateTurnInputOff(
2802 _In_opt_ PKSGATE Gate)
2803{
2804 while (Gate && (InterlockedDecrement(&Gate->Count) == 0))
2805 {
2806 Gate = Gate->NextGate;
2807 }
2808}
2809
2811static
2812__inline
2813BOOLEAN
2814KsGateGetStateUnsafe(
2815 _In_ PKSGATE Gate)
2816{
2817 ASSERT(Gate);
2818 return((BOOLEAN)(Gate->Count > 0));
2819}
2820
2822static
2823__inline
2824BOOLEAN
2825KsGateCaptureThreshold(
2826 _In_ PKSGATE Gate)
2827{
2828 BOOLEAN captured;
2829
2830 ASSERT(Gate);
2831
2832 captured = (BOOLEAN)(InterlockedCompareExchange(&Gate->Count,0,1) == 1);
2833
2834 if (captured)
2835 {
2836 KsGateTurnInputOff(Gate->NextGate);
2837 }
2838
2839 return captured;
2840}
2841
2843static
2844__inline
2845void
2846KsGateInitialize(
2847 _In_ PKSGATE Gate,
2848 _In_ LONG InitialCount,
2849 _In_opt_ PKSGATE NextGate,
2850 _In_ BOOLEAN StateToPropagate)
2851{
2852 ASSERT(Gate);
2853 Gate->Count = InitialCount;
2854 Gate->NextGate = NextGate;
2855
2856 if (NextGate)
2857 {
2858 if (InitialCount > 0)
2859 {
2860 if (StateToPropagate)
2861 {
2862 KsGateTurnInputOn(NextGate);
2863 }
2864 }
2865 else
2866 {
2867 if (!StateToPropagate)
2868 {
2869 KsGateTurnInputOff(NextGate);
2870 }
2871 }
2872 }
2873}
2874
2876static
2877__inline
2878void
2879KsGateInitializeAnd(
2880 _In_ PKSGATE AndGate,
2881 _In_opt_ PKSGATE NextOrGate)
2882{
2883 KsGateInitialize(AndGate,1,NextOrGate,TRUE);
2884}
2885
2887static
2888__inline
2889void
2890KsGateInitializeOr(
2891 _In_ PKSGATE OrGate,
2892 _In_opt_ PKSGATE NextAndGate)
2893{
2894 KsGateInitialize(OrGate,0,NextAndGate,FALSE);
2895}
2896
2898static
2899__inline
2900void
2901KsGateAddOnInputToAnd(
2902 _In_ PKSGATE AndGate)
2903{
2904 UNREFERENCED_PARAMETER (AndGate);
2905}
2906
2908static
2909__inline
2910void
2911KsGateAddOffInputToAnd(
2912 _In_ PKSGATE AndGate)
2913{
2914 KsGateTurnInputOff(AndGate);
2915}
2916
2918static
2919__inline
2920void
2921KsGateRemoveOnInputFromAnd(
2922 _In_ PKSGATE AndGate)
2923{
2924 UNREFERENCED_PARAMETER (AndGate);
2925}
2926
2928static
2929__inline
2930void
2931KsGateRemoveOffInputFromAnd(
2932 _In_ PKSGATE AndGate)
2933{
2934 KsGateTurnInputOn(AndGate);
2935}
2936
2938static
2939__inline
2940void
2941KsGateAddOnInputToOr(
2942 _In_ PKSGATE OrGate)
2943{
2944 KsGateTurnInputOn(OrGate);
2945}
2946
2948static
2949__inline
2950void
2951KsGateAddOffInputToOr(
2952 _In_ PKSGATE OrGate)
2953{
2954 UNREFERENCED_PARAMETER (OrGate);
2955}
2956
2958static
2959__inline
2960void
2961KsGateRemoveOnInputFromOr(
2962 _In_ PKSGATE OrGate)
2963{
2964 KsGateTurnInputOff(OrGate);
2965}
2966
2968static
2969__inline
2970void
2971KsGateRemoveOffInputFromOr(
2972 _In_ PKSGATE OrGate)
2973{
2974 UNREFERENCED_PARAMETER (OrGate);
2975}
2976
2978static
2979__inline
2980void
2981KsGateTerminateAnd(
2982 _In_ PKSGATE AndGate)
2983{
2984 ASSERT(AndGate);
2985 if (KsGateGetStateUnsafe(AndGate))
2986 {
2987 KsGateRemoveOnInputFromOr(AndGate->NextGate);
2988 }
2989 else
2990 {
2991 KsGateRemoveOffInputFromOr(AndGate->NextGate);
2992 }
2993}
2994
2996static
2997__inline
2998void
2999KsGateTerminateOr(
3000 _In_ PKSGATE OrGate)
3001{
3002 ASSERT(OrGate);
3003 if (KsGateGetStateUnsafe(OrGate))
3004 {
3005 KsGateRemoveOnInputFromAnd(OrGate->NextGate);
3006 }
3007 else
3008 {
3009 KsGateRemoveOffInputFromAnd(OrGate->NextGate);
3010 }
3011}
3012
3013#endif /* !_NTOS_ */
3014
3015struct _KSMAPPING {
3019};
3020
3021#endif /* _NTDDK_ */
3022
3023typedef enum {
3027
3028typedef struct _KSPROCESSPIN_INDEXENTRY KSPROCESSPIN_INDEXENTRY, *PKSPROCESSPIN_INDEXENTRY;
3029
3031#if defined(_NTDDK_)
3032 union {
3033 PUCHAR Data;
3034 PKSMAPPING Mappings;
3035 };
3036#else
3038#endif
3039#if !defined(_WIN64)
3041#endif
3044};
3045
3046#if defined(_NTDDK_)
3047
3048struct _KSSTREAM_POINTER {
3049 PVOID Context;
3050 PKSPIN Pin;
3051 PKSSTREAM_HEADER StreamHeader;
3052 PKSSTREAM_POINTER_OFFSET Offset;
3053 KSSTREAM_POINTER_OFFSET OffsetIn;
3054 KSSTREAM_POINTER_OFFSET OffsetOut;
3055};
3056
3057struct _KSPROCESSPIN {
3058 PKSPIN Pin;
3059 PKSSTREAM_POINTER StreamPointer;
3060 PKSPROCESSPIN InPlaceCounterpart;
3061 PKSPROCESSPIN DelegateBranch;
3062 PKSPROCESSPIN CopySource;
3063 _Field_size_bytes_(BytesAvailable) PVOID Data;
3064 ULONG BytesAvailable;
3065 ULONG BytesUsed;
3066 ULONG Flags;
3067 BOOLEAN Terminate;
3068};
3069
3070struct _KSPROCESSPIN_INDEXENTRY {
3071 _Field_size_(Count) PKSPROCESSPIN *Pins;
3072 ULONG Count;
3073};
3074
3075#endif /* _NTDDK_ */
3076
3077/* ===============================================================
3078 Device Dispatch
3079*/
3080
3081#if defined(_NTDDK_)
3082
3083typedef struct _KSFILTER_DISPATCH KSFILTER_DISPATCH, *PKSFILTER_DISPATCH;
3084typedef struct _KSDEVICE KSDEVICE, *PKSDEVICE;
3085typedef struct _KSFILTER KSFILTER, *PKSFILTER;
3086typedef struct _KSNODE_DESCRIPTOR KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;
3087typedef struct _KSFILTER_DESCRIPTOR KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR;
3088typedef struct _KSDEVICE_DESCRIPTOR KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR;
3089
3091typedef NTSTATUS
3092(NTAPI *PFNKSDEVICECREATE)(
3093 _In_ PKSDEVICE Device);
3094
3096typedef NTSTATUS
3097(NTAPI *PFNKSDEVICEPNPSTART)(
3098 _In_ PKSDEVICE Device,
3099 _In_ PIRP Irp,
3100 _In_opt_ PCM_RESOURCE_LIST TranslatedResourceList,
3101 _In_opt_ PCM_RESOURCE_LIST UntranslatedResourceList);
3102
3104typedef NTSTATUS
3105(NTAPI *PFNKSDEVICE)(
3106 _In_ PKSDEVICE Device);
3107
3109typedef NTSTATUS
3110(NTAPI *PFNKSDEVICEIRP)(
3111 _In_ PKSDEVICE Device,
3112 _In_ PIRP Irp);
3113
3115typedef VOID
3116(NTAPI *PFNKSDEVICEIRPVOID)(
3117 _In_ PKSDEVICE Device,
3118 _In_ PIRP Irp);
3119
3121typedef NTSTATUS
3122(NTAPI *PFNKSDEVICEQUERYCAPABILITIES)(
3123 _In_ PKSDEVICE Device,
3124 _In_ PIRP Irp,
3126
3128typedef NTSTATUS
3129(NTAPI *PFNKSDEVICEQUERYPOWER)(
3130 _In_ PKSDEVICE Device,
3131 _In_ PIRP Irp,
3132 _In_ DEVICE_POWER_STATE DeviceTo,
3133 _In_ DEVICE_POWER_STATE DeviceFrom,
3134 _In_ SYSTEM_POWER_STATE SystemTo,
3135 _In_ SYSTEM_POWER_STATE SystemFrom,
3137
3139typedef VOID
3140(NTAPI *PFNKSDEVICESETPOWER)(
3141 _In_ PKSDEVICE Device,
3142 _In_ PIRP Irp,
3145
3146typedef struct _KSDEVICE_DISPATCH {
3147 PFNKSDEVICECREATE Add;
3148 PFNKSDEVICEPNPSTART Start;
3149 PFNKSDEVICE PostStart;
3150 PFNKSDEVICEIRP QueryStop;
3151 PFNKSDEVICEIRPVOID CancelStop;
3152 PFNKSDEVICEIRPVOID Stop;
3153 PFNKSDEVICEIRP QueryRemove;
3154 PFNKSDEVICEIRPVOID CancelRemove;
3155 PFNKSDEVICEIRPVOID Remove;
3156 PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities;
3157 PFNKSDEVICEIRPVOID SurpriseRemoval;
3158 PFNKSDEVICEQUERYPOWER QueryPower;
3159 PFNKSDEVICESETPOWER SetPower;
3160 PFNKSDEVICEIRP QueryInterface;
3161} KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH;
3162
3163#if (NTDDI_VERSION >= NTDDI_LONGHORN)
3164#define KSDEVICE_DESCRIPTOR_VERSION_2 (0x110)
3165#define MIN_DEV_VER_FOR_FLAGS (0x110)
3166#endif
3167
3168struct _KSDEVICE {
3169 const KSDEVICE_DESCRIPTOR* Descriptor;
3170 KSOBJECT_BAG Bag;
3171 PVOID Context;
3178};
3179
3180#endif /* _NTDDK_ */
3181
3182/* ===============================================================
3183 Filter Dispatch
3184*/
3185
3186#if defined(_NTDDK_)
3187
3188struct _KSFILTER {
3189 const KSFILTER_DESCRIPTOR* Descriptor;
3190 KSOBJECT_BAG Bag;
3191 PVOID Context;
3192};
3193
3195typedef void
3196(NTAPI *PFNKSFILTERPOWER)(
3197 _In_ PKSFILTER Filter,
3199
3201typedef NTSTATUS
3202(NTAPI *PFNKSFILTERIRP)(
3203 _In_ PKSFILTER Filter,
3204 _In_ PIRP Irp);
3205
3206typedef NTSTATUS
3207(NTAPI *PFNKSFILTERPROCESS)(
3208 _In_ PKSFILTER Filter,
3209 _In_ PKSPROCESSPIN_INDEXENTRY ProcessPinsIndex);
3210
3212typedef NTSTATUS
3213(NTAPI *PFNKSFILTERVOID)(
3214 _In_ PKSFILTER Filter);
3215
3216struct _KSFILTER_DISPATCH {
3217 PFNKSFILTERIRP Create;
3218 PFNKSFILTERIRP Close;
3219 PFNKSFILTERPROCESS Process;
3220 PFNKSFILTERVOID Reset;
3221};
3222
3223struct _KSNODE_DESCRIPTOR {
3224 const KSAUTOMATION_TABLE *AutomationTable;
3225 const GUID *Type;
3226 const GUID *Name;
3227#if !defined(_WIN64)
3229#endif
3230};
3231
3232struct _KSFILTER_DESCRIPTOR {
3233 const KSFILTER_DISPATCH *Dispatch;
3234 const KSAUTOMATION_TABLE *AutomationTable;
3235 ULONG Version;
3236 ULONG Flags;
3237 const GUID *ReferenceGuid;
3238 ULONG PinDescriptorsCount;
3239 ULONG PinDescriptorSize;
3240 _Field_size_bytes_(PinDescriptorsCount * PinDescriptorSize) const KSPIN_DESCRIPTOR_EX *PinDescriptors;
3241 ULONG CategoriesCount;
3242 _Field_size_(CategoriesCount) const GUID *Categories;
3243 ULONG NodeDescriptorsCount;
3244 ULONG NodeDescriptorSize;
3245 _Field_size_bytes_(NodeDescriptorsCount * NodeDescriptorSize) const KSNODE_DESCRIPTOR *NodeDescriptors;
3246 ULONG ConnectionsCount;
3247 _Field_size_(ConnectionsCount) const KSTOPOLOGY_CONNECTION *Connections;
3249};
3250
3251#define KSFILTER_DESCRIPTOR_VERSION ((ULONG)-1)
3252
3253struct _KSDEVICE_DESCRIPTOR {
3254 const KSDEVICE_DISPATCH *Dispatch;
3255 ULONG FilterDescriptorsCount;
3256 _Field_size_(FilterDescriptorsCount) const KSFILTER_DESCRIPTOR * const *FilterDescriptors;
3257 ULONG Version;
3258 ULONG Flags;
3259};
3260
3261struct _KSFILTERFACTORY {
3262 const KSFILTER_DESCRIPTOR* FilterDescriptor;
3263 KSOBJECT_BAG Bag;
3264 PVOID Context;
3265};
3266
3267#define DEFINE_KSFILTER_DESCRIPTOR(descriptor)\
3268 const KSFILTER_DESCRIPTOR descriptor =
3269
3270#define DEFINE_KSFILTER_PIN_DESCRIPTORS(table)\
3271 SIZEOF_ARRAY(table),\
3272 sizeof(table[0]),\
3273 table
3274
3275#define DEFINE_KSFILTER_CATEGORIES(table)\
3276 SIZEOF_ARRAY(table),\
3277 table
3278
3279#define DEFINE_KSFILTER_CATEGORY(category)\
3280 1,\
3281 &(category)
3282
3283#define DEFINE_KSFILTER_CATEGORIES_NULL\
3284 0,\
3285 NULL
3286
3287#define DEFINE_KSFILTER_NODE_DESCRIPTORS(table)\
3288 SIZEOF_ARRAY(table),\
3289 sizeof(table[0]),\
3290 table
3291
3292#define DEFINE_KSFILTER_NODE_DESCRIPTORS_NULL\
3293 0,\
3294 sizeof(KSNODE_DESCRIPTOR),\
3295 NULL
3296
3297#define DEFINE_KSFILTER_CONNECTIONS(table)\
3298 SIZEOF_ARRAY(table),\
3299 table
3300
3301#define DEFINE_KSFILTER_DEFAULT_CONNECTIONS\
3302 0,\
3303 NULL
3304
3305#endif /* _NTDDK_ */
3306
3307/* ===============================================================
3308 Minidriver Callbacks
3309*/
3310
3311#if defined(_NTDDK_)
3312
3313typedef NTSTATUS
3314(NTAPI *KStrMethodHandler)(
3315 IN PIRP Irp,
3317 IN OUT PVOID Data);
3318
3319typedef NTSTATUS
3320(NTAPI *KStrSupportHandler)(
3321 IN PIRP Irp,
3323 IN OUT PVOID Data);
3324
3325#endif
3326
3327/* ===============================================================
3328 Allocator Functions
3329*/
3330
3331#if defined(_NTDDK_)
3332
3336NTAPI
3341
3345NTAPI
3347 _In_ PIRP Irp);
3348
3352NTAPI
3354 _In_ PIRP Irp,
3356
3360NTAPI
3362 _In_ PIRP Irp,
3364 _In_opt_ PFNKSDEFAULTALLOCATE DefaultAllocate,
3365 _In_opt_ PFNKSDEFAULTFREE DefaultFree,
3366 _In_opt_ PFNKSINITIALIZEALLOCATOR InitializeAllocator,
3367 _In_opt_ PFNKSDELETEALLOCATOR DeleteAllocator);
3368
3372NTAPI
3376 _In_ const KSALLOCATOR_FRAMING_EX *PinFraming);
3377
3378#endif /* _NTDDK_ */
3379
3380/* ===============================================================
3381 Clock Functions
3382*/
3383
3384#if defined(_NTDDK_)
3385
3387typedef BOOLEAN
3388(NTAPI *PFNKSSETTIMER)(
3392 _In_ PKDPC Dpc);
3393
3395typedef BOOLEAN
3396(NTAPI *PFNKSCANCELTIMER)(
3399
3400typedef LONGLONG
3401(FASTCALL *PFNKSCORRELATEDTIME)(
3403 _Out_ PLONGLONG SystemTime);
3404
3408NTAPI
3413
3417NTAPI
3419 _In_ PIRP Irp,
3420 _In_ PKSDEFAULTCLOCK DefaultClock);
3421
3425NTAPI
3427 _Out_ PKSDEFAULTCLOCK *DefaultClock);
3428
3432NTAPI
3434 _Out_ PKSDEFAULTCLOCK *DefaultClock,
3436 _In_opt_ PFNKSSETTIMER SetTimer,
3437 _In_opt_ PFNKSCANCELTIMER CancelTimer,
3438 _In_opt_ PFNKSCORRELATEDTIME CorrelatedTime,
3440 _In_ ULONG Flags);
3441
3444VOID
3445NTAPI
3447 _In_ PKSDEFAULTCLOCK DefaultClock);
3448
3452NTAPI
3454 _In_ PIRP Irp,
3456
3459KSSTATE
3460NTAPI
3462 _In_ PKSDEFAULTCLOCK DefaultClock);
3463
3466VOID
3467NTAPI
3469 _In_ PKSDEFAULTCLOCK DefaultClock,
3471
3475NTAPI
3477 _In_ PKSDEFAULTCLOCK DefaultClock);
3478
3481VOID
3482NTAPI
3484 _In_ PKSDEFAULTCLOCK DefaultClock,
3486
3487#endif /* _NTDDK_ */
3488
3489/* ===============================================================
3490 Method Functions
3491*/
3492
3493/* Method sets - TODO: Make into macros! */
3494#if defined(_NTDDK_)
3495
3496#if 0
3497
3498VOID
3499KSMETHOD_SET_IRP_STORAGE(
3500 IN IRP Irp);
3501
3502VOID
3503KSMETHOD_ITEM_IRP_STORAGE(
3504 IN IRP Irp);
3505
3506VOID
3507KSMETHOD_TYPE_IRP_STORAGE(
3508 IN IRP Irp);
3509
3510#endif
3511
3515NTAPI
3516KsMethodHandler(
3517 _In_ PIRP Irp,
3518 _In_ ULONG MethodSetsCount,
3519 _In_reads_(MethodSetsCount) const KSMETHOD_SET* MethodSet);
3520
3524NTAPI
3525KsMethodHandlerWithAllocator(
3526 _In_ PIRP Irp,
3527 _In_ ULONG MethodSetsCount,
3528 _In_reads_(MethodSetsCount) const KSMETHOD_SET* MethodSet,
3529 _In_opt_ PFNKSALLOCATOR Allocator,
3530 _In_opt_ ULONG MethodItemSize);
3531
3534BOOLEAN
3535NTAPI
3538 _In_reads_bytes_(MethodLength) PKSMETHOD UNALIGNED Method,
3539 _In_ ULONG MethodLength,
3543 _In_ ULONG MethodSetsCount,
3544 _In_reads_(MethodSetsCount) const KSMETHOD_SET *MethodSet);
3545
3546#endif /* _NTDDK_ */
3547
3548/* ===============================================================
3549 Property Functions
3550*/
3551
3552#if defined(_NTDDK_)
3553
3557NTAPI
3559 _In_ PIRP Irp,
3560 _In_ ULONG PropertySetsCount,
3561 _In_reads_(PropertySetsCount) const KSPROPERTY_SET *PropertySet);
3562
3566NTAPI
3567KsPropertyHandlerWithAllocator(
3568 _In_ PIRP Irp,
3569 _In_ ULONG PropertySetsCount,
3570 _In_reads_(PropertySetsCount) const KSPROPERTY_SET* PropertySet,
3571 _In_opt_ PFNKSALLOCATOR Allocator,
3572 _In_opt_ ULONG PropertyItemSize);
3573
3577NTAPI
3582
3585BOOLEAN
3586NTAPI
3590 _In_ ULONG PropertyLength,
3594 _In_ ULONG PropertySetsCount,
3595 _In_reads_(PropertySetsCount) const KSPROPERTY_SET *PropertySet);
3596
3597#endif /* _NTDDK_ */
3598
3599/* ===============================================================
3600 Event Functions
3601*/
3602
3603#if defined(_NTDDK_)
3604
3605#define KSPROBE_STREAMREAD 0x00000000
3606#define KSPROBE_STREAMWRITE 0x00000001
3607#define KSPROBE_ALLOCATEMDL 0x00000010
3608#define KSPROBE_PROBEANDLOCK 0x00000020
3609#define KSPROBE_SYSTEMADDRESS 0x00000040
3610#define KSPROBE_MODIFY 0x00000200
3611#define KSPROBE_STREAMWRITEMODIFY (KSPROBE_MODIFY | KSPROBE_STREAMWRITE)
3612#define KSPROBE_ALLOWFORMATCHANGE 0x00000080
3613
3614#define KSSTREAM_READ KSPROBE_STREAMREAD
3615#define KSSTREAM_WRITE KSPROBE_STREAMWRITE
3616#define KSSTREAM_PAGED_DATA 0x00000000
3617#define KSSTREAM_NONPAGED_DATA 0x00000100
3618#define KSSTREAM_SYNCHRONOUS 0x00001000
3619#define KSSTREAM_FAILUREEXCEPTION 0x00002000
3620
3622typedef BOOLEAN
3623(NTAPI *PFNKSGENERATEEVENTCALLBACK)(
3625 _In_ PKSEVENT_ENTRY EventEntry);
3626
3629NTAPI
3631 _In_ PKSEVENT_ENTRY EntryEvent);
3632
3635void
3636NTAPI
3639 _In_opt_ const GUID *EventSet,
3640 _In_ ULONG EventId,
3643 _In_opt_ PFNKSGENERATEEVENTCALLBACK CallBack,
3645
3649NTAPI
3650KsEnableEventWithAllocator(
3651 _In_ PIRP Irp,
3652 _In_ ULONG EventSetsCount,
3653 _In_reads_(EventSetsCount) const KSEVENT_SET* EventSet,
3654 _Inout_opt_ PLIST_ENTRY EventsList,
3655 _In_opt_ KSEVENTS_LOCKTYPE EventsFlags,
3656 _In_opt_ PVOID EventsLock,
3657 _In_opt_ PFNKSALLOCATOR Allocator,
3658 _In_opt_ ULONG EventItemSize);
3659
3662NTAPI
3664 _In_ PKSEVENT_ENTRY EventEntry,
3667
3671NTAPI
3673 _In_ PIRP Irp,
3674 _In_ ULONG EventSetsCount,
3675 _In_reads_(EventSetsCount) KSEVENT_SET *EventSet,
3676 _Inout_opt_ PLIST_ENTRY EventsList,
3677 _In_opt_ KSEVENTS_LOCKTYPE EventsFlags,
3678 _In_opt_ PVOID EventsLock);
3679
3682VOID
3683NTAPI
3685 _In_ PKSEVENT_ENTRY EventEntry);
3686
3690NTAPI
3692 _In_ PIRP Irp,
3693 _Inout_ PLIST_ENTRY EventsList,
3694 _In_ KSEVENTS_LOCKTYPE EventsFlags,
3695 _In_ PVOID EventsLock);
3696
3699VOID
3700NTAPI
3703 _Inout_ PLIST_ENTRY EventsList,
3704 _In_ KSEVENTS_LOCKTYPE EventsFlags,
3705 _In_ PVOID EventsLock);
3706
3707/* ===============================================================
3708 Topology Functions
3709*/
3710
3714NTAPI
3716 _In_ PIRP Irp,
3717 _In_ PKSTOPOLOGY Topology,
3719
3723NTAPI
3725 _In_ HANDLE ParentHandle,
3729
3733NTAPI
3735 _In_ PIRP Irp,
3738 _In_ const KSTOPOLOGY *Topology);
3739
3740/* ===============================================================
3741 Connectivity Functions
3742*/
3743
3747NTAPI
3749 _In_ HANDLE FilterHandle,
3753
3757NTAPI
3759 _In_ PIRP Irp,
3760 _In_ ULONG DescriptorsCount,
3761 _In_reads_(DescriptorsCount) KSPIN_DESCRIPTOR *Descriptor,
3763
3767NTAPI
3769 _In_ PIRP Irp,
3772 _In_ ULONG DescriptorsCount,
3773 _In_reads_(DescriptorsCount) const KSPIN_DESCRIPTOR *Descriptor);
3774
3779NTAPI
3781 _In_ PIRP Irp,
3784 _In_ ULONG DescriptorsCount,
3785 _In_reads_(DescriptorsCount) const KSPIN_DESCRIPTOR *Descriptor,
3786 _In_ PFNKSINTERSECTHANDLER IntersectHandler);
3787
3792NTAPI
3794 _In_ PIRP Irp,
3797 _In_ ULONG DescriptorsCount,
3798 _In_reads_bytes_(DescriptorsCount * DescriptorSize) const KSPIN_DESCRIPTOR *Descriptor,
3800 _In_opt_ PFNKSINTERSECTHANDLEREX IntersectHandler,
3801 _In_opt_ PVOID HandlerContext);
3802
3805PKSFILTER
3806NTAPI
3808 _In_ PKSPIN Pin);
3809
3812PKSPIN
3813NTAPI
3815 _In_ PKSPIN Pin);
3816
3819PKSSTREAM_POINTER
3820NTAPI
3822 _In_ PKSPIN Pin,
3824
3828NTAPI
3830 _In_ PKSSTREAM_POINTER StreamPointer,
3832);
3833
3836void
3837NTAPI
3839 _In_ PKSSTREAM_POINTER StreamPointer
3840);
3841
3845NTAPI
3847 _In_ PKSSTREAM_POINTER StreamPointer,
3848 _In_opt_ PFNKSSTREAMPOINTER CancelCallback,
3850 _Out_ PKSSTREAM_POINTER* CloneStreamPointer
3851);
3852
3853
3854/* Does this belong here? */
3855
3859NTAPI
3861 _In_ PIRP Irp,
3862 _In_ ULONG DataItemsCount,
3863 _In_ ULONG DataItemSize,
3864 _In_reads_bytes_(DataItemsCount * DataItemSize) const VOID *DataItems);
3865
3866/* ===============================================================
3867 IRP Helper Functions
3868*/
3869
3871typedef NTSTATUS
3872(NTAPI *PFNKSIRPLISTCALLBACK)(
3873 _In_ PIRP Irp,
3875
3879NTAPI
3881 _In_ PIRP Irp,
3882 _Out_ KSRESET *ResetValue);
3883
3886VOID
3887NTAPI
3889 _Inout_ PLIST_ENTRY QueueHead,
3891 _In_ PIRP Irp,
3892 _In_ KSLIST_ENTRY_LOCATION ListLocation,
3893 _In_opt_ PDRIVER_CANCEL DriverCancel);
3894
3898NTAPI
3903 _In_ PWSTR ObjectClass,
3905
3909NTAPI
3914 _In_ PWSTR ObjectClass,
3916
3920NTAPI
3923 _In_ ULONG ItemsCount,
3924 _In_reads_opt_(ItemsCount) PKSOBJECT_CREATE_ITEM ItemsList);
3925
3929NTAPI
3932 _In_ ULONG ExtraSize,
3933 _Out_ PVOID *ExtraBuffer);
3934
3938NTAPI
3941 _In_ PKSOBJECT_CREATE_ITEM CreateItem,
3942 _In_ BOOLEAN AllocateEntry,
3943 _In_opt_ PFNKSITEMFREECALLBACK ItemFreeCallback);
3944
3948NTAPI
3951 _In_ ULONG ItemsCount,
3952 _In_reads_opt_(ItemsCount) PKSOBJECT_CREATE_ITEM ItemsList,
3953 _In_ PIRP Irp,
3954 _In_ KSDISPATCH_TABLE *Table);
3955
3958VOID
3959NTAPI
3961 _Inout_ PLIST_ENTRY QueueHead,
3963
3966VOID
3967NTAPI
3970 _In_ PIRP Irp);
3971
3975NTAPI
3978 _In_ PIRP Irp);
3979
3982BOOLEAN
3983NTAPI
3993 _In_ PDEVICE_OBJECT DeviceObject); /* always return false */
3994
3997BOOLEAN
3998NTAPI
4007 _In_ PDEVICE_OBJECT DeviceObject); /* always return false */
4008
4009/* This function does the same as the above */
4010#define KsDispatchFastWriteFailure KsDispatchFastReadFailure
4011
4015NTAPI
4018 _In_ PIRP Irp);
4019
4023NTAPI
4026 _In_ PIRP Irp);
4027
4031NTAPI
4033 _In_ PIRP Irp,
4034 _In_ PFNKSHANDLER Handler);
4035
4039NTAPI
4041 _In_ PIRP Irp,
4042 _In_ PFNKSHANDLER Handler);
4043
4047NTAPI
4050 _In_ PIRP Irp,
4052 _In_ KSSTACK_USE StackUse);
4053
4057NTAPI
4059 _In_ PIRP Irp,
4061 _In_ BOOLEAN ReuseStackLocation);
4062
4065VOID
4066NTAPI
4069
4072VOID
4073NTAPI
4075 _In_ PVOID Header);
4076
4079NTAPI
4080KsGetChildCreateParameter(
4081 _In_ PIRP Irp,
4082 _Out_ PVOID *CreateParameter);
4083
4087NTAPI
4090 _In_ PKSPIN_LOCK SourceLock,
4091 _Inout_ PLIST_ENTRY DestinationList,
4092 _In_opt_ PKSPIN_LOCK DestinationLock,
4093 _In_ KSLIST_ENTRY_LOCATION ListLocation,
4094 _In_ PFNKSIRPLISTCALLBACK ListCallback,
4096
4100NTAPI
4103 _In_ ULONG ProbeFlags,
4104 _In_ ULONG HeaderSize);
4105
4109NTAPI
4115
4119NTAPI
4122
4125PKSOBJECT_CREATE_ITEM
4126NTAPI
4129
4133NTAPI
4137 _In_opt_ PVOID PortContext,
4142 _In_ KPROCESSOR_MODE RequestorMode);
4143
4146VOID
4147NTAPI
4149 _In_ PKSDEVICE);
4150
4153VOID
4154NTAPI
4156 _In_ PIRP Irp,
4157 _In_opt_ PDRIVER_CANCEL DriverCancel);
4158
4161PIRP
4162NTAPI
4164 _Inout_ PLIST_ENTRY QueueHead,
4166 _In_ KSLIST_ENTRY_LOCATION ListLocation,
4167 _In_ KSIRP_REMOVAL_OPERATION RemovalOperation);
4168
4171VOID
4172NTAPI
4174 _In_ PIRP Irp);
4175
4179NTAPI
4185
4189NTAPI
4193
4198NTAPI
4202 _In_opt_ PVOID PortContext,
4205 _In_opt_ KSCOMPLETION_INVOCATION CompletionInvocationFlags,
4207 _Inout_updates_bytes_(Length) PVOID StreamHeaders,
4210 _In_ KPROCESSOR_MODE RequestorMode);
4211
4214VOID
4215NTAPI
4217 _In_ PKSSTREAM_POINTER StreamPointer,
4218 _In_ BOOLEAN Eject);
4219
4223NTAPI
4225 _In_ PKSSTREAM_POINTER StreamPointer,
4226 _In_ ULONG InUsed,
4227 _In_ ULONG OutUsed,
4228 _In_ BOOLEAN Eject);
4229
4234NTAPI
4236 _In_ PKSSTREAM_POINTER StreamPointer);
4237
4240VOID
4241NTAPI
4243 _In_ PKSSTREAM_POINTER StreamPointer,
4244 _In_ ULONG InUsed,
4245 _In_ ULONG OutUsed,
4246 _In_ BOOLEAN Eject
4247 );
4248
4249
4253NTAPI
4257 _In_opt_ PVOID PortContext,
4262 _In_ KPROCESSOR_MODE RequestorMode);
4263
4266NTAPI
4269 _In_ PIRP Irp);
4270
4271/* ===============================================================
4272 Worker Management Functions
4273*/
4274
4278NTAPI
4280 _In_ WORK_QUEUE_TYPE WorkQueueType,
4281 _Out_ PKSWORKER* Worker);
4282
4285VOID
4286NTAPI
4288 _In_ PKSWORKER Worker);
4289
4293NTAPI
4295 _In_ WORK_QUEUE_TYPE WorkQueueType,
4296 _In_ PWORK_QUEUE_ITEM CountedWorkItem,
4297 _Out_ PKSWORKER *Worker);
4298
4301ULONG
4302NTAPI
4304 _In_ PKSWORKER Worker);
4305
4308ULONG
4309NTAPI
4311 _In_ PKSWORKER Worker);
4312
4316NTAPI
4318 _In_ PKSWORKER Worker,
4320
4321/* ===============================================================
4322 Resources / Images
4323*/
4324
4328NTAPI
4330 _In_ PVOID ImageBase,
4332 _In_ ULONG_PTR ResourceName,
4333 _In_ ULONG ResourceType,
4335 _Out_opt_ PULONG ResourceSize);
4336
4340NTAPI
4342 _In_ HANDLE RegKey,
4346
4350NTAPI
4357
4358/* ===============================================================
4359 Misc. Helper Functions
4360*/
4361
4364PVOID
4365NTAPI
4367 _In_ PVOID Object);
4368
4372NTAPI
4375 _In_ PKSPIN_MEDIUM Medium,
4376 _In_ ULONG PinDirection);
4377
4380NTAPI
4383 _In_ PIRP Irp);
4384
4387VOID
4388NTAPI
4391 _In_ PDEVICE_OBJECT PnpDeviceObject,
4392 _In_ PDEVICE_OBJECT BaseDevice);
4393
4396NTAPI
4399 _In_ PIRP Irp);
4400
4403VOID
4404NTAPI
4407 _In_opt_ PFNKSCONTEXT_DISPATCH PowerDispatch,
4408 _In_opt_ PVOID PowerContext);
4409
4413NTAPI
4416
4419VOID
4420NTAPI
4423
4427NTAPI
4430 _In_ PUNICODE_STRING CreateItem);
4431
4435NTAPI
4439
4442VOID
4443NTAPI
4446
4450NTAPI
4453
4456VOID
4457NTAPI
4460 _In_ BOOLEAN ReuseStackLocation);
4461
4464VOID
4465NTAPI
4469
4472VOID
4473NTAPI
4477
4482NTAPI
4485 _In_ KPROCESSOR_MODE RequestorMode,
4486 _In_ ULONG IoControl,
4487 _In_reads_bytes_(InSize) PVOID InBuffer,
4488 _In_ ULONG InSize,
4490 _In_ ULONG OutSize,
4492
4495PKSPIN
4496NTAPI
4498 _In_ PKSFILTER Filter,
4499 _In_ ULONG PinId);
4500
4504NTAPI
4506 _In_ PKSPIN Pin);
4507
4508#else /* _NTDDK_ */
4509
4510#if !defined( KS_NO_CREATE_FUNCTIONS )
4511
4514DWORD
4515WINAPI
4520
4523DWORD
4524NTAPI
4529
4532DWORD
4533WINAPI
4535 _In_ HANDLE FilterHandle,
4539
4542DWORD
4543WINAPI
4545 _In_ HANDLE ParentHandle,
4549
4550#endif
4551
4552#endif /* _NTDDK_ */
4553
4554/* ===============================================================
4555 AVStream Functions (XP / DirectX 8)
4556 NOT IMPLEMENTED YET
4557 http://www.osronline.com/ddkx/stream/avstream_5q9f.htm
4558*/
4559
4560#if defined(_NTDDK_)
4561
4565NTAPI
4567 _Out_ PKSAUTOMATION_TABLE *AutomationTableAB,
4568 _In_opt_ PKSAUTOMATION_TABLE AutomationTableA,
4569 _In_opt_ PKSAUTOMATION_TABLE AutomationTableB,
4571
4576NTAPI
4580 _In_opt_ const KSDEVICE_DESCRIPTOR *Descriptor);
4581
4582typedef struct _KSFILTERFACTORY KSFILTERFACTORY, *PKSFILTERFACTORY; //FIXME
4583
4587NTAPI
4592 _In_opt_ const KSDEVICE_DESCRIPTOR *Descriptor);
4593
4595typedef void
4596(NTAPI *PFNKSFILTERFACTORYPOWER)(
4597 _In_ PKSFILTERFACTORY FilterFactory,
4599
4604NTAPI
4605_KsEdit(
4606 _In_ KSOBJECT_BAG ObjectBag,
4607 _Inout_ PVOID *PointerToPointerToItem,
4609 _In_ ULONG OldSize,
4610 _In_ ULONG Tag);
4611
4614VOID
4615NTAPI
4617 _In_ PVOID Object);
4618
4621VOID
4622NTAPI
4624 _In_ PKSDEVICE Device);
4625
4629NTAPI
4633
4636VOID
4637NTAPI
4640 _In_ PKSEVENT_ENTRY EventEntry);
4641
4646NTAPI
4648 _In_ KSOBJECT_BAG ObjectBag,
4650 _In_opt_ PFNKSFREE Free);
4651
4654ULONG
4655NTAPI
4657 _In_ KSOBJECT_BAG ObjectBag,
4658 _In_ PVOID Item,
4659 _In_ BOOLEAN Free);
4660
4664NTAPI
4666 _In_ PKSDEVICE Device,
4667 _Out_ KSOBJECT_BAG *ObjectBag);
4668
4671VOID
4672NTAPI
4674 _In_ KSOBJECT_BAG ObjectBag);
4675
4678VOID
4679NTAPI
4681 _In_ PIRP Irp);
4682
4686NTAPI
4688 _In_ KSOBJECT_BAG ObjectBagDestination,
4689 _In_ KSOBJECT_BAG ObjectBagSource);
4690
4694NTAPI
4698 _In_opt_ const KSDEVICE_DESCRIPTOR *Descriptor,
4699 _In_ ULONG ExtensionSize,
4700 _Out_opt_ PKSDEVICE *Device);
4701
4706NTAPI
4709 _In_ const KSFILTER_DESCRIPTOR *Descriptor,
4712 _In_ ULONG CreateItemFlags,
4713 _In_opt_ PFNKSFILTERFACTORYPOWER SleepCallback,
4714 _In_opt_ PFNKSFILTERFACTORYPOWER WakeCallback,
4715 _Out_opt_ PKSFILTERFACTORY *FilterFactory);
4716
4720NTAPI
4722 _In_ PKSFILTERFACTORY FilterFactory,
4723 _In_ BOOLEAN NewState);
4724
4729NTAPI
4731 _In_ PKSFILTERFACTORY FilterFactory,
4732 _In_opt_ const KSFILTER_DESCRIPTOR *FilterDescriptor);
4733
4736PKSPIN
4737NTAPI
4739 _In_ PIRP Irp);
4740
4743PKSFILTER
4744NTAPI
4746 _In_ PIRP Irp);
4747
4751NTAPI
4753 _In_ PIRP Irp,
4754 _In_ PKSEVENTDATA EventData,
4755 _Inout_ PKSEVENT_ENTRY EventEntry);
4756
4760NTAPI
4763 _In_ PIRP Irp);
4764
4768NTAPI
4771 _In_ PIRP Irp);
4772
4775VOID
4776NTAPI
4778 _In_ PKSPIN Pin,
4780
4783VOID
4784NTAPI
4786 _In_ PKSPIN Pin);
4787
4790VOID
4791NTAPI
4793 _In_ PKSPIN Pin);
4794
4797PVOID
4798NTAPI
4800 _In_ PVOID Object);
4801
4803static
4804__inline
4805PKSFILTERFACTORY
4806KsFilterGetParentFilterFactory(
4807 _In_ PKSFILTER Filter)
4808{
4809 return (PKSFILTERFACTORY) KsGetParent((PVOID) Filter);
4810}
4811
4813static
4814__inline
4815PKSDEVICE
4816KsFilterFactoryGetParentDevice(
4817 _In_ PKSFILTERFACTORY FilterFactory)
4818{
4819 return (PKSDEVICE) KsGetParent((PVOID) FilterFactory);
4820}
4821
4822#define KsDeleteFilterFactory(FilterFactory) \
4823 KsFreeObjectCreateItemsByContext( \
4824 *(KSDEVICE_HEADER *)( \
4825 KsFilterFactoryGetParentDevice(FilterFactory)->FunctionalDeviceObject-> \
4826 DeviceExtension), \
4827 FilterFactory)
4828
4831ULONG
4832NTAPI
4834 _In_ PKSDEVICE Device,
4838 _In_ ULONG Length);
4839
4842PVOID
4843NTAPI
4845 _In_ PVOID Object);
4846
4849PKSFILTERFACTORY
4850NTAPI
4851KsDeviceGetFirstChildFilterFactory(
4852 _In_ PKSDEVICE Device);
4853
4854#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
4855
4859NTAPI
4861 _In_ PVOID Object);
4862
4864static
4865__inline
4867KsDeviceGetOuterUnknown(
4868 _In_ PKSDEVICE Device)
4869{
4870 return KsGetOuterUnknown((PVOID) Device);
4871}
4872
4876NTAPI
4877KsDeviceRegisterAggregatedClientUnknown(
4878 _In_ PKSDEVICE Device,
4879 _In_ PUNKNOWN ClientUnknown);
4880
4881#endif
4882
4883#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
4884
4885typedef interface IKsReferenceClock* PIKSREFERENCECLOCK;
4886
4887#undef INTERFACE
4888#define INTERFACE IKsReferenceClock
4889DECLARE_INTERFACE_(IKsReferenceClock,IUnknown)
4890{
4891 DEFINE_ABSTRACT_UNKNOWN() // For C
4892
4894 ) PURE;
4895 STDMETHOD_(LONGLONG,GetPhysicalTime)(THIS
4896 ) PURE;
4897 STDMETHOD_(LONGLONG,GetCorrelatedTime)(THIS_
4898 _Out_ PLONGLONG SystemTime
4899 ) PURE;
4900 STDMETHOD_(LONGLONG,GetCorrelatedPhysicalTime)(THIS_
4901 _Out_ PLONGLONG SystemTime
4902 ) PURE;
4903 STDMETHOD_(NTSTATUS, GetResolution)(THIS_
4905 ) PURE;
4908 ) PURE;
4909};
4910
4911#undef INTERFACE
4912#define INTERFACE IKsControl
4913
4914DEFINE_GUID(IID_IKsControl, 0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96);
4915
4917{
4919 REFIID InterfaceId,
4921
4923
4925
4926 STDMETHOD_(NTSTATUS, KsProperty)(THIS_
4927 _In_reads_bytes_(PropertyLength) PKSPROPERTY Property,
4928 _In_ ULONG PropertyLength,
4932 ) PURE;
4933 STDMETHOD_(NTSTATUS, KsMethod)(THIS_
4934 _In_reads_bytes_(MethodLength) PKSMETHOD Method,
4935 _In_ ULONG MethodLength,
4939 ) PURE;
4940 STDMETHOD_(NTSTATUS, KsEvent)(THIS_
4941 _In_reads_bytes_opt_(EventLength) PKSEVENT Event,
4942 _In_ ULONG EventLength,
4946 ) PURE;
4947};
4948
4949#undef INTERFACE
4950typedef IKsControl* PIKSCONTROL;
4951
4952#endif
4953
4956VOID
4957NTAPI
4959 _In_ PKSDEVICE Device,
4960 _In_ PADAPTER_OBJECT AdapterObject,
4961 _In_ ULONG MaxMappingByteCount,
4962 _In_ ULONG MappingTableStride);
4963
4966ULONG
4967NTAPI
4969 _In_ PKSDEVICE Device,
4973 _In_ ULONG Length);
4974
4977VOID
4978NTAPI
4980 _In_ PVOID Object);
4981
4982#define KsDiscard(object, pointer) \
4983 KsRemoveItemFromObjectBag(object->Bag, pointer, TRUE)
4984
4985#define KsFilterAcquireControl(Filter) \
4986 KsAcquireControl((PVOID) Filter);
4987
4988#define KsFilterReleaseControl(Filter) \
4989 KsReleaseControl((PVOID) Filter);
4990
4991#define KsFilterAddEvent(Filter, EventEntry) \
4992 KsAddEvent(Filter,EventEntry);
4993
4996VOID
4997NTAPI
4999 _In_ PKSFILTER Filter);
5000
5004NTAPI
5006 _In_ PKSFILTER Filter,
5007 _In_ ULONG NewConnectionsCount,
5008 _In_reads_(NewConnectionsCount) const KSTOPOLOGY_CONNECTION *const NewTopologyConnections);
5009
5012VOID
5013NTAPI
5015 _In_ PKSFILTER Filter,
5017
5021NTAPI
5023 _In_ PKSFILTER Filter,
5024 _In_ const KSNODE_DESCRIPTOR *const NodeDescriptor,
5025 _Out_ PULONG NodeID);
5026
5030NTAPI
5032 _In_ PKSFILTER Filter,
5033 _In_ const KSPIN_DESCRIPTOR_EX *const PinDescriptor,
5034 _Out_ PULONG PinID);
5035
5038PKSDEVICE
5039NTAPI
5041 _In_ PVOID Object);
5042
5044static
5045__inline
5046PKSDEVICE
5047KsFilterFactoryGetDevice(
5048 _In_ PKSFILTERFACTORY FilterFactory)
5049{
5050 return KsGetDevice((PVOID)FilterFactory);
5051}
5052
5053/* etc. */
5054#endif /* avstream */
5055
5056#ifdef __cplusplus
5057}
5058#endif
5059
5060#endif /* _KS_ */
DWORD Id
INT ResourceId
unsigned char BOOLEAN
Type
Definition: Type.h:7
#define VOID
Definition: acefi.h:82
@ Started
Definition: acpisys.h:14
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char const char * ModuleName
Definition: acpixf.h:1280
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char const char UINT32 ComponentId
Definition: acpixf.h:1281
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER Handler
Definition: acpixf.h:672
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocator(IN PIRP Irp)
Definition: allocators.c:384
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocatorEx(IN PIRP Irp, IN PVOID InitializeContext OPTIONAL, IN PFNKSDEFAULTALLOCATE DefaultAllocate OPTIONAL, IN PFNKSDEFAULTFREE DefaultFree OPTIONAL, IN PFNKSINITIALIZEALLOCATOR InitializeAllocator OPTIONAL, IN PFNKSDELETEALLOCATOR DeleteAllocator OPTIONAL)
Definition: allocators.c:576
KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorFramingEx(IN PKSALLOCATOR_FRAMING_EX Framing, IN ULONG BufferSize, IN const KSALLOCATOR_FRAMING_EX *PinFraming)
Definition: allocators.c:671
KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorCreateRequest(IN PIRP Irp, OUT PKSALLOCATOR_FRAMING *OutAllocatorFraming)
Definition: allocators.c:396
struct NameRec_ * Name
Definition: cdprocs.h:460
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
NTSTATUS NTAPI KsAddItemToObjectBag(IN KSOBJECT_BAG ObjectBag, IN PVOID Item, IN PFNKSFREE Free OPTIONAL)
Definition: bag.c:86
KSDDKAPI VOID NTAPI KsFreeObjectBag(IN KSOBJECT_BAG ObjectBag)
Definition: bag.c:308
KSDDKAPI NTSTATUS NTAPI _KsEdit(IN KSOBJECT_BAG ObjectBag, IN OUT PVOID *PointerToPointerToItem, IN ULONG NewSize, IN ULONG OldSize, IN ULONG Tag)
Definition: bag.c:358
KSDDKAPI ULONG NTAPI KsRemoveItemFromObjectBag(IN KSOBJECT_BAG ObjectBag, IN PVOID Item, IN BOOLEAN Free)
Definition: bag.c:179
KSDDKAPI NTSTATUS NTAPI KsCopyObjectBagItems(IN KSOBJECT_BAG ObjectBagDestination, IN KSOBJECT_BAG ObjectBagSource)
Definition: bag.c:247
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectBag(IN PKSDEVICE Device, OUT KSOBJECT_BAG *ObjectBag)
Definition: bag.c:29
LONG NTSTATUS
Definition: precomp.h:26
@ Create
Definition: registry.c:563
#define DECLARE_INTERFACE_(i, b)
Definition: basetyps.h:78
#define PURE
Definition: basetyps.h:64
#define THIS_
Definition: basetyps.h:65
#define THIS
Definition: basetyps.h:66
#define STDMETHOD_(t, m)
Definition: basetyps.h:63
#define __drv_aliasesMem
Definition: btrfs_drv.h:203
PDEVICE_OBJECT PhysicalDeviceObject
Definition: btrfs_drv.h:1157
_In_ PFCB _In_ LONGLONG FileOffset
Definition: cdprocs.h:160
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
Definition: cdprocs.h:843
_In_ PSTORAGE_PROPERTY_ID PropertyId
Definition: cdrom.h:932
_In_ BOOLEAN Release
Definition: cdrom.h:920
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
Definition: cdrom.h:1444
Definition: bufpool.h:45
Definition: Header.h:9
_In_ PVOID Argument2
Definition: classpnp.h:721
KSDDKAPI NTSTATUS NTAPI KsValidateClockCreateRequest(IN PIRP Irp, OUT PKSCLOCK_CREATE *OutClockCreate)
Definition: clocks.c:279
KSDDKAPI VOID NTAPI KsFreeDefaultClock(IN PKSDEFAULTCLOCK DefaultClock)
Definition: clocks.c:498
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultClock(IN PIRP Irp, IN PKSDEFAULTCLOCK DefaultClock)
Definition: clocks.c:383
KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClock(OUT PKSDEFAULTCLOCK *DefaultClock)
Definition: clocks.c:434
KSDDKAPI KSSTATE NTAPI KsGetDefaultClockState(IN PKSDEFAULTCLOCK DefaultClock)
Definition: clocks.c:518
KSDDKAPI VOID NTAPI KsSetDefaultClockTime(IN PKSDEFAULTCLOCK DefaultClock, IN LONGLONG Time)
Definition: clocks.c:568
KSDDKAPI VOID NTAPI KsSetDefaultClockState(IN PKSDEFAULTCLOCK DefaultClock, IN KSSTATE State)
Definition: clocks.c:531
KSDDKAPI LONGLONG NTAPI KsGetDefaultClockTime(IN PKSDEFAULTCLOCK DefaultClock)
Definition: clocks.c:551
KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClockEx(OUT PKSDEFAULTCLOCK *DefaultClock, IN PVOID Context OPTIONAL, IN PFNKSSETTIMER SetTimer OPTIONAL, IN PFNKSCANCELTIMER CancelTimer OPTIONAL, IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL, IN const KSRESOLUTION *Resolution OPTIONAL, IN ULONG Flags)
Definition: clocks.c:446
KSDDKAPI NTSTATUS NTAPI KsPinDataIntersection(IN PIRP Irp, IN PKSP_PIN Pin, OUT PVOID Data, IN ULONG DescriptorsCount, IN const KSPIN_DESCRIPTOR *Descriptor, IN PFNKSINTERSECTHANDLER IntersectHandler)
Definition: connectivity.c:700
KSDDKAPI NTSTATUS NTAPI KsHandleSizedListQuery(IN PIRP Irp, IN ULONG DataItemsCount, IN ULONG DataItemSize, IN const VOID *DataItems)
Definition: connectivity.c:774
KSDDKAPI NTSTATUS NTAPI KsValidateConnectRequest(IN PIRP Irp, IN ULONG DescriptorsCount, IN KSPIN_DESCRIPTOR *Descriptor, OUT PKSPIN_CONNECT *Connect)
Definition: connectivity.c:222
KSDDKAPI NTSTATUS NTAPI KsPinDataIntersectionEx(IN PIRP Irp, IN PKSP_PIN Pin, OUT PVOID Data, IN ULONG DescriptorsCount, IN const KSPIN_DESCRIPTOR *Descriptor, IN ULONG DescriptorSize, IN PFNKSINTERSECTHANDLEREX IntersectHandler OPTIONAL, IN PVOID HandlerContext OPTIONAL)
Definition: connectivity.c:680
KSDDKAPI NTSTATUS NTAPI KsPinPropertyHandler(IN PIRP Irp, IN PKSPROPERTY Property, IN OUT PVOID Data, IN ULONG DescriptorsCount, IN const KSPIN_DESCRIPTOR *Descriptor)
Definition: connectivity.c:666
#define UNALIGNED
Definition: crtdefs.h:144
_In_ PIRP Irp
Definition: csq.h:116
#define BufferSize
Definition: mmc.h:75
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: deviceio.c:136
DataFlow
@ Out
@ In
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NTSTATUS
Definition: precomp.h:21
LONG KPRIORITY
Definition: compat.h:803
VARENUM
Definition: compat.h:2294
@ VT_BLOB
Definition: compat.h:2330
@ VT_UI8
Definition: compat.h:2315
@ VT_BLOB_OBJECT
Definition: compat.h:2335
@ VT_BSTR
Definition: compat.h:2303
@ VT_VOID
Definition: compat.h:2318
@ VT_INT
Definition: compat.h:2316
@ VT_LPSTR
Definition: compat.h:2324
@ VT_R4
Definition: compat.h:2299
@ VT_NULL
Definition: compat.h:2296
@ VT_UNKNOWN
Definition: compat.h:2308
@ VT_TYPEMASK
Definition: compat.h:2346
@ VT_RESERVED
Definition: compat.h:2343
@ VT_BYREF
Definition: compat.h:2342
@ VT_PTR
Definition: compat.h:2320
@ VT_UI2
Definition: compat.h:2312
@ VT_DECIMAL
Definition: compat.h:2309
@ VT_ERROR
Definition: compat.h:2305
@ VT_CLSID
Definition: compat.h:2337
@ VT_STREAM
Definition: compat.h:2331
@ VT_ARRAY
Definition: compat.h:2341
@ VT_STORED_OBJECT
Definition: compat.h:2334
@ VT_SAFEARRAY
Definition: compat.h:2321
@ VT_LPWSTR
Definition: compat.h:2325
@ VT_R8
Definition: compat.h:2300
@ VT_CY
Definition: compat.h:2301
@ VT_VARIANT
Definition: compat.h:2307
@ VT_I8
Definition: compat.h:2314
@ VT_I1
Definition: compat.h:2310
@ VT_I4
Definition: compat.h:2298
@ VT_CF
Definition: compat.h:2336
@ VT_STORAGE
Definition: compat.h:2332
@ VT_USERDEFINED
Definition: compat.h:2323
@ VT_HRESULT
Definition: compat.h:2319
@ VT_ILLEGAL
Definition: compat.h:2344
@ VT_FILETIME
Definition: compat.h:2329
@ VT_ILLEGALMASKED
Definition: compat.h:2345
@ VT_DATE
Definition: compat.h:2302
@ VT_BOOL
Definition: compat.h:2306
@ VT_STREAMED_OBJECT
Definition: compat.h:2333
@ VT_I2
Definition: compat.h:2297
@ VT_UI4
Definition: compat.h:2313
@ VT_UINT
Definition: compat.h:2317
@ VT_EMPTY
Definition: compat.h:2295
@ VT_CARRAY
Definition: compat.h:2322
@ VT_VECTOR
Definition: compat.h:2340
@ VT_DISPATCH
Definition: compat.h:2304
@ VT_UI1
Definition: compat.h:2311
static const WCHAR SymbolicLink[]
Definition: interface.c:31
static const WCHAR Connections[]
Definition: session.c:1502
NTSTATUS NTAPI KsMergeAutomationTables(OUT PKSAUTOMATION_TABLE *AutomationTableAB, IN PKSAUTOMATION_TABLE AutomationTableA OPTIONAL, IN PKSAUTOMATION_TABLE AutomationTableB OPTIONAL, IN KSOBJECT_BAG Bag OPTIONAL)
Definition: api.c:2303
KSDDKAPI NTSTATUS NTAPI KsAddObjectCreateItemToObjectHeader(IN KSOBJECT_HEADER ObjectHeader, IN PDRIVER_DISPATCH Create, IN PVOID Context, IN PWCHAR ObjectClass, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
Definition: api.c:842
KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: api.c:110
KSDDKAPI void NTAPI KsDeviceRegisterAdapterObject(IN PKSDEVICE Device, IN PADAPTER_OBJECT AdapterObject, IN ULONG MaxMappingsByteCount, IN ULONG MappingTableStride)
Definition: api.c:1841
KSDDKAPI NTSTATUS NTAPI KsForwardIrp(IN PIRP Irp, IN PFILE_OBJECT FileObject, IN BOOLEAN ReuseStackLocation)
Definition: api.c:1051
KSDDKAPI VOID NTAPI KsRecalculateStackDepth(IN KSDEVICE_HEADER Header, IN BOOLEAN ReuseStackLocation)
Definition: api.c:306
KSDDKAPI ACCESS_MASK NTAPI KsQueryObjectAccessMask(IN KSOBJECT_HEADER Header)
Definition: api.c:290
KSDDKAPI VOID NTAPI KsAcquireControl(IN PVOID Object)
Definition: api.c:1587
KSDDKAPI VOID NTAPI KsFreeObjectHeader(IN PVOID Header)
Definition: api.c:720
KSDDKAPI NTSTATUS NTAPI KsFreeObjectCreateItemsByContext(IN KSDEVICE_HEADER Header, IN PVOID Context)
Definition: api.c:1006
KSDDKAPI PVOID NTAPI KsGetFirstChild(IN PVOID Object)
Definition: api.c:1862
VOID NTAPI KsReleaseControl(IN PVOID Object)
Definition: api.c:1604
KSDDKAPI VOID NTAPI KsSetDevicePnpAndBaseObject(IN KSDEVICE_HEADER Header, IN PDEVICE_OBJECT PnpDeviceObject, IN PDEVICE_OBJECT BaseDevice)
Definition: api.c:257
KSDDKAPI PDEVICE_OBJECT NTAPI KsQueryDevicePnpObject(IN KSDEVICE_HEADER Header)
Definition: api.c:274
KSDDKAPI VOID NTAPI KsSetTargetDeviceObject(IN KSOBJECT_HEADER Header, IN PDEVICE_OBJECT TargetDevice OPTIONAL)
Definition: api.c:336
KSDDKAPI NTSTATUS NTAPI KsCacheMedium(IN PUNICODE_STRING SymbolicLink, IN PKSPIN_MEDIUM Medium, IN ULONG PinDirection)
Definition: api.c:1210
KSDDKAPI VOID NTAPI KsSetPowerDispatch(IN KSOBJECT_HEADER Header, IN PFNKSCONTEXT_DISPATCH PowerDispatch OPTIONAL, IN PVOID PowerContext OPTIONAL)
Definition: api.c:401
KSDDKAPI NTSTATUS NTAPI KsSynchronousIoControlDevice(IN PFILE_OBJECT FileObject, IN KPROCESSOR_MODE RequestorMode, IN ULONG IoControl, IN PVOID InBuffer, IN ULONG InSize, OUT PVOID OutBuffer, IN ULONG OutSize, OUT PULONG BytesReturned)
Definition: api.c:1099
KSDDKAPI PKSOBJECT_CREATE_ITEM NTAPI KsQueryObjectCreateItem(IN KSOBJECT_HEADER Header)
Definition: api.c:450
KSDDKAPI NTSTATUS NTAPI KsAllocateDeviceHeader(OUT KSDEVICE_HEADER *OutHeader, IN ULONG ItemsCount, IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL)
Definition: api.c:522
KSDDKAPI NTSTATUS NTAPI KsForwardAndCatchIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PFILE_OBJECT FileObject, IN KSSTACK_USE StackUse)
Definition: api.c:1067
KSDDKAPI NTSTATUS NTAPI KsAcquireResetValue(IN PIRP Irp, OUT KSRESET *ResetValue)
Definition: api.c:23
KSDDKAPI NTSTATUS NTAPI KsUnserializeObjectPropertiesFromRegistry(IN PFILE_OBJECT FileObject, IN HANDLE ParentKey OPTIONAL, IN PUNICODE_STRING RegistryPath OPTIONAL)
Definition: api.c:1194
KSDDKAPI NTSTATUS NTAPI KsAddObjectCreateItemToDeviceHeader(IN KSDEVICE_HEADER DevHeader, IN PDRIVER_DISPATCH Create, IN PVOID Context, IN PWCHAR ObjectClass, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
Definition: api.c:798
KSDDKAPI VOID NTAPI KsFreeDeviceHeader(IN KSDEVICE_HEADER DevHeader)
Definition: api.c:590
VOID NTAPI KsReleaseDevice(IN PKSDEVICE Device)
Definition: api.c:1644
KSDDKAPI NTSTATUS NTAPI KsFreeObjectCreateItem(IN KSDEVICE_HEADER Header, IN PUNICODE_STRING CreateItem)
Definition: api.c:987
KSDDKAPI NTSTATUS NTAPI KsDefaultForwardIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: api.c:227
KSDDKAPI ULONG NTAPI KsDeviceGetBusData(IN PKSDEVICE Device, IN ULONG DataType, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
Definition: api.c:1823
KSDDKAPI ULONG NTAPI KsDeviceSetBusData(IN PKSDEVICE Device, IN ULONG DataType, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
Definition: api.c:1805
KSDDKAPI VOID NTAPI KsCompletePendingRequest(IN PIRP Irp)
Definition: api.c:1693
KSDDKAPI PVOID NTAPI KsGetNextSibling(IN PVOID Object)
Definition: api.c:1882
KSDDKAPI VOID NTAPI KsSetTargetState(IN KSOBJECT_HEADER Header, IN KSTARGET_STATE TargetState)
Definition: api.c:320
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectHeader(OUT KSOBJECT_HEADER *Header, IN ULONG ItemsCount, IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL, IN PIRP Irp, IN KSDISPATCH_TABLE *Table)
Definition: api.c:610
KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: api.c:166
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectCreateItem(IN KSDEVICE_HEADER DevHeader, IN PKSOBJECT_CREATE_ITEM CreateItem, IN BOOLEAN AllocateEntry, IN PFNKSITEMFREECALLBACK ItemFreeCallback OPTIONAL)
Definition: api.c:886
KSDDKAPI VOID NTAPI KsAcquireDevice(IN PKSDEVICE Device)
Definition: api.c:1623
KSDDKAPI NTSTATUS NTAPI KsInitializeDevice(IN PDEVICE_OBJECT FunctionalDeviceObject, IN PDEVICE_OBJECT PhysicalDeviceObject, IN PDEVICE_OBJECT NextDeviceObject, IN const KSDEVICE_DESCRIPTOR *Descriptor OPTIONAL)
Definition: device.c:653
KSDDKAPI VOID NTAPI KsDereferenceBusObject(IN KSDEVICE_HEADER Header)
Definition: device.c:829
KSDDKAPI NTSTATUS NTAPI KsReferenceBusObject(IN KSDEVICE_HEADER Header)
Definition: device.c:804
KSDDKAPI PKSDEVICE NTAPI KsGetDevice(IN PVOID Object)
Definition: driver.c:37
KSDDKAPI NTSTATUS NTAPI KsInitializeDriver(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath, IN const KSDEVICE_DESCRIPTOR *Descriptor OPTIONAL)
Definition: driver.c:155
KSDDKAPI NTSTATUS NTAPI KsCreateDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject, IN const KSDEVICE_DESCRIPTOR *Descriptor OPTIONAL, IN ULONG ExtensionSize OPTIONAL, OUT PKSDEVICE *Device OPTIONAL)
Definition: driver.c:65
KSDDKAPI NTSTATUS NTAPI KsAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
Definition: driver.c:129
KSDDKAPI void NTAPI KsGenerateEvents(IN PVOID Object, IN const GUID *EventSet OPTIONAL, IN ULONG EventId, IN ULONG DataSize, IN PVOID Data OPTIONAL, IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL, IN PVOID CallBackContext OPTIONAL)
Definition: event.c:734
KSDDKAPI NTSTATUS NTAPI KsEnableEvent(IN PIRP Irp, IN ULONG EventSetsCount, IN KSEVENT_SET *EventSet, IN OUT PLIST_ENTRY EventsList OPTIONAL, IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL, IN PVOID EventsLock OPTIONAL)
Definition: event.c:387
KSDDKAPI NTSTATUS NTAPI KsGenerateEvent(IN PKSEVENT_ENTRY EntryEvent)
Definition: event.c:608
KSDDKAPI NTSTATUS NTAPI KsDisableEvent(IN PIRP Irp, IN OUT PLIST_ENTRY EventsList, IN KSEVENTS_LOCKTYPE EventsFlags, IN PVOID EventsLock)
Definition: event.c:469
KSDDKAPI VOID NTAPI KsFreeEventList(IN PFILE_OBJECT FileObject, IN OUT PLIST_ENTRY EventsList, IN KSEVENTS_LOCKTYPE EventsFlags, IN PVOID EventsLock)
Definition: event.c:579
KSDDKAPI VOID NTAPI KsAddEvent(IN PVOID Object, IN PKSEVENT_ENTRY EventEntry)
Definition: event.c:684
NTSTATUS NTAPI KsDefaultAddEventHandler(IN PIRP Irp, IN PKSEVENTDATA EventData, IN OUT PKSEVENT_ENTRY EventEntry)
Definition: event.c:698
KSDDKAPI NTSTATUS NTAPI KsGenerateDataEvent(IN PKSEVENT_ENTRY EventEntry, IN ULONG DataSize, IN PVOID Data)
Definition: event.c:653
KSDDKAPI VOID NTAPI KsDiscardEvent(IN PKSEVENT_ENTRY EventEntry)
Definition: event.c:523
KSDDKAPI NTSTATUS NTAPI KsFilterCreateNode(IN PKSFILTER Filter, IN const KSNODE_DESCRIPTOR *const NodeDescriptor, OUT PULONG NodeID)
Definition: filter.c:1941
KSDDKAPI NTSTATUS NTAPI KsFilterCreatePinFactory(IN PKSFILTER Filter, IN const KSPIN_DESCRIPTOR_EX *const InPinDescriptor, OUT PULONG PinID)
Definition: filter.c:1956
KSDDKAPI VOID NTAPI KsFilterAcquireProcessingMutex(IN PKSFILTER Filter)
Definition: filter.c:1836
KSDDKAPI NTSTATUS NTAPI KsFilterAddTopologyConnections(IN PKSFILTER Filter, IN ULONG NewConnectionsCount, IN const KSTOPOLOGY_CONNECTION *const NewTopologyConnections)
Definition: filter.c:1865
KSDDKAPI VOID NTAPI KsFilterAttemptProcessing(IN PKSFILTER Filter, IN BOOLEAN Asynchronous)
Definition: filter.c:1915
KSDDKAPI PKSPIN NTAPI KsFilterGetFirstChildPin(IN PKSFILTER Filter, IN ULONG PinId)
Definition: filter.c:2067
const GUID IID_IKsControl
Definition: filter.c:44
KSDDKAPI PKSFILTER NTAPI KsGetFilterFromIrp(IN PIRP Irp)
Definition: filter.c:2106
KSDDKAPI NTSTATUS NTAPI KsMapModuleName(IN PDEVICE_OBJECT PhysicalDeviceObject, IN PUNICODE_STRING ModuleName, OUT PUNICODE_STRING ImageName, OUT PULONG_PTR ResourceId, OUT PULONG ValueType)
Definition: image.c:201
KSDDKAPI NTSTATUS NTAPI KsLoadResource(IN PVOID ImageBase, IN POOL_TYPE PoolType, IN ULONG_PTR ResourceName, IN ULONG ResourceType, OUT PVOID *Resource, OUT PULONG ResourceSize)
Definition: image.c:23
KSDDKAPI NTSTATUS NTAPI KsGetImageNameAndResourceId(IN HANDLE RegKey, OUT PUNICODE_STRING ImageName, OUT PULONG_PTR ResourceId, OUT PULONG ValueType)
Definition: image.c:115
KSDDKAPI VOID NTAPI KsCancelIo(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock)
Definition: irp.c:1291
KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: irp.c:1189
KSDDKAPI VOID NTAPI KsAddIrpToCancelableQueue(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock, IN PIRP Irp, IN KSLIST_ENTRY_LOCATION ListLocation, IN PDRIVER_CANCEL DriverCancel OPTIONAL)
Definition: irp.c:1666
KSDDKAPI NTSTATUS NTAPI KsQueryInformationFile(IN PFILE_OBJECT FileObject, OUT PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass)
Definition: irp.c:364
KSDDKAPI NTSTATUS NTAPI KsStreamIo(IN PFILE_OBJECT FileObject, IN PKEVENT Event OPTIONAL, IN PVOID PortContext OPTIONAL, IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL, IN PVOID CompletionContext OPTIONAL, IN KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN OUT PVOID StreamHeaders, IN ULONG Length, IN ULONG Flags, IN KPROCESSOR_MODE RequestorMode)
Definition: irp.c:560
KSDDKAPI NTSTATUS NTAPI KsSetMajorFunctionHandler(IN PDRIVER_OBJECT DriverObject, IN ULONG MajorFunction)
Definition: irp.c:2050
KSDDKAPI NTSTATUS NTAPI KsDispatchIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: irp.c:2084
KSDDKAPI VOID NTAPI KsRemoveSpecificIrpFromCancelableQueue(IN PIRP Irp)
Definition: irp.c:1638
KSDDKAPI NTSTATUS NTAPI KsProbeStreamIrp(IN PIRP Irp, IN ULONG ProbeFlags, IN ULONG HeaderSize)
Definition: irp.c:680
KSDDKAPI BOOLEAN NTAPI KsDispatchFastReadFailure(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
Definition: irp.c:1271
KSDDKAPI NTSTATUS NTAPI KsDefaultDeviceIoCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: irp.c:1205
KSDDKAPI NTSTATUS NTAPI KsWriteFile(IN PFILE_OBJECT FileObject, IN PKEVENT Event OPTIONAL, IN PVOID PortContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PVOID Buffer, IN ULONG Length, IN ULONG Key OPTIONAL, IN KPROCESSOR_MODE RequestorMode)
Definition: irp.c:253
KSDDKAPI NTSTATUS NTAPI KsAllocateExtraData(IN PIRP Irp, IN ULONG ExtraSize, OUT PVOID *ExtraBuffer)
Definition: irp.c:1111
KSDDKAPI NTSTATUS NTAPI KsReadFile(IN PFILE_OBJECT FileObject, IN PKEVENT Event OPTIONAL, IN PVOID PortContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID Buffer, IN ULONG Length, IN ULONG Key OPTIONAL, IN KPROCESSOR_MODE RequestorMode)
Definition: irp.c:142
KSDDKAPI NTSTATUS NTAPI KsDispatchSetSecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: irp.c:67
KSDDKAPI NTSTATUS NTAPI KsMoveIrpsOnCancelableQueue(IN OUT PLIST_ENTRY SourceList, IN PKSPIN_LOCK SourceLock, IN OUT PLIST_ENTRY DestinationList, IN PKSPIN_LOCK DestinationLock OPTIONAL, IN KSLIST_ENTRY_LOCATION ListLocation, IN PFNKSIRPLISTCALLBACK ListCallback, IN PVOID Context)
Definition: irp.c:1513
KSDDKAPI NTSTATUS NTAPI KsDispatchQuerySecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: irp.c:22
KSDDKAPI VOID NTAPI KsNullDriverUnload(IN PDRIVER_OBJECT DriverObject)
Definition: irp.c:1178
KSDDKAPI BOOLEAN NTAPI KsDispatchFastIoDeviceControlFailure(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength, IN ULONG IoControlCode, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
Definition: irp.c:1251
KSDDKAPI VOID NTAPI KsCancelRoutine(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: irp.c:1749
KSDDKAPI NTSTATUS NTAPI KsSetInformationFile(IN PFILE_OBJECT FileObject, IN PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass)
Definition: irp.c:469
KSDDKAPI NTSTATUS NTAPI KsDispatchSpecificMethod(IN PIRP Irp, IN PFNKSHANDLER Handler)
Definition: irp.c:127
KSDDKAPI VOID NTAPI KsReleaseIrpOnCancelableQueue(IN PIRP Irp, IN PDRIVER_CANCEL DriverCancel OPTIONAL)
Definition: irp.c:1353
KSDDKAPI PIRP NTAPI KsRemoveIrpFromCancelableQueue(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock, IN KSLIST_ENTRY_LOCATION ListLocation, IN KSIRP_REMOVAL_OPERATION RemovalOperation)
Definition: irp.c:1408
KSDDKAPI PVOID NTAPI KsGetParent(IN PVOID Object)
Definition: misc.c:160
PUNKNOWN NTAPI KsGetOuterUnknown(IN PVOID Object)
Definition: misc.c:141
PKSFILTER NTAPI KsPinGetParentFilter(IN PKSPIN Pin)
Definition: pin.c:1097
KSDDKAPI VOID NTAPI KsStreamPointerAdvanceOffsetsAndUnlock(IN PKSSTREAM_POINTER StreamPointer, IN ULONG InUsed, IN ULONG OutUsed, IN BOOLEAN Eject)
Definition: pin.c:1480
KSDDKAPI PKSPIN NTAPI KsGetPinFromIrp(IN PIRP Irp)
Definition: pin.c:1211
KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvance(IN PKSSTREAM_POINTER StreamPointer)
Definition: pin.c:1688
KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetLeadingEdgeStreamPointer(IN PKSPIN Pin, IN KSSTREAM_POINTER_STATE State)
Definition: pin.c:1385
KSDDKAPI NTSTATUS NTAPI KsStreamPointerClone(IN PKSSTREAM_POINTER StreamPointer, IN PFNKSSTREAMPOINTER CancelCallback OPTIONAL, IN ULONG ContextSize, OUT PKSSTREAM_POINTER *CloneStreamPointer)
Definition: pin.c:1545
VOID NTAPI KsPinAttemptProcessing(IN PKSPIN Pin, IN BOOLEAN Asynchronous)
Definition: pin.c:993
PFILE_OBJECT NTAPI KsPinGetConnectedPinFileObject(IN PKSPIN Pin)
Definition: pin.c:1047
KSDDKAPI NTSTATUS NTAPI KsStreamPointerSetStatusCode(IN PKSSTREAM_POINTER StreamPointer, IN NTSTATUS Status)
Definition: pin.c:1436
PKSGATE NTAPI KsPinGetAndGate(IN PKSPIN Pin)
Definition: pin.c:980
VOID NTAPI KsPinReleaseProcessingMutex(IN PKSPIN Pin)
Definition: pin.c:1196
KSDDKAPI VOID NTAPI KsStreamPointerUnlock(IN PKSSTREAM_POINTER StreamPointer, IN BOOLEAN Eject)
Definition: pin.c:1463
PKSPIN NTAPI KsPinGetNextSiblingPin(IN PKSPIN Pin)
Definition: pin.c:1086
VOID NTAPI KsPinAcquireProcessingMutex(IN PKSPIN Pin)
Definition: pin.c:933
KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvanceOffsets(IN PKSSTREAM_POINTER StreamPointer, IN ULONG InUsed, IN ULONG OutUsed, IN BOOLEAN Eject)
Definition: pin.c:1628
KSDDKAPI VOID NTAPI KsStreamPointerDelete(IN PKSSTREAM_POINTER StreamPointer)
Definition: pin.c:1497
KSDDKAPI BOOLEAN NTAPI KsFastPropertyHandler(IN PFILE_OBJECT FileObject, IN PKSPROPERTY UNALIGNED Property, IN ULONG PropertyLength, IN OUT PVOID UNALIGNED Data, IN ULONG DataLength, OUT PIO_STATUS_BLOCK IoStatus, IN ULONG PropertySetsCount, IN const KSPROPERTY_SET *PropertySet)
Definition: property.c:429
KSDDKAPI NTSTATUS NTAPI KsPropertyHandler(IN PIRP Irp, IN ULONG PropertySetsCount, IN const KSPROPERTY_SET *PropertySet)
Definition: property.c:358
KSDDKAPI NTSTATUS NTAPI KsDispatchSpecificProperty(IN PIRP Irp, IN PFNKSHANDLER Handler)
Definition: property.c:511
KSDDKAPI NTSTATUS NTAPI KsTopologyPropertyHandler(IN PIRP Irp, IN PKSPROPERTY Property, IN OUT PVOID Data, IN const KSTOPOLOGY *Topology)
Definition: topology.c:144
KSDDKAPI NTSTATUS NTAPI KsValidateTopologyNodeCreateRequest(IN PIRP Irp, IN PKSTOPOLOGY Topology, OUT PKSNODE_CREATE *OutNodeCreate)
Definition: topology.c:100
#define _IRQL_requires_max_(irql)
Definition: driverspecs.h:230
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
#define HIGH_LEVEL
Definition: env_spec_w32.h:703
KSPIN_LOCK * PKSPIN_LOCK
Definition: env_spec_w32.h:73
#define APC_LEVEL
Definition: env_spec_w32.h:695
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
Definition: fatprocs.h:2665
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
Definition: fatprocs.h:427
@ Flush
Definition: fatprocs.h:1054
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG Increment
Definition: CrNtStubs.h:46
unsigned long DWORD
Definition: ntddk_ex.h:95
KSDDKAPI NTSTATUS NTAPI KsCreateFilterFactory(IN PDEVICE_OBJECT DeviceObject, IN const KSFILTER_DESCRIPTOR *Descriptor, IN PWSTR RefString OPTIONAL, IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, IN ULONG CreateItemFlags, IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL, IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL, OUT PKSFILTERFACTORY *FilterFactory OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsFilterFactorySetDeviceClassesState(IN PKSFILTERFACTORY FilterFactory, IN BOOLEAN NewState)
KSDDKAPI NTSTATUS NTAPI KsFilterFactoryUpdateCacheData(IN PKSFILTERFACTORY FilterFactory, IN const KSFILTER_DESCRIPTOR *FilterDescriptor OPTIONAL)
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T ContextSize
Definition: fltkernel.h:1444
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
_Must_inspect_result_ _In_ USHORT NewSize
Definition: fltkernel.h:975
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
Definition: directory.c:44
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:223
union Alignment_ Alignment
_In_ WDFDEVICE _In_ PWDF_DEVICE_INTERFACE_PROPERTY_DATA PropertyData
__in WDFDEVICE __in CONST GUID __in_opt PCUNICODE_STRING RefString
return pTarget GetState()
Status
Definition: gdiplustypes.h:25
ASMGENDATA Table[]
Definition: genincdata.c:61
@ ResetState
Definition: hdaudio.h:83
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
Definition: hidclass.h:103
#define InterlockedCompareExchange
Definition: interlocked.h:104
unsigned long long DWORDLONG
Definition: intsafe.h:93
#define KSDATAFORMAT_SPECIFIER_NONE
Definition: ks.h:1157
struct KSERROR * PKSERROR
_In_ PKSCLOCK_CREATE ClockCreate
Definition: ks.h:4527
#define KSNAME_Filter
Definition: ks.h:111
KSPROPERTY_STREAMALLOCATOR
Definition: ks.h:802
@ KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE
Definition: ks.h:803
@ KSPROPERTY_STREAMALLOCATOR_STATUS
Definition: ks.h:804
#define KSCATEGORY_FILESYSTEM
Definition: ks.h:210
struct _KSPROCESSPIN_INDEXENTRY KSPROCESSPIN_INDEXENTRY
Definition: ks.h:3028
KSRESET
Definition: ks.h:1226
@ KSRESET_BEGIN
Definition: ks.h:1227
@ KSRESET_END
Definition: ks.h:1228
struct KSRATE_CAPABILITY * PKSRATE_CAPABILITY
_In_ PKSNODE_CREATE NodeCreate
Definition: ks.h:4546
_In_ PKSNODE_CREATE _In_ ACCESS_MASK _Out_ PHANDLE NodeHandle
Definition: ks.h:4548
_In_ PKSALLOCATOR_FRAMING AllocatorFraming
Definition: ks.h:4518
struct KS_COMPRESSION * PKS_COMPRESSION
struct KSPROPERTY_MEMBERSLIST * PKSPROPERTY_MEMBERSLIST
struct KSSTREAMALLOCATOR_STATUS_EX * PKSSTREAMALLOCATOR_STATUS_EX
KSIDENTIFIER * PKSEVENT
Definition: ks.h:239
#define GUID_NULL
Definition: ks.h:106
KS_SEEKING_CAPABILITIES
Definition: ks.h:498
@ KS_SEEKING_CanSeekForwards
Definition: ks.h:500
@ KS_SEEKING_CanPlayBackwards
Definition: ks.h:505
@ KS_SEEKING_CanSeekAbsolute
Definition: ks.h:499
@ KS_SEEKING_CanGetCurrentPos
Definition: ks.h:502
@ KS_SEEKING_CanGetDuration
Definition: ks.h:504
@ KS_SEEKING_CanGetStopPos
Definition: ks.h:503
@ KS_SEEKING_CanSeekBackwards
Definition: ks.h:501
struct KSPRIORITY * PKSPRIORITY
union KSPROPERTY_BOUNDS_LONG * PKSPROPERTY_BOUNDS_LONG
struct KSINTERVAL * PKSINTERVAL
struct KSQUERYBUFFER * PKSQUERYBUFFER
KSPROPERTY_CONNECTION
Definition: ks.h:348
@ KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT
Definition: ks.h:353
@ KSPROPERTY_CONNECTION_DATAFORMAT
Definition: ks.h:351
@ KSPROPERTY_CONNECTION_STARTAT
Definition: ks.h:356
@ KSPROPERTY_CONNECTION_ALLOCATORFRAMING
Definition: ks.h:352
@ KSPROPERTY_CONNECTION_PRIORITY
Definition: ks.h:350
@ KSPROPERTY_CONNECTION_ACQUIREORDERING
Definition: ks.h:354
@ KSPROPERTY_CONNECTION_STATE
Definition: ks.h:349
@ KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX
Definition: ks.h:355
#define KSCATEGORY_PROXY
Definition: ks.h:220
KSTARGET_STATE
Definition: ks.h:1221
@ KSTARGET_STATE_ENABLED
Definition: ks.h:1223
@ KSTARGET_STATE_DISABLED
Definition: ks.h:1222
struct KSQUALITY_MANAGER * PKSQUALITY_MANAGER
#define KSPROPSETID_MediaSeeking
Definition: ks.h:473
struct KSPIN_PHYSICALCONNECTION * PKSPIN_PHYSICALCONNECTION
KSIDENTIFIER KSPIN_MEDIUM
Definition: ks.h:244
union KSDATAFORMAT KSDATARANGE
struct _KSPROCESSPIN_INDEXENTRY * PKSPROCESSPIN_INDEXENTRY
Definition: ks.h:3028
#define KSMEDIUMSETID_Standard
Definition: ks.h:306
struct KSSTREAM_HEADER * PKSSTREAM_HEADER
KSEVENT_STREAMALLOCATOR
Definition: ks.h:817
@ KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME
Definition: ks.h:818
@ KSEVENT_STREAMALLOCATOR_FREEFRAME
Definition: ks.h:819
struct KSPROPERTY_STEPPING_LONGLONG * PKSPROPERTY_STEPPING_LONGLONG
void * UNKNOWN
Definition: ks.h:2676
struct KSTOPOLOGY * PKSTOPOLOGY
KSMETHOD_STREAMALLOCATOR
Definition: ks.h:810
@ KSMETHOD_STREAMALLOCATOR_FREE
Definition: ks.h:812
@ KSMETHOD_STREAMALLOCATOR_ALLOC
Definition: ks.h:811
struct KSQUALITY * PKSQUALITY
KSIDENTIFIER KSMETHOD
Definition: ks.h:238
struct KSNODE_CREATE * PKSNODE_CREATE
#define KSPROPSETID_Pin
Definition: ks.h:617
#define KSCATEGORY_DATACOMPRESSOR
Definition: ks.h:180
KSDEGRADE_STANDARD
Definition: ks.h:1241
@ KSDEGRADE_STANDARD_COMPUTATION
Definition: ks.h:1244
@ KSDEGRADE_STANDARD_QUALITY
Definition: ks.h:1243
@ KSDEGRADE_STANDARD_SIMPLE
Definition: ks.h:1242
@ KSDEGRADE_STANDARD_SKIP
Definition: ks.h:1245
struct KSPIN_CONNECT * PKSPIN_CONNECT
KSLIST_ENTRY_LOCATION
Definition: ks.h:1261
@ KsListEntryHead
Definition: ks.h:1263
@ KsListEntryTail
Definition: ks.h:1262
struct KSP_PIN * PKSP_PIN
KSPROPERTY_MEDIASEEKING
Definition: ks.h:475
@ KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
Definition: ks.h:485
@ KSPROPERTY_MEDIASEEKING_CAPABILITIES
Definition: ks.h:476
@ KSPROPERTY_MEDIASEEKING_TIMEFORMAT
Definition: ks.h:478
@ KSPROPERTY_MEDIASEEKING_DURATION
Definition: ks.h:482
@ KSPROPERTY_MEDIASEEKING_PREROLL
Definition: ks.h:484
@ KSPROPERTY_MEDIASEEKING_STOPPOSITION
Definition: ks.h:480
@ KSPROPERTY_MEDIASEEKING_POSITION
Definition: ks.h:479
@ KSPROPERTY_MEDIASEEKING_FORMATS
Definition: ks.h:477
@ KSPROPERTY_MEDIASEEKING_AVAILABLE
Definition: ks.h:483
@ KSPROPERTY_MEDIASEEKING_POSITIONS
Definition: ks.h:481
union KSDATAFORMAT * PKSDATAFORMAT
#define KSCATEGORY_DATADECOMPRESSOR
Definition: ks.h:185
struct KSTIME * PKSTIME
struct KSCLOCK_CREATE * PKSCLOCK_CREATE
KSIDENTIFIER KSPROPERTY
Definition: ks.h:237
KSPROPERTY_GM
Definition: ks.h:458
@ KSPROPERTY_GM_RATEMATCH
Definition: ks.h:461
@ KSPROPERTY_GM_GRAPHMANAGER
Definition: ks.h:459
@ KSPROPERTY_GM_TIMESTAMP_CLOCK
Definition: ks.h:460
@ KSPROPERTY_GM_RENDERCLOCK
Definition: ks.h:462
#define KSCATEGORY_COMMUNICATIONSTRANSFORM
Definition: ks.h:195
#define KSCATEGORY_BRIDGE
Definition: ks.h:155
#define KSMEMORY_TYPE_KERNEL_PAGED
Definition: ks.h:116
KSPROPERTY_TOPOLOGY
Definition: ks.h:844
@ KSPROPERTY_TOPOLOGY_CATEGORIES
Definition: ks.h:845
@ KSPROPERTY_TOPOLOGY_NAME
Definition: ks.h:848
@ KSPROPERTY_TOPOLOGY_NODES
Definition: ks.h:846
@ KSPROPERTY_TOPOLOGY_CONNECTIONS
Definition: ks.h:847
KSOBJECTTYPE
Definition: ks.h:1207
@ KsObjectTypeFilter
Definition: ks.h:1210
@ KsObjectTypeDevice
Definition: ks.h:1208
@ KsObjectTypePin
Definition: ks.h:1211
@ KsObjectTypeFilterFactory
Definition: ks.h:1209
enum KSSTATE * PKSSTATE
KSIDENTIFIER KSEVENT
Definition: ks.h:239
KSPROPERTY_PIN
Definition: ks.h:624
@ KSPROPERTY_PIN_COMMUNICATION
Definition: ks.h:632
@ KSPROPERTY_PIN_CATEGORY
Definition: ks.h:636
@ KSPROPERTY_PIN_DATAINTERSECTION
Definition: ks.h:629
@ KSPROPERTY_PIN_NECESSARYINSTANCES
Definition: ks.h:634
@ KSPROPERTY_PIN_GLOBALCINSTANCES
Definition: ks.h:633
@ KSPROPERTY_PIN_CINSTANCES
Definition: ks.h:625
@ KSPROPERTY_PIN_MEDIUMS
Definition: ks.h:631
@ KSPROPERTY_PIN_NAME
Definition: ks.h:637
@ KSPROPERTY_PIN_PROPOSEDATAFORMAT
Definition: ks.h:639
@ KSPROPERTY_PIN_CONSTRAINEDDATARANGES
Definition: ks.h:638
@ KSPROPERTY_PIN_DATARANGES
Definition: ks.h:628
@ KSPROPERTY_PIN_PHYSICALCONNECTION
Definition: ks.h:635
@ KSPROPERTY_PIN_CTYPES
Definition: ks.h:626
@ KSPROPERTY_PIN_DATAFLOW
Definition: ks.h:627
@ KSPROPERTY_PIN_INTERFACES
Definition: ks.h:630
struct KSE_NODE * PKSE_NODE
KSSTATE
Definition: ks.h:1214
@ KSSTATE_ACQUIRE
Definition: ks.h:1216
@ KSSTATE_PAUSE
Definition: ks.h:1217
@ KSSTATE_RUN
Definition: ks.h:1218
@ KSSTATE_STOP
Definition: ks.h:1215
struct KSPIN_CINSTANCES * PKSPIN_CINSTANCES
KSIDENTIFIER * PKSMETHOD
Definition: ks.h:238
KSPIN_DATAFLOW
Definition: ks.h:1248
@ KSPIN_DATAFLOW_IN
Definition: ks.h:1249
@ KSPIN_DATAFLOW_OUT
Definition: ks.h:1250
PVOID KSOBJECT_HEADER
Definition: ks.h:1007
PVOID PKSDEFAULTCLOCK
Definition: ks.h:1854
KSEVENT_CLOCK_POSITION
Definition: ks.h:334
@ KSEVENT_CLOCK_POSITION_MARK
Definition: ks.h:336
@ KSEVENT_CLOCK_INTERVAL_MARK
Definition: ks.h:335
#define KSPROPSETID_Stream
Definition: ks.h:682
enum KSPIN_DATAFLOW * PKSPIN_DATAFLOW
struct KSCORRELATED_TIME * PKSCORRELATED_TIME
PVOID KSDEVICE_HEADER
Definition: ks.h:1007
#define KSPROPSETID_Connection
Definition: ks.h:346
KSIDENTIFIER KSDEGRADE
Definition: ks.h:241
struct KSCOMPONENTID * PKSCOMPONENTID
KSPIN_COMMUNICATION
Definition: ks.h:1253
@ KSPIN_COMMUNICATION_BRIDGE
Definition: ks.h:1258
@ KSPIN_COMMUNICATION_NONE
Definition: ks.h:1254
@ KSPIN_COMMUNICATION_BOTH
Definition: ks.h:1257
@ KSPIN_COMMUNICATION_SOURCE
Definition: ks.h:1256
@ KSPIN_COMMUNICATION_SINK
Definition: ks.h:1255
#define KSCATEGORY_SPLITTER
Definition: ks.h:175
struct KSPROPERTY_POSITIONS * PKSPROPERTY_POSITIONS
struct KSFRAMETIME * PKSFRAMETIME
KSIDENTIFIER * PKSDEGRADE
Definition: ks.h:241
KSEVENT_CONNECTION
Definition: ks.h:428
@ KSEVENT_CONNECTION_TIMEDISCONTINUITY
Definition: ks.h:431
@ KSEVENT_CONNECTION_POSITIONUPDATE
Definition: ks.h:429
@ KSEVENT_CONNECTION_PRIORITY
Definition: ks.h:432
@ KSEVENT_CONNECTION_ENDOFSTREAM
Definition: ks.h:433
@ KSEVENT_CONNECTION_DATADISCONTINUITY
Definition: ks.h:430
KSEVENTS_LOCKTYPE
Definition: ks.h:1231
@ KSEVENTS_FMUTEXUNSAFE
Definition: ks.h:1236
@ KSEVENTS_INTERRUPT
Definition: ks.h:1237
@ KSEVENTS_SPINLOCK
Definition: ks.h:1233
@ KSEVENTS_NONE
Definition: ks.h:1232
@ KSEVENTS_MUTEX
Definition: ks.h:1234
@ KSEVENTS_FMUTEX
Definition: ks.h:1235
@ KSEVENTS_ERESOURCE
Definition: ks.h:1238
PVOID KSOBJECT_BAG
Definition: ks.h:1007
KSIRP_REMOVAL_OPERATION
Definition: ks.h:1272
@ KsAcquireOnlySingleItem
Definition: ks.h:1275
@ KsAcquireAndRemove
Definition: ks.h:1274
@ KsAcquireAndRemoveOnlySingleItem
Definition: ks.h:1276
@ KsAcquireOnly
Definition: ks.h:1273
KS_SEEKING_FLAGS
Definition: ks.h:488
@ KS_SEEKING_AbsolutePositioning
Definition: ks.h:490
@ KS_SEEKING_RelativePositioning
Definition: ks.h:491
@ KS_SEEKING_PositioningBitsMask
Definition: ks.h:493
@ KS_SEEKING_SeekToKeyFrame
Definition: ks.h:494
@ KS_SEEKING_NoPositioning
Definition: ks.h:489
@ KS_SEEKING_IncrementalPositioning
Definition: ks.h:492
@ KS_SEEKING_ReturnTime
Definition: ks.h:495
struct KSATTRIBUTE * PKSATTRIBUTE
#define KSPROPSETID_StreamAllocator
Definition: ks.h:800
#define KSEVENTSETID_Clock
Definition: ks.h:332
struct _KSEVENT_ENTRY * PKSEVENT_ENTRY
Definition: ks.h:2101
struct KSALLOCATOR_FRAMING * PKSALLOCATOR_FRAMING
#define KSCATEGORY_CAPTURE
Definition: ks.h:160
#define KSCATEGORY_MEDIUMTRANSFORM
Definition: ks.h:205
struct KSM_NODE * PKSM_NODE
KSIDENTIFIER * PKSPIN_INTERFACE
Definition: ks.h:243
struct KSEVENTDATA * PKSEVENTDATA
struct KSRATE * PKSRATE
struct KSPROPERTY_SERIAL * PKSPROPERTY_SERIAL
#define KSCATEGORY_RENDER
Definition: ks.h:165
KSIDENTIFIER * PKSPROPERTY
Definition: ks.h:237
KSCOMPLETION_INVOCATION
Definition: ks.h:1279
@ KsInvokeOnSuccess
Definition: ks.h:1280
@ KsInvokeOnCancel
Definition: ks.h:1282
@ KsInvokeOnError
Definition: ks.h:1281
KSINTERFACE_FILEIO
Definition: ks.h:297
@ KSINTERFACE_FILEIO_STREAMING
Definition: ks.h:298
_In_ PKSPIN_CONNECT Connect
Definition: ks.h:4536
#define KSCATEGORY_DATATRANSFORM
Definition: ks.h:190
struct _KSEVENT_ENTRY KSEVENT_ENTRY
Definition: ks.h:2101
struct KSIDENTIFIER * PKSIDENTIFIER
struct KSEVENT_TIME_INTERVAL * PKSEVENT_TIME_INTERVAL
#define KSCATEGORY_QUALITY
Definition: ks.h:225
_In_ PKSCLOCK_CREATE _Out_ PHANDLE ClockHandle
Definition: ks.h:4528
#define KSPROPTYPESETID_General
Definition: ks.h:858
KSPROPERTY_STREAMINTERFACE
Definition: ks.h:830
@ KSPROPERTY_STREAMINTERFACE_HEADERSIZE
Definition: ks.h:831
#define KSNAME_Pin
Definition: ks.h:622
#define DEFINE_GUIDSTRUCT(guid, name)
Definition: ks.h:98
struct KSPROPERTY_STEPPING_LONG * PKSPROPERTY_STEPPING_LONG
KSPROPERTY_CLOCK
Definition: ks.h:317
@ KSPROPERTY_CLOCK_CORRELATEDTIME
Definition: ks.h:320
@ KSPROPERTY_CLOCK_TIME
Definition: ks.h:318
@ KSPROPERTY_CLOCK_STATE
Definition: ks.h:323
@ KSPROPERTY_CLOCK_RESOLUTION
Definition: ks.h:322
@ KSPROPERTY_CLOCK_PHYSICALTIME
Definition: ks.h:319
@ KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME
Definition: ks.h:321
struct KSPROPERTY_SERIALHDR * PKSPROPERTY_SERIALHDR
KSIDENTIFIER * PKSPIN_MEDIUM
Definition: ks.h:244
KSSTREAM_POINTER_STATE
Definition: ks.h:3023
@ KSSTREAM_POINTER_STATE_LOCKED
Definition: ks.h:3025
@ KSSTREAM_POINTER_STATE_UNLOCKED
Definition: ks.h:3024
KSINTERFACE_STANDARD
Definition: ks.h:282
@ KSINTERFACE_STANDARD_STREAMING
Definition: ks.h:283
@ KSINTERFACE_STANDARD_LOOPED_STREAMING
Definition: ks.h:284
@ KSINTERFACE_STANDARD_CONTROL
Definition: ks.h:285
struct KSP_NODE * PKSP_NODE
KSPROPERTY_STREAM
Definition: ks.h:684
@ KSPROPERTY_STREAM_TIMEFORMAT
Definition: ks.h:689
@ KSPROPERTY_STREAM_PRESENTATIONEXTENT
Definition: ks.h:691
@ KSPROPERTY_STREAM_PIPE_ID
Definition: ks.h:695
@ KSPROPERTY_STREAM_DEGRADATION
Definition: ks.h:687
@ KSPROPERTY_STREAM_QUALITY
Definition: ks.h:686
@ KSPROPERTY_STREAM_ALLOCATOR
Definition: ks.h:685
@ KSPROPERTY_STREAM_PRESENTATIONTIME
Definition: ks.h:690
@ KSPROPERTY_STREAM_RATE
Definition: ks.h:694
@ KSPROPERTY_STREAM_FRAMETIME
Definition: ks.h:692
@ KSPROPERTY_STREAM_MASTERCLOCK
Definition: ks.h:688
@ KSPROPERTY_STREAM_RATECAPABILITY
Definition: ks.h:693
struct KSRESOLUTION * PKSRESOLUTION
#define KSCATEGORY_CLOCK
Definition: ks.h:215
PVOID(NTAPI * PFNKSINITIALIZEALLOCATOR)(_In_ PVOID InitialContext, _In_ PKSALLOCATOR_FRAMING AllocatorFraming, _Outptr_ PVOID *Context)
Definition: ks.h:2679
struct KSSTREAMALLOCATOR_STATUS * PKSSTREAMALLOCATOR_STATUS
#define KSPROPSETID_Topology
Definition: ks.h:842
struct KSPROPERTY_VALUES * PKSPROPERTY_VALUES
KSPROPERTY_QUALITY
Definition: ks.h:669
@ KSPROPERTY_QUALITY_REPORT
Definition: ks.h:670
@ KSPROPERTY_QUALITY_ERROR
Definition: ks.h:671
union KSDATAFORMAT * PKSDATARANGE
KSSTACK_USE
Definition: ks.h:1266
@ KsStackUseNewLocation
Definition: ks.h:1269
@ KsStackReuseCurrentLocation
Definition: ks.h:1268
@ KsStackCopyToNewLocation
Definition: ks.h:1267
#define KSDDKAPI
Definition: ks.h:40
struct KS_FRAMING_ITEM * PKS_FRAMING_ITEM
struct KSPROPERTY_DESCRIPTION * PKSPROPERTY_DESCRIPTION
struct KSPROPERTY_MEDIAAVAILABLE * PKSPROPERTY_MEDIAAVAILABLE
_In_ PKSPIN_CONNECT _In_ ACCESS_MASK _Out_ PHANDLE ConnectionHandle
Definition: ks.h:4538
KSIDENTIFIER KSPIN_INTERFACE
Definition: ks.h:243
struct KS_FRAMING_RANGE_WEIGHTED * PKS_FRAMING_RANGE_WEIGHTED
#define KSCATEGORY_INTERFACETRANSFORM
Definition: ks.h:200
struct KSEVENT_TIME_MARK * PKSEVENT_TIME_MARK
struct KS_FRAMING_RANGE * PKS_FRAMING_RANGE
struct KSMULTIPLE_ITEM * PKSMULTIPLE_ITEM
_In_ PKSALLOCATOR_FRAMING _Out_ PHANDLE AllocatorHandle
Definition: ks.h:4519
struct KSPROPERTY_MEMBERSHEADER * PKSPROPERTY_MEMBERSHEADER
#define KSINTERFACESETID_Standard
Definition: ks.h:280
struct KSTOPOLOGY_CONNECTION * PKSTOPOLOGY_CONNECTION
struct KSALLOCATOR_FRAMING_EX * PKSALLOCATOR_FRAMING_EX
struct KSP_TIMEFORMAT * PKSP_TIMEFORMAT
enum KSPIN_COMMUNICATION * PKSPIN_COMMUNICATION
#define KSCATEGORY_MIXER
Definition: ks.h:170
#define KSPROPSETID_General
Definition: ks.h:444
union KSPROPERTY_BOUNDS_LONGLONG * PKSPROPERTY_BOUNDS_LONGLONG
#define KSDATAFORMAT_SUBTYPE_NONE
Definition: ks.h:121
#define KSPROPSETID_Clock
Definition: ks.h:315
struct KSRELATIVEEVENT * PKSRELATIVEEVENT
KSPROPERTY_GENERAL
Definition: ks.h:446
@ KSPROPERTY_GENERAL_COMPONENTID
Definition: ks.h:447
#define KSINTERFACESETID_FileIo
Definition: ks.h:291
#define DEFINE_ABSTRACT_UNKNOWN()
Definition: ksiface.h:5
KSDDKAPI DWORD NTAPI KsCreatePin(HANDLE FilterHandle, PKSPIN_CONNECT Connect, ACCESS_MASK DesiredAccess, PHANDLE ConnectionHandle)
Definition: ksuser.c:192
KSDDKAPI DWORD NTAPI KsCreateTopologyNode(HANDLE ParentHandle, PKSNODE_CREATE NodeCreate, IN ACCESS_MASK DesiredAccess, OUT PHANDLE NodeHandle)
Definition: ksuser.c:240
KSDDKAPI DWORD NTAPI KsCreateClock(HANDLE ConnectionHandle, PKSCLOCK_CREATE ClockCreate, PHANDLE ClockHandle)
Definition: ksuser.c:145
KSDDKAPI DWORD NTAPI KsCreateAllocator(HANDLE ConnectionHandle, PKSALLOCATOR_FRAMING AllocatorFraming, PHANDLE AllocatorHandle)
Definition: ksuser.c:107
#define GetTime(fmt)
Definition: lcformat.c:111
_In_opt_ PVOID _Out_ BOOLEAN * Stop
Definition: ldrtypes.h:241
KSDDKAPI BOOLEAN NTAPI KsFastMethodHandler(IN PFILE_OBJECT FileObject, IN PKSMETHOD UNALIGNED Method, IN ULONG MethodLength, IN OUT PVOID UNALIGNED Data, IN ULONG DataLength, OUT PIO_STATUS_BLOCK IoStatus, IN ULONG MethodSetsCount, IN const KSMETHOD_SET *MethodSet)
Definition: methods.c:255
static PCNODE_DESCRIPTOR TopologyNodes[]
#define ASSERT(a)
Definition: mode.c:44
static const char * ImageName
Definition: image.c:34
static HRESULT QueryInterface(REFIID, void **)
Definition: events.c:2587
static OUT PIO_STATUS_BLOCK IoStatusBlock
Definition: pipe.c:75
static OUT PIO_STATUS_BLOCK OUT PVOID FileInformation
Definition: pipe.c:75
static OUT PIO_STATUS_BLOCK OUT PVOID IN ULONG IN FILE_INFORMATION_CLASS FileInformationClass
Definition: pipe.c:75
static PLARGE_INTEGER Time
Definition: time.c:105
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
#define _Outptr_result_bytebuffer_(size)
Definition: ms_sal.h:472
#define _Field_size_bytes_(size)
Definition: ms_sal.h:600
#define _Out_opt_
Definition: ms_sal.h:346
#define _In_reads_bytes_(size)
Definition: ms_sal.h:321
#define _Inout_
Definition: ms_sal.h:378
#define _Out_writes_bytes_(size)
Definition: ms_sal.h:350
#define _Out_writes_bytes_to_(size, count)
Definition: ms_sal.h:360
#define _Field_size_(size)
Definition: ms_sal.h:593
#define _Check_return_
Definition: ms_sal.h:557
#define _Outptr_
Definition: ms_sal.h:427
#define _Inout_opt_
Definition: ms_sal.h:379
#define _Must_inspect_result_
Definition: ms_sal.h:558
#define _Inout_updates_bytes_(size)
Definition: ms_sal.h:399
#define _Out_
Definition: ms_sal.h:345
#define _In_reads_opt_(size)
Definition: ms_sal.h:320
#define _Out_writes_bytes_to_opt_(size, count)
Definition: ms_sal.h:361
#define _In_
Definition: ms_sal.h:308
#define _In_reads_bytes_opt_(size)
Definition: ms_sal.h:322
#define _In_opt_
Definition: ms_sal.h:309
#define _Out_writes_bytes_opt_(size)
Definition: ms_sal.h:351
#define _In_reads_(size)
Definition: ms_sal.h:319
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
Definition: mxum.h:159
_In_ UINT ProtocolId
Definition: ndis.h:2924
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT * FunctionalDeviceObject
Definition: ndis.h:4641
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4755
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT * NextDeviceObject
Definition: ndis.h:4642
@ SemaphoreObject
Definition: ketypes.h:411
int Count
Definition: noreturn.cpp:7
ULONG ACCESS_MASK
Definition: nt_native.h:40
#define FASTCALL
Definition: nt_native.h:50
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
__GNU_EXTENSION typedef __int64 * PLONGLONG
Definition: ntbasedef.h:382
_In_ ULONG _In_ ULONG Offset
Definition: ntddpcm.h:101
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
_In_ SYSTEM_POWER_STATE _In_ ULONG _In_ BOOLEAN Asynchronous
Definition: ntpoapi.h:305
@ DevicePowerState
Definition: ntpoapi.h:63
POWER_ACTION
Definition: ntpoapi.h:122
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
time_t Clock
Definition: output.c:18
static BOOL Set
Definition: pageheap.c:10
#define BOOLEAN
Definition: pedump.c:73
long LONG
Definition: pedump.c:60
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
Definition: guiddef.h:68
#define REFIID
Definition: guiddef.h:118
@ Close
Definition: sacdrv.h:268
_In_ UCHAR _In_ ULONG _Out_ PUCHAR _Outptr_result_bytebuffer_ OutBufferLength PVOID * OutBuffer
Definition: scsi.h:4071
DataType
Definition: simd.h:252
const KSFILTER_DESCRIPTOR FilterDescriptor
Definition: splitter.c:229
const KSFILTER_DESCRIPTOR * FilterDescriptors
Definition: splitter.c:250
const KSNODE_DESCRIPTOR NodeDescriptor[]
Definition: splitter.c:217
const GUID Categories[]
Definition: splitter.c:208
const KSPIN_DESCRIPTOR_EX PinDescriptors[]
Definition: splitter.c:154
_In_ BOOLEAN Read
Definition: strmini.h:479
KS_COMPRESSION OutputCompression
Definition: ks.h:1679
ULONG PoolType
Definition: ks.h:1668
ULONG RequirementsFlags
Definition: ks.h:1663
ULONG Reserved
Definition: ks.h:1673
ULONG OptionsFlags
Definition: ks.h:1662
ULONG Frames
Definition: ks.h:1670
ULONG FileAlignment
Definition: ks.h:1672
ULONG FrameSize
Definition: ks.h:1671
ULONG Flags
Definition: ks.h:261
ULONG Size
Definition: ks.h:260
GUID Attribute
Definition: ks.h:262
ULONG CreateFlags
Definition: ks.h:1857
GUID Component
Definition: ks.h:1466
GUID Product
Definition: ks.h:1465
GUID Name
Definition: ks.h:1467
GUID Manufacturer
Definition: ks.h:1464
ULONG Revision
Definition: ks.h:1469
ULONG Version
Definition: ks.h:1468
LONGLONG SystemTime
Definition: ks.h:1841
LONGLONG Time
Definition: ks.h:1840
LONGLONG Alignment
Definition: ks.h:256
Definition: ks.h:1989
ULONG Status
Definition: ks.h:1991
PVOID Context
Definition: ks.h:1990
HANDLE Semaphore
Definition: ks.h:1740
LONG Adjustment
Definition: ks.h:1742
ULONG Reserved
Definition: ks.h:1741
ULONG NotificationType
Definition: ks.h:1733
PVOID Unused
Definition: ks.h:1772
HANDLE Event
Definition: ks.h:1736
LONGLONG TimeBase
Definition: ks.h:1824
LONGLONG Interval
Definition: ks.h:1825
KSEVENTDATA EventData
Definition: ks.h:1823
LONGLONG MarkTime
Definition: ks.h:1819
KSEVENTDATA EventData
Definition: ks.h:1818
Definition: ks.h:2086
KSEVENT Event
Definition: ks.h:2087
ULONG NodeId
Definition: ks.h:2088
ULONG Reserved
Definition: ks.h:2089
LONGLONG Duration
Definition: ks.h:1845
ULONG FrameFlags
Definition: ks.h:1846
ULONG Reserved
Definition: ks.h:1847
LONGLONG TimeBase
Definition: ks.h:1829
LONGLONG Interval
Definition: ks.h:1830
ULONG Size
Definition: ks.h:1979
ULONG Count
Definition: ks.h:1980
Definition: ks.h:2080
KSMETHOD Method
Definition: ks.h:2081
ULONG NodeID
Definition: ks.h:2082
ULONG Reserved
Definition: ks.h:2083
ULONG Node
Definition: ks.h:2094
ULONG CreateFlags
Definition: ks.h:2093
ULONG CurrentCount
Definition: ks.h:652
ULONG PossibleCount
Definition: ks.h:651
ULONG PinId
Definition: ks.h:2603
KSPIN_MEDIUM Medium
Definition: ks.h:2602
KSPRIORITY Priority
Definition: ks.h:2605
KSPIN_INTERFACE Interface
Definition: ks.h:2601
HANDLE PinToHandle
Definition: ks.h:2604
ULONG PriorityClass
Definition: ks.h:1391
ULONG PrioritySubClass
Definition: ks.h:1392
ULONG DescriptionSize
Definition: ks.h:1540
KSIDENTIFIER PropTypeSet
Definition: ks.h:1541
ULONG MembersListCount
Definition: ks.h:1542
LONGLONG Earliest
Definition: ks.h:516
KSPROPERTY_MEMBERSHEADER MembersHeader
Definition: ks.h:1554
const VOID * Members
Definition: ks.h:1555
LONGLONG Current
Definition: ks.h:509
LONGLONG Stop
Definition: ks.h:510
KS_SEEKING_FLAGS StopFlags
Definition: ks.h:512
KS_SEEKING_FLAGS CurrentFlags
Definition: ks.h:511
GUID PropertySet
Definition: ks.h:1485
ULONG PropertyLength
Definition: ks.h:1492
KSIDENTIFIER PropTypeSet
Definition: ks.h:1490
ULONG Id
Definition: ks.h:1491
DWORDLONG SteppingDelta
Definition: ks.h:1651
KSPROPERTY_BOUNDS_LONGLONG Bounds
Definition: ks.h:1653
KSPROPERTY_BOUNDS_LONG Bounds
Definition: ks.h:1644
_Field_size_(MembersListCount) const KSPROPERTY_MEMBERSLIST *MembersList
KSIDENTIFIER PropTypeSet
Definition: ks.h:1569
ULONG MembersListCount
Definition: ks.h:1570
Definition: ks.h:2074
KSPROPERTY Property
Definition: ks.h:2075
ULONG Reserved
Definition: ks.h:2077
ULONG NodeId
Definition: ks.h:2076
Definition: ks.h:642
ULONG Reserved
Definition: ks.h:645
KSPROPERTY Property
Definition: ks.h:643
ULONG PinId
Definition: ks.h:644
LONGLONG Time
Definition: ks.h:524
GUID TargetFormat
Definition: ks.h:523
KSPROPERTY Property
Definition: ks.h:521
GUID SourceFormat
Definition: ks.h:522
PVOID Context
Definition: ks.h:1711
HANDLE QualityManager
Definition: ks.h:1710
Definition: ks.h:1703
LONGLONG DeltaTime
Definition: ks.h:1706
PVOID Context
Definition: ks.h:1704
ULONG Proportion
Definition: ks.h:1705
PKSEVENTDATA EventData
Definition: ks.h:1985
KSEVENT Event
Definition: ks.h:1984
PVOID Reserved
Definition: ks.h:1986
KSPROPERTY Property
Definition: ks.h:1723
KSRATE Rate
Definition: ks.h:1724
Definition: ks.h:1714
LONGLONG Duration
Definition: ks.h:1716
LONG Rate
Definition: ks.h:1718
KSPIN_INTERFACE Interface
Definition: ks.h:1717
LONGLONG PresentationStart
Definition: ks.h:1715
ULONG Flags
Definition: ks.h:1719
ULONG Size
Definition: ks.h:1799
KSEVENT Event
Definition: ks.h:1806
PVOID ObjectPointer
Definition: ks.h:1803
PVOID Reserved
Definition: ks.h:1805
KSEVENTDATA EventData
Definition: ks.h:1807
ULONG Flags
Definition: ks.h:1800
HANDLE ObjectHandle
Definition: ks.h:1802
LONGLONG Granularity
Definition: ks.h:1728
LONGLONG Error
Definition: ks.h:1729
KSALLOCATOR_FRAMING_EX Framing
Definition: ks.h:2730
KSALLOCATOR_FRAMING Framing
Definition: ks.h:2724
ULONG FrameExtent
Definition: ks.h:2740
ULONG Size
Definition: ks.h:2736
KSTIME PresentationTime
Definition: ks.h:2738
PVOID Data
Definition: ks.h:2742
ULONG DataUsed
Definition: ks.h:2741
LONGLONG Duration
Definition: ks.h:2739
ULONG OptionsFlags
Definition: ks.h:2743
ULONG TypeSpecificFlags
Definition: ks.h:2737
Definition: ks.h:1833
LONGLONG Time
Definition: ks.h:1834
ULONG Denominator
Definition: ks.h:1836
ULONG Numerator
Definition: ks.h:1835
_Field_size_(TopologyNodesCount) const GUID *TopologyNodesNames
ULONG TopologyConnectionsCount
Definition: ks.h:2624
ULONG CategoriesCount
Definition: ks.h:2620
ULONG Reserved
Definition: ks.h:2627
_Field_size_(CategoriesCount) const GUID *Categories
ULONG TopologyNodesCount
Definition: ks.h:2622
_Field_size_(TopologyConnectionsCount) const KSTOPOLOGY_CONNECTION *TopologyConnections
_Field_size_(TopologyNodesCount) const GUID *TopologyNodes
ULONG RatioDenominator
Definition: ks.h:1377
ULONG RatioConstantMargin
Definition: ks.h:1378
ULONG RatioNumerator
Definition: ks.h:1376
KS_FRAMING_RANGE PhysicalRange
Definition: ks.h:1371
ULONG MemoryFlags
Definition: ks.h:1365
ULONG Frames
Definition: ks.h:1368
ULONG MemoryTypeWeight
Definition: ks.h:1370
ULONG BusFlags
Definition: ks.h:1366
GUID MemoryType
Definition: ks.h:1363
ULONG Flags
Definition: ks.h:1367
GUID BusType
Definition: ks.h:1364
ULONG FileAlignment
Definition: ks.h:1369
KS_FRAMING_RANGE_WEIGHTED FramingRange
Definition: ks.h:1372
KS_FRAMING_RANGE Range
Definition: ks.h:1357
ULONG MaxFrameSize
Definition: ks.h:1352
ULONG Stepping
Definition: ks.h:1353
ULONG MinFrameSize
Definition: ks.h:1351
Definition: ketypes.h:699
Definition: typedefs.h:120
VOID InitializeContext(IN PCALLBACK16 Context, IN USHORT Segment, IN USHORT Offset)
Definition: callback.c:60
static BYTE Resolution
Definition: mouse.c:35
_In_ SIZE_T DescriptorSize
Definition: nls.c:40
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t * PULONG_PTR
Definition: typedefs.h:65
uint32_t * PULONG
Definition: typedefs.h:59
INT POOL_TYPE
Definition: typedefs.h:78
int64_t LONGLONG
Definition: typedefs.h:68
#define NTAPI
Definition: typedefs.h:36
void * PVOID
Definition: typedefs.h:50
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint16_t * PWCHAR
Definition: typedefs.h:56
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
uint64_t ULONGLONG
Definition: typedefs.h:67
#define OUT
Definition: typedefs.h:40
DWORDLONG UnsignedMaximum
Definition: ks.h:1529
LONGLONG SignedMaximum
Definition: ks.h:1517
DWORDLONG UnsignedMinimum
Definition: ks.h:1528
LONGLONG SignedMinimum
Definition: ks.h:1516
ULONG UnsignedMinimum
Definition: ks.h:1505
ULONG UnsignedMaximum
Definition: ks.h:1506
IN PVOID CallBackContext
Definition: usbmport.h:466
@ Start
Definition: partlist.h:33
static BOOL Write(PBYTE Address, PBYTE Data, SIZE_T Size)
Definition: vmhorizon.c:15
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_In_ WDFDEVICE _Out_ PWDF_DEVICE_STATE DeviceState
Definition: wdfdevice.h:1999
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
Definition: wdfdevice.h:4065
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2658
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3815
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:550
_In_ WDF_SPECIAL_FILE_TYPE NotificationType
Definition: wdfdevice.h:1024
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING SymbolicLinkName
Definition: wdfdevice.h:3739
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
_In_ WDF_POWER_DEVICE_STATE TargetState
Definition: wdfdevice.h:859
_In_ UCHAR MajorFunction
Definition: wdfdevice.h:1697
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
Definition: wdfdevice.h:2433
_In_ WDFREQUEST Request
Definition: wdfdevice.h:547
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
Definition: wdfdpc.h:112
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:170
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
Definition: wdfdriver.h:215
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
Definition: wdffdo.h:465
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
Definition: wdffdo.h:469
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
Definition: wdfio.h:325
_In_ WDFREQUEST _In_ size_t OutputBufferLength
Definition: wdfio.h:320
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
Definition: wdfio.h:322
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesReturned
Definition: wdfiotarget.h:1052
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
Definition: wdfiotarget.h:863
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
Definition: wdfiotarget.h:510
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
Definition: wdfiotarget.h:953
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:254
_Must_inspect_result_ _In_opt_ WDFKEY ParentKey
Definition: wdfregistry.h:69
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG _Out_opt_ PULONG _Out_opt_ PULONG ValueType
Definition: wdfregistry.h:282
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE _In_opt_ __drv_aliasesMem WDFCONTEXT CompletionContext
Definition: wdfrequest.h:898
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
Definition: wdfrequest.h:895
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
Definition: wdfresource.h:342
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFSPINLOCK * SpinLock
Definition: wdfsync.h:228
_In_ WDFTIMER _In_ LONGLONG DueTime
Definition: wdftimer.h:190
_In_ ULONG MethodId
Definition: wdfwmi.h:142
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
Definition: wdfworkitem.h:115
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
#define WINAPI
Definition: msvc.h:6
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
KSDDKAPI ULONG NTAPI KsDecrementCountedWorker(IN PKSWORKER Worker)
Definition: worker.c:198
KSDDKAPI NTSTATUS NTAPI KsQueueWorkItem(IN PKSWORKER Worker, IN PWORK_QUEUE_ITEM WorkItem)
Definition: worker.c:252
KSDDKAPI NTSTATUS NTAPI KsRegisterWorker(IN WORK_QUEUE_TYPE WorkQueueType, OUT PKSWORKER *Worker)
Definition: worker.c:88
KSDDKAPI VOID NTAPI KsUnregisterWorker(IN PKSWORKER Worker)
Definition: worker.c:128
KSDDKAPI ULONG NTAPI KsIncrementCountedWorker(IN PKSWORKER Worker)
Definition: worker.c:222
KSDDKAPI NTSTATUS NTAPI KsRegisterCountedWorker(IN WORK_QUEUE_TYPE WorkQueueType, IN PWORK_QUEUE_ITEM CountedWorkItem, OUT PKSWORKER *Worker)
Definition: worker.c:166
_In_ IN_ADDR _In_ IN_ADDR _Out_ MULTICAST_MODE_TYPE _Inout_ ULONG _Out_writes_ SourceCount IN_ADDR * SourceList
Definition: ws2tcpip.h:622
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:191
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH * Dispatch
Definition: wsk.h:188
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
_IRQL_requires_same_ _In_opt_ PVOID Argument1
Definition: cmtypes.h:696
_In_opt_ PALLOCATE_FUNCTION Allocate
Definition: exfuncs.h:814
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
Definition: exfuncs.h:815
enum _WORK_QUEUE_TYPE WORK_QUEUE_TYPE
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT _In_ PDEVICE_OBJECT TargetDevice
Definition: iofuncs.h:691
_Out_ PHANDLE EventHandle
Definition: iofuncs.h:857
FAST_IO_DEVICE_CONTROL * PFAST_IO_DEVICE_CONTROL
Definition: iotypes.h:1557
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
Definition: iotypes.h:1098
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
Definition: iotypes.h:1099
IO_COMPLETION_ROUTINE * PIO_COMPLETION_ROUTINE
Definition: iotypes.h:2835
DRIVER_CANCEL * PDRIVER_CANCEL
Definition: iotypes.h:2759
DRIVER_DISPATCH * PDRIVER_DISPATCH
Definition: iotypes.h:2262
* PFILE_OBJECT
Definition: iotypes.h:1998
* PDEVICE_CAPABILITIES
Definition: iotypes.h:965
FAST_IO_WRITE * PFAST_IO_WRITE
Definition: iotypes.h:1471
_In_ SYSTEM_POWER_STATE SystemPowerState
Definition: iotypes.h:7519
FAST_IO_READ * PFAST_IO_READ
Definition: iotypes.h:1457
_In_ KPRIORITY _In_ LONG Adjustment
Definition: kefuncs.h:427
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
_In_ BOOLEAN Remove
Definition: psfuncs.h:110
__wchar_t WCHAR
Definition: xmlstorage.h:180