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