📄 ks.h
字号:
} KSPROPERTY_GM;
#endif
//===========================================================================
#define STATIC_KSCATEGORY_BRIDGE \
0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000", KSCATEGORY_BRIDGE);
#define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE)
#define STATIC_KSCATEGORY_CAPTURE \
0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_CAPTURE);
#define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE)
#define STATIC_KSCATEGORY_RENDER \
0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_RENDER);
#define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER)
#define STATIC_KSCATEGORY_MIXER \
0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000", KSCATEGORY_MIXER);
#define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER)
#define STATIC_KSCATEGORY_SPLITTER \
0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_SPLITTER);
#define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER)
#define STATIC_KSCATEGORY_DATACOMPRESSOR \
0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("1E84C900-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATACOMPRESSOR);
#define KSCATEGORY_DATACOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATACOMPRESSOR)
#define STATIC_KSCATEGORY_DATADECOMPRESSOR \
0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATADECOMPRESSOR);
#define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR)
#define STATIC_KSCATEGORY_DATATRANSFORM \
0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATATRANSFORM);
#define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM)
#define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \
0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_COMMUNICATIONSTRANSFORM);
#define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM)
#define STATIC_KSCATEGORY_INTERFACETRANSFORM \
0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_INTERFACETRANSFORM);
#define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANSFORM)
#define STATIC_KSCATEGORY_MEDIUMTRANSFORM \
0xCF1DDA2EL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_MEDIUMTRANSFORM);
#define KSCATEGORY_MEDIUMTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_MEDIUMTRANSFORM)
#define STATIC_KSCATEGORY_FILESYSTEM \
0x760FED5EL, 0x9357, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196", KSCATEGORY_FILESYSTEM);
#define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM)
// KSNAME_Clock
#define STATIC_KSCATEGORY_CLOCK \
0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000", KSCATEGORY_CLOCK);
#define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK)
#define STATIC_KSCATEGORY_PROXY \
0x97EBAACAL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_PROXY);
#define KSCATEGORY_PROXY DEFINE_GUIDNAMED(KSCATEGORY_PROXY)
#define STATIC_KSCATEGORY_QUALITY \
0x97EBAACBL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_QUALITY);
#define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(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;
#define KSFILTER_NODE ((ULONG)-1)
#define KSALL_NODES ((ULONG)-1)
typedef struct {
ULONG CreateFlags;
ULONG Node;
} KSNODE_CREATE, *PKSNODE_CREATE;
//===========================================================================
// TIME_FORMAT_NONE
#define STATIC_KSTIME_FORMAT_NONE STATIC_GUID_NULL
#define KSTIME_FORMAT_NONE GUID_NULL
// TIME_FORMAT_FRAME
#define STATIC_KSTIME_FORMAT_FRAME\
0x7b785570L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
DEFINE_GUIDSTRUCT("7b785570-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_FRAME);
#define KSTIME_FORMAT_FRAME DEFINE_GUIDNAMED(KSTIME_FORMAT_FRAME)
// TIME_FORMAT_BYTE
#define STATIC_KSTIME_FORMAT_BYTE\
0x7b785571L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
DEFINE_GUIDSTRUCT("7b785571-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_BYTE);
#define KSTIME_FORMAT_BYTE DEFINE_GUIDNAMED(KSTIME_FORMAT_BYTE)
// TIME_FORMAT_SAMPLE
#define STATIC_KSTIME_FORMAT_SAMPLE\
0x7b785572L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
DEFINE_GUIDSTRUCT("7b785572-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_SAMPLE);
#define KSTIME_FORMAT_SAMPLE DEFINE_GUIDNAMED(KSTIME_FORMAT_SAMPLE)
// TIME_FORMAT_FIELD
#define STATIC_KSTIME_FORMAT_FIELD\
0x7b785573L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
DEFINE_GUIDSTRUCT("7b785573-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_FIELD);
#define KSTIME_FORMAT_FIELD DEFINE_GUIDNAMED(KSTIME_FORMAT_FIELD)
// TIME_FORMAT_MEDIA_TIME
#define STATIC_KSTIME_FORMAT_MEDIA_TIME\
0x7b785574L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
DEFINE_GUIDSTRUCT("7b785574-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_MEDIA_TIME);
#define KSTIME_FORMAT_MEDIA_TIME DEFINE_GUIDNAMED(KSTIME_FORMAT_MEDIA_TIME)
//===========================================================================
typedef KSIDENTIFIER KSPIN_INTERFACE, *PKSPIN_INTERFACE;
#define STATIC_KSINTERFACESETID_Standard \
0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000", KSINTERFACESETID_Standard);
#define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard)
typedef enum {
KSINTERFACE_STANDARD_STREAMING,
KSINTERFACE_STANDARD_LOOPED_STREAMING,
KSINTERFACE_STANDARD_CONTROL
} KSINTERFACE_STANDARD;
#define STATIC_KSINTERFACESETID_FileIo \
0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196", KSINTERFACESETID_FileIo);
#define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo)
typedef enum {
KSINTERFACE_FILEIO_STREAMING
} KSINTERFACE_FILEIO;
//===========================================================================
#define KSMEDIUM_TYPE_ANYINSTANCE 0
#define STATIC_KSMEDIUMSETID_Standard \
0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000", KSMEDIUMSETID_Standard);
#define KSMEDIUMSETID_Standard DEFINE_GUIDNAMED(KSMEDIUMSETID_Standard)
//For compatibility only
#define KSMEDIUM_STANDARD_DEVIO KSMEDIUM_TYPE_ANYINSTANCE
//===========================================================================
#define STATIC_KSPROPSETID_Pin\
0x8C134960L, 0x51AD, 0x11CF, 0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("8C134960-51AD-11CF-878A-94F801C10000", KSPROPSETID_Pin);
#define KSPROPSETID_Pin DEFINE_GUIDNAMED(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;
#define KSINSTANCE_INDETERMINATE ((ULONG)-1)
typedef struct {
ULONG PossibleCount;
ULONG CurrentCount;
} KSPIN_CINSTANCES, *PKSPIN_CINSTANCES;
typedef enum {
KSPIN_DATAFLOW_IN = 1,
KSPIN_DATAFLOW_OUT
} KSPIN_DATAFLOW, *PKSPIN_DATAFLOW;
#define KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION 0
#define KSDATAFORMAT_TEMPORAL_COMPRESSION (1 << KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION)
#define KSDATAFORMAT_BIT_ATTRIBUTES 1
#define KSDATAFORMAT_ATTRIBUTES (1 << KSDATAFORMAT_BIT_ATTRIBUTES)
#define KSDATARANGE_BIT_ATTRIBUTES 1
#define KSDATARANGE_ATTRIBUTES (1 << KSDATARANGE_BIT_ATTRIBUTES)
#define KSDATARANGE_BIT_REQUIRED_ATTRIBUTES 2
#define KSDATARANGE_REQUIRED_ATTRIBUTES (1 << KSDATARANGE_BIT_REQUIRED_ATTRIBUTES)
#if !defined( _MSC_VER )
typedef struct {
ULONG FormatSize;
ULONG Flags;
ULONG SampleSize;
ULONG Reserved;
GUID MajorFormat;
GUID SubFormat;
GUID Specifier;
} KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE;
#else
typedef union {
struct {
ULONG FormatSize;
ULONG Flags;
ULONG SampleSize;
ULONG Reserved;
GUID MajorFormat;
GUID SubFormat;
GUID Specifier;
};
LONGLONG Alignment;
} KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE;
#endif
#define KSATTRIBUTE_REQUIRED 0x00000001
typedef struct {
ULONG Size;
ULONG Flags;
GUID Attribute;
} KSATTRIBUTE, *PKSATTRIBUTE;
#if defined(_NTDDK_)
typedef struct {
ULONG Count;
PKSATTRIBUTE* Attributes;
} KSATTRIBUTE_LIST, *PKSATTRIBUTE_LIST;
#endif // _NTDDK_
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;
#if defined(_NTDDK_)
typedef
NTSTATUS
(*PFNKSINTERSECTHANDLER)(
IN PIRP Irp,
IN PKSP_PIN Pin,
IN PKSDATARANGE DataRange,
OUT PVOID Data OPTIONAL
);
typedef
NTSTATUS
(*PFNKSINTERSECTHANDLEREX)(
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
);
#endif // _NTDDK_
#define DEFINE_KSPIN_INTERFACE_TABLE(tablename)\
const KSPIN_INTERFACE tablename[] =
#define DEFINE_KSPIN_INTERFACE_ITEM(guid, interface)\
{\
STATICGUIDOF(guid),\
(interface),\
0\
}
#define DEFINE_KSPIN_MEDIUM_TABLE( tablename )\
const KSPIN_MEDIUM tablename[] =
#define DEFINE_KSPIN_MEDIUM_ITEM(guid, medium)\
DEFINE_KSPIN_INTERFACE_ITEM(guid, medium)
#define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_CINSTANCES,\
(Handler),\
sizeof(KSP_PIN),\
sizeof(KSPIN_CINSTANCES),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_CTYPES,\
(Handler),\
sizeof(KSPROPERTY),\
sizeof(ULONG),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_DATAFLOW,\
(Handler),\
sizeof(KSP_PIN),\
sizeof(KSPIN_DATAFLOW),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_DATARANGES,\
(Handler),\
sizeof(KSP_PIN),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_DATAINTERSECTION,\
(Handler),\
sizeof(KSP_PIN) + sizeof(KSMULTIPLE_ITEM),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_INTERFACES,\
(Handler),\
sizeof(KSP_PIN),\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -