Spaces:
Runtime error
Runtime error
/** | |
* This file has no copyright assigned and is placed in the Public Domain. | |
* This file is part of the w64 mingw-runtime package. | |
* No warranty is given; refer to the file DISCLAIMER.PD within this package. | |
*/ | |
DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000",GUID_NULL); | |
typedef enum { | |
KSRESET_BEGIN, | |
KSRESET_END | |
} KSRESET; | |
typedef enum { | |
KSSTATE_STOP, | |
KSSTATE_ACQUIRE, | |
KSSTATE_PAUSE, | |
KSSTATE_RUN | |
} KSSTATE,*PKSSTATE; | |
typedef struct { | |
ULONG PriorityClass; | |
ULONG PrioritySubClass; | |
} KSPRIORITY,*PKSPRIORITY; | |
typedef struct { | |
__MINGW_EXTENSION union { | |
_KS_ANON_STRUCT(_IDENTIFIER) | |
{ | |
GUID Set; | |
ULONG Id; | |
ULONG Flags; | |
}; | |
LONGLONG Alignment; | |
}; | |
} KSIDENTIFIER,*PKSIDENTIFIER; | |
typedef KSIDENTIFIER KSPROPERTY,*PKSPROPERTY,KSMETHOD,*PKSMETHOD,KSEVENT,*PKSEVENT; | |
typedef struct { | |
KSPROPERTY Property; | |
ULONG NodeId; | |
ULONG Reserved; | |
} KSP_NODE,*PKSP_NODE; | |
typedef struct { | |
KSMETHOD Method; | |
ULONG NodeId; | |
ULONG Reserved; | |
} KSM_NODE,*PKSM_NODE; | |
typedef struct { | |
KSEVENT Event; | |
ULONG NodeId; | |
ULONG Reserved; | |
} KSE_NODE,*PKSE_NODE; | |
DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000",KSPROPTYPESETID_General); | |
typedef struct { | |
ULONG Size; | |
ULONG Count; | |
} KSMULTIPLE_ITEM,*PKSMULTIPLE_ITEM; | |
typedef struct { | |
ULONG AccessFlags; | |
ULONG DescriptionSize; | |
KSIDENTIFIER PropTypeSet; | |
ULONG MembersListCount; | |
ULONG Reserved; | |
} KSPROPERTY_DESCRIPTION,*PKSPROPERTY_DESCRIPTION; | |
typedef struct { | |
ULONG MembersFlags; | |
ULONG MembersSize; | |
ULONG MembersCount; | |
ULONG Flags; | |
} KSPROPERTY_MEMBERSHEADER,*PKSPROPERTY_MEMBERSHEADER; | |
typedef union { | |
_KS_ANON_STRUCT(_SIGNED) | |
{ | |
LONG SignedMinimum; | |
LONG SignedMaximum; | |
}; | |
_KS_ANON_STRUCT(_UNSIGNED) | |
{ | |
ULONG UnsignedMinimum; | |
ULONG UnsignedMaximum; | |
}; | |
} KSPROPERTY_BOUNDS_LONG,*PKSPROPERTY_BOUNDS_LONG; | |
typedef union { | |
_KS_ANON_STRUCT(_SIGNED64) | |
{ | |
LONGLONG SignedMinimum; | |
LONGLONG SignedMaximum; | |
}; | |
_KS_ANON_STRUCT(_UNSIGNED64) | |
{ | |
DWORDLONG UnsignedMinimum; | |
DWORDLONG UnsignedMaximum; | |
}; | |
} KSPROPERTY_BOUNDS_LONGLONG,*PKSPROPERTY_BOUNDS_LONGLONG; | |
typedef struct { | |
ULONG SteppingDelta; | |
ULONG Reserved; | |
KSPROPERTY_BOUNDS_LONG Bounds; | |
} KSPROPERTY_STEPPING_LONG,*PKSPROPERTY_STEPPING_LONG; | |
typedef struct { | |
DWORDLONG SteppingDelta; | |
KSPROPERTY_BOUNDS_LONGLONG Bounds; | |
} KSPROPERTY_STEPPING_LONGLONG,*PKSPROPERTY_STEPPING_LONGLONG; | |
typedef struct _KSDEVICE_DESCRIPTOR KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR; | |
typedef struct _KSDEVICE_DISPATCH KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH; | |
typedef struct _KSDEVICE KSDEVICE, *PKSDEVICE; | |
typedef struct _KSFILTERFACTORY KSFILTERFACTORY, *PKSFILTERFACTORY; | |
typedef struct _KSFILTER_DESCRIPTOR KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR; | |
typedef struct _KSFILTER_DISPATCH KSFILTER_DISPATCH, *PKSFILTER_DISPATCH; | |
typedef struct _KSFILTER KSFILTER, *PKSFILTER; | |
typedef struct _KSPIN_DESCRIPTOR_EX KSPIN_DESCRIPTOR_EX, *PKSPIN_DESCRIPTOR_EX; | |
typedef struct _KSPIN_DISPATCH KSPIN_DISPATCH, *PKSPIN_DISPATCH; | |
typedef struct _KSCLOCK_DISPATCH KSCLOCK_DISPATCH, *PKSCLOCK_DISPATCH; | |
typedef struct _KSALLOCATOR_DISPATCH KSALLOCATOR_DISPATCH, *PKSALLOCATOR_DISPATCH; | |
typedef struct _KSPIN KSPIN, *PKSPIN; | |
typedef struct _KSNODE_DESCRIPTOR KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR; | |
typedef struct _KSSTREAM_POINTER_OFFSET KSSTREAM_POINTER_OFFSET, *PKSSTREAM_POINTER_OFFSET; | |
typedef struct _KSSTREAM_POINTER KSSTREAM_POINTER, *PKSSTREAM_POINTER; | |
typedef struct _KSMAPPING KSMAPPING, *PKSMAPPING; | |
typedef struct _KSPROCESSPIN KSPROCESSPIN, *PKSPROCESSPIN; | |
typedef struct _KSPROCESSPIN_INDEXENTRY KSPROCESSPIN_INDEXENTRY, *PKSPROCESSPIN_INDEXENTRY; | |
typedef PVOID PKSWORKER; | |
typedef struct { | |
ULONG NotificationType; | |
__MINGW_EXTENSION union { | |
struct { | |
HANDLE Event; | |
ULONG_PTR Reserved[2]; | |
} EventHandle; | |
struct { | |
HANDLE Semaphore; | |
ULONG Reserved; | |
LONG Adjustment; | |
} SemaphoreHandle; | |
struct { | |
PVOID Event; | |
KPRIORITY Increment; | |
ULONG_PTR Reserved; | |
} EventObject; | |
struct { | |
PVOID Semaphore; | |
KPRIORITY Increment; | |
LONG Adjustment; | |
} SemaphoreObject; | |
struct { | |
PKDPC Dpc; | |
ULONG ReferenceCount; | |
ULONG_PTR Reserved; | |
} Dpc; | |
struct { | |
PWORK_QUEUE_ITEM WorkQueueItem; | |
WORK_QUEUE_TYPE WorkQueueType; | |
ULONG_PTR Reserved; | |
} WorkItem; | |
struct { | |
PWORK_QUEUE_ITEM WorkQueueItem; | |
PKSWORKER KsWorkerObject; | |
ULONG_PTR Reserved; | |
} KsWorkItem; | |
struct { | |
PVOID Unused; | |
LONG_PTR Alignment[2]; | |
} Alignment; | |
}; | |
} KSEVENTDATA,*PKSEVENTDATA; | |
typedef struct { | |
KSEVENT Event; | |
PKSEVENTDATA EventData; | |
PVOID Reserved; | |
} KSQUERYBUFFER,*PKSQUERYBUFFER; | |
typedef struct { | |
ULONG Size; | |
ULONG Flags; | |
__MINGW_EXTENSION union { | |
HANDLE ObjectHandle; | |
PVOID ObjectPointer; | |
}; | |
PVOID Reserved; | |
KSEVENT Event; | |
KSEVENTDATA EventData; | |
} KSRELATIVEEVENT; | |
typedef struct { | |
KSEVENTDATA EventData; | |
LONGLONG MarkTime; | |
} KSEVENT_TIME_MARK,*PKSEVENT_TIME_MARK; | |
typedef struct { | |
KSEVENTDATA EventData; | |
LONGLONG TimeBase; | |
LONGLONG Interval; | |
} KSEVENT_TIME_INTERVAL,*PKSEVENT_TIME_INTERVAL; | |
typedef struct { | |
LONGLONG TimeBase; | |
LONGLONG Interval; | |
} KSINTERVAL,*PKSINTERVAL; | |
DEFINE_GUIDSTRUCT("1464EDA5-6A8F-11D1-9AA7-00A0C9223196",KSPROPSETID_General); | |
typedef enum { | |
KSPROPERTY_GENERAL_COMPONENTID | |
} KSPROPERTY_GENERAL; | |
typedef struct { | |
GUID Manufacturer; | |
GUID Product; | |
GUID Component; | |
GUID Name; | |
ULONG Version; | |
ULONG Revision; | |
} KSCOMPONENTID,*PKSCOMPONENTID; | |
DEFINE_GUIDSTRUCT("65D003CA-1523-11D2-B27A-00A0C9223196",KSMETHODSETID_StreamIo); | |
typedef enum { | |
KSMETHOD_STREAMIO_READ, | |
KSMETHOD_STREAMIO_WRITE | |
} KSMETHOD_STREAMIO; | |
DEFINE_GUIDSTRUCT("EE904F0C-D09B-11D0-ABE9-00A0C9223196",KSPROPSETID_MediaSeeking); | |
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; | |
typedef enum { | |
KS_SEEKING_NoPositioning, | |
KS_SEEKING_AbsolutePositioning, | |
KS_SEEKING_RelativePositioning, | |
KS_SEEKING_IncrementalPositioning, | |
KS_SEEKING_PositioningBitsMask = 0x3, | |
KS_SEEKING_SeekToKeyFrame, | |
KS_SEEKING_ReturnTime = 0x8 | |
} KS_SEEKING_FLAGS; | |
typedef enum { | |
KS_SEEKING_CanSeekAbsolute = 0x1, | |
KS_SEEKING_CanSeekForwards = 0x2, | |
KS_SEEKING_CanSeekBackwards = 0x4, | |
KS_SEEKING_CanGetCurrentPos = 0x8, | |
KS_SEEKING_CanGetStopPos = 0x10, | |
KS_SEEKING_CanGetDuration = 0x20, | |
KS_SEEKING_CanPlayBackwards = 0x40 | |
} KS_SEEKING_CAPABILITIES; | |
typedef struct { | |
LONGLONG Current; | |
LONGLONG Stop; | |
KS_SEEKING_FLAGS CurrentFlags; | |
KS_SEEKING_FLAGS StopFlags; | |
} KSPROPERTY_POSITIONS,*PKSPROPERTY_POSITIONS; | |
typedef struct { | |
LONGLONG Earliest; | |
LONGLONG Latest; | |
} KSPROPERTY_MEDIAAVAILABLE,*PKSPROPERTY_MEDIAAVAILABLE; | |
typedef struct { | |
KSPROPERTY Property; | |
GUID SourceFormat; | |
GUID TargetFormat; | |
LONGLONG Time; | |
} KSP_TIMEFORMAT,*PKSP_TIMEFORMAT; | |
DEFINE_GUIDSTRUCT("720D4AC0-7533-11D0-A5D6-28DB04C10000",KSPROPSETID_Topology); | |
typedef enum { | |
KSPROPERTY_TOPOLOGY_CATEGORIES, | |
KSPROPERTY_TOPOLOGY_NODES, | |
KSPROPERTY_TOPOLOGY_CONNECTIONS, | |
KSPROPERTY_TOPOLOGY_NAME | |
} KSPROPERTY_TOPOLOGY; | |
DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000",KSCATEGORY_BRIDGE); | |
DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196",KSCATEGORY_CAPTURE); | |
DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196",KSCATEGORY_RENDER); | |
DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000",KSCATEGORY_MIXER); | |
DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_SPLITTER); | |
DEFINE_GUIDSTRUCT("1E84C900-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_DATACOMPRESSOR); | |
DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_DATADECOMPRESSOR); | |
DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_DATATRANSFORM); | |
DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_COMMUNICATIONSTRANSFORM); | |
DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_INTERFACETRANSFORM); | |
DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_MEDIUMTRANSFORM); | |
DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196",KSCATEGORY_FILESYSTEM); | |
DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000",KSCATEGORY_CLOCK); | |
DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196",KSCATEGORY_PROXY); | |
DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196",KSCATEGORY_QUALITY); | |
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; | |
typedef struct { | |
ULONG CreateFlags; | |
ULONG Node; | |
} KSNODE_CREATE,*PKSNODE_CREATE; | |
DEFINE_GUIDSTRUCT("7b785570-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_FRAME); | |
DEFINE_GUIDSTRUCT("7b785571-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_BYTE); | |
DEFINE_GUIDSTRUCT("7b785572-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_SAMPLE); | |
DEFINE_GUIDSTRUCT("7b785573-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_FIELD); | |
DEFINE_GUIDSTRUCT("7b785574-8c82-11cf-bc0c-00aa00ac74f6",KSTIME_FORMAT_MEDIA_TIME); | |
typedef KSIDENTIFIER KSPIN_INTERFACE,*PKSPIN_INTERFACE; | |
DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000",KSINTERFACESETID_Standard); | |
typedef enum { | |
KSINTERFACE_STANDARD_STREAMING, | |
KSINTERFACE_STANDARD_LOOPED_STREAMING, | |
KSINTERFACE_STANDARD_CONTROL | |
} KSINTERFACE_STANDARD; | |
DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196",KSINTERFACESETID_FileIo); | |
typedef enum { | |
KSINTERFACE_FILEIO_STREAMING | |
} KSINTERFACE_FILEIO; | |
DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000",KSMEDIUMSETID_Standard); | |
DEFINE_GUIDSTRUCT("8C134960-51AD-11CF-878A-94F801C10000",KSPROPSETID_Pin); | |
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; | |
typedef struct { | |
KSPROPERTY Property; | |
ULONG PinId; | |
ULONG Reserved; | |
} KSP_PIN,*PKSP_PIN; | |
typedef struct { | |
ULONG PossibleCount; | |
ULONG CurrentCount; | |
} KSPIN_CINSTANCES,*PKSPIN_CINSTANCES; | |
typedef enum { | |
KSPIN_DATAFLOW_IN = 1, | |
KSPIN_DATAFLOW_OUT | |
} KSPIN_DATAFLOW,*PKSPIN_DATAFLOW; | |
typedef union { | |
__MINGW_EXTENSION struct { | |
ULONG FormatSize; | |
ULONG Flags; | |
ULONG SampleSize; | |
ULONG Reserved; | |
GUID MajorFormat; | |
GUID SubFormat; | |
GUID Specifier; | |
}; | |
LONGLONG Alignment; | |
} KSDATAFORMAT,*PKSDATAFORMAT,KSDATARANGE,*PKSDATARANGE; | |
typedef struct { | |
ULONG Size; | |
ULONG Flags; | |
GUID Attribute; | |
} KSATTRIBUTE,*PKSATTRIBUTE; | |
typedef struct { | |
ULONG Count; | |
PKSATTRIBUTE *Attributes; | |
} KSATTRIBUTE_LIST,*PKSATTRIBUTE_LIST; | |
typedef enum { | |
KSPIN_COMMUNICATION_NONE, | |
KSPIN_COMMUNICATION_SINK, | |
KSPIN_COMMUNICATION_SOURCE, | |
KSPIN_COMMUNICATION_BOTH, | |
KSPIN_COMMUNICATION_BRIDGE | |
} KSPIN_COMMUNICATION,*PKSPIN_COMMUNICATION; | |
typedef KSIDENTIFIER KSPIN_MEDIUM,*PKSPIN_MEDIUM; | |
typedef struct { | |
KSPIN_INTERFACE Interface; | |
KSPIN_MEDIUM Medium; | |
ULONG PinId; | |
HANDLE PinToHandle; | |
KSPRIORITY Priority; | |
} KSPIN_CONNECT,*PKSPIN_CONNECT; | |
typedef struct { | |
ULONG Size; | |
ULONG Pin; | |
WCHAR SymbolicLinkName[1]; | |
} KSPIN_PHYSICALCONNECTION,*PKSPIN_PHYSICALCONNECTION; | |
typedef NTSTATUS (*PFNKSINTERSECTHANDLER) ( PIRP Irp, PKSP_PIN Pin, | |
PKSDATARANGE DataRange, | |
PVOID Data); | |
typedef NTSTATUS (*PFNKSINTERSECTHANDLEREX)(PVOID Context, PIRP Irp, | |
PKSP_PIN Pin, | |
PKSDATARANGE DataRange, | |
PKSDATARANGE MatchingDataRange, | |
ULONG DataBufferSize, | |
PVOID Data, | |
PULONG DataSize); | |
DEFINE_GUIDSTRUCT("9b365890-165f-11d0-a195-0020afd156e4",KSNAME_Filter); | |
DEFINE_GUIDSTRUCT("146F1A80-4791-11D0-A5D6-28DB04C10000",KSNAME_Pin); | |
DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000",KSNAME_Clock); | |
DEFINE_GUIDSTRUCT("642F5D00-4791-11D0-A5D6-28DB04C10000",KSNAME_Allocator); | |
DEFINE_GUIDSTRUCT("0621061A-EE75-11D0-B915-00A0C9223196",KSNAME_TopologyNode); | |
typedef struct { | |
ULONG InterfacesCount; | |
const KSPIN_INTERFACE *Interfaces; | |
ULONG MediumsCount; | |
const KSPIN_MEDIUM *Mediums; | |
ULONG DataRangesCount; | |
const PKSDATARANGE *DataRanges; | |
KSPIN_DATAFLOW DataFlow; | |
KSPIN_COMMUNICATION Communication; | |
const GUID *Category; | |
const GUID *Name; | |
__MINGW_EXTENSION union { | |
LONGLONG Reserved; | |
__MINGW_EXTENSION struct { | |
ULONG ConstrainedDataRangesCount; | |
PKSDATARANGE *ConstrainedDataRanges; | |
}; | |
}; | |
} KSPIN_DESCRIPTOR, *PKSPIN_DESCRIPTOR; | |
typedef const KSPIN_DESCRIPTOR *PCKSPIN_DESCRIPTOR; | |
DEFINE_GUIDSTRUCT("E436EB83-524F-11CE-9F53-0020AF0BA770",KSDATAFORMAT_TYPE_STREAM); | |
DEFINE_GUIDSTRUCT("E436EB8E-524F-11CE-9F53-0020AF0BA770",KSDATAFORMAT_SUBTYPE_NONE); | |
DEFINE_GUIDSTRUCT("AA797B40-E974-11CF-A5D6-28DB04C10000",KSDATAFORMAT_SPECIFIER_FILENAME); | |
DEFINE_GUIDSTRUCT("65E8773C-8F56-11D0-A3B9-00A0C9223196",KSDATAFORMAT_SPECIFIER_FILEHANDLE); | |
DEFINE_GUIDSTRUCT("0F6417D6-C318-11D0-A43F-00A0C9223196",KSDATAFORMAT_SPECIFIER_NONE); | |
DEFINE_GUIDSTRUCT("D16AD380-AC1A-11CF-A5D6-28DB04C10000",KSPROPSETID_Quality); | |
typedef enum { | |
KSPROPERTY_QUALITY_REPORT, | |
KSPROPERTY_QUALITY_ERROR | |
} KSPROPERTY_QUALITY; | |
DEFINE_GUIDSTRUCT("1D58C920-AC9B-11CF-A5D6-28DB04C10000",KSPROPSETID_Connection); | |
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; | |
typedef struct { | |
__MINGW_EXTENSION union { | |
ULONG OptionsFlags; | |
ULONG RequirementsFlags; | |
}; | |
POOL_TYPE PoolType; | |
ULONG PoolType; | |
ULONG Frames; | |
ULONG FrameSize; | |
ULONG FileAlignment; | |
ULONG Reserved; | |
} KSALLOCATOR_FRAMING,*PKSALLOCATOR_FRAMING; | |
typedef PVOID (*PFNKSDEFAULTALLOCATE)(PVOID Context); | |
typedef VOID (*PFNKSDEFAULTFREE)(PVOID Context, PVOID Buffer); | |
typedef NTSTATUS (*PFNKSINITIALIZEALLOCATOR)(PVOID InitialContext, | |
PKSALLOCATOR_FRAMING AllocatorFraming, | |
PVOID* Context); | |
typedef VOID (*PFNKSDELETEALLOCATOR) (PVOID Context); | |
typedef struct { | |
ULONG MinFrameSize; | |
ULONG MaxFrameSize; | |
ULONG Stepping; | |
} KS_FRAMING_RANGE,*PKS_FRAMING_RANGE; | |
typedef struct { | |
KS_FRAMING_RANGE Range; | |
ULONG InPlaceWeight; | |
ULONG NotInPlaceWeight; | |
} KS_FRAMING_RANGE_WEIGHTED,*PKS_FRAMING_RANGE_WEIGHTED; | |
typedef struct { | |
ULONG RatioNumerator; | |
ULONG RatioDenominator; | |
ULONG RatioConstantMargin; | |
} KS_COMPRESSION,*PKS_COMPRESSION; | |
typedef struct { | |
GUID MemoryType; | |
GUID BusType; | |
ULONG MemoryFlags; | |
ULONG BusFlags; | |
ULONG Flags; | |
ULONG Frames; | |
ULONG FileAlignment; | |
ULONG MemoryTypeWeight; | |
KS_FRAMING_RANGE PhysicalRange; | |
KS_FRAMING_RANGE_WEIGHTED FramingRange; | |
} KS_FRAMING_ITEM,*PKS_FRAMING_ITEM; | |
typedef struct { | |
ULONG CountItems; | |
ULONG PinFlags; | |
KS_COMPRESSION OutputCompression; | |
ULONG PinWeight; | |
KS_FRAMING_ITEM FramingItem[1]; | |
} KSALLOCATOR_FRAMING_EX,*PKSALLOCATOR_FRAMING_EX; | |
DEFINE_GUIDSTRUCT("091bb638-603f-11d1-b067-00a0c9062802",KSMEMORY_TYPE_SYSTEM); | |
DEFINE_GUIDSTRUCT("8cb0fc28-7893-11d1-b069-00a0c9062802",KSMEMORY_TYPE_USER); | |
DEFINE_GUIDSTRUCT("d833f8f8-7894-11d1-b069-00a0c9062802",KSMEMORY_TYPE_KERNEL_PAGED); | |
DEFINE_GUIDSTRUCT("4a6d5fc4-7895-11d1-b069-00a0c9062802",KSMEMORY_TYPE_KERNEL_NONPAGED); | |
DEFINE_GUIDSTRUCT("091bb639-603f-11d1-b067-00a0c9062802",KSMEMORY_TYPE_DEVICE_UNKNOWN); | |
DEFINE_GUIDSTRUCT("75d95571-073c-11d0-a161-0020afd156e4",KSEVENTSETID_StreamAllocator); | |
typedef enum { | |
KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME, | |
KSEVENT_STREAMALLOCATOR_FREEFRAME | |
} KSEVENT_STREAMALLOCATOR; | |
DEFINE_GUIDSTRUCT("cf6e4341-ec87-11cf-a130-0020afd156e4",KSMETHODSETID_StreamAllocator); | |
typedef enum { | |
KSMETHOD_STREAMALLOCATOR_ALLOC, | |
KSMETHOD_STREAMALLOCATOR_FREE | |
} KSMETHOD_STREAMALLOCATOR; | |
DEFINE_GUIDSTRUCT("cf6e4342-ec87-11cf-a130-0020afd156e4",KSPROPSETID_StreamAllocator); | |
typedef enum { | |
KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE, | |
KSPROPERTY_STREAMALLOCATOR_STATUS | |
} KSPROPERTY_STREAMALLOCATOR; | |
typedef NTSTATUS (*PFNALLOCATOR_ALLOCATEFRAME) (PFILE_OBJECT FileObject, | |
PVOID *Frame); | |
typedef VOID (*PFNALLOCATOR_FREEFRAME) (PFILE_OBJECT FileObject, PVOID Frame); | |
typedef struct { | |
PFNALLOCATOR_ALLOCATEFRAME AllocateFrame; | |
PFNALLOCATOR_FREEFRAME FreeFrame; | |
} KSSTREAMALLOCATOR_FUNCTIONTABLE, *PKSSTREAMALLOCATOR_FUNCTIONTABLE; | |
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 { | |
LONGLONG Time; | |
ULONG Numerator; | |
ULONG Denominator; | |
} KSTIME,*PKSTIME; | |
typedef struct { | |
ULONG Size; | |
ULONG TypeSpecificFlags; | |
KSTIME PresentationTime; | |
LONGLONG Duration; | |
ULONG FrameExtent; | |
ULONG DataUsed; | |
PVOID Data; | |
ULONG OptionsFlags; | |
ULONG Reserved; | |
} KSSTREAM_HEADER,*PKSSTREAM_HEADER; | |
DEFINE_GUIDSTRUCT("1fdd8ee1-9cd3-11d0-82aa-0000f822fe8a",KSPROPSETID_StreamInterface); | |
typedef enum { | |
KSPROPERTY_STREAMINTERFACE_HEADERSIZE | |
} KSPROPERTY_STREAMINTERFACE; | |
DEFINE_GUIDSTRUCT("65aaba60-98ae-11cf-a10d-0020afd156e4",KSPROPSETID_Stream); | |
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; | |
typedef struct { | |
HANDLE QualityManager; | |
PVOID Context; | |
} KSQUALITY_MANAGER,*PKSQUALITY_MANAGER; | |
typedef struct { | |
LONGLONG Duration; | |
ULONG FrameFlags; | |
ULONG Reserved; | |
} KSFRAMETIME,*PKSFRAMETIME; | |
typedef struct { | |
LONGLONG PresentationStart; | |
LONGLONG Duration; | |
KSPIN_INTERFACE Interface; | |
LONG Rate; | |
ULONG Flags; | |
} KSRATE,*PKSRATE; | |
typedef struct { | |
KSPROPERTY Property; | |
KSRATE Rate; | |
} KSRATE_CAPABILITY,*PKSRATE_CAPABILITY; | |
DEFINE_GUIDSTRUCT("DF12A4C0-AC17-11CF-A5D6-28DB04C10000",KSPROPSETID_Clock); | |
typedef struct { | |
ULONG CreateFlags; | |
} KSCLOCK_CREATE,*PKSCLOCK_CREATE; | |
typedef struct { | |
LONGLONG Time; | |
LONGLONG SystemTime; | |
} KSCORRELATED_TIME,*PKSCORRELATED_TIME; | |
typedef struct { | |
LONGLONG Granularity; | |
LONGLONG Error; | |
} KSRESOLUTION,*PKSRESOLUTION; | |
typedef enum { | |
KSPROPERTY_CLOCK_TIME, | |
KSPROPERTY_CLOCK_PHYSICALTIME, | |
KSPROPERTY_CLOCK_CORRELATEDTIME, | |
KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, | |
KSPROPERTY_CLOCK_RESOLUTION, | |
KSPROPERTY_CLOCK_STATE, | |
KSPROPERTY_CLOCK_FUNCTIONTABLE | |
} KSPROPERTY_CLOCK; | |
typedef LONGLONG (FASTCALL *PFNKSCLOCK_GETTIME)(PFILE_OBJECT FileObject); | |
typedef LONGLONG (FASTCALL *PFNKSCLOCK_CORRELATEDTIME)(PFILE_OBJECT FileObject, | |
PLONGLONG SystemTime); | |
typedef struct { | |
PFNKSCLOCK_GETTIME GetTime; | |
PFNKSCLOCK_GETTIME GetPhysicalTime; | |
PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime; | |
PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime; | |
} KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE; | |
typedef BOOLEAN (*PFNKSSETTIMER)(PVOID Context, PKTIMER Timer, | |
LARGE_INTEGER DueTime, PKDPC Dpc); | |
typedef BOOLEAN (*PFNKSCANCELTIMER) (PVOID Context, PKTIMER Timer); | |
typedef LONGLONG (FASTCALL *PFNKSCORRELATEDTIME)(PVOID Context, | |
PLONGLONG SystemTime); | |
typedef PVOID PKSDEFAULTCLOCK; | |
DEFINE_GUIDSTRUCT("364D8E20-62C7-11CF-A5D6-28DB04C10000",KSEVENTSETID_Clock); | |
typedef enum { | |
KSEVENT_CLOCK_INTERVAL_MARK, | |
KSEVENT_CLOCK_POSITION_MARK | |
} KSEVENT_CLOCK_POSITION; | |
DEFINE_GUIDSTRUCT("7f4bcbe0-9ea5-11cf-a5d6-28db04c10000",KSEVENTSETID_Connection); | |
typedef enum { | |
KSEVENT_CONNECTION_POSITIONUPDATE, | |
KSEVENT_CONNECTION_DATADISCONTINUITY, | |
KSEVENT_CONNECTION_TIMEDISCONTINUITY, | |
KSEVENT_CONNECTION_PRIORITY, | |
KSEVENT_CONNECTION_ENDOFSTREAM | |
} KSEVENT_CONNECTION; | |
typedef struct { | |
PVOID Context; | |
ULONG Proportion; | |
LONGLONG DeltaTime; | |
} KSQUALITY,*PKSQUALITY; | |
typedef struct { | |
PVOID Context; | |
ULONG Status; | |
} KSERROR,*PKSERROR; | |
typedef KSIDENTIFIER KSDEGRADE,*PKSDEGRADE; | |
DEFINE_GUIDSTRUCT("9F564180-704C-11D0-A5D6-28DB04C10000",KSDEGRADESETID_Standard); | |
typedef enum { | |
KSDEGRADE_STANDARD_SAMPLE, | |
KSDEGRADE_STANDARD_QUALITY, | |
KSDEGRADE_STANDARD_COMPUTATION, | |
KSDEGRADE_STANDARD_SKIP | |
} KSDEGRADE_STANDARD; | |
typedef NTSTATUS (*PFNKSCONTEXT_DISPATCH)(PVOID Context, PIRP Irp); | |
typedef NTSTATUS (*PFNKSHANDLER)(PIRP Irp, PKSIDENTIFIER Request, PVOID Data); | |
typedef BOOLEAN (*PFNKSFASTHANDLER)(PFILE_OBJECT FileObject, | |
PKSIDENTIFIER Request, | |
ULONG RequestLength, PVOID Data, | |
ULONG DataLength, | |
PIO_STATUS_BLOCK IoStatus); | |
typedef NTSTATUS (*PFNKSALLOCATOR) (PIRP Irp, ULONG BufferSize, | |
BOOLEAN InputOperation); | |
typedef struct { | |
KSPROPERTY_MEMBERSHEADER MembersHeader; | |
const VOID *Members; | |
} KSPROPERTY_MEMBERSLIST, *PKSPROPERTY_MEMBERSLIST; | |
typedef struct { | |
KSIDENTIFIER PropTypeSet; | |
ULONG MembersListCount; | |
const KSPROPERTY_MEMBERSLIST *MembersList; | |
} KSPROPERTY_VALUES, *PKSPROPERTY_VALUES; | |
typedef struct { | |
ULONG PropertyId; | |
__MINGW_EXTENSION union { | |
PFNKSHANDLER GetPropertyHandler; | |
BOOLEAN GetSupported; | |
}; | |
ULONG MinProperty; | |
ULONG MinData; | |
__MINGW_EXTENSION union { | |
PFNKSHANDLER SetPropertyHandler; | |
BOOLEAN SetSupported; | |
}; | |
const KSPROPERTY_VALUES *Values; | |
ULONG RelationsCount; | |
const KSPROPERTY *Relations; | |
PFNKSHANDLER SupportHandler; | |
ULONG SerializedSize; | |
} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM; | |
typedef struct { | |
ULONG PropertyId; | |
__MINGW_EXTENSION union { | |
PFNKSFASTHANDLER GetPropertyHandler; | |
BOOLEAN GetSupported; | |
}; | |
__MINGW_EXTENSION union { | |
PFNKSFASTHANDLER SetPropertyHandler; | |
BOOLEAN SetSupported; | |
}; | |
ULONG Reserved; | |
} KSFASTPROPERTY_ITEM, *PKSFASTPROPERTY_ITEM; | |
typedef struct { | |
const GUID *Set; | |
ULONG PropertiesCount; | |
const KSPROPERTY_ITEM *PropertyItem; | |
ULONG FastIoCount; | |
const KSFASTPROPERTY_ITEM *FastIoTable; | |
} KSPROPERTY_SET, *PKSPROPERTY_SET; | |
typedef struct { | |
ULONG MethodId; | |
__MINGW_EXTENSION union { | |
PFNKSHANDLER MethodHandler; | |
BOOLEAN MethodSupported; | |
}; | |
ULONG MinMethod; | |
ULONG MinData; | |
PFNKSHANDLER SupportHandler; | |
ULONG Flags; | |
} KSMETHOD_ITEM, *PKSMETHOD_ITEM; | |
typedef struct { | |
ULONG MethodId; | |
__MINGW_EXTENSION union { | |
PFNKSFASTHANDLER MethodHandler; | |
BOOLEAN MethodSupported; | |
}; | |
} KSFASTMETHOD_ITEM, *PKSFASTMETHOD_ITEM; | |
typedef struct { | |
const GUID *Set; | |
ULONG MethodsCount; | |
const KSMETHOD_ITEM *MethodItem; | |
ULONG FastIoCount; | |
const KSFASTMETHOD_ITEM *FastIoTable; | |
} KSMETHOD_SET, *PKSMETHOD_SET; | |
typedef struct _KSEVENT_ENTRY KSEVENT_ENTRY, *PKSEVENT_ENTRY; | |
typedef NTSTATUS (*PFNKSADDEVENT)(PIRP Irp, PKSEVENTDATA EventData, | |
struct _KSEVENT_ENTRY* EventEntry); | |
typedef VOID (*PFNKSREMOVEEVENT)(PFILE_OBJECT FileObject, | |
struct _KSEVENT_ENTRY* EventEntry); | |
typedef struct { | |
ULONG EventId; | |
ULONG DataInput; | |
ULONG ExtraEntryData; | |
PFNKSADDEVENT AddHandler; | |
PFNKSREMOVEEVENT RemoveHandler; | |
PFNKSHANDLER SupportHandler; | |
} KSEVENT_ITEM, *PKSEVENT_ITEM; | |
typedef struct { | |
const GUID *Set; | |
ULONG EventsCount; | |
const KSEVENT_ITEM *EventItem; | |
} KSEVENT_SET, *PKSEVENT_SET; | |
typedef struct { | |
KDPC Dpc; | |
ULONG ReferenceCount; | |
KSPIN_LOCK AccessLock; | |
} KSDPC_ITEM, *PKSDPC_ITEM; | |
typedef struct { | |
KSDPC_ITEM DpcItem; | |
LIST_ENTRY BufferList; | |
} KSBUFFER_ITEM, *PKSBUFFER_ITEM; | |
struct _KSEVENT_ENTRY { | |
LIST_ENTRY ListEntry; | |
PVOID Object; | |
__MINGW_EXTENSION union { | |
PKSDPC_ITEM DpcItem; | |
PKSBUFFER_ITEM BufferItem; | |
}; | |
PKSEVENTDATA EventData; | |
ULONG NotificationType; | |
const KSEVENT_SET *EventSet; | |
const KSEVENT_ITEM *EventItem; | |
PFILE_OBJECT FileObject; | |
ULONG SemaphoreAdjustment; | |
ULONG Reserved; | |
ULONG Flags; | |
}; | |
typedef enum { | |
KSEVENTS_NONE, | |
KSEVENTS_SPINLOCK, | |
KSEVENTS_MUTEX, | |
KSEVENTS_FMUTEX, | |
KSEVENTS_FMUTEXUNSAFE, | |
KSEVENTS_INTERRUPT, | |
KSEVENTS_ERESOURCE | |
} KSEVENTS_LOCKTYPE; | |
typedef struct { | |
PDRIVER_DISPATCH Create; | |
PVOID Context; | |
UNICODE_STRING ObjectClass; | |
PSECURITY_DESCRIPTOR SecurityDescriptor; | |
ULONG Flags; | |
} KSOBJECT_CREATE_ITEM, *PKSOBJECT_CREATE_ITEM; | |
typedef VOID (*PFNKSITEMFREECALLBACK)(PKSOBJECT_CREATE_ITEM CreateItem); | |
typedef struct { | |
ULONG CreateItemsCount; | |
PKSOBJECT_CREATE_ITEM CreateItemsList; | |
} KSOBJECT_CREATE, *PKSOBJECT_CREATE; | |
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 PVOID KSDEVICE_HEADER, KSOBJECT_HEADER; | |
typedef enum { | |
KsInvokeOnSuccess = 1, | |
KsInvokeOnError = 2, | |
KsInvokeOnCancel = 4 | |
} KSCOMPLETION_INVOCATION; | |
typedef enum { | |
KsListEntryTail, | |
KsListEntryHead | |
} KSLIST_ENTRY_LOCATION; | |
typedef enum { | |
KsAcquireOnly, | |
KsAcquireAndRemove, | |
KsAcquireOnlySingleItem, | |
KsAcquireAndRemoveOnlySingleItem | |
} KSIRP_REMOVAL_OPERATION; | |
typedef enum { | |
KsStackCopyToNewLocation, | |
KsStackReuseCurrentLocation, | |
KsStackUseNewLocation | |
} KSSTACK_USE; | |
typedef enum { | |
KSTARGET_STATE_DISABLED, | |
KSTARGET_STATE_ENABLED | |
} KSTARGET_STATE; | |
typedef NTSTATUS (*PFNKSIRPLISTCALLBACK)(PIRP Irp, PVOID Context); | |
typedef VOID (*PFNREFERENCEDEVICEOBJECT)(PVOID Context); | |
typedef VOID (*PFNDEREFERENCEDEVICEOBJECT)(PVOID Context); | |
typedef NTSTATUS (*PFNQUERYREFERENCESTRING)(PVOID Context, PWCHAR *String); | |
typedef struct { | |
INTERFACE Interface; | |
PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject; | |
PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject; | |
PFNQUERYREFERENCESTRING QueryReferenceString; | |
} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE; | |
typedef struct { | |
GUID PropertySet; | |
ULONG Count; | |
} KSPROPERTY_SERIALHDR,*PKSPROPERTY_SERIALHDR; | |
typedef struct { | |
KSIDENTIFIER PropTypeSet; | |
ULONG Id; | |
ULONG PropertyLength; | |
} KSPROPERTY_SERIAL,*PKSPROPERTY_SERIAL; | |
typedef struct { | |
GUID ProtocolId; | |
PVOID Argument1; | |
PVOID Argument2; | |
} KSHANDSHAKE, *PKSHANDSHAKE; | |
typedef struct _KSGATE KSGATE, *PKSGATE; | |
struct _KSGATE { | |
LONG Count; | |
PKSGATE NextGate; | |
}; | |
typedef PVOID KSOBJECT_BAG; | |
typedef BOOLEAN (*PFNKSGENERATEEVENTCALLBACK)(PVOID Context, | |
PKSEVENT_ENTRY EventEntry); | |
typedef NTSTATUS (*PFNKSDEVICECREATE)(PKSDEVICE Device); | |
typedef NTSTATUS (*PFNKSDEVICEPNPSTART)(PKSDEVICE Device,PIRP Irp, | |
PCM_RESOURCE_LIST TranslatedResourceList, | |
PCM_RESOURCE_LIST UntranslatedResourceList); | |
typedef NTSTATUS (*PFNKSDEVICE)(PKSDEVICE Device); | |
typedef NTSTATUS (*PFNKSDEVICEIRP)(PKSDEVICE Device,PIRP Irp); | |
typedef void (*PFNKSDEVICEIRPVOID)(PKSDEVICE Device,PIRP Irp); | |
typedef NTSTATUS (*PFNKSDEVICEQUERYCAPABILITIES)(PKSDEVICE Device,PIRP Irp, | |
PDEVICE_CAPABILITIES Capabilities); | |
typedef NTSTATUS (*PFNKSDEVICEQUERYPOWER)(PKSDEVICE Device,PIRP Irp, | |
DEVICE_POWER_STATE DeviceTo, | |
DEVICE_POWER_STATE DeviceFrom, | |
SYSTEM_POWER_STATE SystemTo, | |
SYSTEM_POWER_STATE SystemFrom, | |
POWER_ACTION Action); | |
typedef void (*PFNKSDEVICESETPOWER)(PKSDEVICE Device,PIRP Irp, | |
DEVICE_POWER_STATE To, | |
DEVICE_POWER_STATE From); | |
typedef NTSTATUS (*PFNKSFILTERFACTORYVOID)(PKSFILTERFACTORY FilterFactory); | |
typedef void (*PFNKSFILTERFACTORYPOWER)(PKSFILTERFACTORY FilterFactory, | |
DEVICE_POWER_STATE State); | |
typedef NTSTATUS (*PFNKSFILTERIRP)(PKSFILTER Filter,PIRP Irp); | |
typedef NTSTATUS (*PFNKSFILTERPROCESS)(PKSFILTER Filter, | |
PKSPROCESSPIN_INDEXENTRY Index); | |
typedef NTSTATUS (*PFNKSFILTERVOID)(PKSFILTER Filter); | |
typedef void (*PFNKSFILTERPOWER)(PKSFILTER Filter,DEVICE_POWER_STATE State); | |
typedef NTSTATUS (*PFNKSPINIRP)(PKSPIN Pin,PIRP Irp); | |
typedef NTSTATUS (*PFNKSPINSETDEVICESTATE)(PKSPIN Pin,KSSTATE ToState, | |
KSSTATE FromState); | |
typedef NTSTATUS (*PFNKSPINSETDATAFORMAT)(PKSPIN Pin,PKSDATAFORMAT OldFormat, | |
PKSMULTIPLE_ITEM OldAttributeList, | |
const KSDATARANGE *DataRange, | |
const KSATTRIBUTE_LIST *AttributeRange); | |
typedef NTSTATUS (*PFNKSPINHANDSHAKE)(PKSPIN Pin,PKSHANDSHAKE In, | |
PKSHANDSHAKE Out); | |
typedef NTSTATUS (*PFNKSPIN)(PKSPIN Pin); | |
typedef void (*PFNKSPINVOID)(PKSPIN Pin); | |
typedef void (*PFNKSPINPOWER)(PKSPIN Pin,DEVICE_POWER_STATE State); | |
typedef BOOLEAN (*PFNKSPINSETTIMER)(PKSPIN Pin,PKTIMER Timer, | |
LARGE_INTEGER DueTime,PKDPC Dpc); | |
typedef BOOLEAN (*PFNKSPINCANCELTIMER)(PKSPIN Pin,PKTIMER Timer); | |
typedef LONGLONG (FASTCALL *PFNKSPINCORRELATEDTIME)(PKSPIN Pin, | |
PLONGLONG SystemTime); | |
typedef void (*PFNKSPINRESOLUTION)(PKSPIN Pin,PKSRESOLUTION Resolution); | |
typedef NTSTATUS (*PFNKSPININITIALIZEALLOCATOR)(PKSPIN Pin, | |
PKSALLOCATOR_FRAMING AllocatorFraming, | |
PVOID *Context); | |
typedef void (*PFNKSSTREAMPOINTER)(PKSSTREAM_POINTER StreamPointer); | |
typedef struct KSAUTOMATION_TABLE_ KSAUTOMATION_TABLE,*PKSAUTOMATION_TABLE; | |
struct KSAUTOMATION_TABLE_ { | |
ULONG PropertySetsCount; | |
ULONG PropertyItemSize; | |
const KSPROPERTY_SET *PropertySets; | |
ULONG MethodSetsCount; | |
ULONG MethodItemSize; | |
const KSMETHOD_SET *MethodSets; | |
ULONG EventSetsCount; | |
ULONG EventItemSize; | |
const KSEVENT_SET *EventSets; | |
PVOID Alignment; | |
}; | |
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; | |
PFNKSDEVICEIRP QueryInterface; | |
}; | |
struct _KSFILTER_DISPATCH { | |
PFNKSFILTERIRP Create; | |
PFNKSFILTERIRP Close; | |
PFNKSFILTERPROCESS Process; | |
PFNKSFILTERVOID Reset; | |
}; | |
struct _KSPIN_DISPATCH { | |
PFNKSPINIRP Create; | |
PFNKSPINIRP Close; | |
PFNKSPIN Process; | |
PFNKSPINVOID Reset; | |
PFNKSPINSETDATAFORMAT SetDataFormat; | |
PFNKSPINSETDEVICESTATE SetDeviceState; | |
PFNKSPIN Connect; | |
PFNKSPINVOID Disconnect; | |
const KSCLOCK_DISPATCH *Clock; | |
const KSALLOCATOR_DISPATCH *Allocator; | |
}; | |
struct _KSCLOCK_DISPATCH { | |
PFNKSPINSETTIMER SetTimer; | |
PFNKSPINCANCELTIMER CancelTimer; | |
PFNKSPINCORRELATEDTIME CorrelatedTime; | |
PFNKSPINRESOLUTION Resolution; | |
}; | |
struct _KSALLOCATOR_DISPATCH { | |
PFNKSPININITIALIZEALLOCATOR InitializeAllocator; | |
PFNKSDELETEALLOCATOR DeleteAllocator; | |
PFNKSDEFAULTALLOCATE Allocate; | |
PFNKSDEFAULTFREE Free; | |
}; | |
struct _KSDEVICE_DESCRIPTOR { | |
const KSDEVICE_DISPATCH *Dispatch; | |
ULONG FilterDescriptorsCount; | |
const KSFILTER_DESCRIPTOR*const *FilterDescriptors; | |
ULONG Version; | |
}; | |
struct _KSFILTER_DESCRIPTOR { | |
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; | |
}; | |
struct _KSPIN_DESCRIPTOR_EX { | |
const KSPIN_DISPATCH *Dispatch; | |
const KSAUTOMATION_TABLE *AutomationTable; | |
KSPIN_DESCRIPTOR PinDescriptor; | |
ULONG Flags; | |
ULONG InstancesPossible; | |
ULONG InstancesNecessary; | |
const KSALLOCATOR_FRAMING_EX *AllocatorFraming; | |
PFNKSINTERSECTHANDLEREX IntersectHandler; | |
}; | |
struct _KSNODE_DESCRIPTOR { | |
const KSAUTOMATION_TABLE *AutomationTable; | |
const GUID *Type; | |
const GUID *Name; | |
PVOID Alignment; | |
}; | |
struct _KSDEVICE { | |
const KSDEVICE_DESCRIPTOR *Descriptor; | |
KSOBJECT_BAG Bag; | |
PVOID Context; | |
PDEVICE_OBJECT FunctionalDeviceObject; | |
PDEVICE_OBJECT PhysicalDeviceObject; | |
PDEVICE_OBJECT NextDeviceObject; | |
BOOLEAN Started; | |
SYSTEM_POWER_STATE SystemPowerState; | |
DEVICE_POWER_STATE DevicePowerState; | |
}; | |
struct _KSFILTERFACTORY { | |
const KSFILTER_DESCRIPTOR *FilterDescriptor; | |
KSOBJECT_BAG Bag; | |
PVOID Context; | |
}; | |
struct _KSFILTER { | |
const KSFILTER_DESCRIPTOR *Descriptor; | |
KSOBJECT_BAG Bag; | |
PVOID Context; | |
}; | |
struct _KSPIN { | |
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; | |
}; | |
struct _KSMAPPING { | |
PHYSICAL_ADDRESS PhysicalAddress; | |
ULONG ByteCount; | |
ULONG Alignment; | |
}; | |
struct _KSSTREAM_POINTER_OFFSET | |
{ | |
__MINGW_EXTENSION union { | |
PUCHAR Data; | |
PKSMAPPING Mappings; | |
}; | |
PUCHAR Data; | |
PVOID Alignment; | |
ULONG Count; | |
ULONG Remaining; | |
}; | |
struct _KSSTREAM_POINTER | |
{ | |
PVOID Context; | |
PKSPIN Pin; | |
PKSSTREAM_HEADER StreamHeader; | |
PKSSTREAM_POINTER_OFFSET Offset; | |
KSSTREAM_POINTER_OFFSET OffsetIn; | |
KSSTREAM_POINTER_OFFSET OffsetOut; | |
}; | |
struct _KSPROCESSPIN { | |
PKSPIN Pin; | |
PKSSTREAM_POINTER StreamPointer; | |
PKSPROCESSPIN InPlaceCounterpart; | |
PKSPROCESSPIN DelegateBranch; | |
PKSPROCESSPIN CopySource; | |
PVOID Data; | |
ULONG BytesAvailable; | |
ULONG BytesUsed; | |
ULONG Flags; | |
BOOLEAN Terminate; | |
}; | |
struct _KSPROCESSPIN_INDEXENTRY { | |
PKSPROCESSPIN *Pins; | |
ULONG Count; | |
}; | |
typedef enum { | |
KsObjectTypeDevice, | |
KsObjectTypeFilterFactory, | |
KsObjectTypeFilter, | |
KsObjectTypePin | |
} KSOBJECTTYPE; | |
typedef void (*PFNKSFREE)(PVOID Data); | |
typedef void (*PFNKSPINFRAMERETURN)(PKSPIN Pin,PVOID Data,ULONG Size,PMDL Mdl, | |
PVOID Context,NTSTATUS Status); | |
typedef void (*PFNKSPINIRPCOMPLETION)(PKSPIN Pin,PIRP Irp); | |
typedef struct IKsControl *PIKSCONTROL; | |
DECLARE_INTERFACE_(IKsControl,IUnknown) | |
{ | |
DEFINE_ABSTRACT_UNKNOWN() | |
STDMETHOD_(NTSTATUS,KsProperty)(THIS_ | |
PKSPROPERTY Property, | |
ULONG PropertyLength, | |
PVOID PropertyData, | |
ULONG DataLength, | |
ULONG *BytesReturned | |
) PURE; | |
STDMETHOD_(NTSTATUS,KsMethod) (THIS_ | |
PKSMETHOD Method, | |
ULONG MethodLength, | |
PVOID MethodData, | |
ULONG DataLength, | |
ULONG *BytesReturned | |
) PURE; | |
STDMETHOD_(NTSTATUS,KsEvent) (THIS_ | |
PKSEVENT Event, | |
ULONG EventLength, | |
PVOID EventData, | |
ULONG DataLength, | |
ULONG *BytesReturned | |
) PURE; | |
}; | |
typedef struct IKsReferenceClock *PIKSREFERENCECLOCK; | |
DECLARE_INTERFACE_(IKsReferenceClock,IUnknown) | |
{ | |
DEFINE_ABSTRACT_UNKNOWN() | |
STDMETHOD_(LONGLONG,GetTime) (THIS) PURE; | |
STDMETHOD_(LONGLONG,GetPhysicalTime) (THIS) PURE; | |
STDMETHOD_(LONGLONG,GetCorrelatedTime)(THIS_ | |
PLONGLONG SystemTime | |
) PURE; | |
STDMETHOD_(LONGLONG,GetCorrelatedPhysicalTime)(THIS_ | |
PLONGLONG SystemTime | |
) PURE; | |
STDMETHOD_(NTSTATUS,GetResolution) (THIS_ | |
PKSRESOLUTION Resolution | |
) PURE; | |
STDMETHOD_(NTSTATUS,GetState) (THIS_ | |
PKSSTATE State | |
) PURE; | |
}; | |
DECLARE_INTERFACE_(IKsDeviceFunctions,IUnknown) | |
{ | |
DEFINE_ABSTRACT_UNKNOWN() | |
STDMETHOD_(NTSTATUS,RegisterAdapterObjectEx) (THIS_ | |
PADAPTER_OBJECT AdapterObject, | |
PDEVICE_DESCRIPTION DeviceDescription, | |
ULONG NumberOfMapRegisters, | |
ULONG MaxMappingsByteCount, | |
ULONG MappingTableStride | |
) PURE; | |
}; | |
DEFINE_GUID(IID_IKsControl, | |
0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96); | |
DEFINE_GUID(IID_IKsFastClock, | |
0xc9902485,0xc180,0x11d2,0x84,0x73,0xd4,0x23,0x94,0x45,0x9e,0x5e); | |
DEFINE_GUID(IID_IKsDeviceFunctions, | |
0xe234f2e2,0xbd69,0x4f8c,0xb3,0xf2,0x7c,0xd7,0x9e,0xd4,0x66,0xbd); | |
extern "C" { | |
KSDDKAPI NTSTATUS NTAPI KsEnableEvent | |
(PIRP Irp, ULONG EventSetsCount, const KSEVENT_SET *EventSet, | |
PLIST_ENTRY EventsList, KSEVENTS_LOCKTYPE EventsFlags, | |
PVOID EventsLock); | |
KSDDKAPI NTSTATUS NTAPI KsEnableEventWithAllocator | |
(PIRP Irp, ULONG EventSetsCount, const KSEVENT_SET *EventSet, | |
PLIST_ENTRY EventsList, KSEVENTS_LOCKTYPE EventsFlags, | |
PVOID EventsLock, PFNKSALLOCATOR Allocator, ULONG EventItemSize); | |
KSDDKAPI NTSTATUS NTAPI KsDisableEvent | |
(PIRP Irp, PLIST_ENTRY EventsList, KSEVENTS_LOCKTYPE EventsFlags, | |
PVOID EventsLock); | |
KSDDKAPI VOID NTAPI KsDiscardEvent (PKSEVENT_ENTRY EventEntry); | |
KSDDKAPI VOID NTAPI KsFreeEventList | |
(PFILE_OBJECT FileObject, PLIST_ENTRY EventsList, | |
KSEVENTS_LOCKTYPE EventsFlags, PVOID EventsLock); | |
KSDDKAPI NTSTATUS NTAPI KsGenerateEvent (PKSEVENT_ENTRY EventEntry); | |
KSDDKAPI NTSTATUS NTAPI KsGenerateDataEvent | |
(PKSEVENT_ENTRY EventEntry, ULONG DataSize, PVOID Data); | |
KSDDKAPI VOID NTAPI KsGenerateEventList | |
(GUID *Set, ULONG EventId, PLIST_ENTRY EventsList, | |
KSEVENTS_LOCKTYPE EventsFlags, PVOID EventsLock); | |
KSDDKAPI NTSTATUS NTAPI KsPropertyHandler | |
(PIRP Irp, ULONG PropertySetsCount, | |
const KSPROPERTY_SET *PropertySet); | |
KSDDKAPI NTSTATUS NTAPI KsPropertyHandlerWithAllocator | |
(PIRP Irp, ULONG PropertySetsCount, | |
const KSPROPERTY_SET *PropertySet, PFNKSALLOCATOR Allocator, | |
ULONG PropertyItemSize); | |
KSDDKAPI BOOLEAN NTAPI KsFastPropertyHandler | |
(PFILE_OBJECT FileObject, PKSPROPERTY Property, | |
ULONG PropertyLength, PVOID Data, ULONG DataLength, | |
PIO_STATUS_BLOCK IoStatus, ULONG PropertySetsCount, | |
const KSPROPERTY_SET *PropertySet); | |
KSDDKAPI NTSTATUS NTAPI KsMethodHandler | |
(PIRP Irp, ULONG MethodSetsCount, | |
const KSMETHOD_SET *MethodSet); | |
KSDDKAPI NTSTATUS NTAPI KsMethodHandlerWithAllocator | |
(PIRP Irp, ULONG MethodSetsCount, | |
const KSMETHOD_SET *MethodSet, PFNKSALLOCATOR Allocator, | |
ULONG MethodItemSize); | |
KSDDKAPI BOOLEAN NTAPI KsFastMethodHandler | |
(PFILE_OBJECT FileObject, PKSMETHOD Method, ULONG MethodLength, | |
PVOID Data, ULONG DataLength, PIO_STATUS_BLOCK IoStatus, | |
ULONG MethodSetsCount, const KSMETHOD_SET *MethodSet); | |
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocator (PIRP Irp); | |
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocatorEx | |
(PIRP Irp, PVOID InitializeContext, | |
PFNKSDEFAULTALLOCATE DefaultAllocate, | |
PFNKSDEFAULTFREE DefaultFree, | |
PFNKSINITIALIZEALLOCATOR InitializeAllocator, | |
PFNKSDELETEALLOCATOR DeleteAllocator); | |
KSDDKAPI NTSTATUS NTAPI KsCreateAllocator | |
(HANDLE ConnectionHandle, PKSALLOCATOR_FRAMING AllocatorFraming, | |
PHANDLE AllocatorHandle); | |
KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorCreateRequest | |
(PIRP Irp, PKSALLOCATOR_FRAMING *AllocatorFraming); | |
KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorFramingEx | |
(PKSALLOCATOR_FRAMING_EX Framing, ULONG BufferSize, | |
const KSALLOCATOR_FRAMING_EX *PinFraming); | |
KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClock (PKSDEFAULTCLOCK *DefaultClock); | |
KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClockEx | |
(PKSDEFAULTCLOCK *DefaultClock, PVOID Context, | |
PFNKSSETTIMER SetTimer, PFNKSCANCELTIMER CancelTimer, | |
PFNKSCORRELATEDTIME CorrelatedTime, | |
const KSRESOLUTION *Resolution, ULONG Flags); | |
KSDDKAPI VOID NTAPI KsFreeDefaultClock (PKSDEFAULTCLOCK DefaultClock); | |
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultClock (PIRP Irp, PKSDEFAULTCLOCK DefaultClock); | |
KSDDKAPI NTSTATUS NTAPI KsCreateClock | |
(HANDLE ConnectionHandle, PKSCLOCK_CREATE ClockCreate, | |
PHANDLE ClockHandle); | |
KSDDKAPI NTSTATUS NTAPI KsValidateClockCreateRequest | |
(PIRP Irp, PKSCLOCK_CREATE *ClockCreate); | |
KSDDKAPI KSSTATE NTAPI KsGetDefaultClockState (PKSDEFAULTCLOCK DefaultClock); | |
KSDDKAPI VOID NTAPI KsSetDefaultClockState(PKSDEFAULTCLOCK DefaultClock, KSSTATE State); | |
KSDDKAPI LONGLONG NTAPI KsGetDefaultClockTime (PKSDEFAULTCLOCK DefaultClock); | |
KSDDKAPI VOID NTAPI KsSetDefaultClockTime(PKSDEFAULTCLOCK DefaultClock, LONGLONG Time); | |
KSDDKAPI NTSTATUS NTAPI KsCreatePin | |
(HANDLE FilterHandle, PKSPIN_CONNECT Connect, | |
ACCESS_MASK DesiredAccess, PHANDLE ConnectionHandle); | |
KSDDKAPI NTSTATUS NTAPI KsValidateConnectRequest | |
(PIRP Irp, ULONG DescriptorsCount, | |
const KSPIN_DESCRIPTOR *Descriptor, PKSPIN_CONNECT *Connect); | |
KSDDKAPI NTSTATUS NTAPI KsPinPropertyHandler | |
(PIRP Irp, PKSPROPERTY Property, PVOID Data, | |
ULONG DescriptorsCount, const KSPIN_DESCRIPTOR *Descriptor); | |
KSDDKAPI NTSTATUS NTAPI KsPinDataIntersection | |
(PIRP Irp, PKSP_PIN Pin, PVOID Data, ULONG DescriptorsCount, | |
const KSPIN_DESCRIPTOR *Descriptor, | |
PFNKSINTERSECTHANDLER IntersectHandler); | |
KSDDKAPI NTSTATUS NTAPI KsPinDataIntersectionEx | |
(PIRP Irp, PKSP_PIN Pin, PVOID Data, ULONG DescriptorsCount, | |
const KSPIN_DESCRIPTOR *Descriptor, ULONG DescriptorSize, | |
PFNKSINTERSECTHANDLEREX IntersectHandler, PVOID HandlerContext); | |
KSDDKAPI NTSTATUS NTAPI KsHandleSizedListQuery | |
(PIRP Irp, ULONG DataItemsCount, ULONG DataItemSize, | |
const VOID *DataItems); | |
KSDDKAPI NTSTATUS NTAPI KsLoadResource | |
(PVOID ImageBase, POOL_TYPE PoolType, ULONG_PTR ResourceName, | |
ULONG ResourceType, PVOID *Resource, PULONG ResourceSize); | |
KSDDKAPI NTSTATUS NTAPI KsGetImageNameAndResourceId | |
(HANDLE RegKey, PUNICODE_STRING ImageName, PULONG_PTR ResourceId, | |
PULONG ValueType); | |
KSDDKAPI NTSTATUS NTAPI KsMapModuleName | |
(PDEVICE_OBJECT PhysicalDeviceObject, PUNICODE_STRING ModuleName, | |
PUNICODE_STRING ImageName, PULONG_PTR ResourceId, | |
PULONG ValueType); | |
KSDDKAPI NTSTATUS NTAPI KsReferenceBusObject (KSDEVICE_HEADER Header); | |
KSDDKAPI VOID NTAPI KsDereferenceBusObject (KSDEVICE_HEADER Header); | |
KSDDKAPI NTSTATUS NTAPI KsDispatchQuerySecurity (PDEVICE_OBJECT DeviceObject, PIRP Irp); | |
KSDDKAPI NTSTATUS NTAPI KsDispatchSetSecurity (PDEVICE_OBJECT DeviceObject, PIRP Irp); | |
KSDDKAPI NTSTATUS NTAPI KsDispatchSpecificProperty (PIRP Irp, PFNKSHANDLER Handler); | |
KSDDKAPI NTSTATUS NTAPI KsDispatchSpecificMethod (PIRP Irp, PFNKSHANDLER Handler); | |
KSDDKAPI NTSTATUS NTAPI KsReadFile | |
(PFILE_OBJECT FileObject, PKEVENT Event, PVOID PortContext, | |
PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, | |
ULONG Key, KPROCESSOR_MODE RequestorMode); | |
KSDDKAPI NTSTATUS NTAPI KsWriteFile | |
(PFILE_OBJECT FileObject, PKEVENT Event, PVOID PortContext, | |
PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, | |
ULONG Key, KPROCESSOR_MODE RequestorMode); | |
KSDDKAPI NTSTATUS NTAPI KsQueryInformationFile | |
(PFILE_OBJECT FileObject, PVOID FileInformation, ULONG Length, | |
FILE_INFORMATION_CLASS FileInformationClass); | |
KSDDKAPI NTSTATUS NTAPI KsSetInformationFile | |
(PFILE_OBJECT FileObject, PVOID FileInformation, ULONG Length, | |
FILE_INFORMATION_CLASS FileInformationClass); | |
KSDDKAPI NTSTATUS NTAPI KsStreamIo | |
(PFILE_OBJECT FileObject, PKEVENT Event, PVOID PortContext, | |
PIO_COMPLETION_ROUTINE CompletionRoutine, PVOID CompletionContext, | |
KSCOMPLETION_INVOCATION CompletionInvocationFlags, | |
PIO_STATUS_BLOCK IoStatusBlock, PVOID StreamHeaders, ULONG Length, | |
ULONG Flags, KPROCESSOR_MODE RequestorMode); | |
KSDDKAPI NTSTATUS NTAPI KsProbeStreamIrp(PIRP Irp, ULONG ProbeFlags, ULONG HeaderSize); | |
KSDDKAPI NTSTATUS NTAPI KsAllocateExtraData(PIRP Irp, ULONG ExtraSize, PVOID *ExtraBuffer); | |
KSDDKAPI VOID NTAPI KsNullDriverUnload (PDRIVER_OBJECT DriverObject); | |
KSDDKAPI NTSTATUS NTAPI KsSetMajorFunctionHandler | |
(PDRIVER_OBJECT DriverObject, ULONG MajorFunction); | |
KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest | |
(PDEVICE_OBJECT DeviceObject, PIRP Irp); | |
KSDDKAPI NTSTATUS NTAPI KsDefaultDeviceIoCompletion | |
(PDEVICE_OBJECT DeviceObject, PIRP Irp); | |
KSDDKAPI NTSTATUS NTAPI KsDispatchIrp(PDEVICE_OBJECT DeviceObject, PIRP Irp); | |
KSDDKAPI BOOLEAN NTAPI KsDispatchFastIoDeviceControlFailure | |
(PFILE_OBJECT FileObject, BOOLEAN Wait, PVOID InputBuffer, | |
ULONG InputBufferLength, PVOID OutputBuffer, | |
ULONG OutputBufferLength, ULONG IoControlCode, | |
PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject); | |
KSDDKAPI BOOLEAN NTAPI KsDispatchFastReadFailure | |
(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, | |
ULONG Length, BOOLEAN Wait, ULONG LockKey, PVOID Buffer, | |
PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject); | |
KSDDKAPI VOID NTAPI KsCancelRoutine(PDEVICE_OBJECT DeviceObject, PIRP Irp); | |
KSDDKAPI VOID NTAPI KsCancelIo(PLIST_ENTRY QueueHead, PKSPIN_LOCK SpinLock); | |
KSDDKAPI VOID NTAPI KsReleaseIrpOnCancelableQueue(PIRP Irp, PDRIVER_CANCEL DriverCancel); | |
KSDDKAPI PIRP NTAPI KsRemoveIrpFromCancelableQueue | |
(PLIST_ENTRY QueueHead, PKSPIN_LOCK SpinLock, | |
KSLIST_ENTRY_LOCATION ListLocation, | |
KSIRP_REMOVAL_OPERATION RemovalOperation); | |
KSDDKAPI NTSTATUS NTAPI KsMoveIrpsOnCancelableQueue | |
(PLIST_ENTRY SourceList, PKSPIN_LOCK SourceLock, | |
PLIST_ENTRY DestinationList, PKSPIN_LOCK DestinationLock, | |
KSLIST_ENTRY_LOCATION ListLocation, | |
PFNKSIRPLISTCALLBACK ListCallback, PVOID Context); | |
KSDDKAPI VOID NTAPI KsRemoveSpecificIrpFromCancelableQueue (PIRP Irp); | |
KSDDKAPI VOID NTAPI KsAddIrpToCancelableQueue | |
(PLIST_ENTRY QueueHead, PKSPIN_LOCK SpinLock, PIRP Irp, | |
KSLIST_ENTRY_LOCATION ListLocation, PDRIVER_CANCEL DriverCancel); | |
KSDDKAPI NTSTATUS NTAPI KsAcquireResetValue(PIRP Irp, KSRESET *ResetValue); | |
KSDDKAPI NTSTATUS NTAPI KsTopologyPropertyHandler | |
(PIRP Irp, PKSPROPERTY Property, PVOID Data, | |
const KSTOPOLOGY *Topology); | |
KSDDKAPI VOID NTAPI KsAcquireDeviceSecurityLock(KSDEVICE_HEADER Header, BOOLEAN Exclusive); | |
KSDDKAPI VOID NTAPI KsReleaseDeviceSecurityLock (KSDEVICE_HEADER Header); | |
KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPnp(PDEVICE_OBJECT DeviceObject, PIRP Irp); | |
KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPower(PDEVICE_OBJECT DeviceObject, PIRP Irp); | |
KSDDKAPI NTSTATUS NTAPI KsDefaultForwardIrp(PDEVICE_OBJECT DeviceObject, PIRP Irp); | |
KSDDKAPI VOID NTAPI KsSetDevicePnpAndBaseObject | |
(KSDEVICE_HEADER Header, PDEVICE_OBJECT PnpDeviceObject, | |
PDEVICE_OBJECT BaseObject); | |
KSDDKAPI PDEVICE_OBJECT NTAPI KsQueryDevicePnpObject (KSDEVICE_HEADER Header); | |
KSDDKAPI ACCESS_MASK NTAPI KsQueryObjectAccessMask (KSOBJECT_HEADER Header); | |
KSDDKAPI VOID NTAPI KsRecalculateStackDepth | |
(KSDEVICE_HEADER Header, BOOLEAN ReuseStackLocation); | |
KSDDKAPI VOID NTAPI KsSetTargetState | |
(KSOBJECT_HEADER Header, KSTARGET_STATE TargetState); | |
KSDDKAPI VOID NTAPI KsSetTargetDeviceObject | |
(KSOBJECT_HEADER Header, PDEVICE_OBJECT TargetDevice); | |
KSDDKAPI VOID NTAPI KsSetPowerDispatch | |
(KSOBJECT_HEADER Header, PFNKSCONTEXT_DISPATCH PowerDispatch, | |
PVOID PowerContext); | |
KSDDKAPI PKSOBJECT_CREATE_ITEM NTAPI KsQueryObjectCreateItem (KSOBJECT_HEADER Header); | |
KSDDKAPI NTSTATUS NTAPI KsAllocateDeviceHeader | |
(KSDEVICE_HEADER *Header, ULONG ItemsCount, | |
PKSOBJECT_CREATE_ITEM ItemsList); | |
KSDDKAPI VOID NTAPI KsFreeDeviceHeader (KSDEVICE_HEADER Header); | |
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectHeader | |
(KSOBJECT_HEADER *Header, ULONG ItemsCount, | |
PKSOBJECT_CREATE_ITEM ItemsList, PIRP Irp, | |
const KSDISPATCH_TABLE *Table); | |
KSDDKAPI VOID NTAPI KsFreeObjectHeader (KSOBJECT_HEADER Header); | |
KSDDKAPI NTSTATUS NTAPI KsAddObjectCreateItemToDeviceHeader | |
(KSDEVICE_HEADER Header, PDRIVER_DISPATCH Create, PVOID Context, | |
PWSTR ObjectClass, PSECURITY_DESCRIPTOR SecurityDescriptor); | |
KSDDKAPI NTSTATUS NTAPI KsAddObjectCreateItemToObjectHeader | |
(KSOBJECT_HEADER Header, PDRIVER_DISPATCH Create, PVOID Context, | |
PWSTR ObjectClass, PSECURITY_DESCRIPTOR SecurityDescriptor); | |
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectCreateItem | |
(KSDEVICE_HEADER Header, PKSOBJECT_CREATE_ITEM CreateItem, | |
BOOLEAN AllocateEntry, PFNKSITEMFREECALLBACK ItemFreeCallback); | |
KSDDKAPI NTSTATUS NTAPI KsFreeObjectCreateItem | |
(KSDEVICE_HEADER Header, PUNICODE_STRING CreateItem); | |
KSDDKAPI NTSTATUS NTAPI KsFreeObjectCreateItemsByContext | |
(KSDEVICE_HEADER Header, PVOID Context); | |
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultSecurity | |
(PSECURITY_DESCRIPTOR ParentSecurity, | |
PSECURITY_DESCRIPTOR *DefaultSecurity); | |
KSDDKAPI NTSTATUS NTAPI KsForwardIrp | |
(PIRP Irp, PFILE_OBJECT FileObject, BOOLEAN ReuseStackLocation); | |
KSDDKAPI NTSTATUS NTAPI KsForwardAndCatchIrp | |
(PDEVICE_OBJECT DeviceObject, PIRP Irp, PFILE_OBJECT FileObject, | |
KSSTACK_USE StackUse); | |
KSDDKAPI NTSTATUS NTAPI KsSynchronousIoControlDevice | |
(PFILE_OBJECT FileObject, KPROCESSOR_MODE RequestorMode, | |
ULONG IoControl, PVOID InBuffer, ULONG InSize, PVOID OutBuffer, | |
ULONG OutSize, PULONG BytesReturned); | |
KSDDKAPI NTSTATUS NTAPI KsUnserializeObjectPropertiesFromRegistry | |
(PFILE_OBJECT FileObject, HANDLE ParentKey, | |
PUNICODE_STRING RegistryPath); | |
KSDDKAPI NTSTATUS NTAPI KsCacheMedium | |
(PUNICODE_STRING SymbolicLink, PKSPIN_MEDIUM Medium, | |
ULONG PinDirection); | |
KSDDKAPI NTSTATUS NTAPI KsRegisterWorker | |
(WORK_QUEUE_TYPE WorkQueueType, PKSWORKER *Worker); | |
KSDDKAPI NTSTATUS NTAPI KsRegisterCountedWorker | |
(WORK_QUEUE_TYPE WorkQueueType, PWORK_QUEUE_ITEM CountedWorkItem, | |
PKSWORKER *Worker); | |
KSDDKAPI VOID NTAPI KsUnregisterWorker (PKSWORKER Worker); | |
KSDDKAPI NTSTATUS NTAPI KsQueueWorkItem(PKSWORKER Worker, PWORK_QUEUE_ITEM WorkItem); | |
KSDDKAPI ULONG NTAPI KsIncrementCountedWorker (PKSWORKER Worker); | |
KSDDKAPI ULONG NTAPI KsDecrementCountedWorker (PKSWORKER Worker); | |
KSDDKAPI NTSTATUS NTAPI KsCreateTopologyNode | |
(HANDLE ParentHandle, PKSNODE_CREATE NodeCreate, | |
ACCESS_MASK DesiredAccess, PHANDLE NodeHandle); | |
KSDDKAPI NTSTATUS NTAPI KsValidateTopologyNodeCreateRequest | |
(PIRP Irp, PKSTOPOLOGY Topology, PKSNODE_CREATE *NodeCreate); | |
KSDDKAPI NTSTATUS NTAPI KsMergeAutomationTables | |
(PKSAUTOMATION_TABLE *AutomationTableAB, | |
PKSAUTOMATION_TABLE AutomationTableA, | |
PKSAUTOMATION_TABLE AutomationTableB, | |
KSOBJECT_BAG Bag); | |
KSDDKAPI NTSTATUS NTAPI KsInitializeDriver | |
(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPathName, | |
const KSDEVICE_DESCRIPTOR *Descriptor); | |
KSDDKAPI NTSTATUS NTAPI KsAddDevice | |
(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT PhysicalDeviceObject); | |
KSDDKAPI NTSTATUS NTAPI KsCreateDevice | |
(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT PhysicalDeviceObject, | |
const KSDEVICE_DESCRIPTOR *Descriptor, ULONG ExtensionSize, | |
PKSDEVICE *Device); | |
KSDDKAPI NTSTATUS NTAPI KsInitializeDevice | |
(PDEVICE_OBJECT FunctionalDeviceObject, | |
PDEVICE_OBJECT PhysicalDeviceObject, | |
PDEVICE_OBJECT NextDeviceObject, | |
const KSDEVICE_DESCRIPTOR *Descriptor); | |
KSDDKAPI void NTAPI KsTerminateDevice (PDEVICE_OBJECT DeviceObject); | |
KSDDKAPI PKSDEVICE NTAPI KsGetDeviceForDeviceObject (PDEVICE_OBJECT FunctionalDeviceObject); | |
KSDDKAPI void NTAPI KsAcquireDevice (PKSDEVICE Device); | |
KSDDKAPI void NTAPI KsReleaseDevice (PKSDEVICE Device); | |
KSDDKAPI void NTAPI KsDeviceRegisterAdapterObject | |
(PKSDEVICE Device, PADAPTER_OBJECT AdapterObject, | |
ULONG MaxMappingsByteCount, ULONG MappingTableStride); | |
KSDDKAPI ULONG NTAPI KsDeviceGetBusData | |
(PKSDEVICE Device, ULONG DataType, PVOID Buffer, ULONG Offset, | |
ULONG Length); | |
KSDDKAPI ULONG NTAPI KsDeviceSetBusData | |
(PKSDEVICE Device, ULONG DataType, PVOID Buffer, ULONG Offset, | |
ULONG Length); | |
KSDDKAPI NTSTATUS NTAPI KsCreateFilterFactory | |
(PDEVICE_OBJECT DeviceObject, const KSFILTER_DESCRIPTOR *Descriptor, | |
PWSTR RefString, PSECURITY_DESCRIPTOR SecurityDescriptor, | |
ULONG CreateItemFlags, PFNKSFILTERFACTORYPOWER SleepCallback, | |
PFNKSFILTERFACTORYPOWER WakeCallback, | |
PKSFILTERFACTORY *FilterFactory); | |
KSDDKAPI NTSTATUS NTAPI KsFilterFactoryUpdateCacheData | |
(PKSFILTERFACTORY FilterFactory, | |
const KSFILTER_DESCRIPTOR *FilterDescriptor); | |
KSDDKAPI NTSTATUS NTAPI KsFilterFactoryAddCreateItem | |
(PKSFILTERFACTORY FilterFactory, PWSTR RefString, | |
PSECURITY_DESCRIPTOR SecurityDescriptor, ULONG CreateItemFlags); | |
KSDDKAPI NTSTATUS NTAPI KsFilterFactorySetDeviceClassesState | |
(PKSFILTERFACTORY FilterFactory, BOOLEAN NewState); | |
KSDDKAPI PUNICODE_STRING NTAPI KsFilterFactoryGetSymbolicLink | |
(PKSFILTERFACTORY FilterFactory); | |
KSDDKAPI void NTAPI KsAddEvent(PVOID Object, PKSEVENT_ENTRY EventEntry); | |
void __forceinline KsFilterAddEvent (PKSFILTER Filter, PKSEVENT_ENTRY EventEntry) | |
{ | |
KsAddEvent(Filter, EventEntry); | |
} | |
void __forceinline KsPinAddEvent (PKSPIN Pin, PKSEVENT_ENTRY EventEntry) | |
{ | |
KsAddEvent(Pin, EventEntry); | |
} | |
KSDDKAPI NTSTATUS NTAPI KsDefaultAddEventHandler | |
(PIRP Irp, PKSEVENTDATA EventData, PKSEVENT_ENTRY EventEntry); | |
KSDDKAPI void NTAPI KsGenerateEvents | |
(PVOID Object, const GUID *EventSet, ULONG EventId, | |
ULONG DataSize, PVOID Data, PFNKSGENERATEEVENTCALLBACK CallBack, | |
PVOID CallBackContext); | |
void __forceinline KsFilterGenerateEvents | |
(PKSFILTER Filter, const GUID *EventSet, ULONG EventId, | |
ULONG DataSize, PVOID Data, PFNKSGENERATEEVENTCALLBACK CallBack, | |
PVOID CallBackContext) | |
{ | |
KsGenerateEvents(Filter, EventSet, EventId, DataSize, Data, CallBack, | |
CallBackContext); | |
} | |
void __forceinline KsPinGenerateEvents | |
(PKSPIN Pin, const GUID *EventSet, ULONG EventId, | |
ULONG DataSize, PVOID Data, PFNKSGENERATEEVENTCALLBACK CallBack, | |
PVOID CallBackContext) | |
{ | |
KsGenerateEvents(Pin, EventSet, EventId, DataSize, Data, CallBack, | |
CallBackContext); | |
} | |
typedef enum { | |
KSSTREAM_POINTER_STATE_UNLOCKED = 0, | |
KSSTREAM_POINTER_STATE_LOCKED | |
} KSSTREAM_POINTER_STATE; | |
KSDDKAPI NTSTATUS NTAPI KsPinGetAvailableByteCount | |
(PKSPIN Pin, PLONG InputDataBytes, PLONG OutputBufferBytes); | |
KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetLeadingEdgeStreamPointer | |
(PKSPIN Pin, KSSTREAM_POINTER_STATE State); | |
KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetTrailingEdgeStreamPointer | |
(PKSPIN Pin, KSSTREAM_POINTER_STATE State); | |
KSDDKAPI NTSTATUS NTAPI KsStreamPointerSetStatusCode | |
(PKSSTREAM_POINTER StreamPointer, NTSTATUS Status); | |
KSDDKAPI NTSTATUS NTAPI KsStreamPointerLock (PKSSTREAM_POINTER StreamPointer); | |
KSDDKAPI void NTAPI KsStreamPointerUnlock(PKSSTREAM_POINTER StreamPointer, BOOLEAN Eject); | |
KSDDKAPI void NTAPI KsStreamPointerAdvanceOffsetsAndUnlock | |
(PKSSTREAM_POINTER StreamPointer, ULONG InUsed, ULONG OutUsed, | |
BOOLEAN Eject); | |
KSDDKAPI void NTAPI KsStreamPointerDelete (PKSSTREAM_POINTER StreamPointer); | |
KSDDKAPI NTSTATUS NTAPI KsStreamPointerClone | |
(PKSSTREAM_POINTER StreamPointer, PFNKSSTREAMPOINTER CancelCallback, | |
ULONG ContextSize, PKSSTREAM_POINTER *CloneStreamPointer); | |
KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvanceOffsets | |
(PKSSTREAM_POINTER StreamPointer, ULONG InUsed, ULONG OutUsed, | |
BOOLEAN Eject); | |
KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvance (PKSSTREAM_POINTER StreamPointer); | |
KSDDKAPI PMDL NTAPI KsStreamPointerGetMdl (PKSSTREAM_POINTER StreamPointer); | |
KSDDKAPI PIRP NTAPI KsStreamPointerGetIrp | |
(PKSSTREAM_POINTER StreamPointer, PBOOLEAN FirstFrameInIrp, | |
PBOOLEAN LastFrameInIrp); | |
KSDDKAPI void NTAPI KsStreamPointerScheduleTimeout | |
(PKSSTREAM_POINTER StreamPointer, PFNKSSTREAMPOINTER Callback, | |
ULONGLONG Interval); | |
KSDDKAPI void NTAPI KsStreamPointerCancelTimeout (PKSSTREAM_POINTER StreamPointer); | |
KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetFirstCloneStreamPointer (PKSPIN Pin); | |
KSDDKAPI PKSSTREAM_POINTER NTAPI KsStreamPointerGetNextClone | |
(PKSSTREAM_POINTER StreamPointer); | |
KSDDKAPI NTSTATUS NTAPI KsPinHandshake(PKSPIN Pin, PKSHANDSHAKE In, PKSHANDSHAKE Out); | |
KSDDKAPI void NTAPI KsCompletePendingRequest (PIRP Irp); | |
KSDDKAPI KSOBJECTTYPE NTAPI KsGetObjectTypeFromIrp (PIRP Irp); | |
KSDDKAPI PVOID NTAPI KsGetObjectFromFileObject (PFILE_OBJECT FileObject); | |
KSDDKAPI KSOBJECTTYPE NTAPI KsGetObjectTypeFromFileObject (PFILE_OBJECT FileObject); | |
PKSFILTER __forceinline KsGetFilterFromFileObject (PFILE_OBJECT FileObject) | |
{ | |
return (PKSFILTER) KsGetObjectFromFileObject(FileObject); | |
} | |
PKSPIN __forceinline KsGetPinFromFileObject (PFILE_OBJECT FileObject) | |
{ | |
return (PKSPIN) KsGetObjectFromFileObject(FileObject); | |
} | |
KSDDKAPI PKSGATE NTAPI KsFilterGetAndGate (PKSFILTER Filter); | |
KSDDKAPI void NTAPI KsFilterAcquireProcessingMutex (PKSFILTER Filter); | |
KSDDKAPI void NTAPI KsFilterReleaseProcessingMutex (PKSFILTER Filter); | |
KSDDKAPI void NTAPI KsFilterAttemptProcessing(PKSFILTER Filter, BOOLEAN Asynchronous); | |
KSDDKAPI PKSGATE NTAPI KsPinGetAndGate(PKSPIN Pin); | |
KSDDKAPI void NTAPI KsPinAttachAndGate(PKSPIN Pin, PKSGATE AndGate); | |
KSDDKAPI void NTAPI KsPinAttachOrGate (PKSPIN Pin, PKSGATE OrGate); | |
KSDDKAPI void NTAPI KsPinAcquireProcessingMutex (PKSPIN Pin); | |
KSDDKAPI void NTAPI KsPinReleaseProcessingMutex (PKSPIN Pin); | |
KSDDKAPI BOOLEAN NTAPI KsProcessPinUpdate (PKSPROCESSPIN ProcessPin); | |
KSDDKAPI void NTAPI KsPinGetCopyRelationships | |
(PKSPIN Pin, PKSPIN *CopySource, PKSPIN *DelegateBranch); | |
KSDDKAPI void NTAPI KsPinAttemptProcessing(PKSPIN Pin, BOOLEAN Asynchronous); | |
KSDDKAPI PVOID NTAPI KsGetParent (PVOID Object); | |
PKSDEVICE __forceinline KsFilterFactoryGetParentDevice (PKSFILTERFACTORY FilterFactory) | |
{ | |
return (PKSDEVICE) KsGetParent((PVOID) FilterFactory); | |
} | |
PKSFILTERFACTORY __forceinline KsFilterGetParentFilterFactory (PKSFILTER Filter) | |
{ | |
return (PKSFILTERFACTORY) KsGetParent((PVOID) Filter); | |
} | |
KSDDKAPI PKSFILTER NTAPI KsPinGetParentFilter (PKSPIN Pin); | |
KSDDKAPI PVOID NTAPI KsGetFirstChild (PVOID Object); | |
PKSFILTERFACTORY __forceinline KsDeviceGetFirstChildFilterFactory (PKSDEVICE Device) | |
{ | |
return (PKSFILTERFACTORY) KsGetFirstChild((PVOID) Device); | |
} | |
PKSFILTER __forceinline KsFilterFactoryGetFirstChildFilter (PKSFILTERFACTORY FilterFactory) | |
{ | |
return (PKSFILTER) KsGetFirstChild((PVOID) FilterFactory); | |
} | |
KSDDKAPI ULONG NTAPI KsFilterGetChildPinCount(PKSFILTER Filter, ULONG PinId); | |
KSDDKAPI PKSPIN NTAPI KsFilterGetFirstChildPin(PKSFILTER Filter, ULONG PinId); | |
KSDDKAPI PVOID NTAPI KsGetNextSibling (PVOID Object); | |
KSDDKAPI PKSPIN NTAPI KsPinGetNextSiblingPin (PKSPIN Pin); | |
PKSFILTERFACTORY __forceinline KsFilterFactoryGetNextSiblingFilterFactory | |
(PKSFILTERFACTORY FilterFactory) | |
{ | |
return (PKSFILTERFACTORY) KsGetNextSibling((PVOID) FilterFactory); | |
} | |
PKSFILTER __forceinline KsFilterGetNextSiblingFilter (PKSFILTER Filter) | |
{ | |
return (PKSFILTER) KsGetNextSibling((PVOID) Filter); | |
} | |
KSDDKAPI PKSDEVICE NTAPI KsGetDevice (PVOID Object); | |
PKSDEVICE __forceinline KsFilterFactoryGetDevice (PKSFILTERFACTORY FilterFactory) | |
{ | |
return KsGetDevice((PVOID) FilterFactory); | |
} | |
PKSDEVICE __forceinline KsFilterGetDevice (PKSFILTER Filter) | |
{ | |
return KsGetDevice((PVOID) Filter); | |
} | |
PKSDEVICE __forceinline KsPinGetDevice (PKSPIN Pin) | |
{ | |
return KsGetDevice((PVOID) Pin); | |
} | |
KSDDKAPI PKSFILTER NTAPI KsGetFilterFromIrp (PIRP Irp); | |
KSDDKAPI PKSPIN NTAPI KsGetPinFromIrp (PIRP Irp); | |
KSDDKAPI ULONG NTAPI KsGetNodeIdFromIrp (PIRP Irp); | |
KSDDKAPI void NTAPI KsAcquireControl (PVOID Object); | |
KSDDKAPI void NTAPI KsReleaseControl (PVOID Object); | |
void __forceinline KsFilterAcquireControl (PKSFILTER Filter) | |
{ | |
KsAcquireControl((PVOID) Filter); | |
} | |
void __forceinline KsFilterReleaseControl (PKSFILTER Filter) | |
{ | |
KsReleaseControl((PVOID) Filter); | |
} | |
void __forceinline KsPinAcquireControl (PKSPIN Pin) | |
{ | |
KsAcquireControl((PVOID) Pin); | |
} | |
void __forceinline KsPinReleaseControl (PKSPIN Pin) | |
{ | |
KsReleaseControl((PVOID) Pin); | |
} | |
KSDDKAPI NTSTATUS NTAPI KsAddItemToObjectBag | |
(KSOBJECT_BAG ObjectBag, PVOID Item, PFNKSFREE Free); | |
KSDDKAPI ULONG NTAPI KsRemoveItemFromObjectBag | |
(KSOBJECT_BAG ObjectBag, PVOID Item, BOOLEAN Free); | |
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectBag(PKSDEVICE Device, KSOBJECT_BAG *ObjectBag); | |
KSDDKAPI void NTAPI KsFreeObjectBag (KSOBJECT_BAG ObjectBag); | |
KSDDKAPI NTSTATUS NTAPI KsCopyObjectBagItems | |
(KSOBJECT_BAG ObjectBagDestination, KSOBJECT_BAG ObjectBagSource); | |
KSDDKAPI NTSTATUS NTAPI _KsEdit | |
(KSOBJECT_BAG ObjectBag, PVOID *PointerToPointerToItem, | |
ULONG NewSize, ULONG OldSize, ULONG Tag); | |
KSDDKAPI NTSTATUS NTAPI KsRegisterFilterWithNoKSPins | |
(PDEVICE_OBJECT DeviceObject, const GUID *InterfaceClassGUID, | |
ULONG PinCount, WINBOOL *PinDirection, KSPIN_MEDIUM *MediumList, | |
GUID *CategoryList); | |
KSDDKAPI NTSTATUS NTAPI KsFilterCreatePinFactory | |
(PKSFILTER Filter, const KSPIN_DESCRIPTOR_EX *const PinDescriptor, | |
PULONG PinID); | |
KSDDKAPI NTSTATUS NTAPI KsFilterCreateNode | |
(PKSFILTER Filter, const KSNODE_DESCRIPTOR *const NodeDescriptor, | |
PULONG NodeID); | |
KSDDKAPI NTSTATUS NTAPI KsFilterAddTopologyConnections | |
(PKSFILTER Filter, ULONG NewConnectionsCount, | |
const KSTOPOLOGY_CONNECTION *const NewTopologyConnections); | |
KSDDKAPI NTSTATUS NTAPI KsPinGetConnectedPinInterface | |
(PKSPIN Pin, const GUID *InterfaceId, PVOID *Interface); | |
KSDDKAPI PFILE_OBJECT NTAPI KsPinGetConnectedPinFileObject (PKSPIN Pin); | |
KSDDKAPI PDEVICE_OBJECT NTAPI KsPinGetConnectedPinDeviceObject (PKSPIN Pin); | |
KSDDKAPI NTSTATUS NTAPI KsPinGetConnectedFilterInterface | |
(PKSPIN Pin, const GUID *InterfaceId, PVOID *Interface); | |
KSDDKAPI NTSTATUS NTAPI KsPinGetReferenceClockInterface | |
(PKSPIN Pin, PIKSREFERENCECLOCK *Interface); | |
KSDDKAPI VOID NTAPI KsPinSetPinClockTime(PKSPIN Pin, LONGLONG Time); | |
KSDDKAPI NTSTATUS NTAPI KsPinSubmitFrame | |
(PKSPIN Pin, PVOID Data, ULONG Size, | |
PKSSTREAM_HEADER StreamHeader, PVOID Context); | |
KSDDKAPI NTSTATUS NTAPI KsPinSubmitFrameMdl | |
(PKSPIN Pin, PMDL Mdl, PKSSTREAM_HEADER StreamHeader, | |
PVOID Context); | |
KSDDKAPI void NTAPI KsPinRegisterFrameReturnCallback | |
(PKSPIN Pin, PFNKSPINFRAMERETURN FrameReturn); | |
KSDDKAPI void NTAPI KsPinRegisterIrpCompletionCallback | |
(PKSPIN Pin, PFNKSPINIRPCOMPLETION IrpCompletion); | |
KSDDKAPI void NTAPI KsPinRegisterHandshakeCallback | |
(PKSPIN Pin, PFNKSPINHANDSHAKE Handshake); | |
KSDDKAPI void NTAPI KsFilterRegisterPowerCallbacks | |
(PKSFILTER Filter, PFNKSFILTERPOWER Sleep, PFNKSFILTERPOWER Wake); | |
KSDDKAPI void NTAPI KsPinRegisterPowerCallbacks | |
(PKSPIN Pin, PFNKSPINPOWER Sleep, PFNKSPINPOWER Wake); | |
KSDDKAPI PUNKNOWN NTAPI KsRegisterAggregatedClientUnknown | |
(PVOID Object, PUNKNOWN ClientUnknown); | |
KSDDKAPI PUNKNOWN NTAPI KsGetOuterUnknown (PVOID Object); | |
PUNKNOWN __forceinline KsDeviceRegisterAggregatedClientUnknown | |
(PKSDEVICE Device, PUNKNOWN ClientUnknown) | |
{ | |
return KsRegisterAggregatedClientUnknown((PVOID)Device, ClientUnknown); | |
} | |
PUNKNOWN __forceinline KsDeviceGetOuterUnknown (PKSDEVICE Device) | |
{ | |
return KsGetOuterUnknown((PVOID) Device); | |
} | |
PUNKNOWN __forceinline KsFilterFactoryRegisterAggregatedClientUnknown | |
(PKSFILTERFACTORY FilterFactory, PUNKNOWN ClientUnknown) | |
{ | |
return KsRegisterAggregatedClientUnknown((PVOID)FilterFactory, ClientUnknown); | |
} | |
PUNKNOWN __forceinline KsFilterFactoryGetOuterUnknown (PKSFILTERFACTORY FilterFactory) | |
{ | |
return KsGetOuterUnknown((PVOID)FilterFactory); | |
} | |
PUNKNOWN __forceinline KsFilterRegisterAggregatedClientUnknown | |
(PKSFILTER Filter, PUNKNOWN ClientUnknown) | |
{ | |
return KsRegisterAggregatedClientUnknown((PVOID)Filter, ClientUnknown); | |
} | |
PUNKNOWN __forceinline KsFilterGetOuterUnknown (PKSFILTER Filter) | |
{ | |
return KsGetOuterUnknown((PVOID)Filter); | |
} | |
PUNKNOWN __forceinline KsPinRegisterAggregatedClientUnknown | |
(PKSPIN Pin, PUNKNOWN ClientUnknown) | |
{ | |
return KsRegisterAggregatedClientUnknown((PVOID)Pin, ClientUnknown); | |
} | |
PUNKNOWN __forceinline KsPinGetOuterUnknown (PKSPIN Pin) | |
{ | |
return KsGetOuterUnknown((PVOID)Pin); | |
} | |
KSDDKAPI DWORD WINAPI KsCreateAllocator(HANDLE ConnectionHandle,PKSALLOCATOR_FRAMING AllocatorFraming,PHANDLE AllocatorHandle); | |
KSDDKAPI DWORD NTAPI KsCreateClock(HANDLE ConnectionHandle,PKSCLOCK_CREATE ClockCreate,PHANDLE ClockHandle); | |
KSDDKAPI DWORD WINAPI KsCreatePin(HANDLE FilterHandle,PKSPIN_CONNECT Connect,ACCESS_MASK DesiredAccess,PHANDLE ConnectionHandle); | |
KSDDKAPI DWORD WINAPI KsCreateTopologyNode(HANDLE ParentHandle,PKSNODE_CREATE NodeCreate,ACCESS_MASK DesiredAccess,PHANDLE NodeHandle); | |
} | |