Author: cwittich
Date: Fri Apr 20 06:33:02 2007
New Revision: 26429
URL:
http://svn.reactos.org/svn/reactos?rev=26429&view=rev
Log:
move ks.h to psdk
Added:
trunk/reactos/include/psdk/ks.h
- copied unchanged from r26428, trunk/reactos/include/ddk/ks.h
Removed:
trunk/reactos/include/ddk/ks.h
Removed: trunk/reactos/include/ddk/ks.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/ks.h?rev=26428…
==============================================================================
--- trunk/reactos/include/ddk/ks.h (original)
+++ trunk/reactos/include/ddk/ks.h (removed)
@@ -1,2529 +1,0 @@
-/*
- ReactOS
- Kernel Streaming API
-
- by Andrew Greenwood
-
- NOTES:
- This is a basic stubbing of the Kernel Streaming API header. It is
- very incomplete - a lot of the #defines are not set to any value at all.
-
- Some of the structs/funcs may be incorrectly grouped.
-
- GUIDs need to be defined properly.
-
- AVStream functionality (XP and above, DirectX 8.0 and above) will NOT
- implemented for a while.
-
- Some example code for interaction from usermode:
- DeviceIoControl(
- FilterHandle,
- IOCTL_KS_PROPERTY,
- &Property,
- sizeof(KSPROPERTY),
- &SeekingCapabilities,
- sizeof(KS_SEEKING_CAPABILITIES),
- &BytesReturned,
- &Overlapped);
-*/
-
-#ifndef KS_H
-#define KS_H
-
-#if __GNUC__ >=3
-#pragma GCC system_header
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef BUILDING_KS
- #define KSDDKAPI
-#else
- #define KSDDKAPI DECLSPEC_IMPORT
-#endif
-
-/* TODO */
-#define KSDDKAPI
-
-
-typedef PVOID PKSWORKER;
-
-/* ===============================================================
- I/O Control Codes
-*/
-
-#define IOCTL_KS_DISABLE_EVENT \
- CTL_CODE( \
- FILE_DEVICE_KS, \
- 0x000, \
- METHOD_NEITHER, \
- FILE_ANY_ACCESS)
-
-#define IOCTL_KS_ENABLE_EVENT \
- CTL_CODE( \
- FILE_DEVICE_KS, \
- 0x001, \
- METHOD_NEITHER, \
- FILE_ANY_ACCESS)
-
-#define IOCTL_KS_METHOD \
- CTL_CODE( \
- FILE_DEVICE_KS, \
- 0x002, \
- METHOD_NEITHER, \
- FILE_ANY_ACCESS)
-
-#define IOCTL_KS_PROPERTY \
- CTL_CODE( \
- FILE_DEVICE_KS, \
- 0x003, \
- METHOD_NEITHER, \
- FILE_ANY_ACCESS)
-
-#define IOCTL_KS_WRITE_STREAM \
- CTL_CODE( \
- FILE_DEVICE_KS, \
- 0x004, \
- METHOD_NEITHER, \
- FILE_WRITE_ACCESS)
-
-#define IOCTL_KS_READ_STREAM \
- CTL_CODE( \
- FILE_DEVICE_KS, \
- 0x005, \
- METHOD_NEITHER, \
- FILE_READ_ACCESS)
-
-#define IOCTL_KS_RESET_STATE \
- CTL_CODE( \
- FILE_DEVICE_KS, \
- 0x006, \
- METHOD_NEITHER, \
- FILE_ANY_ACCESS)
-
-
-/* ===============================================================
- Clock Properties/Methods/Events
-*/
-
-#define KSPROPSETID_Clock \
- 0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
-
-typedef enum
-{
- KSPROPERTY_CLOCK_TIME,
- KSPROPERTY_CLOCK_PHYSICALTIME,
- KSPROPERTY_CORRELATEDTIME,
- KSPROPERTY_CORRELATEDPHYSICALTIME,
- KSPROPERTY_CLOCK_RESOLUTION,
- KSPROPERTY_CLOCK_STATE,
- KSPROPERTY_CLOCK_FUNCTIONTABLE
-} KSPROPERTY_CLOCK;
-
-#define KSEVENTSETID_Clock \
- 0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
-
-typedef enum
-{
- KSEVENT_CLOCK_INTERVAL_MARK,
- KSEVENT_CLOCK_POSITION_MARK
-} KSEVENT_CLOCK_POSITION;
-
-
-/* ===============================================================
- Connection Properties/Methods/Events
-*/
-
-#define KSPROPSETID_Connection \
- 0x1D58C920L, 0xAC9B, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
-
-typedef enum
-{
- KSPROPERTY_CONNECTION_STATE,
- KSPROPERTY_CONNECTION_PRIORITY,
- KSPROPERTY_CONNECTION_DATAFORMAT,
- KSPROPERTY_CONNECTION_ALLOCATORFRAMING,
- KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,
- KSPROPERTY_CONNECTION_ACQUIREORDERING,
- KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,
- KSPROPERTY_CONNECTION_STARTAT
-} KSPROPERTY_CONNECTION;
-
-#define KSEVENTSETID_Connection \
- 0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00
-
-typedef enum
-{
- KSEVENT_CONNECTION_POSITIONUPDATE,
- KSEVENT_CONNECTION_DATADISCONTINUITY,
- KSEVENT_CONNECTION_TIMEDISCONTINUITY,
- KSEVENT_CONNECTION_PRIORITY,
- KSEVENT_CONNECTION_ENDOFSTREAM
-} KSEVENT_CONNECTION;
-
-
-/* ===============================================================
- General
- Properties/Methods/Events
-*/
-
-#define KSPROPSETID_General \
- 0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
-
-typedef enum
-{
- KSPROPERTY_GENERAL_COMPONENTID
-} KSPROPERTY_GENERAL;
-
-
-/* ===============================================================
- Graph Manager
- Properties/Methods/Events
-*/
-
-#define KSPROPSETID_GM \
- 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D
-
-typedef enum
-{
- KSPROPERTY_GM_GRAPHMANAGER,
- KSPROPERTY_GM_TIMESTAMP_CLOCK,
- KSPROPERTY_GM_RATEMATCH,
- KSPROPERTY_GM_RENDERCLOCK
-} KSPROPERTY_GM;
-
-
-/* ===============================================================
- Media Seeking
- Properties/Methods/Events
-*/
-
-#define KSPROPSETID_MediaSeeking \
- 0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
-
-typedef enum
-{
- KSPROPERTY_MEDIASEEKING_CAPABILITIES,
- KSPROPERTY_MEDIASEEKING_FORMATS,
- KSPROPERTY_MEDIASEEKING_TIMEFORMAT,
- KSPROPERTY_MEDIASEEKING_POSITION,
- KSPROPERTY_MEDIASEEKING_STOPPOSITION,
- KSPROPERTY_MEDIASEEKING_POSITIONS,
- KSPROPERTY_MEDIASEEKING_DURATION,
- KSPROPERTY_MEDIASEEKING_AVAILABLE,
- KSPROPERTY_MEDIASEEKING_PREROLL,
- KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
-} KSPROPERTY_MEDIASEEKING;
-
-
-/* ===============================================================
- Pin
- Properties/Methods/Events
-*/
-
-#define KSPROPSETID_Pin \
- 0x8C134960L, 0x51AD, 0x11CF, 0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00
-
-typedef enum
-{
- KSPROPERTY_PIN_CINSTANCES,
- KSPROPERTY_PIN_CTYPES,
- KSPROPERTY_PIN_DATAFLOW,
- KSPROPERTY_PIN_DATARANGES,
- KSPROPERTY_PIN_DATAINTERSECTION,
- KSPROPERTY_PIN_INTERFACES,
- KSPROPERTY_PIN_MEDIUMS,
- KSPROPERTY_PIN_COMMUNICATION,
- KSPROPERTY_PIN_GLOBALCINSTANCES,
- KSPROPERTY_PIN_NECESSARYINSTANCES,
- KSPROPERTY_PIN_PHYSICALCONNECTION,
- KSPROPERTY_PIN_CATEGORY,
- KSPROPERTY_PIN_NAME,
- KSPROPERTY_PIN_CONSTRAINEDDATARANGES,
- KSPROPERTY_PIN_PROPOSEDATAFORMAT
-} KSPROPERTY_PIN;
-
-
-/* ===============================================================
- Quality
- Properties/Methods/Events
-*/
-
-#define KSPROPSETID_Quality \
- 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
-
-typedef enum
-{
- KSPROPERTY_QUALITY_REPORT,
- KSPROPERTY_QUALITY_ERROR
-} KSPROPERTY_QUALITY;
-
-
-/* ===============================================================
- Stream
- Properties/Methods/Events
-*/
-
-#define KSPROPSETID_Stream \
- 0x65aaba60L, 0x98ae, 0x11cf, 0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
-
-typedef enum
-{
- KSPROPERTY_STREAM_ALLOCATOR,
- KSPROPERTY_STREAM_QUALITY,
- KSPROPERTY_STREAM_DEGRADATION,
- KSPROPERTY_STREAM_MASTERCLOCK,
- KSPROPERTY_STREAM_TIMEFORMAT,
- KSPROPERTY_STREAM_PRESENTATIONTIME,
- KSPROPERTY_STREAM_PRESENTATIONEXTENT,
- KSPROPERTY_STREAM_FRAMETIME,
- KSPROPERTY_STREAM_RATECAPABILITY,
- KSPROPERTY_STREAM_RATE,
- KSPROPERTY_STREAM_PIPE_ID
-} KSPROPERTY_STREAM;
-
-
-/* ===============================================================
- StreamAllocator
- Properties/Methods/Events
-*/
-
-#define KSPROPSETID_StreamAllocator \
- 0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
-
-typedef enum
-{
- KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE,
- KSPROPERTY_STREAMALLOCATOR_STATUS
-} KSPROPERTY_STREAMALLOCATOR;
-
-#define KSMETHODSETID_StreamAllocator \
- 0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
-
-typedef enum
-{
- KSMETHOD_STREAMALLOCATOR_ALLOC,
- KSMETHOD_STREAMALLOCATOR_FREE
-} KSMETHOD_STREAMALLOCATOR;
-
-
-#define KSEVENTSETID_StreamAllocator
-
-typedef enum
-{
- KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME,
- KSEVENT_STREAMALLOCATOR_FREEFRAME
-} KSEVENT_STREAMALLOCATOR;
-
-
-/* ===============================================================
- StreamInterface
- Properties/Methods/Events
-*/
-
-#define KSPROPSETID_StreamInterface \
- 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
-
-typedef enum
-{
- KSPROPERTY_STREAMINTERFACE_HEADERSIZE
-} KSPROPERTY_STREAMINTERFACE;
-
-
-/* ===============================================================
- Topology
- Properties/Methods/Events
-*/
-
-#define KSPROPSETID_Topology \
- 0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
-
-typedef enum
-{
- KSPROPERTY_TOPOLOGY_CATEGORIES,
- KSPROPERTY_TOPOLOGY_CONNECTIONS,
- KSPROPERTY_TOPOLOGY_NAME,
- KSPROPERTY_TOPOLOGY_NODES
-} KSPROPERTY_TOPOLOGY;
-
-
-
-/* ===============================================================
- Property Sets for audio drivers - TODO
-*/
-
-#define KSPROPSETID_AC3
-/*
- KSPROPERTY_AC3_ALTERNATE_AUDIO
- KSPROPERTY_AC3_BIT_STREAM_MODE
- KSPROPERTY_AC3_DIALOGUE_LEVEL
- KSPROPERTY_AC3_DOWNMIX
- KSPROPERTY_AC3_ERROR_CONCEALMENT
- KSPROPERTY_AC3_LANGUAGE_CODE
- KSPROPERTY_AC3_ROOM_TYPE
-*/
-
-#define KSPROPSETID_Acoustic_Echo_Cancel
-/*
- KSPROPERTY_AEC_MODE
- KSPROPERTY_AEC_NOISE_FILL_ENABLE
- KSPROPERTY_AEC_STATUS
-*/
-
-#define KSPROPSETID_Audio
-/*
- KSPROPERTY_AUDIO_3D_INTERFACE
- KSPROPERTY_AUDIO_AGC
- KSPROPERTY_AUDIO_ALGORITHM_INSTANCE
- KSPROPERTY_AUDIO_BASS
- KSPROPERTY_AUDIO_BASS_BOOST
- KSPROPERTY_AUDIO_CHANNEL_CONFIG
- KSPROPERTY_AUDIO_CHORUS_LEVEL
- KSPROPERTY_AUDIO_COPY_PROTECTION
- KSPROPERTY_AUDIO_CPU_RESOURCES
- KSPROPERTY_AUDIO_DELAY
- KSPROPERTY_AUDIO_DEMUX_DEST
- KSPROPERTY_AUDIO_DEV_SPECIFIC
- KSPROPERTY_AUDIO_DYNAMIC_RANGE
- KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE
- KSPROPERTY_AUDIO_EQ_BANDS
- KSPROPERTY_AUDIO_EQ_LEVEL
- KSPROPERTY_AUDIO_FILTER_STATE
- KSPROPERTY_AUDIO_LATENCY
- KSPROPERTY_AUDIO_LOUDNESS
- KSPROPERTY_AUDIO_MANUFACTURE_GUID
- KSPROPERTY_AUDIO_MID
- KSPROPERTY_AUDIO_MIX_LEVEL_CAPS
- KSPROPERTY_AUDIO_MIX_LEVEL_TABLE
- KSPROPERTY_AUDIO_MUTE
- KSPROPERTY_AUDIO_MUX_SOURCE
- KSPROPERTY_AUDIO_NUM_EQ_BANDS
- KSPROPERTY_AUDIO_PEAKMETER
- KSPROPERTY_AUDIO_POSITION
- KSPROPERTY_AUDIO_PREFERRED_STATUS
- KSPROPERTY_AUDIO_PRODUCT_GUID
- KSPROPERTY_AUDIO_QUALITY
- KSPROPERTY_AUDIO_REVERB_LEVEL
- KSPROPERTY_AUDIO_SAMPLING_RATE
- KSPROPERTY_AUDIO_STEREO_ENHANCE
- KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY
- KSPROPERTY_AUDIO_SURROUND_ENCODE
- KSPROPERTY_AUDIO_TREBLE
- KSPROPERTY_AUDIO_VOLUMELEVEL
- KSPROPERTY_AUDIO_WIDE_MODE
- KSPROPERTY_AUDIO_WIDENESS
-*/
-
-#define KSPROPSETID_AudioGfx
-/*
- KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID
- KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID
-*/
-
-#define KSPROPSETID_DirectSound3DBuffer
-/*
- KSPROPERTY_DIRECTSOUND3DBUFFER_ALL
- KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES
- KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION
- KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME
- KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE
- KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE
- KSPROPERTY_DIRECTSOUND3DBUFFER_MODE
- KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION
- KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY
-*/
-
-#define KSPROPSETID_DirectSound3DListener
-/*
- KSPROPERTY_DIRECTSOUND3DLISTENER_ALL
- KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
- KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH
- KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR
- KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR
- KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION
- KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION
- KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR
- KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY
-*/
-
-#define KSPROPSETID_DrmAudioStream
-/*
- KSPROPERTY_DRMAUDIOSTREAM_CONTENTID
-*/
-
-#define KSPROPSETID_Hrtf3d
-/*
- KSPROPERTY_HRTF3D_FILTER_FORMAT
- KSPROPERTY_HRTF3D_INITIALIZE
- KSPROPERTY_HRTF3D_PARAMS
-*/
-
-#define KSPROPSETID_Itd3d
-/*
- KSPROPERTY_ITD3D_PARAMS
-*/
-
-#define KSPROPSETID_Synth
-/*
- KSPROPERTY_SYNTH_CAPS
- KSPROPERTY_SYNTH_CHANNELGROUPS
- KSPROPERTY_SYNTH_LATENCYCLOCK
- KSPROPERTY_SYNTH_MASTERCLOCK
- KSPROPERTY_SYNTH_PORTPARAMETERS
- KSPROPERTY_SYNTH_RUNNINGSTATS
- KSPROPERTY_SYNTH_VOICEPRIORITY
- KSPROPERTY_SYNTH_VOLUME
- KSPROPERTY_SYNTH_VOLUMEBOOST
-*/
-
-#define KSPROPSETID_Synth_Dls
-/*
- KSPROPERTY_SYNTH_DLS_APPEND
- KSPROPERTY_SYNTH_DLS_COMPACT
- KSPROPERTY_SYNTH_DLS_DOWNLOAD
- KSPROPERTY_SYNTH_DLS_UNLOAD
- KSPROPERTY_SYNTH_DLS_WAVEFORMAT
-*/
-
-#define KSPROPSETID_Sysaudio
-/*
- KSPROPERTY_SYSAUDIO_COMPONENT_ID
- KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE
- KSPROPERTY_SYSAUDIO_DEVICE_COUNT
- KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME
- KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE
- KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME
- KSPROPERTY_SYSAUDIO_INSTANCE_INFO
- KSPROPERTY_SYSAUDIO_SELECT_GRAPH
-*/
-
-#define KSPROPSETID_Sysaudio_Pin
-/*
- KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE
-*/
-
-#define KSPROPSETID_TopologyNode
-/*
- KSPROPERTY_TOPOLOGYNODE_ENABLE
- KSPROPERTY_TOPOLOGYNODE_RESET
-*/
-
-
-/* ===============================================================
- Interface Sets - TODO
-*/
-
-#define KSINTERFACESETID_Media
-
-#define KSINTERFACESETID_Standard
-#define KSINTERFACE_STANDARD_STREAMING
-#define KSINTERFACE_STANDARD_LOOPED_STREAMING
-#define KSINTERFACE_STANDARD_CONTROL
-
-
-/* ===============================================================
- Event Sets for audio drivers - TODO
-*/
-#define KSEVENTSETID_AudioControlChange
-/*
- KSEVENT_CONTROL_CHANGE
-*/
-
-
-
-/* ===============================================================
- Node Types
-*/
-/*
- KSNODETYPE_3D_EFFECTS
- KSNODETYPE_ACOUSTIC_ECHO_CANCEL
- KSNODETYPE_ADC
- KSNODETYPE_AGC
- KSNODETYPE_CHORUS
- KSNODETYPE_DAC
- KSNODETYPE_DELAY
- KSNODETYPE_DEMUX
- KSNODETYPE_DEV_SPECIFIC
- KSNODETYPE_DMSYNTH
- KSNODETYPE_DMSYNTH_CAPS
- KSNODETYPE_DRM_DESCRAMBLE
- KSNODETYPE_EQUALIZER
- KSNODETYPE_LOUDNESS
- KSNODETYPE_MUTE
- KSNODETYPE_MUX
- KSNODETYPE_PEAKMETER
- KSNODETYPE_PROLOGIC_DECODER
- KSNODETYPE_PROLOGIC_ENCODER
- KSNODETYPE_REVERB
- KSNODETYPE_SRC
- KSNODETYPE_STEREO_ENHANCE
- KSNODETYPE_STEREO_WIDE
- KSNODETYPE_SUM
- KSNODETYPE_SUPERMIX
- KSNODETYPE_SWMIDI
- KSNODETYPE_SWSYNTH
- KSNODETYPE_SYNTHESIZER
- KSNODETYPE_TONE
- KSNODETYPE_VOLUME
-*/
-
-
-typedef PVOID KSDEVICE_HEADER,
- KSOBJECT_HEADER,
- KSOBJECT_BAG;
-
-
-
-
-/* ===============================================================
- Method Types
-*/
-
-#define KSMETHOD_TYPE_NONE 0x00000000
-#define KSMETHOD_TYPE_READ 0x00000001
-#define KSMETHOD_TYPE_WRITE 0x00000002
-#define KSMETHOD_TYPE_MODIFY 0x00000003
-#define KSMETHOD_TYPE_SOURCE 0x00000004
-#define KSMETHOD_TYPE_SEND 0x00000001
-#define KSMETHOD_TYPE_SETSUPPORT 0x00000100
-#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200
-
-
-/* ===============================================================
- Property Types
-*/
-
-#define KSPROPERTY_TYPE_GET 0x00000001
-#define KSPROPERTY_TYPE_SET 0x00000002
-#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100
-#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200
-#define KSPROPERTY_TYPE_RELATIONS 0x00000400
-#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800
-#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
-#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000
-#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
-#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
-#define KSPROPERTY_TYPE_DEFAULT_VALUES 0x00010000
-
-
-/* ===============================================================
- Topology Methods/Properties
-*/
-
-#define KSMETHOD_TYPE_TOPOLOGY 0x10000000
-#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000
-
-/*
-#define DEFINE_KS_GUID(GA,GB,GC,GD,GE,GF,GG,GH,GI,GJ,GK) \
- DEFINE_GUID(??, 0x#GA#L, 0xGB, 0xGC, 0xGD, 0xGE, 0xGF, 0xGG, 0xGH, 0xGI, 0xGJ, 0xGK)
\
- "GA-GB-GC-GDGE-GFGGGHGIGJGK"
-*/
-
-/* ===============================================================
- KS Category GUIDs
-
- BRIDGE - 0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
- CAPTURE - 0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31,
0x96
- RENDER - 0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
- MIXER - 0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
- SPLITTER - 0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00,
0x00
- DATACOMPRESSOR - 0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1,
0x00, 0x00
- DATADECOMPRESSOR - 0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1,
0x00, 0x00
- DATATRANSFORM - 0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1,
0x00, 0x00
- COMMUNICATIONSTRANSFORM - 0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9,
0x22, 0x31, 0x96
- INTERFACETRANSFORM - 0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22,
0x31, 0x96
- MEDIUMTRANSFORM - 0xCF1DDA2EL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22,
0x31, 0x96
- FILESYSTEM - 0x760FED5EL, 0x9357, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31,
0x96
- CLOCK - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
- PROXY - 0x97EBAACAL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
- QUALITY - 0x97EBAACBL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31,
0x96
-*/
-
-/* ===============================================================
- KSNAME GUIDs (defined also as KSSTRING_Xxx L"{...}"
-
- Filter - 0x9b365890L, 0x165f, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
- Pin - 0x146F1A80L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
- Clock - 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
- Allocator - 0x642F5D00L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00,
0x00
- TopologyNode - 0x0621061AL, 0xEE75, 0x11D0, 0xB9, 0x15, 0x00, 0xA0, 0xC9, 0x22, 0x31,
0x96
-*/
-
-/* ===============================================================
- Interface GUIDs
-
- Standard - 0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00,
0x00
- FileIo - 0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
-*/
-
-/* ===============================================================
- Medium Type GUIDs
-
- Standard - 0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00,
0x00
-*/
-
-/* ===============================================================
- Property Set GUIDs
-
- General - 0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31,
0x96
- StreamIo - 0x65D003CAL, 0x1523, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31,
0x96
- MediaSeeking - 0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31,
0x96
- Topology - 0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00,
0x00
- GM - 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D
- Quality - 0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00,
0x00
- Connection - 0x1D58C920L, 0xAC9B, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00,
0x00
-*/
-
-/* ===============================================================
- StreamAllocator Sets
-
- Event set - 0x75d95571L, 0x073c, 0x11d0, 0xa1, 0x61, 0x00, 0x20, 0xaf, 0xd1, 0x56,
0xe4
- Method set - 0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56,
0xe4
- Property set - 0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56,
0xe4
-*/
-
-/* ===============================================================
- StreamInterface Sets
-
- Property set - 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe,
0x8a
-*/
-
-/* ===============================================================
- Clock Sets
-
- Property set - 0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00,
0x00
- Event sets - 0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00,
0x00
-*/
-
-/* ===============================================================
- Connection Sets
-
- Event set - 0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00,
0x00
-*/
-
-/* ===============================================================
- Time Format GUIDs
-
- KSTIME_FORMAT_NONE (null guid)
- FRAME - 0x7b785570L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
- BYTE - 0x7b785571L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
- SAMPLE - 0x7b785572L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
- FIELD - 0x7b785573L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
- MEDIA_TIME - 0x7b785574L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74,
0xf6
-*/
-
-/* ===============================================================
- Media Type GUIDs
-
- NULL
- Stream -
- None -
-
- TODO ...
-*/
-
-/* ===============================================================
- KSMEMORY_TYPE_xxx
-
- WILDCARD, DONT_CARE = NULL
- SYSTEM - 0x091bb638L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
- USER - 0x8cb0fc28L, 0x7893, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
- KERNEL_PAGED - 0xd833f8f8L, 0x7894, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28,
0x02
- KERNEL_NONPAGED - 0x4a6d5fc4L, 0x7895, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06,
0x28, 0x02
- DEVICE_UNKNOWN - 0x091bb639L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06,
0x28, 0x02
-*/
-
-/* ===============================================================
- Enums
- (values have been checked)
-*/
-
-typedef enum
-{
- KsObjectTypeDevice,
- KsObjectTypeFilterFactory,
- KsObjectTypeFilter,
- KsObjectTypePin
-} KSOBJECTTYPE;
-
-typedef enum
-{
- KSSTATE_STOP,
- KSSTATE_ACQUIRE,
- KSSTATE_PAUSE,
- KSSTATE_RUN
-} KSSTATE;
-
-typedef enum
-{
- KSTARGET_STATE_DISABLED,
- KSTARGET_STATE_ENABLED
-} KSTARGET_STATE;
-
-typedef enum
-{
- KSRESET_BEGIN,
- KSRESET_END
-} KSRESET;
-
-typedef enum
-{
- KSEVENTS_NONE,
- KSEVENTS_SPINLOCK,
- KSEVENTS_MUTEX,
- KSEVENTS_FMUTEX,
- KSEVENTS_FMUTEXUNSAFE,
- KSEVENTS_INTERRUPT,
- KSEVENTS_ERESOURCE
-} KSEVENTS_LOCKTYPE;
-
-typedef enum
-{
- KSDEGRADE_STANDARD_SIMPLE,
- KSDEGRADE_STANDARD_QUALITY,
- KSDEGRADE_STANDARD_COMPUTATION,
- KSDEGRADE_STANDARD_SKIP
-} KSDEGRADE_STANDARD;
-
-typedef enum
-{
- KSPIN_DATAFLOW_IN = 1,
- KSPIN_DATAFLOW_OUT
-} KSPIN_DATAFLOW;
-
-typedef enum
-{
- KSPIN_COMMUNICATION_NONE,
- KSPIN_COMMUNICATION_SINK,
- KSPIN_COMMUNICATION_SOURCE,
- KSPIN_COMMUNICATION_BOTH,
- KSPIN_COMMUNICATION_BRIDGE
-} KSPIN_COMMUNICATION;
-
-typedef enum
-{
- KsListEntryTail,
- KsListEntryHead
-} KSLIST_ENTRY_LOCATION;
-
-typedef enum
-{
- KsStackCopyToNewLocation,
- KsStackReuseCurrentLocation,
- KsStackUseNewLocation
-} KSSTACK_USE;
-
-typedef enum
-{
- KsAcquireOnly,
- KsAcquireAndRemove,
- KsAcquireOnlySingleItem,
- KsAcquireAndRemoveOnlySingleItem
-} KSIRP_REMOVAL_OPERATION;
-
-typedef enum
-{
- KsInvokeOnSuccess = 1,
- KsInvokeOnError = 2,
- KsInvokeOnCancel = 4
-} KSCOMPLETION_INVOCATION;
-
-
-
-/* MOVE ME */
-typedef NTSTATUS (*PFNKSCONTEXT_DISPATCH)(
- IN PVOID Context,
- IN PIRP Irp);
-
-
-/* ===============================================================
- Framing
-*/
-
-typedef struct
-{
-} KS_FRAMING_ITEM, *PKS_FRAMING_ITEM;
-
-typedef struct
-{
-} KS_FRAMING_RANGE, *PKS_FRAMING_RANGE;
-
-typedef struct
-{
- /* Obsolete */
-} KS_FRAMING_RANGE_WEIGHTED, *PKS_FRAMING_RANGE_WEIGHTED;
-
-/* ??? */
-typedef struct
-{
-} KS_COMPRESSION, *PKS_COMPRESSION;
-
-
-/* ===============================================================
- Common
-*/
-
-typedef struct
-{
- GUID Set;
- ULONG Id;
- ULONG Flags;
-} KSIDENTIFIER, *PKSIDENTIFIER;
-
-typedef KSIDENTIFIER KSPROPERTY, *PKSPROPERTY;
-typedef KSIDENTIFIER KSMETHOD, *PKSMETHOD;
-typedef KSIDENTIFIER KSEVENT, *PKSEVENT;
-
-typedef KSIDENTIFIER KSDEGRADE, *PKSDEGRADE;
-
-typedef KSIDENTIFIER KSPIN_INTERFACE, *PKSPIN_INTERFACE;
-typedef KSIDENTIFIER KSPIN_MEDIUM, *PKSPIN_MEDIUM;
-
-typedef struct
-{
-} KSDATARANGE, *PKSDATARANGE;
-
-typedef struct
-{
-} KSDATAFORMAT, *PKSDATAFORMAT;
-
-typedef struct
-{
-} KSATTRIBUTE, *PKSATTRIBUTE;
-
-
-/* ===============================================================
- Priorities
-*/
-
-#define KSPRIORITY_LOW 0x00000001
-#define KSPRIORITY_NORMAL 0x40000000
-#define KSPRIORITY_HIGH 0x80000000
-#define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF
-
-typedef struct
-{
- ULONG PriorityClass;
- ULONG PrioritySubClass;
-} KSPRIORITY, *PKSPRIORITY;
-
-
-/* ===============================================================
- Dispatch Table
-
http://www.osronline.com/DDKx/stream/ks-struct_494j.htm
-*/
-
-typedef struct
-{
- PDRIVER_DISPATCH DeviceIoControl;
- PDRIVER_DISPATCH Read;
- PDRIVER_DISPATCH Write;
- PDRIVER_DISPATCH Flush;
- PDRIVER_DISPATCH Close;
- PDRIVER_DISPATCH QuerySecurity;
- PDRIVER_DISPATCH SetSecurity;
- PFAST_IO_DEVICE_CONTROL FastDeviceIoControl;
- PFAST_IO_READ FastRead;
- PFAST_IO_WRITE FastWrite;
-} KSDISPATCH_TABLE, *PKSDISPATCH_TABLE;
-
-typedef struct
-{
-} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE;
-
-typedef struct
-{
-} KSCOMPONENTID, *PKSCOMPONENTID;
-
-typedef struct
-{
-} KSBUFFER_ITEM, *PKSBUFFER_ITEM;
-
-/* ===============================================================
- Properties
-*/
-
-#define KSPROPERTY_MEMBER_RANGES 0x00000001
-#define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002
-#define KSPROPERTY_MEMBER_VALUES 0x00000003
-#define KSPROPERTY_MEMBER_FLAG_DEFAULT KSPROPERTY_MEMBER_RANGES
-
-typedef struct
-{
-} KSPROPERTY_BOUNDS_LONG, *PKSPROPERTY_BOUNDS_LONG;
-
-typedef struct
-{
-} KSPROPERTY_BOUNDS_LONGLONG, *PKSPROPERTY_BOUNDS_LONGLONG;
-
-typedef struct
-{
-} KSPROPERTY_DESCRIPTION, *PKSPROPERTY_DESCRIPTION;
-
-typedef struct
-{
-} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM;
-
-typedef struct
-{
-} KSPROPERTY_MEDIAAVAILABLE, *PKSPROPERTY_MEDIAAVAILABLE;
-
-typedef struct
-{
-} KSPROPERTY_MEMBERSHEADER, *PKSPROPERTY_MEMBERSHEADER;
-
-typedef struct
-{
-} KSPROPERTY_MEMBERSLIST, *PKSPROPERTY_MEMBERSLIST;
-
-typedef struct
-{
-} KSPROPERTY_POSITIONS, *PKSPROPERTY_POSITIONS;
-
-typedef struct
-{
-} KSPROPERTY_SERIAL, *PKSPROPERTY_SERIAL;
-
-typedef struct
-{
-} KSPROPERTY_SERIALHDR, *PKSPROPERTY_SERIALHDR;
-
-typedef struct
-{
-} KSPROPERTY_SET, *PKSPROPERTY_SET;
-
-typedef struct
-{
-} KSPROPERTY_STEPPING_LONG, *PKSPROPERTY_STEPPING_LONG;
-
-typedef struct
-{
-} KSPROPERTY_STEPPING_LONGLONG, *PKSPROPERTY_STEPPING_LONGLONG;
-
-typedef struct
-{
-} KSPROPERTY_VALUES, *PKSPROPERTY_VALUES;
-
-
-/* ===============================================================
- Allocator Framing
-*/
-
-typedef struct
-{
-} KSALLOCATOR_FRAMING, *PKSALLOCATOR_FRAMING;
-
-typedef struct
-{
-} KSALLOCATOR_FRAMING_EX, *PKSALLOCATOR_FRAMING_EX;
-
-
-/* ===============================================================
- Quality
-*/
-
-typedef struct
-{
-} KSQUALITY, *PKSQUALITY;
-
-typedef struct
-{
- HANDLE QualityManager;
- PVOID Context;
-} KSQUALITY_MANAGER, *PKSQUALITY_MANAGER;
-
-typedef struct
-{
-} KSRATE, *PKSRATE;
-
-typedef struct
-{
-} KSRATE_CAPABILITY, *PKSRATE_CAPABILITY;
-
-typedef struct
-{
- LONGLONG Granularity;
- LONGLONG Error;
-} KSRESOLUTION, *PKSRESOLUTION;
-
-typedef struct
-{
-} KSRELATIVEEVENT, *PKSRELATIVEEVENT;
-
-
-/* ===============================================================
- Timing
-*/
-
-typedef struct
-{
- LONGLONG Time;
- ULONG Numerator;
- ULONG Denominator;
-} KSTIME, *PKSTIME;
-
-typedef struct
-{
-} KSCORRELATED_TIME, *PKSCORRELATED_TIME;
-
-typedef struct
-{
- KSPROPERTY Property;
- GUID SourceFormat;
- GUID TargetFormat;
- LONGLONG Time;
-} KSP_TIMEFORMAT, *PKSP_TIMEFORMAT;
-
-typedef struct
-{
-} KSINTERVAL, *PKSINTERVAL;
-
-typedef struct
-{
-} KSFRAMETIME, *PKSFRAMETIME;
-
-
-/* ===============================================================
- Clocks
-*/
-
-typedef struct
-{
-} KSCLOCK, *PKSCLOCK, *PKSDEFAULTCLOCK; /* OK ? */
-
-typedef struct
-{
-} KSCLOCK_CREATE, *PKSCLOCK_CREATE;
-
-typedef struct
-{
-} KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE;
-
-
-/* ===============================================================
- Objects ??? SORT ME!
-*/
-
-typedef struct
-{
-} KSOBJECT_CREATE, *PKSOBJECT_CREATE;
-
-typedef struct
-{
-} KSOBJECT_CREATE_ITEM, *PKSOBJECT_CREATE_ITEM;
-
-typedef VOID (*PFNKSITEMFREECALLBACK)(
- IN PKSOBJECT_CREATE_ITEM CreateItem);
-
-typedef struct
-{
-} KSMULTIPLE_ITEM, *PKSMULTIPLE_ITEM;
-
-typedef struct
-{
-} KSQUERYBUFFER, *PKSQUERYBUFFER;
-
-typedef struct
-{
-} KSERROR, *PKSERROR;
-
-typedef struct
-{
-} KSDPC_ITEM, *PKSDPC_ITEM;
-
-
-/* ===============================================================
- Methods
-*/
-
-typedef struct
-{
-} KSMETHOD_SET, *PKSMETHOD_SET;
-
-typedef struct
-{
-} KSMETHOD_ITEM, *PKSMETHOD_ITEM;
-
-typedef struct
-{
-} KSFASTMETHOD_ITEM, *PKSFASTMETHOD_ITEM;
-
-
-/* ===============================================================
- Nodes
-*/
-
-typedef struct
-{
-} KSP_NODE, *PKSP_NODE;
-
-typedef struct
-{
- KSMETHOD Method;
- ULONG NodeID;
- ULONG Reserved;
-} KSM_NODE, *PKSM_NODE;
-
-typedef struct
-{
-} KSE_NODE, *PKSE_NODE;
-
-typedef struct
-{
-} KSNODE_CREATE, *PKSNODE_CREATE;
-
-
-/* ===============================================================
- Properties?
-*/
-
-typedef struct
-{
-} KSFASTPROPERTY_ITEM, *PKSFASTPROPERTY_ITEM;
-
-
-/* ===============================================================
- Events
-*/
-
-typedef struct
-{
-} KSEVENT_TIME_MARK, *PKSEVENT_TIME_MARK;
-
-typedef struct
-{
-} KSEVENT_TIME_INTERVAL, *PKSEVENT_TIME_INTERVAL;
-
-typedef struct
-{
-} KSEVENT_SET, *PKSEVENT_SET;
-
-typedef struct
-{
-} KSEVENT_ITEM, *PKSEVENT_ITEM;
-
-typedef struct _KSEVENT_ENTRY
-{
-} KSEVENT_ENTRY, *PKSEVENT_ENTRY;
-
-typedef struct
-{
-} KSEVENTDATA, *PKSEVENTDATA;
-
-
-/* ===============================================================
- Pins
-*/
-
-typedef struct
-{
-} KSPIN_DISPATCH, *PKSPIN_DISPATCH;
-
-typedef struct
-{
-} KSAUTOMATION_TABLE, *PKSAUTOMATION_TABLE;
-
-typedef struct
-{
-} KSPIN_DESCRIPTOR, *PKSPIN_DESCRIPTOR;
-
-/* TODO */
-/* This is just to shut the compiler up so DON'T USE IT! */
-typedef void (*PFNKSINTERSECTHANDLER)(void);
-typedef void (*PFNKSINTERSECTHANDLEREX)(void);
-
-typedef struct
-{
- const KSPIN_DISPATCH* Dispatch;
- const KSAUTOMATION_TABLE* AutomationTable;
- KSPIN_DESCRIPTOR PinDescriptor;
- ULONG Flags;
- ULONG InstancesPossible;
- ULONG InstancesNecessary;
- const KSALLOCATOR_FRAMING_EX* AllocatorFraming;
- PFNKSINTERSECTHANDLEREX IntersectHandler;
-} KSPIN_DESCRIPTOR_EX, *PKSPIN_DESCRIPTOR_EX;
-
-/* TODO */
-#define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING
-#define KSPIN_FLAG_CRITICAL_PROCESSING
-#define KSPIN_FLAG_HYPERCRITICAL_PROCESSING
-#define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING
-#define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING
-#define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL
-#define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING
-#define KSPIN_FLAG_ENFORCE_FIFO
-#define KSPIN_FLAG_GENERATE_MAPPINGS
-#define KSPIN_FLAG_DISTINCT_TRAILING_EDGE
-#define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY
-#define KSPIN_FLAG_SPLITTER
-#define KSPIN_FLAG_USE_STANDARD_TRANSPORT
-#define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT
-#define KSPIN_FLAG_FIXED_FORMAT
-#define KSPIN_FLAG_GENERATE_EOS_EVENTS
-#define KSPIN_FLAG_RENDERER
-#define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING
-#define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE
-#define KSPIN_FLAG_DENY_USERMODE_ACCESS
-#define KSPIN_FLAG_IMPLEMENT_CLOCK
-
-typedef struct
-{
- const KSPIN_DESCRIPTOR_EX* Descriptor;
- KSOBJECT_BAG Bag;
- PVOID Context;
- ULONG Id;
- KSPIN_COMMUNICATION Communication;
- BOOLEAN ConnectionIsExternal;
- KSPIN_INTERFACE ConnectionInterface;
- KSPIN_MEDIUM ConnectionMedium;
- KSPRIORITY ConnectionPriority;
- PKSDATAFORMAT ConnectionFormat;
- PKSMULTIPLE_ITEM AttributeList;
- ULONG StreamHeaderSize;
- KSPIN_DATAFLOW DataFlow;
- KSSTATE DeviceState;
- KSRESET ResetState;
- KSSTATE ClientState;
-} KSPIN, *PKSPIN;
-
-typedef struct
-{
- KSPIN_INTERFACE Interface;
- KSPIN_MEDIUM Medium;
- ULONG PinId;
- HANDLE PinToHandle;
- KSPRIORITY Priority;
-} KSPIN_CONNECT, *PKSPIN_CONNECT;
-
-typedef struct
-{
-} KSP_PIN, *PKSP_PIN;
-
-typedef struct
-{
-} KSPIN_PHYSICALCONNECTION, *PKSPIN_PHYSICALCONNECTION;
-
-
-/* ===============================================================
- Topology
-*/
-
-typedef struct
-{
- ULONG FromNode;
- ULONG FromNodePin;
- ULONG ToNode;
- ULONG ToNodePin;
-} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;
-
-typedef struct
-{
- ULONG CategoriesCount;
- const GUID* Categories;
- ULONG TopologyNodesCount;
- const GUID* TopologyNodes;
- ULONG TopologyConnectionsCount;
- const KSTOPOLOGY_CONNECTION* TopologyConnections;
- const GUID* TopologyNodesNames;
- ULONG Reserved;
-} KSTOPOLOGY, *PKSTOPOLOGY;
-
-
-/* ===============================================================
- ??? SORT ME
-*/
-
-/* TODO */
-typedef void* UNKNOWN;
-
-typedef PVOID (*PFNKSDEFAULTALLOCATE)(
- IN PVOID Context);
-
-typedef PVOID (*PFNKSDEFAULTFREE)(
- IN PVOID Context,
- IN PVOID Buffer);
-
-typedef PVOID (*PFNKSINITIALIZEALLOCATOR)(
- IN PVOID InitialContext,
- IN PKSALLOCATOR_FRAMING AllocatorFraming,
- OUT PVOID* Context);
-
-typedef PVOID (*PFNKSDELETEALLOCATOR)(
- IN PVOID Context);
-
-
-typedef NTSTATUS (*PFNKSALLOCATOR)(
- IN PIRP Irp,
- IN ULONG BufferSize,
- IN BOOL InputOperation);
-
-typedef NTSTATUS (*PFNKSHANDLER)(
- IN PIRP Irp,
- IN PKSIDENTIFIER Request,
- IN OUT PVOID Data);
-
-typedef BOOLEAN (*PFNKSFASTHANDLER)(
- IN PFILE_OBJECT FileObject,
- IN PKSIDENTIFIER UNALIGNED Request,
- IN ULONG RequestLength,
- IN OUT PVOID UNALIGNED Data,
- IN ULONG DataLength,
- OUT PIO_STATUS_BLOCK IoStatus);
-
-typedef NTSTATUS (*PFNKSADDEVENT)(
- IN PIRP Irp,
- IN PKSEVENTDATA EventData,
- IN struct _KSEVENT_ENTRY* EventEntry);
-
-typedef NTSTATUS (*PFNKINTERSECTHANDLEREX)(
- IN PVOID Context,
- IN PIRP Irp,
- IN PKSP_PIN Pin,
- IN PKSDATARANGE DataRange,
- IN PKSDATARANGE MatchingDataRange,
- IN ULONG DataBufferSize,
- OUT PVOID Data OPTIONAL,
- OUT PULONG DataSize);
-
-typedef UNKNOWN PFNALLOCATORE_ALLOCATEFRAME;
-typedef UNKNOWN PFNALLOCATOR_FREEFRAME;
-
-/*
-typedef struct
-{
- PFNALLOCATOR_ALLOCATEFRAME AllocateFrame;
- PFNALLOCATOR_FREEFRAME FreeFrame;
-}
-*/
-
-typedef struct
-{
- KSALLOCATOR_FRAMING Framing;
- ULONG AllocatedFrames;
- ULONG Reserved;
-} KSSTREAMALLOCATOR_STATUS, *PKSSTREAMALLOCATOR_STATUS;
-
-typedef struct
-{
- KSALLOCATOR_FRAMING_EX Framing;
- ULONG AllocatedFrames;
- ULONG Reserved;
-} KSSTREAMALLOCATOR_STATUS_EX, *PKSSTREAMALLOCATOR_STATUS_EX;
-
-typedef struct
-{
- ULONG Size;
- ULONG TypeSpecificFlags;
- KSTIME PresentationTime;
- LONGLONG Duration;
- ULONG FrameExtent;
- ULONG DataUsed;
- PVOID Data;
- ULONG OptionsFlags;
-} KSSTREAM_HEADER, *PKSSTREAM_HEADER;
-
-
-
-/* ===============================================================
- XP / DX8
-*/
-
-typedef struct
-{
- /* TODO */
-} KSPROCESSPIN, *PKSPROCESSPIN;
-
-typedef struct
-{
- PKSPROCESSPIN* Pins;
- ULONG Count;
-} KSPROCESSPIN_INDEXENTRY, *PKSPROCESSPIN_INDEXENTRY;
-
-
-/* ===============================================================
- Device Dispatch
-*/
-
-typedef struct
-{
- /* TODO */
-} KSDEVICE, *PKSDEVICE;
-
-typedef NTSTATUS (*PFNKSDEVICECREATE)(
- IN PKSDEVICE Device);
-
-typedef NTSTATUS (*PFNKSDEVICEPNPSTART)(
- IN PKSDEVICE Device,
- IN PIRP Irp,
- IN PCM_RESOURCE_LIST TranslatedResourceList OPTIONAL,
- IN PCM_RESOURCE_LIST UntranslatedResourceList OPTIONAL);
-
-typedef NTSTATUS (*PFNKSDEVICE)(
- IN PKSDEVICE Device);
-
-typedef NTSTATUS (*PFNKSDEVICEIRP)(
- IN PKSDEVICE Device,
- IN PIRP Irp);
-
-typedef VOID (*PFNKSDEVICEIRPVOID)(
- IN PKSDEVICE Device,
- IN PIRP Irp);
-
-typedef NTSTATUS (*PFNKSDEVICEQUERYCAPABILITIES)(
- IN PKSDEVICE Device,
- IN PIRP Irp,
- IN OUT PDEVICE_CAPABILITIES Capabilities);
-
-typedef NTSTATUS (*PFNKSDEVICEQUERYPOWER)(
- IN PKSDEVICE Device,
- IN PIRP Irp,
- IN DEVICE_POWER_STATE DeviceTo,
- IN DEVICE_POWER_STATE DeviceFrom,
- IN SYSTEM_POWER_STATE SystemTo,
- IN SYSTEM_POWER_STATE SystemFrom,
- IN POWER_ACTION Action);
-
-typedef VOID (*PFNKSDEVICESETPOWER)(
- IN PKSDEVICE Device,
- IN PIRP Irp,
- IN DEVICE_POWER_STATE To,
- IN DEVICE_POWER_STATE From);
-
-typedef struct _KSDEVICE_DISPATCH
-{
- PFNKSDEVICECREATE Add;
- PFNKSDEVICEPNPSTART Start;
- PFNKSDEVICE PostStart;
- PFNKSDEVICEIRP QueryStop;
- PFNKSDEVICEIRPVOID CancelStop;
- PFNKSDEVICEIRPVOID Stop;
- PFNKSDEVICEIRP QueryRemove;
- PFNKSDEVICEIRPVOID CancelRemove;
- PFNKSDEVICEIRPVOID Remove;
- PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities;
- PFNKSDEVICEIRPVOID SurpriseRemoval;
- PFNKSDEVICEQUERYPOWER Querypower;
- PFNKSDEVICESETPOWER SetPower;
-} KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH;
-
-
-/* ===============================================================
- Filter Dispatch
-*/
-
-typedef struct
-{
-} KSFILTER, *PKSFILTER;
-
-typedef NTSTATUS (*PFNKSFILTERIRP)(
- IN PKSFILTER Filter,
- IN PIRP Irp);
-
-typedef NTSTATUS (*PFNKSFILTERPROCESS)(
- IN PKSFILTER FIlter,
- IN PKSPROCESSPIN_INDEXENTRY ProcessPinsIndex);
-
-typedef NTSTATUS (*PFNKSFILTERVOID)(
- IN PKSFILTER Filter);
-
-typedef struct _KSFILTER_DISPATCH
-{
- PFNKSFILTERIRP Create;
- PFNKSFILTERIRP Close;
- PFNKSFILTERPROCESS Process;
- PFNKSFILTERVOID Reset;
-} KSFILTER_DISPATCH, *PKSFILTER_DISPATCH;
-
-typedef struct {
- const KSAUTOMATION_TABLE* AutomationTable;
- const GUID* Type;
- const GUID* Name;
-} KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;
-
-typedef struct {
- const KSFILTER_DISPATCH* Dispatch;
- const KSAUTOMATION_TABLE* AutomationTable;
- ULONG Version;
- ULONG Flags;
- const GUID* ReferenceGuid;
- ULONG PinDescriptorsCount;
- ULONG PinDescriptorSize;
- const KSPIN_DESCRIPTOR_EX* PinDescriptors;
- ULONG CategoriesCount;
- const GUID* Categories;
- ULONG NodeDescriptorsCount;
- ULONG NodeDescriptorSize;
- const KSNODE_DESCRIPTOR* NodeDescriptors;
- ULONG ConnectionsCount;
- const KSTOPOLOGY_CONNECTION* Connections;
- const KSCOMPONENTID* ComponentId;
-} KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR;
-
-typedef struct
-{
- const KSDEVICE_DISPATCH* Dispatch;
- ULONG FilterDescriptorsCount;
- const KSFILTER_DESCRIPTOR*const* FilterDescriptors;
-} KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR;
-
-/* ===============================================================
- Minidriver Callbacks
-*/
-
-typedef NTSTATUS (*KStrMethodHandler)(
- IN PIRP Irp,
- IN PKSIDENTIFIER Request,
- IN OUT PVOID Data);
-
-typedef NTSTATUS (*KStrSupportHandler)(
- IN PIRP Irp,
- IN PKSIDENTIFIER Request,
- IN OUT PVOID Data);
-
-
-/* ===============================================================
- Allocator Functions
-*/
-
-KSDDKAPI NTSTATUS NTAPI
-KsCreateAllocator(
- IN HANDLE ConnectionHandle,
- IN PKSALLOCATOR_FRAMING AllocatorFraming,
- OUT PHANDLE AllocatorHandle);
-
-KSDDKAPI NTSTATUS NTAPI
-KsCreateDefaultAllocator(
- IN PIRP Irp);
-
-KSDDKAPI NTSTATUS NTAPI
-KsValidateAllocatorCreateRequest(
- IN PIRP Irp,
- OUT PKSALLOCATOR_FRAMING* AllocatorFraming);
-
-KSDDKAPI NTSTATUS NTAPI
-KsCreateDefaultAllocatorEx(
- IN PIRP Irp,
- IN PVOID InitializeContext OPTIONAL,
- IN PFNKSDEFAULTALLOCATE DefaultAllocate OPTIONAL,
- IN PFNKSDEFAULTFREE DefaultFree OPTIONAL,
- IN PFNKSINITIALIZEALLOCATOR InitializeAllocator OPTIONAL,
- IN PFNKSDELETEALLOCATOR DeleteAllocator OPTIONAL);
-
-KSDDKAPI NTSTATUS NTAPI
-KsValidateAllocatorFramingEx(
- IN PKSALLOCATOR_FRAMING_EX Framing,
- IN ULONG BufferSize,
- IN const KSALLOCATOR_FRAMING_EX* PinFraming);
-
-
-/* ===============================================================
- Clock Functions
-*/
-
-typedef BOOLEAN (*PFNKSSETTIMER)(
- IN PVOID Context,
- IN PKTIMER Timer,
- IN LARGE_INTEGER DueTime,
- IN PKDPC Dpc);
-
-typedef BOOLEAN (*PFNKSCANCELTIMER)(
- IN PVOID Context,
- IN PKTIMER Timer);
-
-typedef LONGLONG (FASTCALL *PFNKSCORRELATEDTIME)(
- IN PVOID Context,
- OUT PLONGLONG SystemTime);
-
-KSDDKAPI NTSTATUS NTAPI
-KsCreateClock(
- IN HANDLE ConnectionHandle,
- IN PKSCLOCK_CREATE ClockCreate,
- OUT PHANDLE ClockHandle);
-
-KSDDKAPI NTSTATUS NTAPI
-KsCreateDefaultClock(
- IN PIRP Irp,
- IN PKSDEFAULTCLOCK DefaultClock);
-
-KSDDKAPI NTSTATUS NTAPI
-KsAllocateDefaultClock(
- OUT PKSDEFAULTCLOCK* DefaultClock);
-
-KSDDKAPI NTSTATUS NTAPI
-KsAllocateDefaultClockEx(
- OUT PKSDEFAULTCLOCK* DefaultClock,
- IN PVOID Context OPTIONAL,
- IN PFNKSSETTIMER SetTimer OPTIONAL,
- IN PFNKSCANCELTIMER CancelTimer OPTIONAL,
- IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL,
- IN const KSRESOLUTION* Resolution OPTIONAL,
- IN ULONG Flags);
-
-KSDDKAPI VOID NTAPI
-KsFreeDefaultClock(
- IN PKSDEFAULTCLOCK DefaultClock);
-
-KSDDKAPI NTSTATUS NTAPI
-KsValidateClockCreateRequest(
- IN PIRP Irp,
- OUT PKSCLOCK_CREATE* ClockCreate);
-
-KSDDKAPI KSSTATE NTAPI
-KsGetDefaultClockState(
- IN PKSDEFAULTCLOCK DefaultClock);
-
-KSDDKAPI VOID NTAPI
-KsSetDefaultClockState(
- IN PKSDEFAULTCLOCK DefaultClock,
- IN KSSTATE State);
-
-KSDDKAPI LONGLONG NTAPI
-KsGetDefaultClockTime(
- IN PKSDEFAULTCLOCK DefaultClock);
-
-KSDDKAPI VOID NTAPI
-KsSetDefaultClockTime(
- IN PKSDEFAULTCLOCK DefaultClock,
- IN LONGLONG Time);
-
-
-/* ===============================================================
- Method Functions
-*/
-
-/* Method sets - TODO: Make into macros! */
-
-#if 0
-VOID
-KSMETHOD_SET_IRP_STORAGE(
- IN IRP Irp);
-
-VOID
-KSMETHOD_ITEM_IRP_STORAGE(
- IN IRP Irp);
-
-VOID
-KSMETHOD_TYPE_IRP_STORAGE(
- IN IRP Irp);
-#endif
-
-KSDDKAPI NTSTATUS NTAPI
-KsMethodHandler(
- IN PIRP Irp,
- IN ULONG MethodSetsCount,
- IN PKSMETHOD_SET MethodSet);
-
-KSDDKAPI NTSTATUS NTAPI
-KsMethodHandlerWithAllocator(
- IN PIRP Irp,
- IN ULONG MethodSetsCount,
- IN PKSMETHOD_SET MethodSet,
- IN PFNKSALLOCATOR Allocator OPTIONAL,
- IN ULONG MethodItemSize OPTIONAL);
-
-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);
-
-
-/* ===============================================================
- Property Functions
-*/
-
-KSDDKAPI NTSTATUS NTAPI
-KsPropertyHandler(
- IN PIRP Irp,
- IN ULONG PropertySetsCount,
- IN const KSPROPERTY_SET* PropertySet);
-
-KSDDKAPI NTSTATUS NTAPI
-KsPropertyHandlerWithAllocator(
- IN PIRP Irp,
- IN ULONG PropertySetsCount,
- IN PKSPROPERTY_SET PropertySet,
- IN PFNKSALLOCATOR Allocator OPTIONAL,
- IN ULONG PropertyItemSize OPTIONAL);
-
-KSDDKAPI NTSTATUS NTAPI
-KsUnserializeObjectPropertiesFromRegistry(
- IN PFILE_OBJECT FileObject,
- IN HANDLE ParentKey OPTIONAL,
- IN PUNICODE_STRING RegistryPath OPTIONAL);
-
-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);
-
-
-/* ===============================================================
- Event Functions
-*/
-
-KSDDKAPI NTSTATUS NTAPI
-KsGenerateEvent(
- IN PKSEVENT_ENTRY EntryEvent);
-
-KSDDKAPI NTSTATUS NTAPI
-KsEnableEventWithAllocator(
- IN PIRP Irp,
- IN ULONG EventSetsCount,
- IN PKSEVENT_SET EventSet,
- IN OUT PLIST_ENTRY EventsList OPTIONAL,
- IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL,
- IN PVOID EventsLock OPTIONAL,
- IN PFNKSALLOCATOR Allocator OPTIONAL,
- IN ULONG EventItemSize OPTIONAL);
-
-KSDDKAPI NTSTATUS NTAPI
-KsGenerateDataEvent(
- IN PKSEVENT_ENTRY EventEntry,
- IN ULONG DataSize,
- IN PVOID Data);
-
-KSDDKAPI NTSTATUS NTAPI
-KsEnableEvent(
- IN PIRP Irp,
- IN ULONG EventSetsCount,
- IN KSEVENT_SET* EventSet,
- IN OUT PLIST_ENTRY EventsList OPTIONAL,
- IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL,
- IN PVOID EventsLock OPTIONAL);
-
-KSDDKAPI VOID NTAPI
-KsDiscardEvent(
- IN PKSEVENT_ENTRY EventEntry);
-
-KSDDKAPI NTSTATUS NTAPI
-KsDisableEvent(
- IN PIRP Irp,
- IN OUT PLIST_ENTRY EventsList,
- IN KSEVENTS_LOCKTYPE EventsFlags,
- IN PVOID EventsLock);
-
-KSDDKAPI VOID NTAPI
-KsFreeEventList(
- IN PFILE_OBJECT FileObject,
- IN OUT PLIST_ENTRY EventsList,
- IN KSEVENTS_LOCKTYPE EVentsFlags,
- IN PVOID EventsLock);
-
-
-/* ===============================================================
- Topology Functions
-*/
-
-KSDDKAPI NTSTATUS NTAPI
-KsValidateTopologyNodeCreateRequest(
- IN PIRP Irp,
- IN PKSTOPOLOGY Topology,
- OUT PKSNODE_CREATE* NodeCreate);
-
-KSDDKAPI NTSTATUS NTAPI
-KsCreateTopologyNode(
- IN HANDLE ParentHandle,
- IN PKSNODE_CREATE NodeCreate,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE NodeHandle);
-
-KSDDKAPI NTSTATUS NTAPI
-KsTopologyPropertyHandler(
- IN PIRP Irp,
- IN PKSPROPERTY Property,
- IN OUT PVOID Data,
- IN const KSTOPOLOGY* Topology);
-
-
-
-/* ===============================================================
- Connectivity Functions
-*/
-
-KSDDKAPI NTSTATUS NTAPI
-KsCreatePin(
- IN HANDLE FilterHandle,
- IN PKSPIN_CONNECT Connect,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE ConnectionHandle);
-
-KSDDKAPI NTSTATUS NTAPI
-KsValidateConnectRequest(
- IN PIRP Irp,
- IN ULONG DescriptorsCount,
- IN KSPIN_DESCRIPTOR* Descriptor,
- OUT PKSPIN_CONNECT* Connect);
-
-KSDDKAPI NTSTATUS NTAPI
-KsPinPropertyHandler(
- IN PIRP Irp,
- IN PKSPROPERTY Property,
- IN OUT PVOID Data,
- IN ULONG DescriptorsCount,
- IN const KSPIN_DESCRIPTOR* Descriptor);
-
-KSDDKAPI NTSTATUS NTAPI
-KsPinDataIntersection(
- IN PIRP Irp,
- IN PKSPIN Pin,
- OUT PVOID Data,
- IN ULONG DescriptorsCount,
- IN const KSPIN_DESCRIPTOR* Descriptor,
- IN PFNKSINTERSECTHANDLER IntersectHandler);
-
-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);
-
-/* Does this belong here? */
-
-KSDDKAPI NTSTATUS NTAPI
-KsHandleSizedListQuery(
- IN PIRP Irp,
- IN ULONG DataItemsCount,
- IN ULONG DataItemSize,
- IN const VOID* DataItems);
-
-
-/* ===============================================================
- IRP Helper Functions
-*/
-
-typedef NTSTATUS (*PFNKSIRPLISTCALLBACK)(
- IN PIRP Irp,
- IN PVOID Context);
-
-KSDDKAPI NTSTATUS NTAPI
-KsAcquireResetValue(
- IN PIRP Irp,
- OUT KSRESET* ResetValue);
-
-KSDDKAPI VOID NTAPI
-KsAddIrpToCancelableQueue(
- IN OUT PLIST_ENTRY QueueHead,
- IN PKSPIN_LOCK SpinLock,
- IN PIRP Irp,
- IN KSLIST_ENTRY_LOCATION ListLocation,
- IN PDRIVER_CANCEL DriverCancel OPTIONAL);
-
-KSDDKAPI NTSTATUS NTAPI
-KsAddObjectCreateItemToDeviceHeader(
- IN KSDEVICE_HEADER Header,
- IN PDRIVER_DISPATCH Create,
- IN PVOID Context,
- IN PWCHAR ObjectClass,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor);
-
-KSDDKAPI NTSTATUS NTAPI
-KsAddObjectCreateItemToObjectHeader(
- IN KSOBJECT_HEADER Header,
- IN PDRIVER_DISPATCH Create,
- IN PVOID Context,
- IN PWCHAR ObjectClass,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor);
-
-KSDDKAPI NTSTATUS NTAPI
-KsAllocateDeviceHeader(
- OUT KSDEVICE_HEADER* Header,
- IN ULONG ItemsCount,
- IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL);
-
-KSDDKAPI NTSTATUS NTAPI
-KsAllocateExtraData(
- IN PIRP Irp,
- IN ULONG ExtraSize,
- OUT PVOID* ExtraBuffer);
-
-KSDDKAPI NTSTATUS NTAPI
-KsAllocateObjectCreateItem(
- IN KSDEVICE_HEADER Header,
- IN PKSOBJECT_CREATE_ITEM CreateItem,
- IN BOOL AllocateEntry,
- IN PFNKSITEMFREECALLBACK ItemFreeCallback OPTIONAL);
-
-KSDDKAPI NTSTATUS NTAPI
-KsAllocateObjectHeader(
- OUT PVOID Header,
- IN ULONG ItemsCount,
- IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL,
- IN PIRP Irp,
- IN KSDISPATCH_TABLE* Table);
-
-KSDDKAPI VOID NTAPI
-KsCancelIo(
- IN OUT PLIST_ENTRY QueueHead,
- IN PKSPIN_LOCK SpinLock);
-
-KSDDKAPI VOID NTAPI
-KsCancelRoutine(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
-
-KSDDKAPI NTSTATUS NTAPI
-KsDefaultDeviceIoCompletion(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
-
-/* ELSEWHERE
-KSDDKAPI ULONG NTAPI
-KsDecrementCountedWorker(
- IN PKSWORKER Worker);
-*/
-
-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); /* always return false */
-
-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); /* always return false */
-
-/* This function does the same as the above */
-#define KsDispatchFastWriteFailure KsDispatchFastReadFailure
-
-KSDDKAPI NTSTATUS NTAPI
-KsDispatchInvalidDeviceRequest(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
-
-KSDDKAPI NTSTATUS NTAPI
-KsDispatchIrp(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
-
-KSDDKAPI NTSTATUS NTAPI
-KsDispatchSpecificMethod(
- IN PIRP Irp,
- IN PFNKSHANDLER Handler);
-
-KSDDKAPI NTSTATUS NTAPI
-KsDispatchSpecificProperty(
- IN PIRP Irp,
- IN PFNKSHANDLER Handler);
-
-KSDDKAPI NTSTATUS NTAPI
-KsForwardAndCatchIrp(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PFILE_OBJECT FileObject,
- IN KSSTACK_USE StackUse);
-
-KSDDKAPI NTSTATUS NTAPI
-KsForwardIrp(
- IN PIRP Irp,
- IN PFILE_OBJECT FileObject,
- IN BOOLEAN ReuseStackLocation);
-
-KSDDKAPI VOID NTAPI
-KsFreeDeviceHeader(
- IN KSDEVICE_HEADER Header);
-
-KSDDKAPI VOID NTAPI
-KsFreeObjectHeader(
- IN PVOID Header);
-
-KSDDKAPI NTSTATUS NTAPI
-KsGetChildCreateParameter(
- IN PIRP Irp,
- OUT PVOID* CreateParameter);
-
-KSDDKAPI NTSTATUS NTAPI
-KsMoveIrpsOnCancelableQueue(
- IN OUT PLIST_ENTRY SourceList,
- IN PKSPIN_LOCK SourceLock,
- IN OUT PLIST_ENTRY DestinationList,
- IN PKSPIN_LOCK DestinationLock OPTIONAL,
- IN KSLIST_ENTRY_LOCATION ListLocation,
- IN PFNKSIRPLISTCALLBACK ListCallback,
- IN PVOID Context);
-
-KSDDKAPI NTSTATUS NTAPI
-KsProbeStreamIrp(
- IN PIRP Irp,
- IN ULONG ProbeFlags,
- IN ULONG HeaderSize);
-
-KSDDKAPI NTSTATUS NTAPI
-KsQueryInformationFile(
- IN PFILE_OBJECT FileObject,
- OUT PVOID FileInformation,
- IN ULONG Length,
- IN FILE_INFORMATION_CLASS FileInformationClass);
-
-KSDDKAPI ACCESS_MASK NTAPI
-KsQueryObjectAccessMask(
- IN KSOBJECT_HEADER Header);
-
-KSDDKAPI PKSOBJECT_CREATE_ITEM NTAPI
-KsQueryObjectCreateItem(
- IN KSOBJECT_HEADER Header);
-
-KSDDKAPI NTSTATUS NTAPI
-KsReadFile(
- IN PFILE_OBJECT FileObject,
- IN PKEVENT Event OPTIONAL,
- IN PVOID PortContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID Buffer,
- IN ULONG Length,
- IN ULONG Key OPTIONAL,
- IN KPROCESSOR_MODE RequestorMode);
-
-KSDDKAPI VOID NTAPI
-KsReleaseIrpOnCancelableQueue(
- IN PIRP Irp,
- IN PDRIVER_CANCEL DriverCancel OPTIONAL);
-
-KSDDKAPI PIRP NTAPI
-KsRemoveIrpFromCancelableQueue(
- IN OUT PLIST_ENTRY QueueHead,
- IN PKSPIN_LOCK SpinLock,
- IN KSLIST_ENTRY_LOCATION ListLocation,
- IN KSIRP_REMOVAL_OPERATION RemovalOperation);
-
-KSDDKAPI VOID NTAPI
-KsRemoveSpecificIrpFromCancelableQueue(
- IN PIRP Irp);
-
-KSDDKAPI NTSTATUS NTAPI
-KsSetInformationFile(
- IN PFILE_OBJECT FileObject,
- IN PVOID FileInformation,
- IN ULONG Length,
- IN FILE_INFORMATION_CLASS FileInformationClass);
-
-KSDDKAPI NTSTATUS NTAPI
-KsSetMajorFunctionHandler(
- IN PDRIVER_OBJECT DriverObject,
- IN ULONG MajorFunction);
-
-KSDDKAPI NTSTATUS NTAPI
-KsStreamIo(
- IN PFILE_OBJECT FileObject,
- IN PKEVENT Event OPTIONAL,
- IN PVOID PortContext OPTIONAL,
- IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL,
- IN PVOID CompletionContext OPTIONAL,
- IN KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN OUT PVOID StreamHeaders,
- IN ULONG Length,
- IN ULONG Flags,
- IN KPROCESSOR_MODE RequestorMode);
-
-KSDDKAPI NTSTATUS NTAPI
- 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);
-
-
-/* ===============================================================
- Worker Management Functions
-*/
-
-KSDDKAPI NTSTATUS NTAPI
-KsRegisterWorker(
- IN WORK_QUEUE_TYPE WorkQueueType,
- OUT PKSWORKER* Worker);
-
-KSDDKAPI VOID NTAPI
-KsUnregisterWorker(
- IN PKSWORKER Worker);
-
-KSDDKAPI NTSTATUS NTAPI
-KsRegisterCountedWorker(
- IN WORK_QUEUE_TYPE WorkQueueType,
- IN PWORK_QUEUE_ITEM CountedWorkItem,
- OUT PKSWORKER* Worker);
-
-KSDDKAPI ULONG NTAPI
-KsDecrementCountedWorker(
- IN PKSWORKER Worker);
-
-KSDDKAPI ULONG NTAPI
-KsIncrementCountedWorker(
- IN PKSWORKER Worker);
-
-KSDDKAPI NTSTATUS NTAPI
-KsQueueWorkItem(
- IN PKSWORKER Worker,
- IN PWORK_QUEUE_ITEM WorkItem);
-
-
-/* ===============================================================
- Resources / Images
-*/
-
-KSDDKAPI NTSTATUS NTAPI
-KsLoadResource(
- IN PVOID ImageBase,
- IN POOL_TYPE PoolType,
- IN ULONG_PTR ResourceName,
- IN ULONG ResourceType,
- OUT PVOID* Resource,
- OUT PULONG ResourceSize);
-
-/* TODO: Implement
-KSDDKAPI NTSTATUS NTAPI
-KsGetImageNameAndResourceId(
- IN HANDLE RegKey,
- OUT PUNICODE_STRING ImageName,
- OUT PULONG_PTR ResourceId,
- OUT PULONG ValueType);
-
-KSDDKAPI NTSTATUS NTAPI
-KsMapModuleName(
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN PUNICODE_STRING ModuleName,
- OUT PUNICODE_STRING ImageName,
- OUT PULONG_PTR ResourceId,
- OUT PULONG ValueType);
-*/
-
-
-/* ===============================================================
- Misc. Helper Functions
-*/
-
-KSDDKAPI NTSTATUS NTAPI
-KsCacheMedium(
- IN PUNICODE_STRING SymbolicLink,
- IN PKSPIN_MEDIUM Medium,
- IN DWORD PinDirection);
-
-KSDDKAPI NTSTATUS NTAPI
-KsDefaultDispatchPnp(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
-
-KSDDKAPI VOID NTAPI
-KsSetDevicePnpAndBaseObject(
- IN KSDEVICE_HEADER Header,
- IN PDEVICE_OBJECT PnpDeviceObject,
- IN PDEVICE_OBJECT BaseDevice);
-
-KSDDKAPI NTSTATUS NTAPI
-KsDefaultDispatchPower(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
-
-KSDDKAPI VOID NTAPI
-KsSetPowerDispatch(
- IN KSOBJECT_HEADER Header,
- IN PFNKSCONTEXT_DISPATCH PowerDispatch OPTIONAL,
- IN PVOID PowerContext OPTIONAL);
-
-KSDDKAPI NTSTATUS NTAPI
-KsReferenceBusObject(
- IN KSDEVICE_HEADER Header);
-
-KSDDKAPI VOID NTAPI
-KsDereferenceBusObject(
- IN KSDEVICE_HEADER Header);
-
-KSDDKAPI NTSTATUS NTAPI
-KsFreeObjectCreateItem(
- IN KSDEVICE_HEADER Header,
- IN PUNICODE_STRING CreateItem);
-
-KSDDKAPI NTSTATUS NTAPI
-KsFreeObjectCreateItemsByContext(
- IN KSDEVICE_HEADER Header,
- IN PVOID Context);
-
-VOID
-KsNullDriverUnload(
- IN PDRIVER_OBJECT DriverObject);
-
-KSDDKAPI PDEVICE_OBJECT NTAPI
-KsQueryDevicePnpObject(
- IN KSDEVICE_HEADER Header);
-
-KSDDKAPI VOID NTAPI
-KsRecalculateStackDepth(
- IN KSDEVICE_HEADER Header,
- IN BOOLEAN ReuseStackLocation);
-
-KSDDKAPI VOID NTAPI
-KsSetTargetDeviceObject(
- IN KSOBJECT_HEADER Header,
- IN PDEVICE_OBJECT TargetDevice OPTIONAL);
-
-KSDDKAPI VOID NTAPI
-KsSetTargetState(
- IN KSOBJECT_HEADER Header,
- IN KSTARGET_STATE TargetState);
-
-KSDDKAPI NTSTATUS NTAPI
-KsSynchronousIoControlDevice(
- IN PFILE_OBJECT FileObject,
- IN KPROCESSOR_MODE RequestorMode,
- IN DWORD IoControl,
- IN PVOID InBuffer,
- IN ULONG InSize,
- OUT PVOID OutBuffer,
- IN ULONG OUtSize,
- OUT PULONG BytesReturned);
-
-
-/* ===============================================================
- AVStream Functions (XP / DirectX 8)
- NOT IMPLEMENTED YET
-
http://www.osronline.com/ddkx/stream/avstream_5q9f.htm
-*/
-
-KSDDKAPI NTSTATUS NTAPI
-KsInitializeDriver(
- IN PDRIVER_OBJECT DriverObject,
- IN PUNICODE_STRING RegistryPath,
- IN const KSDEVICE_DESCRIPTOR *Descriptor OPTIONAL
- );
-
-#if 0
-typedef void (*PFNKSFILTERFACTORYPOWER)(
- IN PKSFILTERFACTORY FilterFactory,
- IN DEVICE_POWER_STATE State);
-
-KSDDKAPI NTSTATUS NTAPI
-_KsEdit(
- IN KSOBJECT_BAG ObjectBag,
- IN OUT PVOID* PointerToPointerToItem,
- IN ULONG NewSize,
- IN ULONG OldSize,
- IN ULONG Tag);
-
-VOID
-KsAcquireControl(
- IN PVOID Object)
-{
-}
-
-VOID
-KsAcquireDevice(
- IN PKSDEVICE Device)
-{
-}
-
-NTSTATUS
-KsAddDevice(
- IN PDRIVER_OBJECT DriverObject,
- IN PDEVICE_OBJECT PhysicalDeviceObject)
-{
-}
-
-VOID
-KsAddEvent(
- IN PVOID Object,
- IN PKSEVENT_ENTRY EventEntry)
-{
-}
-
-NTSTATUS
-KsAddItemToObjectBag(
- IN KSOBJECT_BAG ObjectBag,
- IN PVOID Item,
- IN PFNKSFREE Free OPTIONAL)
-{
-}
-
-NTSTATUS
-KsAllocateObjectBag(
- IN PKSDEVICE Device,
- OUT KSOBJECT_BAG* ObjectBag)
-{
-}
-
-VOID
-KsCompletePendingRequest(
- IN PIRP Irp)
-{
-}
-
-NTSTATUS
-KsCopyObjectBagItems(
- IN KSOBJECT_BAG ObjectBagDestination,
- IN KSOBJECT_BAG ObjectBagSource)
-{
-}
-
-NTSTATUS
-KsCreateDevice(
- IN PDRIVER_OBJECT DriverObject,
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL,
- IN ULONG ExtensionSize OPTIONAL,
- OUT PKSDEVICE* Device OPTIONAL)
-{
-}
-
-NTSTATUS
-KsCreateFilterFactory(
- IN PDEVICE_OBJECT DeviceObject,
- IN const KSFILTER_DESCRIPTOR* Descriptor,
- IN PWCHAR RefString OPTIONAL,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL,
- IN ULONG CreateItemFlags,
- IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL,
- IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL,
- OUT PKFSFILTERFACTORY FilterFactory OPTIONAL)
-{
-}
-
-NTSTATUS
-KsDefaultAddEventHandler(
- IN PIRP Irp,
- IN PKSEVENTDATA EventData,
- IN OUT PKSEVENT_ENTRY EventEntry)
-{
-}
-
-NTSTATUS
-KsDeleteFilterFactory(
- IN PKSFILTERFACTORY FilterFactory)
-{
-}
-
-ULONG
-KsDeviceGetBusData(
- IN PKSDEVICE Device,
- IN ULONG DataType,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length)
-{
-}
-
-PKSFILTERFACTORY
-KsDeviceGetFirstChildFilterFactory(
- IN PKSDEVICE Device)
-{
-}
-
-PUNKNOWN
-KsDeviceGetOuterUnknown(
- IN PKSDEVICE Device)
-{
-}
-
-VOID
-KsDeviceRegisterAdapterObject(
- IN PKSDEVICE Device,
- IN PADAPTER_OBJECT AdapterObject,
- IN ULONG MaxMappingByteCount,
- IN ULONG MappingTableStride)
-{
-}
-
-KSDDKAPI PUNKNOWN NTAPI
-KsDeviceRegisterAggregatedClientUnknown(
- IN PKSDEVICE Device,
- IN PUNKNOWN ClientUnknown);
-
-ULONG
-KsDeviceSetBusData(
- IN PKSDEVICE Device,
- IN ULONG DataType,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length)
-{
-}
-
-#define KsDiscard(object, pointer) \
- KsRemoveItemFromObjectBag(object->Bag, pointer, TRUE)
-
-VOID
-KsFilterAcquireControl(
- IN PKSFILTER Filter)
-{
-}
-
-VOID
-KsFilterAcquireProcessingMutex(
- IN PKSFILTER Filter);
-
-VOID
-KsFilterAddEvent(
- IN PKSFILTER Filter,
- IN PKSEVENT_ENTRY EventEntry)
-{
-}
-
-KSDDKAPI NTSTATUS NTAPI
-KsFilterAddTopologyConnections(
- IN PKSFILTER Filter,
- IN ULONG NewConnectionsCount,
- IN const KSTOPOLOGY_CONNECTION* NewTopologyConnections);
-
-VOID
-KsFilterAttemptProcessing(
- IN PKSFILTER Filter,
- IN BOOLEAN Asynchronous);
-
-KSDDKAPI NTSTATUS NTAPI
-KsFilterCreateNode(
- IN PKSFILTER Filter,
- IN const KSNODE_DESCRIPTOR* NodeDescriptor,
- OUT PULONG NodeID);
-
-KSDDKAPI NTSTATUS NTAPI
-KsFilterCreatePinFactory(
- IN PKSFILTER Filter,
- IN const KSPIN_DESCRIPTOR_EX* PinDescriptor,
- OUT PULONG PinID);
-
-PKSDEVICE __inline
-KsFilterFactoryGetDevice(
- IN PKSFILTERFACTORY FilterFactory);
-
-/* etc. */
-#endif /* avstream */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif