📄 cs.h
字号:
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;
PCSWORKER CsWorkerObject;
ULONG_PTR Reserved;
} CsWorkItem;
// @@BEGIN_DDCSPLIT
struct {
PCSFILTER Filter;
ULONG_PTR Reserved[2];
} CsFilterProcessing;
struct {
PCSPIN Pin;
ULONG_PTR Reserved[2];
} CsPinProcessing;
// @@END_DDCSPLIT
#endif // defined(_NTDDK_)
struct {
PVOID Unused;
LONG_PTR Alignment[2];
} Alignment;
};
} CSEVENTDATA, *PCSEVENTDATA;
#define CSEVENTF_EVENT_HANDLE 0x00000001
#define CSEVENTF_SEMAPHORE_HANDLE 0x00000002
#if defined(_NTDDK_)
#define CSEVENTF_EVENT_OBJECT 0x00000004
#define CSEVENTF_SEMAPHORE_OBJECT 0x00000008
#define CSEVENTF_DPC 0x00000010
#define CSEVENTF_WORKITEM 0x00000020
#define CSEVENTF_CSWORKITEM 0x00000080
// @@BEGIN_DDCSPLIT
#define CSEVENTF_CSFILTERPROCESSING 0x00000100
#define CSEVENTF_CSPINPROCESSING 0x00000200
// @@END_DDCSPLIT
#endif // defined(_NTDDK_)
#define CSEVENT_TYPE_ENABLE 0x00000001
#define CSEVENT_TYPE_ONESHOT 0x00000002
#define CSEVENT_TYPE_ENABLEBUFFERED 0x00000004
#define CSEVENT_TYPE_SETSUPPORT 0x00000100
#define CSEVENT_TYPE_BASICSUPPORT 0x00000200
#define CSEVENT_TYPE_QUERYBUFFER 0x00000400
#define CSEVENT_TYPE_TOPOLOGY 0x10000000
typedef struct {
CSEVENT Event;
PCSEVENTDATA EventData;
PVOID Reserved;
} CSQUERYBUFFER, *PCSQUERYBUFFER;
typedef struct {
ULONG Size;
ULONG Flags;
union {
HANDLE ObjectHandle;
PVOID ObjectPointer;
};
PVOID Reserved;
CSEVENT Event;
CSEVENTDATA EventData;
} CSRELATIVEEVENT;
#define CSRELATIVEEVENT_FLAG_HANDLE 0x00000001
#define CSRELATIVEEVENT_FLAG_POINTER 0x00000002
//===========================================================================
typedef struct {
CSEVENTDATA EventData;
LONGLONG MarkTime;
} CSEVENT_TIME_MARK, *PCSEVENT_TIME_MARK;
typedef struct {
CSEVENTDATA EventData;
LONGLONG TimeBase;
LONGLONG Interval;
} CSEVENT_TIME_INTERVAL, *PCSEVENT_TIME_INTERVAL;
typedef struct {
LONGLONG TimeBase;
LONGLONG Interval;
} CSINTERVAL, *PCSINTERVAL;
#endif //#ifndef UNDER_CE
//===========================================================================
#define STATIC_CSPROPSETID_General\
0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("1464EDA5-6A8F-11D1-9AA7-00A0C9223196", CSPROPSETID_General);
#define CSPROPSETID_General DEFINE_GUIDNAMED(CSPROPSETID_General)
typedef enum {
CSPROPERTY_GENERAL_COMPONENTID
} CSPROPERTY_GENERAL;
#ifndef UNDER_CE
typedef struct {
GUID Manufacturer;
GUID Product;
GUID Component;
GUID Name;
ULONG Version;
ULONG Revision;
} CSCOMPONENTID, *PCSCOMPONENTID;
#define DEFINE_CSPROPERTY_ITEM_GENERAL_COMPONENTID(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_GENERAL_COMPONENTID,\
(Handler),\
sizeof(CSPROPERTY),\
sizeof(CSCOMPONENTID),\
NULL, NULL, 0, NULL, NULL, 0)
#define STATIC_CSMETHODSETID_StreamIo\
0x65D003CAL, 0x1523, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("65D003CA-1523-11D2-B27A-00A0C9223196", CSMETHODSETID_StreamIo);
#define CSMETHODSETID_StreamIo DEFINE_GUIDNAMED(CSMETHODSETID_StreamIo)
typedef enum {
CSMETHOD_STREAMIO_READ,
CSMETHOD_STREAMIO_WRITE
} CSMETHOD_STREAMIO;
#define DEFINE_CSMETHOD_ITEM_STREAMIO_READ(Handler)\
DEFINE_CSMETHOD_ITEM(\
CSMETHOD_STREAMIO_READ,\
CSMETHOD_TYPE_WRITE,\
(Handler),\
sizeof(CSMETHOD),\
0,\
NULL)
#define DEFINE_CSMETHOD_ITEM_STREAMIO_WRITE(Handler)\
DEFINE_CSMETHOD_ITEM(\
CSMETHOD_STREAMIO_WRITE,\
CSMETHOD_TYPE_READ,\
(Handler),\
sizeof(CSMETHOD),\
0,\
NULL)
#define STATIC_CSPROPSETID_MediaSeeking\
0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("EE904F0C-D09B-11D0-ABE9-00A0C9223196", CSPROPSETID_MediaSeeking);
#define CSPROPSETID_MediaSeeking DEFINE_GUIDNAMED(CSPROPSETID_MediaSeeking)
typedef enum {
CSPROPERTY_MEDIASEEKING_CAPABILITIES,
CSPROPERTY_MEDIASEEKING_FORMATS,
CSPROPERTY_MEDIASEEKING_TIMEFORMAT,
CSPROPERTY_MEDIASEEKING_POSITION,
CSPROPERTY_MEDIASEEKING_STOPPOSITION,
CSPROPERTY_MEDIASEEKING_POSITIONS,
CSPROPERTY_MEDIASEEKING_DURATION,
CSPROPERTY_MEDIASEEKING_AVAILABLE,
CSPROPERTY_MEDIASEEKING_PREROLL,
CSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
} CSPROPERTY_MEDIASEEKING;
typedef enum {
CS_SEEKING_NoPositioning,
CS_SEEKING_AbsolutePositioning,
CS_SEEKING_RelativePositioning,
CS_SEEKING_IncrementalPositioning,
CS_SEEKING_PositioningBitsMask = 0x3,
CS_SEEKING_SeekToKeyFrame,
CS_SEEKING_ReturnTime = 0x8
} CS_SEEKING_FLAGS;
typedef enum {
CS_SEEKING_CanSeekAbsolute = 0x1,
CS_SEEKING_CanSeekForwards = 0x2,
CS_SEEKING_CanSeekBackwards = 0x4,
CS_SEEKING_CanGetCurrentPos = 0x8,
CS_SEEKING_CanGetStopPos = 0x10,
CS_SEEKING_CanGetDuration = 0x20,
CS_SEEKING_CanPlayBackwards = 0x40
} CS_SEEKING_CAPABILITIES;
typedef struct {
LONGLONG Current;
LONGLONG Stop;
CS_SEEKING_FLAGS CurrentFlags;
CS_SEEKING_FLAGS StopFlags;
} CSPROPERTY_POSITIONS, *PCSPROPERTY_POSITIONS;
typedef struct {
LONGLONG Earliest;
LONGLONG Latest;
} CSPROPERTY_MEDIAAVAILABLE, *PCSPROPERTY_MEDIAAVAILABLE;
typedef struct {
CSPROPERTY Property;
GUID SourceFormat;
GUID TargetFormat;
LONGLONG Time;
} CSP_TIMEFORMAT, *PCSP_TIMEFORMAT;
#define DEFINE_CSPROPERTY_ITEM_MEDIASEEKING_CAPABILITIES(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_MEDIASEEKING_CAPABILITIES,\
(Handler),\
sizeof(CSPROPERTY),\
sizeof(CS_SEEKING_CAPABILITIES),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_MEDIASEEKING_FORMATS(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_MEDIASEEKING_FORMATS,\
(Handler),\
sizeof(CSPROPERTY),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_MEDIASEEKING_TIMEFORMAT(GetHandler, SetHandler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_MEDIASEEKING_TIMEFORMAT,\
(GetHandler),\
sizeof(CSPROPERTY),\
sizeof(GUID),\
(SetHandler),\
NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_MEDIASEEKING_POSITION(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_MEDIASEEKING_POSITION,\
(Handler),\
sizeof(CSPROPERTY),\
sizeof(LONGLONG),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_MEDIASEEKING_STOPPOSITION(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_MEDIASEEKING_STOPPOSITION,\
(Handler),\
sizeof(CSPROPERTY),\
sizeof(LONGLONG),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_MEDIASEEKING_POSITIONS(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_MEDIASEEKING_POSITIONS,\
NULL,\
sizeof(CSPROPERTY),\
sizeof(CSPROPERTY_POSITIONS),\
(Handler),\
NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_MEDIASEEKING_DURATION(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_MEDIASEEKING_DURATION,\
(Handler),\
sizeof(CSPROPERTY),\
sizeof(LONGLONG),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_MEDIASEEKING_AVAILABLE(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_MEDIASEEKING_AVAILABLE,\
(Handler),\
sizeof(CSPROPERTY),\
sizeof(CSPROPERTY_MEDIAAVAILABLE),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_MEDIASEEKING_PREROLL(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_MEDIASEEKING_PREROLL,\
(Handler),\
sizeof(CSPROPERTY),\
sizeof(LONGLONG),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_MEDIASEEKING_CONVERTTIMEFORMAT(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT,\
(Handler),\
sizeof(CSP_TIMEFORMAT),\
sizeof(LONGLONG),\
NULL, NULL, 0, NULL, NULL, 0)
//===========================================================================
#define STATIC_CSPROPSETID_Topology\
0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("720D4AC0-7533-11D0-A5D6-28DB04C10000", CSPROPSETID_Topology);
#define CSPROPSETID_Topology DEFINE_GUIDNAMED(CSPROPSETID_Topology)
typedef enum {
CSPROPERTY_TOPOLOGY_CATEGORIES,
CSPROPERTY_TOPOLOGY_NODES,
CSPROPERTY_TOPOLOGY_CONNECTIONS,
CSPROPERTY_TOPOLOGY_NAME
} CSPROPERTY_TOPOLOGY;
#define DEFINE_CSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_TOPOLOGY_CATEGORIES,\
(Handler),\
sizeof(CSPROPERTY),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_TOPOLOGY_NODES(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_TOPOLOGY_NODES,\
(Handler),\
sizeof(CSPROPERTY),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_TOPOLOGY_CONNECTIONS,\
(Handler),\
sizeof(CSPROPERTY),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\
DEFINE_CSPROPERTY_ITEM(\
CSPROPERTY_TOPOLOGY_NAME,\
(Handler),\
sizeof(CSP_NODE),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_CSPROPERTY_TOPOLOGYSET(TopologySet, Handler)\
DEFINE_CSPROPERTY_TABLE(TopologySet) {\
DEFINE_CSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler),\
DEFINE_CSPROPERTY_ITEM_TOPOLOGY_NODES(Handler),\
DEFINE_CSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler),\
DEFINE_CSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\
}
//=============================================================================
//
// properties used by graph manager to talk to particular filters
//
#if defined(_NTDDK_)
#define STATIC_CSPROPSETID_GM \
0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D
DEFINE_GUIDSTRUCT("AF627536-E719-11D2-8A1D-006097D2DF5D", CSPROPSETID_GM);
#define CSPROPSETID_GM DEFINE_GUIDNAMED(CSPROPSETID_GM)
typedef VOID (*PFNCSGRAPHMANAGER_NOTIFY)(IN PFILE_OBJECT GraphManager,
IN ULONG EventId,
IN PVOID Filter,
IN PVOID Pin,
IN PVOID Frame,
IN ULONG Duration);
typedef struct CSGRAPHMANAGER_FUNCTIONTABLE {
PFNCSGRAPHMANAGER_NOTIFY NotifyEvent;
} CSGRAPHMANAGER_FUNCTIONTABLE, PCSGRAPHMANAGER_FUNCTIONTABLE;
typedef struct _CSPROPERTY_GRAPHMANAGER_INTERFACE {
PFILE_OBJECT GraphManager;
CSGRAPHMANAGER_FUNCTIONTABLE FunctionTable;
} CSPROPERTY_GRAPHMANAGER_INTERFACE, *PCSPROPERTY_GRAPHMANAGER_INTERFACE;
//
// Commands
//
typedef enum {
CSPROPERTY_GM_GRAPHMANAGER,
CSPROPERTY_GM_TIMESTAMP_CLOCK,
CSPROPERTY_GM_RATEMATCH,
CSPROPERTY_GM_RENDER_CLOCK,
} CSPROPERTY_GM;
#endif
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -