comparison fuhtark_test/include/winapi/ksproxy.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef __KSPROXY__
7 #define __KSPROXY__
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 #undef KSDDKAPI
14 #ifdef _KSDDK_
15 #define KSDDKAPI
16 #else
17 #define KSDDKAPI DECLSPEC_IMPORT
18 #endif
19
20 #define STATIC_IID_IKsObject 0x423c13a2L,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1
21 #define STATIC_IID_IKsPinEx 0x7bb38260L,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e
22 #define STATIC_IID_IKsPin 0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1
23 #define STATIC_IID_IKsPinPipe 0xe539cd90L,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02
24 #define STATIC_IID_IKsDataTypeHandler 0x5ffbaa02L,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1
25 #define STATIC_IID_IKsDataTypeCompletion 0x827D1A0EL,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
26 #define STATIC_IID_IKsInterfaceHandler 0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96
27 #define STATIC_IID_IKsClockPropertySet 0x5C5CBD84L,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96
28 #define STATIC_IID_IKsAllocator 0x8da64899L,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a
29 #define STATIC_IID_IKsAllocatorEx 0x091bb63aL,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02
30 #ifndef STATIC_IID_IKsPropertySet
31 #define STATIC_IID_IKsPropertySet 0x31EFAC30L,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93
32 #endif
33 #define STATIC_IID_IKsTopology 0x28F54683L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
34 #ifndef STATIC_IID_IKsControl
35 #define STATIC_IID_IKsControl 0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
36 #endif
37 #define STATIC_IID_IKsAggregateControl 0x7F40EAC0L,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96
38 #define STATIC_CLSID_Proxy 0x17CCA71BL,0xECD7,0x11D0,0xB9,0x08,0x00,0xA0,0xC9,0x22,0x31,0x96
39 #ifdef _KS_
40 DEFINE_GUIDEX(IID_IKsObject);
41 DEFINE_GUIDEX(IID_IKsPin);
42 DEFINE_GUIDEX(IID_IKsPinEx);
43 DEFINE_GUIDEX(IID_IKsPinPipe);
44 DEFINE_GUIDEX(IID_IKsDataTypeHandler);
45 DEFINE_GUIDEX(IID_IKsDataTypeCompletion);
46 DEFINE_GUIDEX(IID_IKsInterfaceHandler);
47 DEFINE_GUIDEX(IID_IKsClockPropertySet);
48 DEFINE_GUIDEX(IID_IKsAllocator);
49 DEFINE_GUIDEX(IID_IKsAllocatorEx);
50 #define IID_IKsQualityForwarder KSCATEGORY_QUALITY
51 #define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY
52
53 typedef enum {
54 KsAllocatorMode_User,KsAllocatorMode_Kernel
55 } KSALLOCATORMODE;
56
57 typedef enum {
58 FramingProp_Uninitialized,FramingProp_None,FramingProp_Old,FramingProp_Ex
59 } FRAMING_PROP;
60
61 typedef FRAMING_PROP *PFRAMING_PROP;
62
63 typedef enum {
64 Framing_Cache_Update,Framing_Cache_ReadLast,Framing_Cache_ReadOrig,Framing_Cache_Write
65 } FRAMING_CACHE_OPS;
66
67 typedef struct {
68 LONGLONG MinTotalNominator;
69 LONGLONG MaxTotalNominator;
70 LONGLONG TotalDenominator;
71 } OPTIMAL_WEIGHT_TOTALS;
72
73 typedef struct IPin IPin;
74 typedef struct IKsPin IKsPin;
75 typedef struct IKsAllocator IKsAllocator;
76 typedef struct IKsAllocatorEx IKsAllocatorEx;
77
78 #define AllocatorStrategy_DontCare 0
79 #define AllocatorStrategy_MinimizeNumberOfFrames 0x00000001
80 #define AllocatorStrategy_MinimizeFrameSize 0x00000002
81 #define AllocatorStrategy_MinimizeNumberOfAllocators 0x00000004
82 #define AllocatorStrategy_MaximizeSpeed 0x00000008
83
84 #define PipeFactor_None 0
85 #define PipeFactor_UserModeUpstream 0x00000001
86 #define PipeFactor_UserModeDownstream 0x00000002
87 #define PipeFactor_MemoryTypes 0x00000004
88 #define PipeFactor_Flags 0x00000008
89 #define PipeFactor_PhysicalRanges 0x00000010
90 #define PipeFactor_OptimalRanges 0x00000020
91 #define PipeFactor_FixedCompression 0x00000040
92 #define PipeFactor_UnknownCompression 0x00000080
93
94 #define PipeFactor_Buffers 0x00000100
95 #define PipeFactor_Align 0x00000200
96 #define PipeFactor_PhysicalEnd 0x00000400
97 #define PipeFactor_LogicalEnd 0x00000800
98
99 typedef enum {
100 PipeState_DontCare,PipeState_RangeNotFixed,PipeState_RangeFixed,PipeState_CompressionUnknown,PipeState_Finalized
101 } PIPE_STATE;
102
103 typedef struct _PIPE_DIMENSIONS {
104 KS_COMPRESSION AllocatorPin;
105 KS_COMPRESSION MaxExpansionPin;
106 KS_COMPRESSION EndPin;
107 } PIPE_DIMENSIONS,*PPIPE_DIMENSIONS;
108
109 typedef enum {
110 Pipe_Allocator_None,Pipe_Allocator_FirstPin,Pipe_Allocator_LastPin,Pipe_Allocator_MiddlePin
111 } PIPE_ALLOCATOR_PLACE;
112
113 typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE;
114
115 typedef enum {
116 KS_MemoryTypeDontCare = 0,KS_MemoryTypeKernelPaged,KS_MemoryTypeKernelNonPaged,KS_MemoryTypeDeviceHostMapped,KS_MemoryTypeDeviceSpecific,
117 KS_MemoryTypeUser,KS_MemoryTypeAnyHost
118 } KS_LogicalMemoryType;
119
120 typedef KS_LogicalMemoryType *PKS_LogicalMemoryType;
121
122 typedef struct _PIPE_TERMINATION {
123 ULONG Flags;
124 ULONG OutsideFactors;
125 ULONG Weigth;
126 KS_FRAMING_RANGE PhysicalRange;
127 KS_FRAMING_RANGE_WEIGHTED OptimalRange;
128 KS_COMPRESSION Compression;
129 } PIPE_TERMINATION;
130
131 typedef struct _ALLOCATOR_PROPERTIES_EX {
132 long cBuffers;
133 long cbBuffer;
134 long cbAlign;
135 long cbPrefix;
136
137 GUID MemoryType;
138 GUID BusType;
139 PIPE_STATE State;
140 PIPE_TERMINATION Input;
141 PIPE_TERMINATION Output;
142 ULONG Strategy;
143 ULONG Flags;
144 ULONG Weight;
145 KS_LogicalMemoryType LogicalMemoryType;
146 PIPE_ALLOCATOR_PLACE AllocatorPlace;
147 PIPE_DIMENSIONS Dimensions;
148 KS_FRAMING_RANGE PhysicalRange;
149 IKsAllocatorEx *PrevSegment;
150 ULONG CountNextSegments;
151 IKsAllocatorEx **NextSegments;
152 ULONG InsideFactors;
153 ULONG NumberPins;
154 } ALLOCATOR_PROPERTIES_EX;
155
156 typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
157
158 #ifdef __STREAMS__
159 struct IKsClockPropertySet;
160 #undef INTERFACE
161 #define INTERFACE IKsClockPropertySet
162 DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown) {
163 STDMETHOD(KsGetTime)(THIS_ LONGLONG *Time) PURE;
164 STDMETHOD(KsSetTime)(THIS_ LONGLONG Time) PURE;
165 STDMETHOD(KsGetPhysicalTime)(THIS_ LONGLONG *Time) PURE;
166 STDMETHOD(KsSetPhysicalTime)(THIS_ LONGLONG Time) PURE;
167 STDMETHOD(KsGetCorrelatedTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE;
168 STDMETHOD(KsSetCorrelatedTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE;
169 STDMETHOD(KsGetCorrelatedPhysicalTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE;
170 STDMETHOD(KsSetCorrelatedPhysicalTime)(THIS_ KSCORRELATED_TIME *CorrelatedTime) PURE;
171 STDMETHOD(KsGetResolution)(THIS_ KSRESOLUTION *Resolution) PURE;
172 STDMETHOD(KsGetState)(THIS_ KSSTATE *State) PURE;
173 };
174
175 struct IKsAllocator;
176 #undef INTERFACE
177 #define INTERFACE IKsAllocator
178 DECLARE_INTERFACE_(IKsAllocator,IUnknown) {
179 STDMETHOD_(HANDLE,KsGetAllocatorHandle)(THIS) PURE;
180 STDMETHOD_(KSALLOCATORMODE,KsGetAllocatorMode)(THIS) PURE;
181 STDMETHOD(KsGetAllocatorStatus)(THIS_ PKSSTREAMALLOCATOR_STATUS AllocatorStatus) PURE;
182 STDMETHOD_(VOID,KsSetAllocatorMode)(THIS_ KSALLOCATORMODE Mode) PURE;
183 };
184
185 struct IKsAllocatorEx;
186 #undef INTERFACE
187 #define INTERFACE IKsAllocatorEx
188 DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator) {
189 STDMETHOD_(PALLOCATOR_PROPERTIES_EX,KsGetProperties)(THIS) PURE;
190 STDMETHOD_(VOID,KsSetProperties)(THIS_ PALLOCATOR_PROPERTIES_EX) PURE;
191 STDMETHOD_(VOID,KsSetAllocatorHandle)(THIS_ HANDLE AllocatorHandle) PURE;
192 STDMETHOD_(HANDLE,KsCreateAllocatorAndGetHandle)(THIS_ IKsPin *KsPin) PURE;
193 };
194
195 typedef enum {
196 KsPeekOperation_PeekOnly,KsPeekOperation_AddRef
197 } KSPEEKOPERATION;
198
199 typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
200 struct IKsPin;
201
202 #undef INTERFACE
203 #define INTERFACE IKsPin
204 DECLARE_INTERFACE_(IKsPin,IUnknown) {
205 STDMETHOD(KsQueryMediums)(THIS_ PKSMULTIPLE_ITEM *MediumList) PURE;
206 STDMETHOD(KsQueryInterfaces)(THIS_ PKSMULTIPLE_ITEM *InterfaceList) PURE;
207 STDMETHOD(KsCreateSinkPinHandle)(THIS_ KSPIN_INTERFACE& Interface,KSPIN_MEDIUM& Medium) PURE;
208 STDMETHOD(KsGetCurrentCommunication)(THIS_ KSPIN_COMMUNICATION *Communication,KSPIN_INTERFACE *Interface,KSPIN_MEDIUM *Medium) PURE;
209 STDMETHOD(KsPropagateAcquire)(THIS) PURE;
210 STDMETHOD(KsDeliver)(THIS_ IMediaSample *Sample,ULONG Flags) PURE;
211 STDMETHOD(KsMediaSamplesCompleted)(THIS_ PKSSTREAM_SEGMENT StreamSegment) PURE;
212 STDMETHOD_(IMemAllocator *,KsPeekAllocator)(THIS_ KSPEEKOPERATION Operation) PURE;
213 STDMETHOD(KsReceiveAllocator)(THIS_ IMemAllocator *MemAllocator) PURE;
214 STDMETHOD(KsRenegotiateAllocator)(THIS) PURE;
215 STDMETHOD_(LONG,KsIncrementPendingIoCount)(THIS) PURE;
216 STDMETHOD_(LONG,KsDecrementPendingIoCount)(THIS) PURE;
217 STDMETHOD(KsQualityNotify)(THIS_ ULONG Proportion,REFERENCE_TIME TimeDelta) PURE;
218 };
219
220 struct IKsPinEx;
221 #undef INTERFACE
222 #define INTERFACE IKsPinEx
223 DECLARE_INTERFACE_(IKsPinEx,IKsPin) {
224 STDMETHOD_(VOID,KsNotifyError)(THIS_ IMediaSample *Sample,HRESULT hr) PURE;
225 };
226
227 struct IKsPinPipe;
228 #undef INTERFACE
229 #define INTERFACE IKsPinPipe
230 DECLARE_INTERFACE_(IKsPinPipe,IUnknown) {
231 STDMETHOD(KsGetPinFramingCache)(THIS_ PKSALLOCATOR_FRAMING_EX *FramingEx,PFRAMING_PROP FramingProp,FRAMING_CACHE_OPS Option) PURE;
232 STDMETHOD(KsSetPinFramingCache)(THIS_ PKSALLOCATOR_FRAMING_EX FramingEx,PFRAMING_PROP FramingProp,FRAMING_CACHE_OPS Option) PURE;
233 STDMETHOD_(IPin*,KsGetConnectedPin)(THIS) PURE;
234 STDMETHOD_(IKsAllocatorEx*,KsGetPipe)(THIS_ KSPEEKOPERATION Operation) PURE;
235 STDMETHOD(KsSetPipe)(THIS_ IKsAllocatorEx *KsAllocator) PURE;
236 STDMETHOD_(ULONG,KsGetPipeAllocatorFlag)(THIS) PURE;
237 STDMETHOD(KsSetPipeAllocatorFlag)(THIS_ ULONG Flag) PURE;
238 STDMETHOD_(GUID,KsGetPinBusCache)(THIS) PURE;
239 STDMETHOD(KsSetPinBusCache)(THIS_ GUID Bus) PURE;
240 STDMETHOD_(PWCHAR,KsGetPinName)(THIS) PURE;
241 STDMETHOD_(PWCHAR,KsGetFilterName)(THIS) PURE;
242 };
243
244 struct IKsPinFactory;
245 #undef INTERFACE
246 #define INTERFACE IKsPinFactory
247 DECLARE_INTERFACE_(IKsPinFactory,IUnknown) {
248 STDMETHOD(KsPinFactory)(THIS_ ULONG *PinFactory) PURE;
249 };
250
251 typedef enum {
252 KsIoOperation_Write,KsIoOperation_Read
253 } KSIOOPERATION;
254
255 struct IKsDataTypeHandler;
256 #undef INTERFACE
257 #define INTERFACE IKsDataTypeHandler
258 DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown) {
259 STDMETHOD(KsCompleteIoOperation)(THIS_ IMediaSample *Sample,PVOID StreamHeader,KSIOOPERATION IoOperation,WINBOOL Cancelled) PURE;
260 STDMETHOD(KsIsMediaTypeInRanges)(THIS_ PVOID DataRanges) PURE;
261 STDMETHOD(KsPrepareIoOperation)(THIS_ IMediaSample *Sample,PVOID StreamHeader,KSIOOPERATION IoOperation) PURE;
262 STDMETHOD(KsQueryExtendedSize)(THIS_ ULONG *ExtendedSize) PURE;
263 STDMETHOD(KsSetMediaType)(THIS_ const AM_MEDIA_TYPE *AmMediaType) PURE;
264 };
265
266 struct IKsDataTypeCompletion;
267 #undef INTERFACE
268 #define INTERFACE IKsDataTypeCompletion
269 DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown) {
270 STDMETHOD(KsCompleteMediaType)(THIS_ HANDLE FilterHandle,ULONG PinFactoryId,AM_MEDIA_TYPE *AmMediaType) PURE;
271 };
272
273 struct IKsInterfaceHandler;
274 #undef INTERFACE
275 #define INTERFACE IKsInterfaceHandler
276 DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown) {
277 STDMETHOD(KsSetPin)(THIS_ IKsPin *KsPin) PURE;
278 STDMETHOD(KsProcessMediaSamples)(THIS_ IKsDataTypeHandler *KsDataTypeHandler,IMediaSample **SampleList,PLONG SampleCount,KSIOOPERATION IoOperation,PKSSTREAM_SEGMENT *StreamSegment) PURE;
279 STDMETHOD(KsCompleteIo)(THIS_ PKSSTREAM_SEGMENT StreamSegment) PURE;
280 };
281
282 typedef struct _KSSTREAM_SEGMENT {
283 IKsInterfaceHandler *KsInterfaceHandler;
284 IKsDataTypeHandler *KsDataTypeHandler;
285 KSIOOPERATION IoOperation;
286 HANDLE CompletionEvent;
287 } KSSTREAM_SEGMENT;
288
289 struct IKsObject;
290 #undef INTERFACE
291 #define INTERFACE IKsObject
292 DECLARE_INTERFACE_(IKsObject,IUnknown) {
293 STDMETHOD_(HANDLE,KsGetObjectHandle)(THIS) PURE;
294 };
295
296 struct IKsQualityForwarder;
297 #undef INTERFACE
298 #define INTERFACE IKsQualityForwarder
299 DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject) {
300 STDMETHOD_(VOID,KsFlushClient)(THIS_ IKsPin *Pin) PURE;
301 };
302
303 struct IKsNotifyEvent;
304 #undef INTERFACE
305 #define INTERFACE IKsNotifyEvent
306 DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown) {
307 STDMETHOD(KsNotifyEvent)(THIS_ ULONG Event,ULONG_PTR lParam1,ULONG_PTR lParam2) PURE;
308 };
309
310 KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes);
311 KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle);
312 KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned);
313 KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items);
314 KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount);
315 KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId);
316 #endif
317
318 #ifndef _IKsPropertySet_
319 DEFINE_GUIDEX(IID_IKsPropertySet);
320 #endif
321
322 #ifndef _IKsControl_
323 DEFINE_GUIDEX(IID_IKsControl);
324 #endif
325
326 DEFINE_GUIDEX(IID_IKsAggregateControl);
327 #ifndef _IKsTopology_
328 DEFINE_GUIDEX(IID_IKsTopology);
329 #endif
330 DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy);
331 #define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
332 #else
333
334 #ifndef _IKsPropertySet_
335 DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet);
336 #endif
337 DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy);
338 #endif
339
340 #ifndef _IKsPropertySet_
341 #define _IKsPropertySet_
342 #define KSPROPERTY_SUPPORT_GET 1
343 #define KSPROPERTY_SUPPORT_SET 2
344
345 #ifdef DECLARE_INTERFACE_
346 struct IKsPropertySet;
347 #undef INTERFACE
348 #define INTERFACE IKsPropertySet
349 DECLARE_INTERFACE_(IKsPropertySet,IUnknown) {
350 STDMETHOD(Set)(THIS_ REFGUID PropSet,ULONG Id,LPVOID InstanceData,ULONG InstanceLength,LPVOID PropertyData,ULONG DataLength) PURE;
351 STDMETHOD(Get)(THIS_ REFGUID PropSet,ULONG Id,LPVOID InstanceData,ULONG InstanceLength,LPVOID PropertyData,ULONG DataLength,ULONG *BytesReturned) PURE;
352 STDMETHOD(QuerySupported)(THIS_ REFGUID PropSet,ULONG Id,ULONG *TypeSupport) PURE;
353 };
354 #endif
355 #endif
356
357 #ifndef _IKsControl_
358 #define _IKsControl_
359 #ifdef DECLARE_INTERFACE_
360 struct IKsControl;
361 #undef INTERFACE
362 #define INTERFACE IKsControl
363 DECLARE_INTERFACE_(IKsControl,IUnknown) {
364 STDMETHOD(KsProperty)(THIS_ PKSPROPERTY Property,ULONG PropertyLength,LPVOID PropertyData,ULONG DataLength,ULONG *BytesReturned) PURE;
365 STDMETHOD(KsMethod)(THIS_ PKSMETHOD Method,ULONG MethodLength,LPVOID MethodData,ULONG DataLength,ULONG *BytesReturned) PURE;
366 STDMETHOD(KsEvent)(THIS_ PKSEVENT Event,ULONG EventLength,LPVOID EventData,ULONG DataLength,ULONG *BytesReturned) PURE;
367 };
368 #endif
369 #endif
370
371 #ifdef DECLARE_INTERFACE_
372 struct IKsAggregateControl;
373 #undef INTERFACE
374 #define INTERFACE IKsAggregateControl
375 DECLARE_INTERFACE_(IKsAggregateControl,IUnknown) {
376 STDMETHOD(KsAddAggregate)(THIS_ REFGUID AggregateClass) PURE;
377 STDMETHOD(KsRemoveAggregate)(THIS_ REFGUID AggregateClass) PURE;
378 };
379 #endif
380
381 #ifndef _IKsTopology_
382 #define _IKsTopology_
383 #ifdef DECLARE_INTERFACE_
384 struct IKsTopology;
385 #undef INTERFACE
386 #define INTERFACE IKsTopology
387 DECLARE_INTERFACE_(IKsTopology,IUnknown) {
388 STDMETHOD(CreateNodeInstance)(THIS_ ULONG NodeId,ULONG Flags,ACCESS_MASK DesiredAccess,IUnknown *UnkOuter,REFGUID InterfaceId,LPVOID *Interface) PURE;
389 };
390 #endif
391 #endif
392
393 #ifdef __cplusplus
394 }
395 #endif
396 #endif