📄 ks.h
字号:
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),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_MEDIUMS,\
(Handler),\
sizeof(KSP_PIN),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_COMMUNICATION,\
(Handler),\
sizeof(KSP_PIN),\
sizeof(KSPIN_COMMUNICATION),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_GLOBALCINSTANCES,\
(Handler),\
sizeof(KSP_PIN),\
sizeof(KSPIN_CINSTANCES),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_NECESSARYINSTANCES,\
(Handler),\
sizeof(KSP_PIN),\
sizeof(ULONG),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_PHYSICALCONNECTION,\
(Handler),\
sizeof(KSP_PIN),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_CATEGORY,\
(Handler),\
sizeof(KSP_PIN),\
sizeof(GUID),\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_NAME(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_NAME,\
(Handler),\
sizeof(KSP_PIN),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_CONSTRAINEDDATARANGES,\
(Handler),\
sizeof(KSP_PIN),\
0,\
NULL, NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(Handler)\
DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_PIN_PROPOSEDATAFORMAT,\
NULL,\
sizeof(KSP_PIN),\
sizeof(KSDATAFORMAT),\
(Handler), NULL, 0, NULL, NULL, 0)
#define DEFINE_KSPROPERTY_PINSET(PinSet,\
PropGeneral, PropInstances, PropIntersection)\
DEFINE_KSPROPERTY_TABLE(PinSet) {\
DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral)\
}
#define DEFINE_KSPROPERTY_PINSETCONSTRAINED(PinSet,\
PropGeneral, PropInstances, PropIntersection)\
DEFINE_KSPROPERTY_TABLE(PinSet) {\
DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)\
}
#define STATIC_KSNAME_Filter\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -