Headers diff for ksuser.dll between 6.1.7601.19091-Windows_7.0 and 6.3.9600.17415-Windows_8.1 versions



 ks.h (6.1.7601.19091-Windows_7.0)   ks.h (6.3.9600.17415-Windows_8.1) 
skipping to change at line 19 skipping to change at line 19
Abstract: Abstract:
Windows Driver Model/Connection and Streaming Architecture (WDM-CSA) Windows Driver Model/Connection and Streaming Architecture (WDM-CSA)
core definitions. core definitions.
--*/ --*/
#if !defined(_KS_) #if !defined(_KS_)
#define _KS_ #define _KS_
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#pragma warning(disable:4201) // nameless struct/union #pragma warning(disable:4201) // nameless struct/union
#pragma warning(disable:4214) // bit field types other than int #pragma warning(disable:4214) // bit field types other than int
#if defined(__TCS__) #if defined(__TCS__)
#define _KS_NO_ANONYMOUS_STRUCTURES_ 1 #define _KS_NO_ANONYMOUS_STRUCTURES_ 1
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#if !defined(_NTRTL_) #if !defined(_NTRTL_)
#ifndef DEFINE_GUIDEX #ifndef DEFINE_GUIDEX
#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name
#endif // !defined(DEFINE_GUIDEX) #endif // !defined(DEFINE_GUIDEX)
#ifndef STATICGUIDOF #ifndef STATICGUIDOF
#define STATICGUIDOF(guid) STATIC_##guid #define STATICGUIDOF(guid) STATIC_##guid
#endif // !defined(STATICGUIDOF) #endif // !defined(STATICGUIDOF)
#endif // !defined(_NTRTL_) #endif // !defined(_NTRTL_)
skipping to change at line 53 skipping to change at line 64
#else // !defined(__cplusplus) #else // !defined(__cplusplus)
#define DEFINE_GUIDSTRUCT(g, n) DEFINE_GUIDEX(n) #define DEFINE_GUIDSTRUCT(g, n) DEFINE_GUIDEX(n)
#define DEFINE_GUIDNAMED(n) n #define DEFINE_GUIDNAMED(n) n
#endif // !defined(__cplusplus) #endif // !defined(__cplusplus)
//=========================================================================== //===========================================================================
#define STATIC_GUID_NULL \ #define STATIC_GUID_NULL \
0x00000000L, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00000000L, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
#pragma prefast(suppress: 6244, "duplicate definition is harmless in this case")
DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000", GUID_NULL); DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000", GUID_NULL);
#define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL) #define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
//=========================================================================== //===========================================================================
#define IOCTL_KS_PROPERTY CTL_CODE(FILE_DEVICE_KS, 0x000, METHOD_NE ITHER, FILE_ANY_ACCESS) #define IOCTL_KS_PROPERTY CTL_CODE(FILE_DEVICE_KS, 0x000, METHOD_NE ITHER, FILE_ANY_ACCESS)
#define IOCTL_KS_ENABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x001, METHOD_NE ITHER, FILE_ANY_ACCESS) #define IOCTL_KS_ENABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x001, METHOD_NE ITHER, FILE_ANY_ACCESS)
#define IOCTL_KS_DISABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x002, METHOD_NE ITHER, FILE_ANY_ACCESS) #define IOCTL_KS_DISABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x002, METHOD_NE ITHER, FILE_ANY_ACCESS)
#define IOCTL_KS_METHOD CTL_CODE(FILE_DEVICE_KS, 0x003, METHOD_NE ITHER, FILE_ANY_ACCESS) #define IOCTL_KS_METHOD CTL_CODE(FILE_DEVICE_KS, 0x003, METHOD_NE ITHER, FILE_ANY_ACCESS)
#define IOCTL_KS_WRITE_STREAM CTL_CODE(FILE_DEVICE_KS, 0x004, METHOD_NE ITHER, FILE_WRITE_ACCESS) #define IOCTL_KS_WRITE_STREAM CTL_CODE(FILE_DEVICE_KS, 0x004, METHOD_NE ITHER, FILE_WRITE_ACCESS)
#define IOCTL_KS_READ_STREAM CTL_CODE(FILE_DEVICE_KS, 0x005, METHOD_NE ITHER, FILE_READ_ACCESS) #define IOCTL_KS_READ_STREAM CTL_CODE(FILE_DEVICE_KS, 0x005, METHOD_NE ITHER, FILE_READ_ACCESS)
#define IOCTL_KS_RESET_STATE CTL_CODE(FILE_DEVICE_KS, 0x006, METHOD_NE ITHER, FILE_ANY_ACCESS) #define IOCTL_KS_RESET_STATE CTL_CODE(FILE_DEVICE_KS, 0x006, METHOD_NE ITHER, FILE_ANY_ACCESS)
skipping to change at line 131 skipping to change at line 149
#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100 #define KSPROPERTY_TYPE_SETSUPPORT 0x00000100
#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200 #define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200
#define KSPROPERTY_TYPE_RELATIONS 0x00000400 #define KSPROPERTY_TYPE_RELATIONS 0x00000400
#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800 #define KSPROPERTY_TYPE_SERIALIZESET 0x00000800
#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000 #define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000 #define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000
#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000 #define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000 #define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
#define KSPROPERTY_TYPE_DEFAULTVALUES 0x00010000 #define KSPROPERTY_TYPE_DEFAULTVALUES 0x00010000
#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000 #define KSPROPERTY_TYPE_TOPOLOGY 0x10000000
#define KSPROPERTY_TYPE_HIGHPRIORITY 0x08000000
#define KSPROPERTY_TYPE_COPYPAYLOAD 0x80000000
typedef struct { typedef struct {
KSPROPERTY Property; KSPROPERTY Property;
ULONG NodeId; ULONG NodeId;
ULONG Reserved; ULONG Reserved;
} KSP_NODE, *PKSP_NODE; } KSP_NODE, *PKSP_NODE;
typedef struct { typedef struct {
KSMETHOD Method; KSMETHOD Method;
ULONG NodeId; ULONG NodeId;
skipping to change at line 710 skipping to change at line 730
// //
// properties used by graph manager to talk to particular filters // properties used by graph manager to talk to particular filters
// //
#if defined(_NTDDK_) #if defined(_NTDDK_)
#define STATIC_KSPROPSETID_GM \ #define STATIC_KSPROPSETID_GM \
0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D 0xAF627536L, 0xE719, 0x11D2, 0x8A, 0x1D, 0x00, 0x60, 0x97, 0xD2, 0xDF, 0x5D
DEFINE_GUIDSTRUCT("AF627536-E719-11D2-8A1D-006097D2DF5D", KSPROPSETID_GM); DEFINE_GUIDSTRUCT("AF627536-E719-11D2-8A1D-006097D2DF5D", KSPROPSETID_GM);
#define KSPROPSETID_GM DEFINE_GUIDNAMED(KSPROPSETID_GM) #define KSPROPSETID_GM DEFINE_GUIDNAMED(KSPROPSETID_GM)
typedef VOID (*PFNKSGRAPHMANAGER_NOTIFY)(__in PFILE_OBJECT GraphManager, typedef VOID (*PFNKSGRAPHMANAGER_NOTIFY)(_In_ PFILE_OBJECT GraphManager,
__in ULONG EventId, _In_ ULONG EventId,
__in PVOID Filter, _In_ PVOID Filter,
__in PVOID Pin, _In_ PVOID Pin,
__in PVOID Frame, _In_ PVOID Frame,
__in ULONG Duration); _In_ ULONG Duration);
typedef struct KSGRAPHMANAGER_FUNCTIONTABLE { typedef struct KSGRAPHMANAGER_FUNCTIONTABLE {
PFNKSGRAPHMANAGER_NOTIFY NotifyEvent; PFNKSGRAPHMANAGER_NOTIFY NotifyEvent;
} KSGRAPHMANAGER_FUNCTIONTABLE, PKSGRAPHMANAGER_FUNCTIONTABLE; } KSGRAPHMANAGER_FUNCTIONTABLE, PKSGRAPHMANAGER_FUNCTIONTABLE;
typedef struct _KSPROPERTY_GRAPHMANAGER_INTERFACE { typedef struct _KSPROPERTY_GRAPHMANAGER_INTERFACE {
PFILE_OBJECT GraphManager; PFILE_OBJECT GraphManager;
KSGRAPHMANAGER_FUNCTIONTABLE FunctionTable; KSGRAPHMANAGER_FUNCTIONTABLE FunctionTable;
} KSPROPERTY_GRAPHMANAGER_INTERFACE, *PKSPROPERTY_GRAPHMANAGER_INTERFACE; } KSPROPERTY_GRAPHMANAGER_INTERFACE, *PKSPROPERTY_GRAPHMANAGER_INTERFACE;
skipping to change at line 750 skipping to change at line 770
#define STATIC_KSCATEGORY_BRIDGE \ #define STATIC_KSCATEGORY_BRIDGE \
0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000", KSCATEGORY_BRIDGE); DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000", KSCATEGORY_BRIDGE);
#define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE) #define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE)
#define STATIC_KSCATEGORY_CAPTURE \ #define STATIC_KSCATEGORY_CAPTURE \
0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_CAPTURE); DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_CAPTURE);
#define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE) #define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE)
#define STATIC_KSCATEGORY_VIDEO_CAMERA \
0xe5323777, 0xf976, 0x4f5b, 0x9b, 0x55, 0xb9, 0x46, 0x99, 0xc4, 0x6e, 0x44
DEFINE_GUIDSTRUCT("E5323777-F976-4f5b-9B55-B94699C46E44", KSCATEGORY_VIDEO_CAMER
A);
#define KSCATEGORY_VIDEO_CAMERA DEFINE_GUIDNAMED(KSCATEGORY_VIDEO_CAMERA)
#define STATIC_KSCATEGORY_RENDER \ #define STATIC_KSCATEGORY_RENDER \
0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_RENDER); DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_RENDER);
#define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER) #define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER)
#define STATIC_KSCATEGORY_MIXER \ #define STATIC_KSCATEGORY_MIXER \
0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000", KSCATEGORY_MIXER); DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000", KSCATEGORY_MIXER);
#define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER) #define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER)
skipping to change at line 879 skipping to change at line 904
typedef struct { typedef struct {
ULONG FromNode; ULONG FromNode;
ULONG FromNodePin; ULONG FromNodePin;
ULONG ToNode; ULONG ToNode;
ULONG ToNodePin; ULONG ToNodePin;
} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION; } KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;
typedef struct { typedef struct {
ULONG CategoriesCount; ULONG CategoriesCount;
__field_ecount(CategoriesCount) _Field_size_(CategoriesCount)
const GUID* Categories; const GUID* Categories;
ULONG TopologyNodesCount; ULONG TopologyNodesCount;
__field_ecount(TopologyNodesCount) _Field_size_(TopologyNodesCount)
const GUID* TopologyNodes; const GUID* TopologyNodes;
ULONG TopologyConnectionsCount; ULONG TopologyConnectionsCount;
__field_ecount(TopologyConnectionsCount) _Field_size_(TopologyConnectionsCount)
const KSTOPOLOGY_CONNECTION* TopologyConnections; const KSTOPOLOGY_CONNECTION* TopologyConnections;
__field_ecount(TopologyNodesCount) _Field_size_(TopologyNodesCount)
const GUID* TopologyNodesNames; const GUID* TopologyNodesNames;
ULONG Reserved; ULONG Reserved;
} KSTOPOLOGY, *PKSTOPOLOGY; } KSTOPOLOGY, *PKSTOPOLOGY;
#define KSFILTER_NODE ((ULONG)-1) #define KSFILTER_NODE ((ULONG)-1)
#define KSALL_NODES ((ULONG)-1) #define KSALL_NODES ((ULONG)-1)
typedef struct { typedef struct {
ULONG CreateFlags; ULONG CreateFlags;
ULONG Node; ULONG Node;
skipping to change at line 994 skipping to change at line 1019
KSPROPERTY_PIN_DATAINTERSECTION, KSPROPERTY_PIN_DATAINTERSECTION,
KSPROPERTY_PIN_INTERFACES, KSPROPERTY_PIN_INTERFACES,
KSPROPERTY_PIN_MEDIUMS, KSPROPERTY_PIN_MEDIUMS,
KSPROPERTY_PIN_COMMUNICATION, KSPROPERTY_PIN_COMMUNICATION,
KSPROPERTY_PIN_GLOBALCINSTANCES, KSPROPERTY_PIN_GLOBALCINSTANCES,
KSPROPERTY_PIN_NECESSARYINSTANCES, KSPROPERTY_PIN_NECESSARYINSTANCES,
KSPROPERTY_PIN_PHYSICALCONNECTION, KSPROPERTY_PIN_PHYSICALCONNECTION,
KSPROPERTY_PIN_CATEGORY, KSPROPERTY_PIN_CATEGORY,
KSPROPERTY_PIN_NAME, KSPROPERTY_PIN_NAME,
KSPROPERTY_PIN_CONSTRAINEDDATARANGES, KSPROPERTY_PIN_CONSTRAINEDDATARANGES,
KSPROPERTY_PIN_PROPOSEDATAFORMAT KSPROPERTY_PIN_PROPOSEDATAFORMAT,
KSPROPERTY_PIN_PROPOSEDATAFORMAT2,
} KSPROPERTY_PIN; } KSPROPERTY_PIN;
#define KSPROPERTY_PIN_FLAGS_ATTRIBUTE_RANGE_AWARE 0x00000001
#define KSPROPERTY_PIN_FLAGS_MASK KSPROPERTY_PIN_FLAGS_ATTRIBUTE_RANGE_AWARE
typedef struct { typedef struct {
KSPROPERTY Property; KSPROPERTY Property;
ULONG PinId; ULONG PinId;
ULONG Reserved; union {
ULONG Reserved;
ULONG Flags;
};
} KSP_PIN, *PKSP_PIN; } KSP_PIN, *PKSP_PIN;
typedef struct { typedef struct {
KSEVENT Event; KSEVENT Event;
ULONG PinId; ULONG PinId;
ULONG Reserved; ULONG Reserved;
} KSE_PIN, *PKSE_PIN; } KSE_PIN, *PKSE_PIN;
#define KSINSTANCE_INDETERMINATE ((ULONG)-1) #define KSINSTANCE_INDETERMINATE ((ULONG)-1)
skipping to change at line 1067 skipping to change at line 1099
typedef struct { typedef struct {
ULONG Size; ULONG Size;
ULONG Flags; ULONG Flags;
GUID Attribute; GUID Attribute;
} KSATTRIBUTE, *PKSATTRIBUTE; } KSATTRIBUTE, *PKSATTRIBUTE;
#if defined(_NTDDK_) #if defined(_NTDDK_)
typedef struct { typedef struct {
ULONG Count; ULONG Count;
__field_ecount(Count) PKSATTRIBUTE* Attributes; _Field_size_(Count) PKSATTRIBUTE* Attributes;
} KSATTRIBUTE_LIST, *PKSATTRIBUTE_LIST; } KSATTRIBUTE_LIST, *PKSATTRIBUTE_LIST;
#endif // _NTDDK_ #endif // _NTDDK_
typedef enum { typedef enum {
KSPIN_COMMUNICATION_NONE, KSPIN_COMMUNICATION_NONE,
KSPIN_COMMUNICATION_SINK, KSPIN_COMMUNICATION_SINK,
KSPIN_COMMUNICATION_SOURCE, KSPIN_COMMUNICATION_SOURCE,
KSPIN_COMMUNICATION_BOTH, KSPIN_COMMUNICATION_BOTH,
KSPIN_COMMUNICATION_BRIDGE KSPIN_COMMUNICATION_BRIDGE
} KSPIN_COMMUNICATION, *PKSPIN_COMMUNICATION; } KSPIN_COMMUNICATION, *PKSPIN_COMMUNICATION;
skipping to change at line 1096 skipping to change at line 1128
KSPRIORITY Priority; KSPRIORITY Priority;
} KSPIN_CONNECT, *PKSPIN_CONNECT; } KSPIN_CONNECT, *PKSPIN_CONNECT;
typedef struct { typedef struct {
ULONG Size; ULONG Size;
ULONG Pin; ULONG Pin;
WCHAR SymbolicLinkName[1]; WCHAR SymbolicLinkName[1];
} KSPIN_PHYSICALCONNECTION, *PKSPIN_PHYSICALCONNECTION; } KSPIN_PHYSICALCONNECTION, *PKSPIN_PHYSICALCONNECTION;
#if defined(_NTDDK_) #if defined(_NTDDK_)
__checkReturn _Must_inspect_result_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSINTERSECTHANDLER)( (*PFNKSINTERSECTHANDLER)(
__in PIRP Irp, _In_ PIRP Irp,
__in PKSP_PIN Pin, _In_ PKSP_PIN Pin,
__in PKSDATARANGE DataRange, _In_ PKSDATARANGE DataRange,
__out_opt PVOID Data _Out_opt_ PVOID Data
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSINTERSECTHANDLEREX)( (*PFNKSINTERSECTHANDLEREX)(
__in PVOID Context, _In_ PVOID Context,
__in PIRP Irp, _In_ PIRP Irp,
__in PKSP_PIN Pin, _In_ PKSP_PIN Pin,
__in PKSDATARANGE DataRange, _In_ PKSDATARANGE DataRange,
__in PKSDATARANGE MatchingDataRange, _In_ PKSDATARANGE MatchingDataRange,
__in ULONG DataBufferSize, _In_ ULONG DataBufferSize,
__out_bcount_part_opt(DataBufferSize, *DataSize) PVOID Data, _Out_writes_bytes_to_opt_(DataBufferSize, *DataSize) PVOID Data,
__out PULONG DataSize _Out_ PULONG DataSize
); );
#endif // _NTDDK_ #endif // _NTDDK_
#define DEFINE_KSPIN_INTERFACE_TABLE(tablename)\ #define DEFINE_KSPIN_INTERFACE_TABLE(tablename)\
const KSPIN_INTERFACE tablename[] = const KSPIN_INTERFACE tablename[] =
#define DEFINE_KSPIN_INTERFACE_ITEM(guid, interface)\ #define DEFINE_KSPIN_INTERFACE_ITEM(guid, interface)\
{\ {\
STATICGUIDOF(guid),\ STATICGUIDOF(guid),\
(interface),\ (interface),\
skipping to change at line 1299 skipping to change at line 1331
#define STATIC_KSEVENTSETID_PinCapsChange \ #define STATIC_KSEVENTSETID_PinCapsChange \
0xDD4F192E, 0x3B78, 0x49AD, 0xA5, 0x34, 0x2C, 0x31, 0x5b, 0x82, 0x20, 0x00 0xDD4F192E, 0x3B78, 0x49AD, 0xA5, 0x34, 0x2C, 0x31, 0x5b, 0x82, 0x20, 0x00
DEFINE_GUIDSTRUCT("DD4F192E-3B78-49AD-A534-2C315B822000", KSEVENTSETID_PinCapsCh ange); DEFINE_GUIDSTRUCT("DD4F192E-3B78-49AD-A534-2C315B822000", KSEVENTSETID_PinCapsCh ange);
#define KSEVENTSETID_PinCapsChange DEFINE_GUIDNAMED(KSEVENTSETID_PinCapsChange) #define KSEVENTSETID_PinCapsChange DEFINE_GUIDNAMED(KSEVENTSETID_PinCapsChange)
typedef enum { typedef enum {
KSEVENT_PINCAPS_FORMATCHANGE, KSEVENT_PINCAPS_FORMATCHANGE,
KSEVENT_PINCAPS_JACKINFOCHANGE KSEVENT_PINCAPS_JACKINFOCHANGE
} KSEVENT_PINCAPS_CHANGENOTIFICATIONS; } KSEVENT_PINCAPS_CHANGENOTIFICATIONS;
#define STATIC_KSEVENTSETID_VolumeLimit \
0xda168465, 0x3a7c, 0x4858, 0x9d, 0x4a, 0x3e, 0x8e, 0x24, 0x70, 0x1a, 0xe
f
DEFINE_GUIDSTRUCT("DA168465-3A7C-4858-9D4A-3E8E24701AEF", KSEVENTSETID_VolumeLim
it);
#define KSEVENTSETID_VolumeLimit DEFINE_GUIDNAMED(KSEVENTSETID_VolumeLimit)
typedef enum {
KSEVENT_VOLUMELIMIT_CHANGED
} KSEVENT_VOLUMELIMIT;
#define STATIC_KSNAME_Filter\ #define STATIC_KSNAME_Filter\
0x9b365890L, 0x165f, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4 0x9b365890L, 0x165f, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
DEFINE_GUIDSTRUCT("9b365890-165f-11d0-a195-0020afd156e4", KSNAME_Filter); DEFINE_GUIDSTRUCT("9b365890-165f-11d0-a195-0020afd156e4", KSNAME_Filter);
#define KSNAME_Filter DEFINE_GUIDNAMED(KSNAME_Filter) #define KSNAME_Filter DEFINE_GUIDNAMED(KSNAME_Filter)
#define KSSTRING_Filter L"{9B365890-165F-11D0-A195-0020AFD156E4}" #define KSSTRING_Filter L"{9B365890-165F-11D0-A195-0020AFD156E4}"
#define STATIC_KSNAME_Pin\ #define STATIC_KSNAME_Pin\
0x146F1A80L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 0x146F1A80L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("146F1A80-4791-11D0-A5D6-28DB04C10000", KSNAME_Pin); DEFINE_GUIDSTRUCT("146F1A80-4791-11D0-A5D6-28DB04C10000", KSNAME_Pin);
skipping to change at line 1340 skipping to change at line 1381
0x0621061AL, 0xEE75, 0x11D0, 0xB9, 0x15, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 0x0621061AL, 0xEE75, 0x11D0, 0xB9, 0x15, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("0621061A-EE75-11D0-B915-00A0C9223196", KSNAME_TopologyNode); DEFINE_GUIDSTRUCT("0621061A-EE75-11D0-B915-00A0C9223196", KSNAME_TopologyNode);
#define KSNAME_TopologyNode DEFINE_GUIDNAMED(KSNAME_TopologyNode) #define KSNAME_TopologyNode DEFINE_GUIDNAMED(KSNAME_TopologyNode)
#define KSSTRING_TopologyNode L"{0621061A-EE75-11D0-B915-00A0C9223196}" #define KSSTRING_TopologyNode L"{0621061A-EE75-11D0-B915-00A0C9223196}"
#if defined(_NTDDK_) #if defined(_NTDDK_)
typedef struct { typedef struct {
ULONG InterfacesCount; ULONG InterfacesCount;
__field_ecount(InterfacesCount) _Field_size_(InterfacesCount)
const KSPIN_INTERFACE* Interfaces; const KSPIN_INTERFACE* Interfaces;
ULONG MediumsCount; ULONG MediumsCount;
__field_ecount(MediumsCount) _Field_size_(MediumsCount)
const KSPIN_MEDIUM* Mediums; const KSPIN_MEDIUM* Mediums;
ULONG DataRangesCount; ULONG DataRangesCount;
__field_ecount(DataRangesCount) _Field_size_(DataRangesCount)
const PKSDATARANGE* DataRanges; const PKSDATARANGE* DataRanges;
KSPIN_DATAFLOW DataFlow; KSPIN_DATAFLOW DataFlow;
KSPIN_COMMUNICATION Communication; KSPIN_COMMUNICATION Communication;
const GUID* Category; const GUID* Category;
const GUID* Name; const GUID* Name;
union { union {
LONGLONG Reserved; LONGLONG Reserved;
struct { struct {
ULONG ConstrainedDataRangesCount; ULONG ConstrainedDataRangesCount;
__field_ecount(ConstrainedDataRangesCount) _Field_size_(ConstrainedDataRangesCount)
PKSDATARANGE* ConstrainedDataRanges; PKSDATARANGE* ConstrainedDataRanges;
}; };
}; };
} KSPIN_DESCRIPTOR, *PKSPIN_DESCRIPTOR; } KSPIN_DESCRIPTOR, *PKSPIN_DESCRIPTOR;
typedef const KSPIN_DESCRIPTOR *PCKSPIN_DESCRIPTOR; typedef const KSPIN_DESCRIPTOR *PCKSPIN_DESCRIPTOR;
#define DEFINE_KSPIN_DESCRIPTOR_TABLE(tablename)\ #define DEFINE_KSPIN_DESCRIPTOR_TABLE(tablename)\
const KSPIN_DESCRIPTOR tablename[] = const KSPIN_DESCRIPTOR tablename[] =
#define DEFINE_KSPIN_DESCRIPTOR_ITEM(\ #define DEFINE_KSPIN_DESCRIPTOR_ITEM(\
skipping to change at line 1625 skipping to change at line 1666
ULONG Frames; // total number of allowable outstanding frames ULONG Frames; // total number of allowable outstanding frames
ULONG FrameSize; // total size of frame ULONG FrameSize; // total size of frame
ULONG FileAlignment; ULONG FileAlignment;
ULONG Reserved; ULONG Reserved;
} KSALLOCATOR_FRAMING, *PKSALLOCATOR_FRAMING; } KSALLOCATOR_FRAMING, *PKSALLOCATOR_FRAMING;
#if defined(_NTDDK_) #if defined(_NTDDK_)
typedef typedef
PVOID PVOID
(*PFNKSDEFAULTALLOCATE)( (*PFNKSDEFAULTALLOCATE)(
__in PVOID Context _In_ PVOID Context
); );
typedef typedef
VOID VOID
(*PFNKSDEFAULTFREE)( (*PFNKSDEFAULTFREE)(
__in PVOID Context, _In_ PVOID Context,
__in PVOID Buffer _In_ PVOID Buffer
); );
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSINITIALIZEALLOCATOR)( (*PFNKSINITIALIZEALLOCATOR)(
__in PVOID InitialContext, _In_ PVOID InitialContext,
__in PKSALLOCATOR_FRAMING AllocatorFraming, _In_ PKSALLOCATOR_FRAMING AllocatorFraming,
__deref_out PVOID* Context _Outptr_ PVOID* Context
); );
typedef typedef
VOID VOID
(*PFNKSDELETEALLOCATOR)( (*PFNKSDELETEALLOCATOR)(
__in PVOID Context _In_ PVOID Context
); );
#endif // !_NTDDK_ #endif // !_NTDDK_
// //
// new Framing structure, eventually will replace KSALLOCATOR_FRAMING. // new Framing structure, eventually will replace KSALLOCATOR_FRAMING.
// //
typedef struct { typedef struct {
ULONG MinFrameSize; ULONG MinFrameSize;
ULONG MaxFrameSize; ULONG MaxFrameSize;
ULONG Stepping; ULONG Stepping;
skipping to change at line 1908 skipping to change at line 1949
#define DEFINE_KSPROPERTY_ALLOCATORSET(AllocatorSet, PropFunctionTable, PropStat us)\ #define DEFINE_KSPROPERTY_ALLOCATORSET(AllocatorSet, PropFunctionTable, PropStat us)\
DEFINE_KSPROPERTY_TABLE(AllocatorSet) {\ DEFINE_KSPROPERTY_TABLE(AllocatorSet) {\
DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_STATUS(PropStatus),\ DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_STATUS(PropStatus),\
DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_FUNCTIONTABLE(PropFunctionTable)\ DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_FUNCTIONTABLE(PropFunctionTable)\
} }
typedef typedef
NTSTATUS NTSTATUS
(*PFNALLOCATOR_ALLOCATEFRAME)( (*PFNALLOCATOR_ALLOCATEFRAME)(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__deref_out PVOID *Frame _Outptr_ PVOID *Frame
); );
typedef typedef
VOID VOID
(*PFNALLOCATOR_FREEFRAME)( (*PFNALLOCATOR_FREEFRAME)(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in PVOID Frame _In_ PVOID Frame
); );
typedef struct { typedef struct {
PFNALLOCATOR_ALLOCATEFRAME AllocateFrame; PFNALLOCATOR_ALLOCATEFRAME AllocateFrame;
PFNALLOCATOR_FREEFRAME FreeFrame; PFNALLOCATOR_FREEFRAME FreeFrame;
} KSSTREAMALLOCATOR_FUNCTIONTABLE, *PKSSTREAMALLOCATOR_FUNCTIONTABLE; } KSSTREAMALLOCATOR_FUNCTIONTABLE, *PKSSTREAMALLOCATOR_FUNCTIONTABLE;
#endif // defined(_NTDDK_) #endif // defined(_NTDDK_)
typedef struct { typedef struct {
KSALLOCATOR_FRAMING Framing; KSALLOCATOR_FRAMING Framing;
skipping to change at line 1963 skipping to change at line 2004
ULONG Denominator; ULONG Denominator;
} KSTIME, *PKSTIME; } KSTIME, *PKSTIME;
typedef struct { typedef struct {
ULONG Size; ULONG Size;
ULONG TypeSpecificFlags; ULONG TypeSpecificFlags;
KSTIME PresentationTime; KSTIME PresentationTime;
LONGLONG Duration; LONGLONG Duration;
ULONG FrameExtent; ULONG FrameExtent;
ULONG DataUsed; ULONG DataUsed;
__field_bcount(FrameExtent) _Field_size_bytes_(FrameExtent)
PVOID Data; PVOID Data;
ULONG OptionsFlags; ULONG OptionsFlags;
#if _WIN64 #if _WIN64
ULONG Reserved; ULONG Reserved;
#endif #endif
} KSSTREAM_HEADER, *PKSSTREAM_HEADER; } KSSTREAM_HEADER, *PKSSTREAM_HEADER;
#define STATIC_KSPROPSETID_StreamInterface\ #define STATIC_KSPROPSETID_StreamInterface\
0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a 0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
DEFINE_GUIDSTRUCT("1fdd8ee1-9cd3-11d0-82aa-0000f822fe8a", KSPROPSETID_StreamInte rface); DEFINE_GUIDSTRUCT("1fdd8ee1-9cd3-11d0-82aa-0000f822fe8a", KSPROPSETID_StreamInte rface);
skipping to change at line 2181 skipping to change at line 2222
KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,
KSPROPERTY_CLOCK_RESOLUTION, KSPROPERTY_CLOCK_RESOLUTION,
KSPROPERTY_CLOCK_STATE, KSPROPERTY_CLOCK_STATE,
#if defined(_NTDDK_) #if defined(_NTDDK_)
KSPROPERTY_CLOCK_FUNCTIONTABLE KSPROPERTY_CLOCK_FUNCTIONTABLE
#endif // defined(_NTDDK_) #endif // defined(_NTDDK_)
} KSPROPERTY_CLOCK; } KSPROPERTY_CLOCK;
#if defined(_NTDDK_) #if defined(_NTDDK_)
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
LONGLONG LONGLONG
(FASTCALL *PFNKSCLOCK_GETTIME)( (FASTCALL *PFNKSCLOCK_GETTIME)(
__in PFILE_OBJECT FileObject _In_ PFILE_OBJECT FileObject
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
LONGLONG LONGLONG
(FASTCALL *PFNKSCLOCK_CORRELATEDTIME)( (FASTCALL *PFNKSCLOCK_CORRELATEDTIME)(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__out PLONGLONG SystemTime); _Out_ PLONGLONG SystemTime);
typedef struct { typedef struct {
PFNKSCLOCK_GETTIME GetTime; PFNKSCLOCK_GETTIME GetTime;
PFNKSCLOCK_GETTIME GetPhysicalTime; PFNKSCLOCK_GETTIME GetPhysicalTime;
PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime; PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime;
PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime; PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime;
} KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE; } KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE;
#if (NTDDI_VERSION >= NTDDI_WINXP) #if (NTDDI_VERSION >= NTDDI_WINXP)
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
typedef typedef
BOOLEAN BOOLEAN
(*PFNKSSETTIMER)( (*PFNKSSETTIMER)(
__in PVOID Context, _In_ PVOID Context,
__in PKTIMER Timer, _In_ PKTIMER Timer,
__in LARGE_INTEGER DueTime, _In_ LARGE_INTEGER DueTime,
__in PKDPC Dpc _In_ PKDPC Dpc
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
typedef typedef
BOOLEAN BOOLEAN
(*PFNKSCANCELTIMER)( (*PFNKSCANCELTIMER)(
__in PVOID Context, _In_ PVOID Context,
__in PKTIMER Timer _In_ PKTIMER Timer
); );
typedef typedef
LONGLONG LONGLONG
(FASTCALL *PFNKSCORRELATEDTIME)( (FASTCALL *PFNKSCORRELATEDTIME)(
__in PVOID Context, _In_ PVOID Context,
__out PLONGLONG SystemTime); _Out_ PLONGLONG SystemTime);
#endif // (NTDDI_VERSION >= NTDDI_WINXP) #endif // (NTDDI_VERSION >= NTDDI_WINXP)
typedef PVOID PKSDEFAULTCLOCK; typedef PVOID PKSDEFAULTCLOCK;
#define DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(Handler)\ #define DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(Handler)\
DEFINE_KSPROPERTY_ITEM(\ DEFINE_KSPROPERTY_ITEM(\
KSPROPERTY_CLOCK_TIME,\ KSPROPERTY_CLOCK_TIME,\
(Handler),\ (Handler),\
sizeof(KSPROPERTY),\ sizeof(KSPROPERTY),\
skipping to change at line 2338 skipping to change at line 2379
PVOID Context; PVOID Context;
ULONG Proportion; ULONG Proportion;
LONGLONG DeltaTime; LONGLONG DeltaTime;
} KSQUALITY, *PKSQUALITY; } KSQUALITY, *PKSQUALITY;
typedef struct { typedef struct {
PVOID Context; PVOID Context;
ULONG Status; ULONG Status;
} KSERROR, *PKSERROR; } KSERROR, *PKSERROR;
#define STATIC_KSEVENTSETID_Device\
0x288296ec, 0x9f94, 0x41b4, 0xa1, 0x53, 0xaa, 0x31, 0xae, 0xec, 0xb3, 0x3f
DEFINE_GUIDSTRUCT("288296EC-9F94-41b4-A153-AA31AEECB33F", KSEVENTSETID_Device);
#define KSEVENTSETID_Device DEFINE_GUIDNAMED(KSEVENTSETID_Device)
typedef enum {
KSEVENT_DEVICE_LOST,
KSEVENT_DEVICE_PREEMPTED
} KSEVENT_DEVICE;
typedef KSIDENTIFIER KSDEGRADE, *PKSDEGRADE; typedef KSIDENTIFIER KSDEGRADE, *PKSDEGRADE;
#define STATIC_KSDEGRADESETID_Standard\ #define STATIC_KSDEGRADESETID_Standard\
0x9F564180L, 0x704C, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 0x9F564180L, 0x704C, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("9F564180-704C-11D0-A5D6-28DB04C10000", KSDEGRADESETID_Standar d); DEFINE_GUIDSTRUCT("9F564180-704C-11D0-A5D6-28DB04C10000", KSDEGRADESETID_Standar d);
#define KSDEGRADESETID_Standard DEFINE_GUIDNAMED(KSDEGRADESETID_Standard) #define KSDEGRADESETID_Standard DEFINE_GUIDNAMED(KSDEGRADESETID_Standard)
typedef enum { typedef enum {
KSDEGRADE_STANDARD_SAMPLE, KSDEGRADE_STANDARD_SAMPLE,
KSDEGRADE_STANDARD_QUALITY, KSDEGRADE_STANDARD_QUALITY,
skipping to change at line 2370 skipping to change at line 2421
#define KSPROBE_STREAMWRITEMODIFY (KSPROBE_MODIFY | KSPROBE_STREAMWRITE) #define KSPROBE_STREAMWRITEMODIFY (KSPROBE_MODIFY | KSPROBE_STREAMWRITE)
#define KSPROBE_ALLOWFORMATCHANGE 0x00000080 #define KSPROBE_ALLOWFORMATCHANGE 0x00000080
#define KSSTREAM_READ KSPROBE_STREAMREAD #define KSSTREAM_READ KSPROBE_STREAMREAD
#define KSSTREAM_WRITE KSPROBE_STREAMWRITE #define KSSTREAM_WRITE KSPROBE_STREAMWRITE
#define KSSTREAM_PAGED_DATA 0x00000000 #define KSSTREAM_PAGED_DATA 0x00000000
#define KSSTREAM_NONPAGED_DATA 0x00000100 #define KSSTREAM_NONPAGED_DATA 0x00000100
#define KSSTREAM_SYNCHRONOUS 0x00001000 #define KSSTREAM_SYNCHRONOUS 0x00001000
#define KSSTREAM_FAILUREEXCEPTION 0x00002000 #define KSSTREAM_FAILUREEXCEPTION 0x00002000
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSCONTEXT_DISPATCH)( (*PFNKSCONTEXT_DISPATCH)(
__in PVOID Context, _In_ PVOID Context,
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSHANDLER)( (*PFNKSHANDLER)(
__in PIRP Irp, _In_ PIRP Irp,
__in PKSIDENTIFIER Request, _In_ PKSIDENTIFIER Request,
__inout PVOID Data _Inout_ PVOID Data
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
BOOLEAN BOOLEAN
(*PFNKSFASTHANDLER)( (*PFNKSFASTHANDLER)(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in_bcount(RequestLength) PKSIDENTIFIER Request, _In_reads_bytes_(RequestLength) PKSIDENTIFIER Request,
__in ULONG RequestLength, _In_ ULONG RequestLength,
__inout_bcount(DataLength) PVOID Data, _Inout_updates_bytes_(DataLength) PVOID Data,
__in ULONG DataLength, _In_ ULONG DataLength,
__out PIO_STATUS_BLOCK IoStatus _Out_ PIO_STATUS_BLOCK IoStatus
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSALLOCATOR)( (*PFNKSALLOCATOR)(
__in PIRP Irp, _In_ PIRP Irp,
__in ULONG BufferSize, _In_ ULONG BufferSize,
__in BOOLEAN InputOperation _In_ BOOLEAN InputOperation
); );
typedef struct { typedef struct {
KSPROPERTY_MEMBERSHEADER MembersHeader; KSPROPERTY_MEMBERSHEADER MembersHeader;
const VOID* Members; const VOID* Members;
} KSPROPERTY_MEMBERSLIST, *PKSPROPERTY_MEMBERSLIST; } KSPROPERTY_MEMBERSLIST, *PKSPROPERTY_MEMBERSLIST;
typedef struct { typedef struct {
KSIDENTIFIER PropTypeSet; KSIDENTIFIER PropTypeSet;
ULONG MembersListCount; ULONG MembersListCount;
__field_ecount(MembersListCount) _Field_size_(MembersListCount)
const KSPROPERTY_MEMBERSLIST* MembersList; const KSPROPERTY_MEMBERSLIST* MembersList;
} KSPROPERTY_VALUES, *PKSPROPERTY_VALUES; } KSPROPERTY_VALUES, *PKSPROPERTY_VALUES;
#define DEFINE_KSPROPERTY_TABLE(tablename)\ #define DEFINE_KSPROPERTY_TABLE(tablename)\
const KSPROPERTY_ITEM tablename[] = const KSPROPERTY_ITEM tablename[] =
#define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\ #define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\
MinProperty,\ MinProperty,\
MinData,\ MinData,\
SetHandler,\ SetHandler,\
skipping to change at line 2450 skipping to change at line 2501
BOOLEAN GetSupported; BOOLEAN GetSupported;
}; };
ULONG MinProperty; ULONG MinProperty;
ULONG MinData; ULONG MinData;
union { union {
PFNKSHANDLER SetPropertyHandler; PFNKSHANDLER SetPropertyHandler;
BOOLEAN SetSupported; BOOLEAN SetSupported;
}; };
const KSPROPERTY_VALUES*Values; const KSPROPERTY_VALUES*Values;
ULONG RelationsCount; ULONG RelationsCount;
__field_ecount(RelationsCount) _Field_size_(RelationsCount)
const KSPROPERTY* Relations; const KSPROPERTY* Relations;
PFNKSHANDLER SupportHandler; PFNKSHANDLER SupportHandler;
ULONG SerializedSize; ULONG SerializedSize;
} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM; } KSPROPERTY_ITEM, *PKSPROPERTY_ITEM;
#define DEFINE_KSFASTPROPERTY_ITEM(PropertyId, GetHandler, SetHandler)\ #define DEFINE_KSFASTPROPERTY_ITEM(PropertyId, GetHandler, SetHandler)\
{\ {\
PropertyId, (PFNKSFASTHANDLER)GetHandler, (PFNKSFASTHANDLER)SetHandler, 0\ PropertyId, (PFNKSFASTHANDLER)GetHandler, (PFNKSFASTHANDLER)SetHandler, 0\
} }
skipping to change at line 2493 skipping to change at line 2544
FastIoCount,\ FastIoCount,\
FastIoTable\ FastIoTable\
} }
#define DEFINE_KSPROPERTY_SET_TABLE(tablename)\ #define DEFINE_KSPROPERTY_SET_TABLE(tablename)\
const KSPROPERTY_SET tablename[] = const KSPROPERTY_SET tablename[] =
typedef struct { typedef struct {
const GUID* Set; const GUID* Set;
ULONG PropertiesCount; ULONG PropertiesCount;
__field_ecount(PropertiesCount) _Field_size_(PropertiesCount)
const KSPROPERTY_ITEM* PropertyItem; const KSPROPERTY_ITEM* PropertyItem;
ULONG FastIoCount; ULONG FastIoCount;
const KSFASTPROPERTY_ITEM* FastIoTable; const KSFASTPROPERTY_ITEM* FastIoTable;
} KSPROPERTY_SET, *PKSPROPERTY_SET; } KSPROPERTY_SET, *PKSPROPERTY_SET;
#define DEFINE_KSMETHOD_TABLE(tablename)\ #define DEFINE_KSMETHOD_TABLE(tablename)\
const KSMETHOD_ITEM tablename[] = const KSMETHOD_ITEM tablename[] =
#define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\ #define DEFINE_KSMETHOD_ITEM(MethodId, Flags,\
MethodHandler,\ MethodHandler,\
skipping to change at line 2554 skipping to change at line 2605
FastIoCount,\ FastIoCount,\
FastIoTable\ FastIoTable\
} }
#define DEFINE_KSMETHOD_SET_TABLE(tablename)\ #define DEFINE_KSMETHOD_SET_TABLE(tablename)\
const KSMETHOD_SET tablename[] = const KSMETHOD_SET tablename[] =
typedef struct { typedef struct {
const GUID* Set; const GUID* Set;
ULONG MethodsCount; ULONG MethodsCount;
__field_ecount(MethodsCount) _Field_size_(MethodsCount)
const KSMETHOD_ITEM* MethodItem; const KSMETHOD_ITEM* MethodItem;
ULONG FastIoCount; ULONG FastIoCount;
__field_ecount(FastIoCount) const KSFASTMETHOD_ITEM*FastIoTable; _Field_size_(FastIoCount) const KSFASTMETHOD_ITEM*FastIoTable;
} KSMETHOD_SET, *PKSMETHOD_SET; } KSMETHOD_SET, *PKSMETHOD_SET;
typedef struct _KSEVENT_ENTRY typedef struct _KSEVENT_ENTRY
KSEVENT_ENTRY, *PKSEVENT_ENTRY; KSEVENT_ENTRY, *PKSEVENT_ENTRY;
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSADDEVENT)( (*PFNKSADDEVENT)(
__in PIRP Irp, _In_ PIRP Irp,
__in PKSEVENTDATA EventData, _In_ PKSEVENTDATA EventData,
__in struct _KSEVENT_ENTRY* EventEntry _In_ struct _KSEVENT_ENTRY* EventEntry
); );
typedef typedef
VOID VOID
(*PFNKSREMOVEEVENT)( (*PFNKSREMOVEEVENT)(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in struct _KSEVENT_ENTRY* EventEntry _In_ struct _KSEVENT_ENTRY* EventEntry
); );
#define DEFINE_KSEVENT_TABLE(tablename)\ #define DEFINE_KSEVENT_TABLE(tablename)\
const KSEVENT_ITEM tablename[] = const KSEVENT_ITEM tablename[] =
#define DEFINE_KSEVENT_ITEM(EventId, DataInput, ExtraEntryData,\ #define DEFINE_KSEVENT_ITEM(EventId, DataInput, ExtraEntryData,\
AddHandler, RemoveHandler, SupportHandler)\ AddHandler, RemoveHandler, SupportHandler)\
{\ {\
EventId,\ EventId,\
DataInput,\ DataInput,\
skipping to change at line 2614 skipping to change at line 2665
{\ {\
Set, EventsCount, EventItem\ Set, EventsCount, EventItem\
} }
#define DEFINE_KSEVENT_SET_TABLE(tablename)\ #define DEFINE_KSEVENT_SET_TABLE(tablename)\
const KSEVENT_SET tablename[] = const KSEVENT_SET tablename[] =
typedef struct { typedef struct {
const GUID* Set; const GUID* Set;
ULONG EventsCount; ULONG EventsCount;
__field_ecount(EventsCount) const KSEVENT_ITEM* EventItem; _Field_size_(EventsCount) const KSEVENT_ITEM* EventItem;
} KSEVENT_SET, *PKSEVENT_SET; } KSEVENT_SET, *PKSEVENT_SET;
typedef struct { typedef struct {
KDPC Dpc; KDPC Dpc;
ULONG ReferenceCount; ULONG ReferenceCount;
KSPIN_LOCK AccessLock; KSPIN_LOCK AccessLock;
} KSDPC_ITEM, *PKSDPC_ITEM; } KSDPC_ITEM, *PKSDPC_ITEM;
typedef struct { typedef struct {
KSDPC_ITEM DpcItem; KSDPC_ITEM DpcItem;
skipping to change at line 2672 skipping to change at line 2723
PDRIVER_DISPATCH Create; PDRIVER_DISPATCH Create;
PVOID Context; PVOID Context;
UNICODE_STRING ObjectClass; UNICODE_STRING ObjectClass;
PSECURITY_DESCRIPTOR SecurityDescriptor; PSECURITY_DESCRIPTOR SecurityDescriptor;
ULONG Flags; ULONG Flags;
} KSOBJECT_CREATE_ITEM, *PKSOBJECT_CREATE_ITEM; } KSOBJECT_CREATE_ITEM, *PKSOBJECT_CREATE_ITEM;
typedef typedef
VOID VOID
(*PFNKSITEMFREECALLBACK)( (*PFNKSITEMFREECALLBACK)(
__in PKSOBJECT_CREATE_ITEM CreateItem _In_ PKSOBJECT_CREATE_ITEM CreateItem
); );
#define KSCREATE_ITEM_SECURITYCHANGED 0x00000001 #define KSCREATE_ITEM_SECURITYCHANGED 0x00000001
#define KSCREATE_ITEM_WILDCARD 0x00000002 #define KSCREATE_ITEM_WILDCARD 0x00000002
#define KSCREATE_ITEM_NOPARAMETERS 0x00000004 #define KSCREATE_ITEM_NOPARAMETERS 0x00000004
#define KSCREATE_ITEM_FREEONSTOP 0x00000008 #define KSCREATE_ITEM_FREEONSTOP 0x00000008
#define DEFINE_KSCREATE_DISPATCH_TABLE( tablename )\ #define DEFINE_KSCREATE_DISPATCH_TABLE( tablename )\
KSOBJECT_CREATE_ITEM tablename[] = KSOBJECT_CREATE_ITEM tablename[] =
skipping to change at line 2721 skipping to change at line 2772
{\ {\
0,\ 0,\
0,\ 0,\
NULL,\ NULL,\
},\ },\
NULL, 0\ NULL, 0\
} }
typedef struct { typedef struct {
ULONG CreateItemsCount; ULONG CreateItemsCount;
__field_ecount(CreateItemsCount) PKSOBJECT_CREATE_ITEM CreateItemsList; _Field_size_(CreateItemsCount) PKSOBJECT_CREATE_ITEM CreateItemsList;
} KSOBJECT_CREATE, *PKSOBJECT_CREATE; } KSOBJECT_CREATE, *PKSOBJECT_CREATE;
typedef struct { typedef struct {
PDRIVER_DISPATCH DeviceIoControl; PDRIVER_DISPATCH DeviceIoControl;
PDRIVER_DISPATCH Read; PDRIVER_DISPATCH Read;
PDRIVER_DISPATCH Write; PDRIVER_DISPATCH Write;
PDRIVER_DISPATCH Flush; PDRIVER_DISPATCH Flush;
PDRIVER_DISPATCH Close; PDRIVER_DISPATCH Close;
PDRIVER_DISPATCH QuerySecurity; PDRIVER_DISPATCH QuerySecurity;
PDRIVER_DISPATCH SetSecurity; PDRIVER_DISPATCH SetSecurity;
skipping to change at line 2797 skipping to change at line 2848
KsStackCopyToNewLocation, KsStackCopyToNewLocation,
KsStackReuseCurrentLocation, KsStackReuseCurrentLocation,
KsStackUseNewLocation KsStackUseNewLocation
} KSSTACK_USE; } KSSTACK_USE;
typedef enum { typedef enum {
KSTARGET_STATE_DISABLED, KSTARGET_STATE_DISABLED,
KSTARGET_STATE_ENABLED KSTARGET_STATE_ENABLED
} KSTARGET_STATE; } KSTARGET_STATE;
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSIRPLISTCALLBACK)( (*PFNKSIRPLISTCALLBACK)(
__in PIRP Irp, _In_ PIRP Irp,
__in PVOID Context _In_ PVOID Context
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
VOID VOID
(*PFNREFERENCEDEVICEOBJECT)( (*PFNREFERENCEDEVICEOBJECT)(
__in PVOID Context _In_ PVOID Context
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
VOID VOID
(*PFNDEREFERENCEDEVICEOBJECT)( (*PFNDEREFERENCEDEVICEOBJECT)(
__in PVOID Context _In_ PVOID Context
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNQUERYREFERENCESTRING)( (*PFNQUERYREFERENCESTRING)(
__in PVOID Context, _In_ PVOID Context,
__inout PWCHAR *String _Inout_ PWCHAR *String
); );
#define BUS_INTERFACE_REFERENCE_VERSION 0x100 #define BUS_INTERFACE_REFERENCE_VERSION 0x100
typedef struct { typedef struct {
// //
// Standard interface header // Standard interface header
// //
INTERFACE Interface; INTERFACE Interface;
skipping to change at line 2849 skipping to change at line 2900
PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject; PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject;
PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject; PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject;
PFNQUERYREFERENCESTRING QueryReferenceString; PFNQUERYREFERENCESTRING QueryReferenceString;
} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE; } BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE;
#define STATIC_REFERENCE_BUS_INTERFACE STATIC_KSMEDIUMSETID_Standard #define STATIC_REFERENCE_BUS_INTERFACE STATIC_KSMEDIUMSETID_Standard
#define REFERENCE_BUS_INTERFACE KSMEDIUMSETID_Standard #define REFERENCE_BUS_INTERFACE KSMEDIUMSETID_Standard
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNQUERYMEDIUMSLIST)( (*PFNQUERYMEDIUMSLIST)(
__in PVOID Context, _In_ PVOID Context,
__out ULONG* MediumsCount, _Out_ ULONG* MediumsCount,
__out_ecount(MediumsCount) PKSPIN_MEDIUM* MediumList _Out_writes_(MediumsCount) PKSPIN_MEDIUM* MediumList
); );
typedef struct { typedef struct {
// //
// Standard interface header // Standard interface header
// //
INTERFACE Interface; INTERFACE Interface;
// //
skipping to change at line 2921 skipping to change at line 2972
typedef struct _KSGATE typedef struct _KSGATE
KSGATE, *PKSGATE; KSGATE, *PKSGATE;
struct _KSGATE { struct _KSGATE {
LONG Count; LONG Count;
PKSGATE NextGate; PKSGATE NextGate;
}; };
#ifndef _NTOS_ #ifndef _NTOS_
__drv_maxIRQL(HIGH_LEVEL) _IRQL_requires_max_(HIGH_LEVEL)
void __inline void __inline
KsGateTurnInputOn( KsGateTurnInputOn(
__in_opt PKSGATE Gate _In_opt_ PKSGATE Gate
) )
{ {
while (Gate && (InterlockedIncrement(&Gate->Count) == 1)) { while (Gate && (InterlockedIncrement(&Gate->Count) == 1)) {
Gate = Gate->NextGate; Gate = Gate->NextGate;
} }
} }
__drv_maxIRQL(HIGH_LEVEL) _IRQL_requires_max_(HIGH_LEVEL)
void __inline void __inline
KsGateTurnInputOff( KsGateTurnInputOff(
__in_opt PKSGATE Gate _In_opt_ PKSGATE Gate
) )
{ {
while (Gate && (InterlockedDecrement(&Gate->Count) == 0)) { while (Gate && (InterlockedDecrement(&Gate->Count) == 0)) {
Gate = Gate->NextGate; Gate = Gate->NextGate;
} }
} }
__drv_maxIRQL(HIGH_LEVEL) _IRQL_requires_max_(HIGH_LEVEL)
BOOLEAN __inline BOOLEAN __inline
KsGateGetStateUnsafe( KsGateGetStateUnsafe(
__in PKSGATE Gate _In_ PKSGATE Gate
) )
{ {
ASSERT(Gate); ASSERT(Gate);
return((BOOLEAN)(Gate->Count > 0)); return((BOOLEAN)(Gate->Count > 0));
} }
__drv_maxIRQL(HIGH_LEVEL) _IRQL_requires_max_(HIGH_LEVEL)
BOOLEAN __inline BOOLEAN __inline
KsGateCaptureThreshold( KsGateCaptureThreshold(
__in PKSGATE Gate _In_ PKSGATE Gate
) )
{ {
BOOLEAN captured; BOOLEAN captured;
ASSERT(Gate); ASSERT(Gate);
captured = (BOOLEAN)(InterlockedCompareExchange(&Gate->Count,0,1) == 1); captured = (BOOLEAN)(InterlockedCompareExchange(&Gate->Count,0,1) == 1);
// //
// If we made a transition, it must be propagated. // If we made a transition, it must be propagated.
skipping to change at line 2979 skipping to change at line 3030
KsGateTurnInputOff(Gate->NextGate); KsGateTurnInputOff(Gate->NextGate);
} }
// //
// We return whatever the state was prior to the compare/exchange. If // We return whatever the state was prior to the compare/exchange. If
// the state was on, the state is now off. // the state was on, the state is now off.
// //
return captured; return captured;
} }
__drv_maxIRQL(HIGH_LEVEL) _IRQL_requires_max_(HIGH_LEVEL)
void __inline void __inline
KsGateInitialize( KsGateInitialize(
__in PKSGATE Gate, _In_ PKSGATE Gate,
__in LONG InitialCount, _In_ LONG InitialCount,
__in_opt PKSGATE NextGate, _In_opt_ PKSGATE NextGate,
__in BOOLEAN StateToPropagate // __in BOOLEAN NextGateIsAnOrGate _In_ BOOLEAN StateToPropagate // _In_ BOOLEAN NextGateIsAnOrGate
) )
{ {
ASSERT(Gate); ASSERT(Gate);
Gate->Count = InitialCount; Gate->Count = InitialCount;
Gate->NextGate = NextGate; Gate->NextGate = NextGate;
if (NextGate) { if (NextGate) {
if (InitialCount > 0) { if (InitialCount > 0) {
if (StateToPropagate) { if (StateToPropagate) {
KsGateTurnInputOn(NextGate); KsGateTurnInputOn(NextGate);
} }
} else { } else {
if (! StateToPropagate) { if (! StateToPropagate) {
KsGateTurnInputOff(NextGate); KsGateTurnInputOff(NextGate);
} }
} }
} }
} }
__drv_maxIRQL(HIGH_LEVEL) _IRQL_requires_max_(HIGH_LEVEL)
void __inline void __inline
KsGateInitializeAnd( KsGateInitializeAnd(
__in PKSGATE AndGate, _In_ PKSGATE AndGate,
__in_opt PKSGATE NextOrGate _In_opt_ PKSGATE NextOrGate
) )
{ {
KsGateInitialize(AndGate,1,NextOrGate,TRUE); KsGateInitialize(AndGate,1,NextOrGate,TRUE);
} }
__drv_maxIRQL(HIGH_LEVEL) _IRQL_requires_max_(HIGH_LEVEL)
void __inline void __inline
KsGateInitializeOr( KsGateInitializeOr(
__in PKSGATE OrGate, _In_ PKSGATE OrGate,
__in_opt PKSGATE NextAndGate _In_opt_ PKSGATE NextAndGate
) )
{ {
KsGateInitialize(OrGate,0,NextAndGate,FALSE); KsGateInitialize(OrGate,0,NextAndGate,FALSE);
} }
__drv_maxIRQL(HIGH_LEVEL) void __inline KsGateAddOnInputToAnd(__in PKSGATE AndGa _IRQL_requires_max_(HIGH_LEVEL) void __inline KsGateAddOnInputToAnd(_In_ PKSGATE
te) { UNREFERENCED_PARAMETER (AndGate); } AndGate) { UNREFERENCED_PARAMETER (AndGate); }
__drv_maxIRQL(HIGH_LEVEL) void __inline KsGateAddOffInputToAnd(__in PKSGATE AndG _IRQL_requires_max_(HIGH_LEVEL) void __inline KsGateAddOffInputToAnd(_In_ PKSGAT
ate) { KsGateTurnInputOff(AndGate); } E AndGate) { KsGateTurnInputOff(AndGate); }
__drv_maxIRQL(HIGH_LEVEL) void __inline KsGateRemoveOnInputFromAnd(__in PKSGATE _IRQL_requires_max_(HIGH_LEVEL) void __inline KsGateRemoveOnInputFromAnd(_In_ PK
AndGate) { UNREFERENCED_PARAMETER (AndGate); } SGATE AndGate) { UNREFERENCED_PARAMETER (AndGate); }
__drv_maxIRQL(HIGH_LEVEL) void __inline KsGateRemoveOffInputFromAnd(__in PKSGATE _IRQL_requires_max_(HIGH_LEVEL) void __inline KsGateRemoveOffInputFromAnd(_In_ P
AndGate) { KsGateTurnInputOn(AndGate); } KSGATE AndGate) { KsGateTurnInputOn(AndGate); }
__drv_maxIRQL(HIGH_LEVEL) void __inline KsGateAddOnInputToOr(__in PKSGATE OrGate _IRQL_requires_max_(HIGH_LEVEL) void __inline KsGateAddOnInputToOr(_In_ PKSGATE
) { KsGateTurnInputOn(OrGate); } OrGate) { KsGateTurnInputOn(OrGate); }
__drv_maxIRQL(HIGH_LEVEL) void __inline KsGateAddOffInputToOr(__in PKSGATE OrGat _IRQL_requires_max_(HIGH_LEVEL) void __inline KsGateAddOffInputToOr(_In_ PKSGATE
e) { UNREFERENCED_PARAMETER (OrGate); } OrGate) { UNREFERENCED_PARAMETER (OrGate); }
__drv_maxIRQL(HIGH_LEVEL) void __inline KsGateRemoveOnInputFromOr(__in PKSGATE O _IRQL_requires_max_(HIGH_LEVEL) void __inline KsGateRemoveOnInputFromOr(_In_ PKS
rGate) { KsGateTurnInputOff(OrGate); } GATE OrGate) { KsGateTurnInputOff(OrGate); }
__drv_maxIRQL(HIGH_LEVEL) void __inline KsGateRemoveOffInputFromOr(__in PKSGATE _IRQL_requires_max_(HIGH_LEVEL) void __inline KsGateRemoveOffInputFromOr(_In_ PK
OrGate) { UNREFERENCED_PARAMETER (OrGate); } SGATE OrGate) { UNREFERENCED_PARAMETER (OrGate); }
__drv_maxIRQL(HIGH_LEVEL) _IRQL_requires_max_(HIGH_LEVEL)
void __inline void __inline
KsGateTerminateAnd( KsGateTerminateAnd(
__in PKSGATE AndGate _In_ PKSGATE AndGate
) )
{ {
ASSERT(AndGate); ASSERT(AndGate);
if (KsGateGetStateUnsafe(AndGate)) { if (KsGateGetStateUnsafe(AndGate)) {
KsGateRemoveOnInputFromOr(AndGate->NextGate); KsGateRemoveOnInputFromOr(AndGate->NextGate);
} else { } else {
KsGateRemoveOffInputFromOr(AndGate->NextGate); KsGateRemoveOffInputFromOr(AndGate->NextGate);
} }
} }
__drv_maxIRQL(HIGH_LEVEL) _IRQL_requires_max_(HIGH_LEVEL)
void __inline void __inline
KsGateTerminateOr( KsGateTerminateOr(
__in PKSGATE OrGate _In_ PKSGATE OrGate
) )
{ {
ASSERT(OrGate); ASSERT(OrGate);
if (KsGateGetStateUnsafe(OrGate)) { if (KsGateGetStateUnsafe(OrGate)) {
KsGateRemoveOnInputFromAnd(OrGate->NextGate); KsGateRemoveOnInputFromAnd(OrGate->NextGate);
} else { } else {
KsGateRemoveOffInputFromAnd(OrGate->NextGate); KsGateRemoveOffInputFromAnd(OrGate->NextGate);
} }
} }
#endif // !_NTOS_ #endif // !_NTOS_
typedef PVOID KSOBJECT_BAG; typedef PVOID KSOBJECT_BAG;
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
typedef typedef
BOOLEAN BOOLEAN
(*PFNKSGENERATEEVENTCALLBACK)( (*PFNKSGENERATEEVENTCALLBACK)(
__in PVOID Context, _In_ PVOID Context,
__in PKSEVENT_ENTRY EventEntry _In_ PKSEVENT_ENTRY EventEntry
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSDEVICECREATE)( (*PFNKSDEVICECREATE)(
__in PKSDEVICE Device _In_ PKSDEVICE Device
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSDEVICEPNPSTART)( (*PFNKSDEVICEPNPSTART)(
__in PKSDEVICE Device, _In_ PKSDEVICE Device,
__in PIRP Irp, _In_ PIRP Irp,
__in_opt PCM_RESOURCE_LIST TranslatedResourceList, _In_opt_ PCM_RESOURCE_LIST TranslatedResourceList,
__in_opt PCM_RESOURCE_LIST UntranslatedResourceList _In_opt_ PCM_RESOURCE_LIST UntranslatedResourceList
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSDEVICE)( (*PFNKSDEVICE)(
__in PKSDEVICE Device _In_ PKSDEVICE Device
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSDEVICEIRP)( (*PFNKSDEVICEIRP)(
__in PKSDEVICE Device, _In_ PKSDEVICE Device,
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
void void
(*PFNKSDEVICEIRPVOID)( (*PFNKSDEVICEIRPVOID)(
__in PKSDEVICE Device, _In_ PKSDEVICE Device,
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSDEVICEQUERYCAPABILITIES)( (*PFNKSDEVICEQUERYCAPABILITIES)(
__in PKSDEVICE Device, _In_ PKSDEVICE Device,
__in PIRP Irp, _In_ PIRP Irp,
__inout PDEVICE_CAPABILITIES Capabilities _Inout_ PDEVICE_CAPABILITIES Capabilities
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSDEVICEQUERYPOWER)( (*PFNKSDEVICEQUERYPOWER)(
__in PKSDEVICE Device, _In_ PKSDEVICE Device,
__in PIRP Irp, _In_ PIRP Irp,
__in DEVICE_POWER_STATE DeviceTo, _In_ DEVICE_POWER_STATE DeviceTo,
__in DEVICE_POWER_STATE DeviceFrom, _In_ DEVICE_POWER_STATE DeviceFrom,
__in SYSTEM_POWER_STATE SystemTo, _In_ SYSTEM_POWER_STATE SystemTo,
__in SYSTEM_POWER_STATE SystemFrom, _In_ SYSTEM_POWER_STATE SystemFrom,
__in POWER_ACTION Action _In_ POWER_ACTION Action
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
void void
(*PFNKSDEVICESETPOWER)( (*PFNKSDEVICESETPOWER)(
__in PKSDEVICE Device, _In_ PKSDEVICE Device,
__in PIRP Irp, _In_ PIRP Irp,
__in DEVICE_POWER_STATE To, _In_ DEVICE_POWER_STATE To,
__in DEVICE_POWER_STATE From _In_ DEVICE_POWER_STATE From
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSFILTERFACTORYVOID)( (*PFNKSFILTERFACTORYVOID)(
__in PKSFILTERFACTORY FilterFactory _In_ PKSFILTERFACTORY FilterFactory
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
void void
(*PFNKSFILTERFACTORYPOWER)( (*PFNKSFILTERFACTORYPOWER)(
__in PKSFILTERFACTORY FilterFactory, _In_ PKSFILTERFACTORY FilterFactory,
__in DEVICE_POWER_STATE State _In_ DEVICE_POWER_STATE State
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSFILTERIRP)( (*PFNKSFILTERIRP)(
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in PIRP Irp _In_ PIRP Irp
); );
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSFILTERPROCESS)( (*PFNKSFILTERPROCESS)(
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in PKSPROCESSPIN_INDEXENTRY Index _In_ PKSPROCESSPIN_INDEXENTRY Index
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSFILTERVOID)( (*PFNKSFILTERVOID)(
__in PKSFILTER Filter _In_ PKSFILTER Filter
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
void void
(*PFNKSFILTERPOWER)( (*PFNKSFILTERPOWER)(
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in DEVICE_POWER_STATE State _In_ DEVICE_POWER_STATE State
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSPINIRP)( (*PFNKSPINIRP)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSPINSETDEVICESTATE)( (*PFNKSPINSETDEVICESTATE)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in KSSTATE ToState, _In_ KSSTATE ToState,
__in KSSTATE FromState _In_ KSSTATE FromState
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSPINSETDATAFORMAT)( (*PFNKSPINSETDATAFORMAT)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in_opt PKSDATAFORMAT OldFormat, _In_opt_ PKSDATAFORMAT OldFormat,
__in_opt PKSMULTIPLE_ITEM OldAttributeList, _In_opt_ PKSMULTIPLE_ITEM OldAttributeList,
__in const KSDATARANGE* DataRange, _In_ const KSDATARANGE* DataRange,
__in_opt const KSATTRIBUTE_LIST* AttributeRange _In_opt_ const KSATTRIBUTE_LIST* AttributeRange
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSPINHANDSHAKE)( (*PFNKSPINHANDSHAKE)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PKSHANDSHAKE In, _In_ PKSHANDSHAKE In,
__in PKSHANDSHAKE Out _In_ PKSHANDSHAKE Out
); );
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSPIN)( (*PFNKSPIN)(
__in PKSPIN Pin _In_ PKSPIN Pin
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
void void
(*PFNKSPINVOID)( (*PFNKSPINVOID)(
__in PKSPIN Pin _In_ PKSPIN Pin
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
void void
(*PFNKSPINPOWER)( (*PFNKSPINPOWER)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in DEVICE_POWER_STATE State _In_ DEVICE_POWER_STATE State
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
typedef typedef
BOOLEAN BOOLEAN
(*PFNKSPINSETTIMER)( (*PFNKSPINSETTIMER)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PKTIMER Timer, _In_ PKTIMER Timer,
__in LARGE_INTEGER DueTime, _In_ LARGE_INTEGER DueTime,
__in PKDPC Dpc _In_ PKDPC Dpc
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
typedef typedef
BOOLEAN BOOLEAN
(*PFNKSPINCANCELTIMER)( (*PFNKSPINCANCELTIMER)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PKTIMER Timer _In_ PKTIMER Timer
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
typedef typedef
LONGLONG LONGLONG
(FASTCALL *PFNKSPINCORRELATEDTIME)( (FASTCALL *PFNKSPINCORRELATEDTIME)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__out PLONGLONG SystemTime _Out_ PLONGLONG SystemTime
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
typedef typedef
void void
(*PFNKSPINRESOLUTION)( (*PFNKSPINRESOLUTION)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__out PKSRESOLUTION Resolution _Out_ PKSRESOLUTION Resolution
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSPININITIALIZEALLOCATOR)( (*PFNKSPININITIALIZEALLOCATOR)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PKSALLOCATOR_FRAMING AllocatorFraming, _In_ PKSALLOCATOR_FRAMING AllocatorFraming,
__out PVOID* Context _Out_ PVOID* Context
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
typedef typedef
void void
(*PFNKSSTREAMPOINTER)( (*PFNKSSTREAMPOINTER)(
__in PKSSTREAM_POINTER StreamPointer _In_ PKSSTREAM_POINTER StreamPointer
); );
typedef struct KSAUTOMATION_TABLE_ typedef struct KSAUTOMATION_TABLE_
KSAUTOMATION_TABLE, *PKSAUTOMATION_TABLE; KSAUTOMATION_TABLE, *PKSAUTOMATION_TABLE;
struct KSAUTOMATION_TABLE_ { struct KSAUTOMATION_TABLE_ {
ULONG PropertySetsCount; ULONG PropertySetsCount;
ULONG PropertyItemSize; ULONG PropertyItemSize;
__field_bcount(PropertySetsCount * PropertyItemSize) const KSPROPERTY_SET* P ropertySets; _Field_size_bytes_(PropertySetsCount * PropertyItemSize) const KSPROPERTY_SE T* PropertySets;
ULONG MethodSetsCount; ULONG MethodSetsCount;
ULONG MethodItemSize; ULONG MethodItemSize;
__field_bcount(MethodSetsCount * MethodItemSize) const KSMETHOD_SET* MethodS ets; _Field_size_bytes_(MethodSetsCount * MethodItemSize) const KSMETHOD_SET* Met hodSets;
ULONG EventSetsCount; ULONG EventSetsCount;
ULONG EventItemSize; ULONG EventItemSize;
__field_bcount(EventSetsCount * EventItemSize) const KSEVENT_SET* EventSets; _Field_size_bytes_(EventSetsCount * EventItemSize) const KSEVENT_SET* EventS ets;
#if !defined(_WIN64) #if !defined(_WIN64)
PVOID Alignment; PVOID Alignment;
#endif // !defined(_WIN64) #endif // !defined(_WIN64)
}; };
#define DEFINE_KSAUTOMATION_TABLE(table)\ #define DEFINE_KSAUTOMATION_TABLE(table)\
const KSAUTOMATION_TABLE table = const KSAUTOMATION_TABLE table =
#define DEFINE_KSAUTOMATION_PROPERTIES(table)\ #define DEFINE_KSAUTOMATION_PROPERTIES(table)\
SIZEOF_ARRAY(table),\ SIZEOF_ARRAY(table),\
skipping to change at line 3404 skipping to change at line 3455
// //
#define KSDEVICE_DESCRIPTOR_VERSION_2 (0x110) #define KSDEVICE_DESCRIPTOR_VERSION_2 (0x110)
#define MIN_DEV_VER_FOR_FLAGS (0x110) #define MIN_DEV_VER_FOR_FLAGS (0x110)
#endif // (NTDDI_VERSION >= NTDDI_VISTA) #endif // (NTDDI_VERSION >= NTDDI_VISTA)
struct _KSDEVICE_DESCRIPTOR { struct _KSDEVICE_DESCRIPTOR {
const KSDEVICE_DISPATCH* Dispatch; const KSDEVICE_DISPATCH* Dispatch;
ULONG FilterDescriptorsCount; ULONG FilterDescriptorsCount;
__field_ecount(FilterDescriptorsCount) const KSFILTER_DESCRIPTOR*const* Filt erDescriptors; _Field_size_(FilterDescriptorsCount) const KSFILTER_DESCRIPTOR*const* Filter Descriptors;
ULONG Version; // this is 0 for pre-version 100 driver ULONG Version; // this is 0 for pre-version 100 driver
#if (NTDDI_VERSION >= NTDDI_VISTA) #if (NTDDI_VERSION >= NTDDI_VISTA)
ULONG Flags; ULONG Flags;
#define KSDEVICE_FLAG_ENABLE_REMOTE_WAKEUP 0x00000001 #define KSDEVICE_FLAG_ENABLE_REMOTE_WAKEUP 0x00000001
#define KSDEVICE_FLAG_LOWPOWER_PASSTHROUGH 0x00000002 #define KSDEVICE_FLAG_LOWPOWER_PASSTHROUGH 0x00000002
#if !defined(_WIN64) #if !defined(_WIN64)
PVOID Alignment; PVOID Alignment;
skipping to change at line 3437 skipping to change at line 3488
#define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001 #define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001
#define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002 #define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002
#define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004 #define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004
#define KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES 0x00000008 #define KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES 0x00000008
#if (NTDDI_VERSION >= NTDDI_WINXPSP2) #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
#define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000 #define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000
#endif // (NTDDI_VERSION >= NTDDI_WINXPSP2) #endif // (NTDDI_VERSION >= NTDDI_WINXPSP2)
const GUID* ReferenceGuid; const GUID* ReferenceGuid;
ULONG PinDescriptorsCount; ULONG PinDescriptorsCount;
ULONG PinDescriptorSize; ULONG PinDescriptorSize;
__field_bcount(PinDescriptorsCount * PinDescriptorSize) const KSPIN_DESCRIPT OR_EX* PinDescriptors; _Field_size_bytes_(PinDescriptorsCount * PinDescriptorSize) const KSPIN_DESC RIPTOR_EX* PinDescriptors;
ULONG CategoriesCount; ULONG CategoriesCount;
__field_ecount(CategoriesCount) _Field_size_(CategoriesCount)
const GUID* Categories; const GUID* Categories;
ULONG NodeDescriptorsCount; ULONG NodeDescriptorsCount;
ULONG NodeDescriptorSize; ULONG NodeDescriptorSize;
__field_bcount(NodeDescriptorsCount * NodeDescriptorSize) const KSNODE_DESCR IPTOR* NodeDescriptors; _Field_size_bytes_(NodeDescriptorsCount * NodeDescriptorSize) const KSNODE_D ESCRIPTOR* NodeDescriptors;
ULONG ConnectionsCount; ULONG ConnectionsCount;
__field_ecount(ConnectionsCount) const KSTOPOLOGY_CONNECTION* Connections; _Field_size_(ConnectionsCount) const KSTOPOLOGY_CONNECTION* Connections;
const KSCOMPONENTID* ComponentId; const KSCOMPONENTID* ComponentId;
}; };
#define DEFINE_KSFILTER_DESCRIPTOR(descriptor)\ #define DEFINE_KSFILTER_DESCRIPTOR(descriptor)\
const KSFILTER_DESCRIPTOR descriptor = const KSFILTER_DESCRIPTOR descriptor =
#define DEFINE_KSFILTER_PIN_DESCRIPTORS(table)\ #define DEFINE_KSFILTER_PIN_DESCRIPTORS(table)\
SIZEOF_ARRAY(table),\ SIZEOF_ARRAY(table),\
sizeof(table[0]),\ sizeof(table[0]),\
table table
skipping to change at line 3633 skipping to change at line 3684
KSSTREAM_POINTER_OFFSET OffsetIn; KSSTREAM_POINTER_OFFSET OffsetIn;
KSSTREAM_POINTER_OFFSET OffsetOut; KSSTREAM_POINTER_OFFSET OffsetOut;
}; };
struct _KSPROCESSPIN { struct _KSPROCESSPIN {
PKSPIN Pin; PKSPIN Pin;
PKSSTREAM_POINTER StreamPointer; PKSSTREAM_POINTER StreamPointer;
PKSPROCESSPIN InPlaceCounterpart; PKSPROCESSPIN InPlaceCounterpart;
PKSPROCESSPIN DelegateBranch; PKSPROCESSPIN DelegateBranch;
PKSPROCESSPIN CopySource; PKSPROCESSPIN CopySource;
__field_bcount(BytesAvailable) PVOID Data; _Field_size_bytes_(BytesAvailable) PVOID Data;
ULONG BytesAvailable; ULONG BytesAvailable;
ULONG BytesUsed; ULONG BytesUsed;
ULONG Flags; ULONG Flags;
BOOLEAN Terminate; BOOLEAN Terminate;
}; };
struct _KSPROCESSPIN_INDEXENTRY { struct _KSPROCESSPIN_INDEXENTRY {
__field_ecount(Count) PKSPROCESSPIN *Pins; _Field_size_(Count) PKSPROCESSPIN *Pins;
ULONG Count; ULONG Count;
}; };
typedef enum { typedef enum {
KsObjectTypeDevice, KsObjectTypeDevice,
KsObjectTypeFilterFactory, KsObjectTypeFilterFactory,
KsObjectTypeFilter, KsObjectTypeFilter,
KsObjectTypePin KsObjectTypePin
} KSOBJECTTYPE; } KSOBJECTTYPE;
typedef typedef
void void
(*PFNKSFREE)( (*PFNKSFREE)(
__in PVOID Data _In_ PVOID Data
); );
typedef typedef
void void
(*PFNKSPINFRAMERETURN)( (*PFNKSPINFRAMERETURN)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in_bcount_opt(Size) PVOID Data, _In_reads_bytes_opt_(Size) PVOID Data,
__in ULONG Size OPTIONAL, _In_ ULONG Size OPTIONAL,
__in_opt PMDL Mdl, _In_opt_ PMDL Mdl,
__in_opt PVOID Context, _In_opt_ PVOID Context,
__in NTSTATUS Status _In_ NTSTATUS Status
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
typedef typedef
void void
(*PFNKSPINIRPCOMPLETION)( (*PFNKSPINIRPCOMPLETION)(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PIRP Irp _In_ PIRP Irp
); );
#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) #if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
#if !defined(_IKsControl_) #if !defined(_IKsControl_)
#define _IKsControl_ #define _IKsControl_
typedef interface IKsControl* PIKSCONTROL; typedef interface IKsControl* PIKSCONTROL;
#if !defined(DEFINE_ABSTRACT_UNKNOWN) #if !defined(DEFINE_ABSTRACT_UNKNOWN)
#define DEFINE_ABSTRACT_UNKNOWN() \ #define DEFINE_ABSTRACT_UNKNOWN() \
STDMETHOD_(NTSTATUS, QueryInterface)(THIS_ \ STDMETHOD_(NTSTATUS, QueryInterface)(THIS_ \
__in REFIID InterfaceId, \ _In_ REFIID InterfaceId, \
__deref_out PVOID* Interface \ _COM_Outptr_ PVOID* Interface \
) PURE; \ ) PURE; \
STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE;
#endif //!defined(DEFINE_ABSTRACT_UNKNOWN) #endif //!defined(DEFINE_ABSTRACT_UNKNOWN)
#undef INTERFACE #undef INTERFACE
#define INTERFACE IKsControl #define INTERFACE IKsControl
DECLARE_INTERFACE_(IKsControl,IUnknown) DECLARE_INTERFACE_(IKsControl,IUnknown)
{ {
DEFINE_ABSTRACT_UNKNOWN() // For C DEFINE_ABSTRACT_UNKNOWN() // For C
STDMETHOD_(NTSTATUS, KsProperty)(THIS_ STDMETHOD_(NTSTATUS, KsProperty)(THIS_
__in_bcount(PropertyLength) PKSPROPERTY Property, _In_reads_bytes_(PropertyLength) PKSPROPERTY Property,
__in ULONG PropertyLength, _In_ ULONG PropertyLength,
__inout_bcount(DataLength) PVOID PropertyData, _Inout_updates_bytes_(DataLength) PVOID PropertyData,
__in ULONG DataLength, _In_ ULONG DataLength,
__out ULONG* BytesReturned _Out_ ULONG* BytesReturned
) PURE; ) PURE;
STDMETHOD_(NTSTATUS, KsMethod)(THIS_ STDMETHOD_(NTSTATUS, KsMethod)(THIS_
__in_bcount(MethodLength) PKSMETHOD Method, _In_reads_bytes_(MethodLength) PKSMETHOD Method,
__in ULONG MethodLength, _In_ ULONG MethodLength,
__inout_bcount(DataLength) PVOID MethodData, _Inout_updates_bytes_(DataLength) PVOID MethodData,
__in ULONG DataLength, _In_ ULONG DataLength,
__out ULONG* BytesReturned _Out_ ULONG* BytesReturned
) PURE; ) PURE;
STDMETHOD_(NTSTATUS, KsEvent)(THIS_ STDMETHOD_(NTSTATUS, KsEvent)(THIS_
__in_bcount_opt(EventLength) PKSEVENT Event, _In_reads_bytes_opt_(EventLength) PKSEVENT Event,
__in ULONG EventLength, _In_ ULONG EventLength,
__inout_bcount(DataLength) PVOID EventData, _Inout_updates_bytes_(DataLength) PVOID EventData,
__in ULONG DataLength, _In_ ULONG DataLength,
__out ULONG* BytesReturned _Out_ ULONG* BytesReturned
) PURE; ) PURE;
}; };
typedef interface IKsReferenceClock* PIKSREFERENCECLOCK; typedef interface IKsReferenceClock* PIKSREFERENCECLOCK;
#undef INTERFACE #undef INTERFACE
#define INTERFACE IKsReferenceClock #define INTERFACE IKsReferenceClock
DECLARE_INTERFACE_(IKsReferenceClock,IUnknown) DECLARE_INTERFACE_(IKsReferenceClock,IUnknown)
{ {
DEFINE_ABSTRACT_UNKNOWN() // For C DEFINE_ABSTRACT_UNKNOWN() // For C
STDMETHOD_(LONGLONG,GetTime)(THIS STDMETHOD_(LONGLONG,GetTime)(THIS
) PURE; ) PURE;
STDMETHOD_(LONGLONG,GetPhysicalTime)(THIS STDMETHOD_(LONGLONG,GetPhysicalTime)(THIS
) PURE; ) PURE;
STDMETHOD_(LONGLONG,GetCorrelatedTime)(THIS_ STDMETHOD_(LONGLONG,GetCorrelatedTime)(THIS_
__out PLONGLONG SystemTime _Out_ PLONGLONG SystemTime
) PURE; ) PURE;
STDMETHOD_(LONGLONG,GetCorrelatedPhysicalTime)(THIS_ STDMETHOD_(LONGLONG,GetCorrelatedPhysicalTime)(THIS_
__out PLONGLONG SystemTime _Out_ PLONGLONG SystemTime
) PURE; ) PURE;
STDMETHOD_(NTSTATUS, GetResolution)(THIS_ STDMETHOD_(NTSTATUS, GetResolution)(THIS_
__out PKSRESOLUTION Resolution _Out_ PKSRESOLUTION Resolution
) PURE; ) PURE;
STDMETHOD_(NTSTATUS, GetState)(THIS_ STDMETHOD_(NTSTATUS, GetState)(THIS_
__out PKSSTATE State _Out_ PKSSTATE State
) PURE; ) PURE;
}; };
#undef INTERFACE #undef INTERFACE
#if (NTDDI_VERSION >= NTDDI_WS03SP1) #if (NTDDI_VERSION >= NTDDI_WS03SP1)
#define INTERFACE IKsDeviceFunctions #define INTERFACE IKsDeviceFunctions
DECLARE_INTERFACE_(IKsDeviceFunctions, IUnknown) DECLARE_INTERFACE_(IKsDeviceFunctions, IUnknown)
{ {
DEFINE_ABSTRACT_UNKNOWN() // For C DEFINE_ABSTRACT_UNKNOWN() // For C
STDMETHOD_(NTSTATUS, RegisterAdapterObjectEx)(THIS_ STDMETHOD_(NTSTATUS, RegisterAdapterObjectEx)(THIS_
__in PADAPTER_OBJECT AdapterObject, _In_ PADAPTER_OBJECT AdapterObject,
__in PDEVICE_DESCRIPTION DeviceDescription, _In_ PDEVICE_DESCRIPTION DeviceDescription,
__in ULONG NumberOfMapRegisters, _In_ ULONG NumberOfMapRegisters,
__in ULONG MaxMappingsByteCount, _In_ ULONG MaxMappingsByteCount,
__in ULONG MappingTableStride _In_ ULONG MappingTableStride
) PURE; ) PURE;
}; };
#undef INTERFACE #undef INTERFACE
#endif // (NTDDI_VERSION >= NTDDI_WS03SP1) #endif // (NTDDI_VERSION >= NTDDI_WS03SP1)
#define STATIC_IID_IKsControl \ #define STATIC_IID_IKsControl \
0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUID(IID_IKsControl, DEFINE_GUID(IID_IKsControl,
skipping to change at line 3824 skipping to change at line 3875
// //
#ifdef _KSDDK_ #ifdef _KSDDK_
#define KSDDKAPI #define KSDDKAPI
#else // !_KSDDK_ #else // !_KSDDK_
#define KSDDKAPI DECLSPEC_IMPORT #define KSDDKAPI DECLSPEC_IMPORT
#endif // _KSDDK_ #endif // _KSDDK_
#if defined(_NTDDK_) #if defined(_NTDDK_)
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsEnableEvent( KsEnableEvent(
__in PIRP Irp, _In_ PIRP Irp,
__in ULONG EventSetsCount, _In_ ULONG EventSetsCount,
__in_ecount(EventSetsCount) const KSEVENT_SET* EventSet, _In_reads_(EventSetsCount) const KSEVENT_SET* EventSet,
__inout_opt PLIST_ENTRY EventsList, _Inout_opt_ PLIST_ENTRY EventsList,
__in_opt KSEVENTS_LOCKTYPE EventsFlags, _In_opt_ KSEVENTS_LOCKTYPE EventsFlags,
__in_opt PVOID EventsLock _In_opt_ PVOID EventsLock
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsEnableEventWithAllocator( KsEnableEventWithAllocator(
__in PIRP Irp, _In_ PIRP Irp,
__in ULONG EventSetsCount, _In_ ULONG EventSetsCount,
__in_ecount(EventSetsCount) const KSEVENT_SET* EventSet, _In_reads_(EventSetsCount) const KSEVENT_SET* EventSet,
__inout_opt PLIST_ENTRY EventsList, _Inout_opt_ PLIST_ENTRY EventsList,
__in KSEVENTS_LOCKTYPE EventsFlags OPTIONAL, _In_ KSEVENTS_LOCKTYPE EventsFlags OPTIONAL,
__in_opt PVOID EventsLock, _In_opt_ PVOID EventsLock,
__in_opt PFNKSALLOCATOR Allocator, _In_opt_ PFNKSALLOCATOR Allocator,
__in_opt ULONG EventItemSize _In_opt_ ULONG EventItemSize
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDisableEvent( KsDisableEvent(
__in PIRP Irp, _In_ PIRP Irp,
__inout PLIST_ENTRY EventsList, _Inout_ PLIST_ENTRY EventsList,
__in KSEVENTS_LOCKTYPE EventsFlags, _In_ KSEVENTS_LOCKTYPE EventsFlags,
__in PVOID EventsLock _In_ PVOID EventsLock
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsDiscardEvent( KsDiscardEvent(
__in PKSEVENT_ENTRY EventEntry _In_ PKSEVENT_ENTRY EventEntry
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsFreeEventList( KsFreeEventList(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__inout PLIST_ENTRY EventsList, _Inout_ PLIST_ENTRY EventsList,
__in KSEVENTS_LOCKTYPE EventsFlags, _In_ KSEVENTS_LOCKTYPE EventsFlags,
__in PVOID EventsLock _In_ PVOID EventsLock
); );
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsGenerateEvent( KsGenerateEvent(
__in PKSEVENT_ENTRY EventEntry _In_ PKSEVENT_ENTRY EventEntry
); );
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsGenerateDataEvent( KsGenerateDataEvent(
__in PKSEVENT_ENTRY EventEntry, _In_ PKSEVENT_ENTRY EventEntry,
__in ULONG DataSize, _In_ ULONG DataSize,
__in_bcount(DataSize) PVOID Data _In_reads_bytes_(DataSize) PVOID Data
); );
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsGenerateEventList( KsGenerateEventList(
__in_opt GUID* Set, _In_opt_ GUID* Set,
__in ULONG EventId, _In_ ULONG EventId,
__in PLIST_ENTRY EventsList, _In_ PLIST_ENTRY EventsList,
__in KSEVENTS_LOCKTYPE EventsFlags, _In_ KSEVENTS_LOCKTYPE EventsFlags,
__in PVOID EventsLock _In_ PVOID EventsLock
); );
// property.c: // property.c:
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPropertyHandler( KsPropertyHandler(
__in PIRP Irp, _In_ PIRP Irp,
__in ULONG PropertySetsCount, _In_ ULONG PropertySetsCount,
__in_ecount(PropertySetsCount) const KSPROPERTY_SET* PropertySet _In_reads_(PropertySetsCount) const KSPROPERTY_SET* PropertySet
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPropertyHandlerWithAllocator( KsPropertyHandlerWithAllocator(
__in PIRP Irp, _In_ PIRP Irp,
__in ULONG PropertySetsCount, _In_ ULONG PropertySetsCount,
__in_ecount(PropertySetsCount) const KSPROPERTY_SET* PropertySet, _In_reads_(PropertySetsCount) const KSPROPERTY_SET* PropertySet,
__in_opt PFNKSALLOCATOR Allocator, _In_opt_ PFNKSALLOCATOR Allocator,
__in ULONG PropertyItemSize OPTIONAL _In_ ULONG PropertyItemSize OPTIONAL
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
KsFastPropertyHandler( KsFastPropertyHandler(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in_bcount(PropertyLength) PKSPROPERTY Property, _In_reads_bytes_(PropertyLength) PKSPROPERTY Property,
__in ULONG PropertyLength, _In_ ULONG PropertyLength,
__in_bcount(DataLength)PVOID Data, _In_reads_bytes_(DataLength)PVOID Data,
__in ULONG DataLength, _In_ ULONG DataLength,
__out PIO_STATUS_BLOCK IoStatus, _Out_ PIO_STATUS_BLOCK IoStatus,
__in ULONG PropertySetsCount, _In_ ULONG PropertySetsCount,
__in_ecount(PropertySetsCount) const KSPROPERTY_SET* PropertySet _In_reads_(PropertySetsCount) const KSPROPERTY_SET* PropertySet
); );
// method.c: // method.c:
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsMethodHandler( KsMethodHandler(
__in PIRP Irp, _In_ PIRP Irp,
__in ULONG MethodSetsCount, _In_ ULONG MethodSetsCount,
__in_ecount(MethodSetsCount) const KSMETHOD_SET* MethodSet _In_reads_(MethodSetsCount) const KSMETHOD_SET* MethodSet
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsMethodHandlerWithAllocator( KsMethodHandlerWithAllocator(
__in PIRP Irp, _In_ PIRP Irp,
__in ULONG MethodSetsCount, _In_ ULONG MethodSetsCount,
__in_ecount(MethodSetsCount) const KSMETHOD_SET* MethodSet, _In_reads_(MethodSetsCount) const KSMETHOD_SET* MethodSet,
__in_opt PFNKSALLOCATOR Allocator, _In_opt_ PFNKSALLOCATOR Allocator,
__in ULONG MethodItemSize OPTIONAL _In_ ULONG MethodItemSize OPTIONAL
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
KsFastMethodHandler( KsFastMethodHandler(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in_bcount(MethodLength) PKSMETHOD Method, _In_reads_bytes_(MethodLength) PKSMETHOD Method,
__in ULONG MethodLength, _In_ ULONG MethodLength,
__inout_bcount(DataLength) PVOID Data, _Inout_updates_bytes_(DataLength) PVOID Data,
__in ULONG DataLength, _In_ ULONG DataLength,
__out PIO_STATUS_BLOCK IoStatus, _Out_ PIO_STATUS_BLOCK IoStatus,
__in ULONG MethodSetsCount, _In_ ULONG MethodSetsCount,
__in_ecount(MethodSetsCount) const KSMETHOD_SET* MethodSet _In_reads_(MethodSetsCount) const KSMETHOD_SET* MethodSet
); );
// alloc.c: // alloc.c:
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateDefaultAllocator( KsCreateDefaultAllocator(
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateDefaultAllocatorEx( KsCreateDefaultAllocatorEx(
__in PIRP Irp, _In_ PIRP Irp,
__in_opt PVOID InitializeContext, _In_opt_ PVOID InitializeContext,
__in_opt PFNKSDEFAULTALLOCATE DefaultAllocate, _In_opt_ PFNKSDEFAULTALLOCATE DefaultAllocate,
__in_opt PFNKSDEFAULTFREE DefaultFree, _In_opt_ PFNKSDEFAULTFREE DefaultFree,
__in_opt PFNKSINITIALIZEALLOCATOR InitializeAllocator, _In_opt_ PFNKSINITIALIZEALLOCATOR InitializeAllocator,
__in_opt PFNKSDELETEALLOCATOR DeleteAllocator _In_opt_ PFNKSDELETEALLOCATOR DeleteAllocator
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateAllocator( KsCreateAllocator(
__in HANDLE ConnectionHandle, _In_ HANDLE ConnectionHandle,
__in PKSALLOCATOR_FRAMING AllocatorFraming, _In_ PKSALLOCATOR_FRAMING AllocatorFraming,
__out PHANDLE AllocatorHandle _Out_ PHANDLE AllocatorHandle
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsValidateAllocatorCreateRequest( KsValidateAllocatorCreateRequest(
__in PIRP Irp, _In_ PIRP Irp,
__out PKSALLOCATOR_FRAMING* AllocatorFraming _Out_ PKSALLOCATOR_FRAMING* AllocatorFraming
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsValidateAllocatorFramingEx( KsValidateAllocatorFramingEx(
__in PKSALLOCATOR_FRAMING_EX Framing, _In_ PKSALLOCATOR_FRAMING_EX Framing,
__in ULONG BufferSize, _In_ ULONG BufferSize,
__in const KSALLOCATOR_FRAMING_EX *PinFraming _In_ const KSALLOCATOR_FRAMING_EX *PinFraming
); );
// clock.c: // clock.c:
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAllocateDefaultClock( KsAllocateDefaultClock(
__out PKSDEFAULTCLOCK* DefaultClock _Out_ PKSDEFAULTCLOCK* DefaultClock
); );
#if (NTDDI_VERSION >= NTDDI_WINXP) #if (NTDDI_VERSION >= NTDDI_WINXP)
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAllocateDefaultClockEx( KsAllocateDefaultClockEx(
__out PKSDEFAULTCLOCK* DefaultClock, _Out_ PKSDEFAULTCLOCK* DefaultClock,
__in_opt PVOID Context, _In_opt_ PVOID Context,
__in_opt PFNKSSETTIMER SetTimer, _In_opt_ PFNKSSETTIMER SetTimer,
__in_opt PFNKSCANCELTIMER CancelTimer, _In_opt_ PFNKSCANCELTIMER CancelTimer,
__in_opt PFNKSCORRELATEDTIME CorrelatedTime, _In_opt_ PFNKSCORRELATEDTIME CorrelatedTime,
__in_opt const KSRESOLUTION* Resolution, _In_opt_ const KSRESOLUTION* Resolution,
__in ULONG Flags _In_ ULONG Flags
); );
#endif // (NTDDI_VERSION >= NTDDI_WINXP) #endif // (NTDDI_VERSION >= NTDDI_WINXP)
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsFreeDefaultClock( KsFreeDefaultClock(
__in PKSDEFAULTCLOCK DefaultClock _In_ PKSDEFAULTCLOCK DefaultClock
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateDefaultClock( KsCreateDefaultClock(
__in PIRP Irp, _In_ PIRP Irp,
__in PKSDEFAULTCLOCK DefaultClock _In_ PKSDEFAULTCLOCK DefaultClock
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateClock( KsCreateClock(
__in HANDLE ConnectionHandle, _In_ HANDLE ConnectionHandle,
__in PKSCLOCK_CREATE ClockCreate, _In_ PKSCLOCK_CREATE ClockCreate,
__out PHANDLE ClockHandle _Out_ PHANDLE ClockHandle
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsValidateClockCreateRequest( KsValidateClockCreateRequest(
__in PIRP Irp, _In_ PIRP Irp,
__deref_out PKSCLOCK_CREATE* ClockCreate _Outptr_ PKSCLOCK_CREATE* ClockCreate
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
KSSTATE KSSTATE
NTAPI NTAPI
KsGetDefaultClockState( KsGetDefaultClockState(
__in PKSDEFAULTCLOCK DefaultClock _In_ PKSDEFAULTCLOCK DefaultClock
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsSetDefaultClockState( KsSetDefaultClockState(
__in PKSDEFAULTCLOCK DefaultClock, _In_ PKSDEFAULTCLOCK DefaultClock,
__in KSSTATE State _In_ KSSTATE State
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
LONGLONG LONGLONG
NTAPI NTAPI
KsGetDefaultClockTime( KsGetDefaultClockTime(
__in PKSDEFAULTCLOCK DefaultClock _In_ PKSDEFAULTCLOCK DefaultClock
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsSetDefaultClockTime( KsSetDefaultClockTime(
__in PKSDEFAULTCLOCK DefaultClock, _In_ PKSDEFAULTCLOCK DefaultClock,
__in LONGLONG Time _In_ LONGLONG Time
); );
// connect.c: // connect.c:
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreatePin( KsCreatePin(
__in HANDLE FilterHandle, _In_ HANDLE FilterHandle,
__in PKSPIN_CONNECT Connect, _In_ PKSPIN_CONNECT Connect,
__in ACCESS_MASK DesiredAccess, _In_ ACCESS_MASK DesiredAccess,
__out PHANDLE ConnectionHandle _Out_ PHANDLE ConnectionHandle
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsValidateConnectRequest( KsValidateConnectRequest(
__in PIRP Irp, _In_ PIRP Irp,
__in ULONG DescriptorsCount, _In_ ULONG DescriptorsCount,
__in_ecount(DescriptorsCount) const KSPIN_DESCRIPTOR* Descriptor, _In_reads_(DescriptorsCount) const KSPIN_DESCRIPTOR* Descriptor,
__out PKSPIN_CONNECT* Connect _Out_ PKSPIN_CONNECT* Connect
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinPropertyHandler( KsPinPropertyHandler(
__in PIRP Irp, _In_ PIRP Irp,
__in PKSPROPERTY Property, _In_ PKSPROPERTY Property,
__inout PVOID Data, _Inout_ PVOID Data,
__in ULONG DescriptorsCount, _In_ ULONG DescriptorsCount,
__in_ecount(DescriptorsCount) const KSPIN_DESCRIPTOR* Descriptor _In_reads_(DescriptorsCount) const KSPIN_DESCRIPTOR* Descriptor
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinDataIntersection( KsPinDataIntersection(
__in PIRP Irp, _In_ PIRP Irp,
__in PKSP_PIN Pin, _In_ PKSP_PIN Pin,
__out_opt PVOID Data, _Out_opt_ PVOID Data,
__in ULONG DescriptorsCount, _In_ ULONG DescriptorsCount,
__in_ecount(DescriptorsCount) const KSPIN_DESCRIPTOR* Descriptor, _In_reads_(DescriptorsCount) const KSPIN_DESCRIPTOR* Descriptor,
__in PFNKSINTERSECTHANDLER IntersectHandler _In_ PFNKSINTERSECTHANDLER IntersectHandler
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinDataIntersectionEx( KsPinDataIntersectionEx(
__in PIRP Irp, _In_ PIRP Irp,
__in PKSP_PIN Pin, _In_ PKSP_PIN Pin,
__out PVOID Data, _Out_ PVOID Data,
__in ULONG DescriptorsCount, _In_ ULONG DescriptorsCount,
__in_bcount(DescriptorsCount * DescriptorSize) const KSPIN_DESCRIPTOR* Descr _In_reads_bytes_(DescriptorsCount * DescriptorSize) const KSPIN_DESCRIPTOR*
iptor, Descriptor,
__in ULONG DescriptorSize, _In_ ULONG DescriptorSize,
__in_opt PFNKSINTERSECTHANDLEREX IntersectHandler, _In_opt_ PFNKSINTERSECTHANDLEREX IntersectHandler,
__in_opt PVOID HandlerContext _In_opt_ PVOID HandlerContext
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsHandleSizedListQuery( KsHandleSizedListQuery(
__in PIRP Irp, _In_ PIRP Irp,
__in ULONG DataItemsCount, _In_ ULONG DataItemsCount,
__in ULONG DataItemSize, _In_ ULONG DataItemSize,
__in_bcount(DataItemsCount * DataItemSize) const VOID* DataItems _In_reads_bytes_(DataItemsCount * DataItemSize) const VOID* DataItems
); );
// image.c: // image.c:
#if (!defined( MAKEINTRESOURCE )) #if (!defined( MAKEINTRESOURCE ))
#define MAKEINTRESOURCE( res ) ((ULONG_PTR) (USHORT) res) #define MAKEINTRESOURCE( res ) ((ULONG_PTR) (USHORT) res)
#endif #endif
#if (!defined( RT_STRING )) #if (!defined( RT_STRING ))
#define RT_STRING MAKEINTRESOURCE( 6 ) #define RT_STRING MAKEINTRESOURCE( 6 )
#define RT_RCDATA MAKEINTRESOURCE( 10 ) #define RT_RCDATA MAKEINTRESOURCE( 10 )
#endif #endif
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsLoadResource( KsLoadResource(
__in PVOID ImageBase, _In_ PVOID ImageBase,
__in POOL_TYPE PoolType, _In_ POOL_TYPE PoolType,
__in ULONG_PTR ResourceName, _In_ ULONG_PTR ResourceName,
__in ULONG ResourceType, _In_ ULONG ResourceType,
__deref_out_bcount(ResourceSize) PVOID *Resource, _Outptr_result_bytebuffer_(ResourceSize) PVOID *Resource,
__out_opt PULONG ResourceSize _Out_opt_ PULONG ResourceSize
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsGetImageNameAndResourceId( KsGetImageNameAndResourceId(
__in HANDLE RegKey, _In_ HANDLE RegKey,
__out PUNICODE_STRING ImageName, _Out_ PUNICODE_STRING ImageName,
__out PULONG_PTR ResourceId, _Out_ PULONG_PTR ResourceId,
__out PULONG ValueType _Out_ PULONG ValueType
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsMapModuleName( KsMapModuleName(
__in PDEVICE_OBJECT PhysicalDeviceObject, _In_ PDEVICE_OBJECT PhysicalDeviceObject,
__in PUNICODE_STRING ModuleName, _In_ PUNICODE_STRING ModuleName,
__out PUNICODE_STRING ImageName, _Out_ PUNICODE_STRING ImageName,
__out PULONG_PTR ResourceId, _Out_ PULONG_PTR ResourceId,
__out PULONG ValueType _Out_ PULONG ValueType
); );
// irp.c: // irp.c:
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsReferenceBusObject( KsReferenceBusObject(
__in KSDEVICE_HEADER Header _In_ KSDEVICE_HEADER Header
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsDereferenceBusObject( KsDereferenceBusObject(
__in KSDEVICE_HEADER Header _In_ KSDEVICE_HEADER Header
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDispatchQuerySecurity( KsDispatchQuerySecurity(
__in PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDispatchSetSecurity( KsDispatchSetSecurity(
__in PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDispatchSpecificProperty( KsDispatchSpecificProperty(
__in PIRP Irp, _In_ PIRP Irp,
__in PFNKSHANDLER Handler _In_ PFNKSHANDLER Handler
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDispatchSpecificMethod( KsDispatchSpecificMethod(
__in PIRP Irp, _In_ PIRP Irp,
__in PFNKSHANDLER Handler _In_ PFNKSHANDLER Handler
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsReadFile( KsReadFile(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in_opt PKEVENT Event, _In_opt_ PKEVENT Event,
__in_opt PVOID PortContext, _In_opt_ PVOID PortContext,
__out PIO_STATUS_BLOCK IoStatusBlock, _Out_ PIO_STATUS_BLOCK IoStatusBlock,
__out_bcount(Length) PVOID Buffer, _Out_writes_bytes_(Length) PVOID Buffer,
__in ULONG Length, _In_ ULONG Length,
__in ULONG Key OPTIONAL, _In_ ULONG Key OPTIONAL,
__in KPROCESSOR_MODE RequestorMode _In_ KPROCESSOR_MODE RequestorMode
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsWriteFile( KsWriteFile(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in_opt PKEVENT Event, _In_opt_ PKEVENT Event,
__in_opt PVOID PortContext, _In_opt_ PVOID PortContext,
__out PIO_STATUS_BLOCK IoStatusBlock, _Out_ PIO_STATUS_BLOCK IoStatusBlock,
__in_bcount(Length) PVOID Buffer, _In_reads_bytes_(Length) PVOID Buffer,
__in ULONG Length, _In_ ULONG Length,
__in ULONG Key OPTIONAL, _In_ ULONG Key OPTIONAL,
__in KPROCESSOR_MODE RequestorMode _In_ KPROCESSOR_MODE RequestorMode
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsQueryInformationFile( KsQueryInformationFile(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__out_bcount(Length) PVOID FileInformation, _Out_writes_bytes_(Length) PVOID FileInformation,
__in ULONG Length, _In_ ULONG Length,
__in FILE_INFORMATION_CLASS FileInformationClass _In_ FILE_INFORMATION_CLASS FileInformationClass
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsSetInformationFile( KsSetInformationFile(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in_bcount(Length) PVOID FileInformation, _In_reads_bytes_(Length) PVOID FileInformation,
__in ULONG Length, _In_ ULONG Length,
__in FILE_INFORMATION_CLASS FileInformationClass _In_ FILE_INFORMATION_CLASS FileInformationClass
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsStreamIo( KsStreamIo(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in_opt PKEVENT Event, _In_opt_ PKEVENT Event,
__in_opt PVOID PortContext, _In_opt_ PVOID PortContext,
__in_opt PIO_COMPLETION_ROUTINE CompletionRoutine, _In_opt_ PIO_COMPLETION_ROUTINE CompletionRoutine,
__in_opt PVOID CompletionContext, _In_opt_ PVOID CompletionContext,
__in KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL, _In_ KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL,
__out PIO_STATUS_BLOCK IoStatusBlock, _Out_ PIO_STATUS_BLOCK IoStatusBlock,
__inout_bcount(Length) PVOID StreamHeaders, _Inout_updates_bytes_(Length) PVOID StreamHeaders,
__in ULONG Length, _In_ ULONG Length,
__in ULONG Flags, _In_ ULONG Flags,
__in KPROCESSOR_MODE RequestorMode _In_ KPROCESSOR_MODE RequestorMode
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsProbeStreamIrp( KsProbeStreamIrp(
__inout PIRP Irp, _Inout_ PIRP Irp,
__in ULONG ProbeFlags, _In_ ULONG ProbeFlags,
__in ULONG HeaderSize OPTIONAL _In_ ULONG HeaderSize OPTIONAL
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAllocateExtraData( KsAllocateExtraData(
__inout PIRP Irp, _Inout_ PIRP Irp,
__in ULONG ExtraSize, _In_ ULONG ExtraSize,
__out PVOID* ExtraBuffer _Out_ PVOID* ExtraBuffer
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsNullDriverUnload( KsNullDriverUnload(
__in PDRIVER_OBJECT DriverObject _In_ PDRIVER_OBJECT DriverObject
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsSetMajorFunctionHandler( KsSetMajorFunctionHandler(
__in PDRIVER_OBJECT DriverObject, _In_ PDRIVER_OBJECT DriverObject,
__in ULONG MajorFunction _In_ ULONG MajorFunction
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDispatchInvalidDeviceRequest( KsDispatchInvalidDeviceRequest(
__in PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDefaultDeviceIoCompletion( KsDefaultDeviceIoCompletion(
__in PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDispatchIrp( KsDispatchIrp(
__in PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
KsDispatchFastIoDeviceControlFailure( KsDispatchFastIoDeviceControlFailure(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in BOOLEAN Wait, _In_ BOOLEAN Wait,
__in_bcount_opt(InputBufferLength) PVOID InputBuffer, _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer,
__in ULONG InputBufferLength, _In_ ULONG InputBufferLength,
__out_bcount_opt(OutputBufferLength) PVOID OutputBuffer, _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer,
__in ULONG OutputBufferLength, _In_ ULONG OutputBufferLength,
__in ULONG IoControlCode, _In_ ULONG IoControlCode,
__out PIO_STATUS_BLOCK IoStatus, _Out_ PIO_STATUS_BLOCK IoStatus,
__in PDEVICE_OBJECT DeviceObject _In_ PDEVICE_OBJECT DeviceObject
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
KsDispatchFastReadFailure( KsDispatchFastReadFailure(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in PLARGE_INTEGER FileOffset, _In_ PLARGE_INTEGER FileOffset,
__in ULONG Length, _In_ ULONG Length,
__in BOOLEAN Wait, _In_ BOOLEAN Wait,
__in ULONG LockKey, _In_ ULONG LockKey,
__out PVOID Buffer, _Out_ PVOID Buffer,
__out PIO_STATUS_BLOCK IoStatus, _Out_ PIO_STATUS_BLOCK IoStatus,
__in PDEVICE_OBJECT DeviceObject _In_ PDEVICE_OBJECT DeviceObject
); );
#define KsDispatchFastWriteFailure KsDispatchFastReadFailure #define KsDispatchFastWriteFailure KsDispatchFastReadFailure
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
DRIVER_CANCEL KsCancelRoutine; DRIVER_CANCEL KsCancelRoutine;
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsCancelIo( KsCancelIo(
__inout PLIST_ENTRY QueueHead, _Inout_ PLIST_ENTRY QueueHead,
__in PKSPIN_LOCK SpinLock _In_ PKSPIN_LOCK SpinLock
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsReleaseIrpOnCancelableQueue( KsReleaseIrpOnCancelableQueue(
__in PIRP Irp, _In_ PIRP Irp,
__in_opt PDRIVER_CANCEL DriverCancel _In_opt_ PDRIVER_CANCEL DriverCancel
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PIRP PIRP
NTAPI NTAPI
KsRemoveIrpFromCancelableQueue( KsRemoveIrpFromCancelableQueue(
__inout PLIST_ENTRY QueueHead, _Inout_ PLIST_ENTRY QueueHead,
__in PKSPIN_LOCK SpinLock, _In_ PKSPIN_LOCK SpinLock,
__in KSLIST_ENTRY_LOCATION ListLocation, _In_ KSLIST_ENTRY_LOCATION ListLocation,
__in KSIRP_REMOVAL_OPERATION RemovalOperation _In_ KSIRP_REMOVAL_OPERATION RemovalOperation
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsMoveIrpsOnCancelableQueue( KsMoveIrpsOnCancelableQueue(
__inout PLIST_ENTRY SourceList, _Inout_ PLIST_ENTRY SourceList,
__in PKSPIN_LOCK SourceLock, _In_ PKSPIN_LOCK SourceLock,
__inout PLIST_ENTRY DestinationList, _Inout_ PLIST_ENTRY DestinationList,
__in_opt PKSPIN_LOCK DestinationLock, _In_opt_ PKSPIN_LOCK DestinationLock,
__in KSLIST_ENTRY_LOCATION ListLocation, _In_ KSLIST_ENTRY_LOCATION ListLocation,
__in PFNKSIRPLISTCALLBACK ListCallback, _In_ PFNKSIRPLISTCALLBACK ListCallback,
__in PVOID Context _In_ PVOID Context
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsRemoveSpecificIrpFromCancelableQueue( KsRemoveSpecificIrpFromCancelableQueue(
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsAddIrpToCancelableQueue( KsAddIrpToCancelableQueue(
__inout PLIST_ENTRY QueueHead, _Inout_ PLIST_ENTRY QueueHead,
__in PKSPIN_LOCK SpinLock, _In_ PKSPIN_LOCK SpinLock,
__in PIRP Irp, _In_ PIRP Irp,
__in KSLIST_ENTRY_LOCATION ListLocation, _In_ KSLIST_ENTRY_LOCATION ListLocation,
__in_opt PDRIVER_CANCEL DriverCancel _In_opt_ PDRIVER_CANCEL DriverCancel
); );
// api.c: // api.c:
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAcquireResetValue( KsAcquireResetValue(
__in PIRP Irp, _In_ PIRP Irp,
__out KSRESET* ResetValue _Out_ KSRESET* ResetValue
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsTopologyPropertyHandler( KsTopologyPropertyHandler(
__in PIRP Irp, _In_ PIRP Irp,
__in PKSPROPERTY Property, _In_ PKSPROPERTY Property,
__inout PVOID Data, _Inout_ PVOID Data,
__in const KSTOPOLOGY* Topology _In_ const KSTOPOLOGY* Topology
); );
__drv_maxIRQL(APC_LEVEL) _IRQL_requires_max_(APC_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsAcquireDeviceSecurityLock( KsAcquireDeviceSecurityLock(
__in KSDEVICE_HEADER Header, _In_ KSDEVICE_HEADER Header,
__in BOOLEAN Exclusive _In_ BOOLEAN Exclusive
); );
__drv_maxIRQL(APC_LEVEL) _IRQL_requires_max_(APC_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsReleaseDeviceSecurityLock( KsReleaseDeviceSecurityLock(
__in KSDEVICE_HEADER Header _In_ KSDEVICE_HEADER Header
); );
KSDDKAPI KSDDKAPI
__drv_dispatchType(IRP_MJ_PNP) DRIVER_DISPATCH KsDefaultDispatchPnp; _Dispatch_type_(IRP_MJ_PNP) DRIVER_DISPATCH KsDefaultDispatchPnp;
KSDDKAPI KSDDKAPI
__drv_dispatchType(IRP_MJ_POWER) DRIVER_DISPATCH KsDefaultDispatchPower; _Dispatch_type_(IRP_MJ_POWER) DRIVER_DISPATCH KsDefaultDispatchPower;
KSDDKAPI KSDDKAPI
__drv_dispatchType(IRP_MJ_SYSTEM_CONTROL) _Dispatch_type_(IRP_MJ_SYSTEM_CONTROL)
__drv_dispatchType(IRP_MJ_DEVICE_CONTROL) _Dispatch_type_(IRP_MJ_DEVICE_CONTROL)
DRIVER_DISPATCH KsDefaultForwardIrp; DRIVER_DISPATCH KsDefaultForwardIrp;
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsSetDevicePnpAndBaseObject( KsSetDevicePnpAndBaseObject(
__in KSDEVICE_HEADER Header, _In_ KSDEVICE_HEADER Header,
__in PDEVICE_OBJECT PnpDeviceObject, _In_ PDEVICE_OBJECT PnpDeviceObject,
__in PDEVICE_OBJECT BaseObject _In_ PDEVICE_OBJECT BaseObject
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PDEVICE_OBJECT PDEVICE_OBJECT
NTAPI NTAPI
KsQueryDevicePnpObject( KsQueryDevicePnpObject(
__in KSDEVICE_HEADER Header _In_ KSDEVICE_HEADER Header
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
ACCESS_MASK ACCESS_MASK
NTAPI NTAPI
KsQueryObjectAccessMask( KsQueryObjectAccessMask(
__in KSOBJECT_HEADER Header _In_ KSOBJECT_HEADER Header
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsRecalculateStackDepth( KsRecalculateStackDepth(
__in KSDEVICE_HEADER Header, _In_ KSDEVICE_HEADER Header,
__in BOOLEAN ReuseStackLocation _In_ BOOLEAN ReuseStackLocation
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsSetTargetState( KsSetTargetState(
__in KSOBJECT_HEADER Header, _In_ KSOBJECT_HEADER Header,
__in KSTARGET_STATE TargetState _In_ KSTARGET_STATE TargetState
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsSetTargetDeviceObject( KsSetTargetDeviceObject(
__in KSOBJECT_HEADER Header, _In_ KSOBJECT_HEADER Header,
__in_opt PDEVICE_OBJECT TargetDevice _In_opt_ PDEVICE_OBJECT TargetDevice
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsSetPowerDispatch( KsSetPowerDispatch(
__in KSOBJECT_HEADER Header, _In_ KSOBJECT_HEADER Header,
__in_opt PFNKSCONTEXT_DISPATCH PowerDispatch, _In_opt_ PFNKSCONTEXT_DISPATCH PowerDispatch,
__in_opt PVOID PowerContext _In_opt_ PVOID PowerContext
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PKSOBJECT_CREATE_ITEM PKSOBJECT_CREATE_ITEM
NTAPI NTAPI
KsQueryObjectCreateItem( KsQueryObjectCreateItem(
__in KSOBJECT_HEADER Header _In_ KSOBJECT_HEADER Header
); );
__drv_maxIRQL(APC_LEVEL) _IRQL_requires_max_(APC_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAllocateDeviceHeader( KsAllocateDeviceHeader(
__out KSDEVICE_HEADER* Header, _Out_ KSDEVICE_HEADER* Header,
__in ULONG ItemsCount, _In_ ULONG ItemsCount,
__in_ecount_opt(ItemsCount) PKSOBJECT_CREATE_ITEM ItemsList _In_reads_opt_(ItemsCount) PKSOBJECT_CREATE_ITEM ItemsList
); );
__drv_maxIRQL(APC_LEVEL) _IRQL_requires_max_(APC_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsFreeDeviceHeader( KsFreeDeviceHeader(
__in KSDEVICE_HEADER Header _In_ KSDEVICE_HEADER Header
); );
__drv_maxIRQL(APC_LEVEL) _IRQL_requires_max_(APC_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAllocateObjectHeader( KsAllocateObjectHeader(
__out KSOBJECT_HEADER* Header, _Out_ KSOBJECT_HEADER* Header,
__in ULONG ItemsCount, _In_ ULONG ItemsCount,
__in_ecount_opt(ItemsCount) PKSOBJECT_CREATE_ITEM ItemsList, _In_reads_opt_(ItemsCount) PKSOBJECT_CREATE_ITEM ItemsList,
__in PIRP Irp, _In_ PIRP Irp,
__in const KSDISPATCH_TABLE* Table _In_ const KSDISPATCH_TABLE* Table
); );
__drv_maxIRQL(APC_LEVEL) _IRQL_requires_max_(APC_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsFreeObjectHeader( KsFreeObjectHeader(
__in KSOBJECT_HEADER Header _In_ KSOBJECT_HEADER Header
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAddObjectCreateItemToDeviceHeader( KsAddObjectCreateItemToDeviceHeader(
__in KSDEVICE_HEADER Header, _In_ KSDEVICE_HEADER Header,
__in PDRIVER_DISPATCH Create, _In_ PDRIVER_DISPATCH Create,
__in PVOID Context, _In_ PVOID Context,
__in PWSTR ObjectClass, _In_ PWSTR ObjectClass,
__in_opt PSECURITY_DESCRIPTOR SecurityDescriptor _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAddObjectCreateItemToObjectHeader( KsAddObjectCreateItemToObjectHeader(
__in KSOBJECT_HEADER Header, _In_ KSOBJECT_HEADER Header,
__in PDRIVER_DISPATCH Create, _In_ PDRIVER_DISPATCH Create,
__in PVOID Context, _In_ PVOID Context,
__in PWSTR ObjectClass, _In_ PWSTR ObjectClass,
__in_opt PSECURITY_DESCRIPTOR SecurityDescriptor _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAllocateObjectCreateItem( KsAllocateObjectCreateItem(
__in KSDEVICE_HEADER Header, _In_ KSDEVICE_HEADER Header,
__in PKSOBJECT_CREATE_ITEM CreateItem, _In_ PKSOBJECT_CREATE_ITEM CreateItem,
__in BOOLEAN AllocateEntry, _In_ BOOLEAN AllocateEntry,
__in_opt PFNKSITEMFREECALLBACK ItemFreeCallback _In_opt_ PFNKSITEMFREECALLBACK ItemFreeCallback
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsFreeObjectCreateItem( KsFreeObjectCreateItem(
__in KSDEVICE_HEADER Header, _In_ KSDEVICE_HEADER Header,
__in PUNICODE_STRING CreateItem _In_ PUNICODE_STRING CreateItem
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsFreeObjectCreateItemsByContext( KsFreeObjectCreateItemsByContext(
__in KSDEVICE_HEADER Header, _In_ KSDEVICE_HEADER Header,
__in PVOID Context _In_ PVOID Context
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateDefaultSecurity( KsCreateDefaultSecurity(
__in_opt PSECURITY_DESCRIPTOR ParentSecurity, _In_opt_ PSECURITY_DESCRIPTOR ParentSecurity,
__out PSECURITY_DESCRIPTOR* DefaultSecurity _Out_ PSECURITY_DESCRIPTOR* DefaultSecurity
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsForwardIrp( KsForwardIrp(
__in PIRP Irp, _In_ PIRP Irp,
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in BOOLEAN ReuseStackLocation _In_ BOOLEAN ReuseStackLocation
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsForwardAndCatchIrp( KsForwardAndCatchIrp(
__in PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
__in PIRP Irp, _In_ PIRP Irp,
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in KSSTACK_USE StackUse _In_ KSSTACK_USE StackUse
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsSynchronousIoControlDevice( KsSynchronousIoControlDevice(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in KPROCESSOR_MODE RequestorMode, _In_ KPROCESSOR_MODE RequestorMode,
__in ULONG IoControl, _In_ ULONG IoControl,
__in_bcount(InSize) PVOID InBuffer, _In_reads_bytes_(InSize) PVOID InBuffer,
__in ULONG InSize, _In_ ULONG InSize,
__out_bcount_part(OutSize, *BytesReturned) PVOID OutBuffer, _Out_writes_bytes_to_(OutSize, *BytesReturned) PVOID OutBuffer,
__in ULONG OutSize, _In_ ULONG OutSize,
__out PULONG BytesReturned _Out_ PULONG BytesReturned
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsUnserializeObjectPropertiesFromRegistry( KsUnserializeObjectPropertiesFromRegistry(
__in PFILE_OBJECT FileObject, _In_ PFILE_OBJECT FileObject,
__in_opt HANDLE ParentKey, _In_opt_ HANDLE ParentKey,
__in_opt PUNICODE_STRING RegistryPath _In_opt_ PUNICODE_STRING RegistryPath
); );
#if (NTDDI_VERSION >= NTDDI_WINXP) #if (NTDDI_VERSION >= NTDDI_WINXP)
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCacheMedium( KsCacheMedium(
__in PUNICODE_STRING SymbolicLink, _In_ PUNICODE_STRING SymbolicLink,
__in PKSPIN_MEDIUM Medium, _In_ PKSPIN_MEDIUM Medium,
__in ULONG PinDirection _In_ ULONG PinDirection
); );
#endif // (NTDDI_VERSION >= NTDDI_WINXP) #endif // (NTDDI_VERSION >= NTDDI_WINXP)
// thread.c: // thread.c:
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsRegisterWorker( KsRegisterWorker(
__in WORK_QUEUE_TYPE WorkQueueType, _In_ WORK_QUEUE_TYPE WorkQueueType,
__out PKSWORKER* Worker _Out_ PKSWORKER* Worker
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsRegisterCountedWorker( KsRegisterCountedWorker(
__in WORK_QUEUE_TYPE WorkQueueType, _In_ WORK_QUEUE_TYPE WorkQueueType,
__in PWORK_QUEUE_ITEM CountedWorkItem, _In_ PWORK_QUEUE_ITEM CountedWorkItem,
__out PKSWORKER* Worker _Out_ PKSWORKER* Worker
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsUnregisterWorker( KsUnregisterWorker(
__in PKSWORKER Worker _In_ PKSWORKER Worker
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsQueueWorkItem( KsQueueWorkItem(
__in PKSWORKER Worker, _In_ PKSWORKER Worker,
__in PWORK_QUEUE_ITEM WorkItem _In_ PWORK_QUEUE_ITEM WorkItem
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsIncrementCountedWorker( KsIncrementCountedWorker(
__in PKSWORKER Worker _In_ PKSWORKER Worker
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsDecrementCountedWorker( KsDecrementCountedWorker(
__in PKSWORKER Worker _In_ PKSWORKER Worker
); );
// topology.c: // topology.c:
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateTopologyNode( KsCreateTopologyNode(
__in HANDLE ParentHandle, _In_ HANDLE ParentHandle,
__in PKSNODE_CREATE NodeCreate, _In_ PKSNODE_CREATE NodeCreate,
__in ACCESS_MASK DesiredAccess, _In_ ACCESS_MASK DesiredAccess,
__out PHANDLE NodeHandle _Out_ PHANDLE NodeHandle
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsValidateTopologyNodeCreateRequest( KsValidateTopologyNodeCreateRequest(
__in PIRP Irp, _In_ PIRP Irp,
__in PKSTOPOLOGY Topology, _In_ PKSTOPOLOGY Topology,
__out PKSNODE_CREATE* NodeCreate _Out_ PKSNODE_CREATE* NodeCreate
); );
#if (NTDDI_VERSION >= NTDDI_WINXP) #if (NTDDI_VERSION >= NTDDI_WINXP)
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsMergeAutomationTables( KsMergeAutomationTables(
__out PKSAUTOMATION_TABLE* AutomationTableAB, _Out_ PKSAUTOMATION_TABLE* AutomationTableAB,
__in_opt PKSAUTOMATION_TABLE AutomationTableA, _In_opt_ PKSAUTOMATION_TABLE AutomationTableA,
__in_opt PKSAUTOMATION_TABLE AutomationTableB, _In_opt_ PKSAUTOMATION_TABLE AutomationTableB,
__in_opt KSOBJECT_BAG Bag _In_opt_ KSOBJECT_BAG Bag
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsInitializeDriver( KsInitializeDriver(
__in PDRIVER_OBJECT DriverObject, _In_ PDRIVER_OBJECT DriverObject,
__in PUNICODE_STRING RegistryPathName, _In_ PUNICODE_STRING RegistryPathName,
__in_opt const KSDEVICE_DESCRIPTOR* Descriptor _In_opt_ const KSDEVICE_DESCRIPTOR* Descriptor
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAddDevice( KsAddDevice(
__in PDRIVER_OBJECT DriverObject, _In_ PDRIVER_OBJECT DriverObject,
__in PDEVICE_OBJECT PhysicalDeviceObject _In_ PDEVICE_OBJECT PhysicalDeviceObject
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateDevice( KsCreateDevice(
__in PDRIVER_OBJECT DriverObject, _In_ PDRIVER_OBJECT DriverObject,
__in PDEVICE_OBJECT PhysicalDeviceObject, _In_ PDEVICE_OBJECT PhysicalDeviceObject,
__in_opt const KSDEVICE_DESCRIPTOR* Descriptor, _In_opt_ const KSDEVICE_DESCRIPTOR* Descriptor,
__in ULONG ExtensionSize, _In_ ULONG ExtensionSize,
__out_opt PKSDEVICE* Device _Out_opt_ PKSDEVICE* Device
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsInitializeDevice( KsInitializeDevice(
__in PDEVICE_OBJECT FunctionalDeviceObject, _In_ PDEVICE_OBJECT FunctionalDeviceObject,
__in PDEVICE_OBJECT PhysicalDeviceObject, _In_ PDEVICE_OBJECT PhysicalDeviceObject,
__in PDEVICE_OBJECT NextDeviceObject, _In_ PDEVICE_OBJECT NextDeviceObject,
__in_opt const KSDEVICE_DESCRIPTOR* Descriptor _In_opt_ const KSDEVICE_DESCRIPTOR* Descriptor
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsTerminateDevice( KsTerminateDevice(
__in PDEVICE_OBJECT DeviceObject _In_ PDEVICE_OBJECT DeviceObject
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PKSDEVICE PKSDEVICE
NTAPI NTAPI
KsGetDeviceForDeviceObject( KsGetDeviceForDeviceObject(
__in PDEVICE_OBJECT FunctionalDeviceObject _In_ PDEVICE_OBJECT FunctionalDeviceObject
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsAcquireDevice( KsAcquireDevice(
__in PKSDEVICE Device _In_ PKSDEVICE Device
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsReleaseDevice( KsReleaseDevice(
__in PKSDEVICE Device _In_ PKSDEVICE Device
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsDeviceRegisterAdapterObject( KsDeviceRegisterAdapterObject(
__in PKSDEVICE Device, _In_ PKSDEVICE Device,
__in PADAPTER_OBJECT AdapterObject, _In_ PADAPTER_OBJECT AdapterObject,
__in ULONG MaxMappingsByteCount, _In_ ULONG MaxMappingsByteCount,
__in ULONG MappingTableStride _In_ ULONG MappingTableStride
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsDeviceGetBusData( KsDeviceGetBusData(
__in PKSDEVICE Device, _In_ PKSDEVICE Device,
__in ULONG DataType, _In_ ULONG DataType,
__in_bcount(Length) PVOID Buffer, _In_reads_bytes_(Length) PVOID Buffer,
__in ULONG Offset, _In_ ULONG Offset,
__in ULONG Length _In_ ULONG Length
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsDeviceSetBusData( KsDeviceSetBusData(
__in PKSDEVICE Device, _In_ PKSDEVICE Device,
__in ULONG DataType, _In_ ULONG DataType,
__in_bcount(Length) PVOID Buffer, _In_reads_bytes_(Length) PVOID Buffer,
__in ULONG Offset, _In_ ULONG Offset,
__in ULONG Length _In_ ULONG Length
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateFilterFactory( KsCreateFilterFactory(
__in PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
__in const KSFILTER_DESCRIPTOR *Descriptor, _In_ const KSFILTER_DESCRIPTOR *Descriptor,
__in_opt PWSTR RefString, _In_opt_ PWSTR RefString,
__in_opt PSECURITY_DESCRIPTOR SecurityDescriptor, _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor,
__in ULONG CreateItemFlags, _In_ ULONG CreateItemFlags,
__in_opt PFNKSFILTERFACTORYPOWER SleepCallback, _In_opt_ PFNKSFILTERFACTORYPOWER SleepCallback,
__in_opt PFNKSFILTERFACTORYPOWER WakeCallback, _In_opt_ PFNKSFILTERFACTORYPOWER WakeCallback,
__out_opt PKSFILTERFACTORY *FilterFactory _Out_opt_ PKSFILTERFACTORY *FilterFactory
); );
#define KsDeleteFilterFactory(FilterFactory) \ #define KsDeleteFilterFactory(FilterFactory) \
KsFreeObjectCreateItemsByContext(\ KsFreeObjectCreateItemsByContext(\
*(KSDEVICE_HEADER *)(\ *(KSDEVICE_HEADER *)(\
KsFilterFactoryGetParentDevice(FilterFactory)->FunctionalDeviceObjec t->\ KsFilterFactoryGetParentDevice(FilterFactory)->FunctionalDeviceObjec t->\
DeviceExtension),\ DeviceExtension),\
FilterFactory) FilterFactory)
__checkReturn _Must_inspect_result_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsFilterFactoryUpdateCacheData( KsFilterFactoryUpdateCacheData(
__in PKSFILTERFACTORY FilterFactory, _In_ PKSFILTERFACTORY FilterFactory,
__in_opt const KSFILTER_DESCRIPTOR *FilterDescriptor _In_opt_ const KSFILTER_DESCRIPTOR *FilterDescriptor
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsFilterFactoryAddCreateItem( KsFilterFactoryAddCreateItem(
__in PKSFILTERFACTORY FilterFactory, _In_ PKSFILTERFACTORY FilterFactory,
__in PWSTR RefString, _In_ PWSTR RefString,
__in_opt PSECURITY_DESCRIPTOR SecurityDescriptor, _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor,
__in ULONG CreateItemFlags _In_ ULONG CreateItemFlags
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsFilterFactorySetDeviceClassesState( KsFilterFactorySetDeviceClassesState(
__in PKSFILTERFACTORY FilterFactory, _In_ PKSFILTERFACTORY FilterFactory,
__in BOOLEAN NewState _In_ BOOLEAN NewState
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PUNICODE_STRING PUNICODE_STRING
NTAPI NTAPI
KsFilterFactoryGetSymbolicLink( KsFilterFactoryGetSymbolicLink(
__in PKSFILTERFACTORY FilterFactory _In_ PKSFILTERFACTORY FilterFactory
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsAddEvent( KsAddEvent(
__in PVOID Object, _In_ PVOID Object,
__in PKSEVENT_ENTRY EventEntry _In_ PKSEVENT_ENTRY EventEntry
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
void _inline void _inline
KsFilterAddEvent( KsFilterAddEvent(
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in PKSEVENT_ENTRY EventEntry _In_ PKSEVENT_ENTRY EventEntry
) )
{ {
KsAddEvent(Filter,EventEntry); KsAddEvent(Filter,EventEntry);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
void _inline void _inline
KsPinAddEvent( KsPinAddEvent(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PKSEVENT_ENTRY EventEntry _In_ PKSEVENT_ENTRY EventEntry
) )
{ {
KsAddEvent(Pin,EventEntry); KsAddEvent(Pin,EventEntry);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDefaultAddEventHandler( KsDefaultAddEventHandler(
__in PIRP Irp, _In_ PIRP Irp,
__in PKSEVENTDATA EventData, _In_ PKSEVENTDATA EventData,
__inout PKSEVENT_ENTRY EventEntry _Inout_ PKSEVENT_ENTRY EventEntry
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsGenerateEvents( KsGenerateEvents(
__in PVOID Object, _In_ PVOID Object,
__in_opt const GUID* EventSet, _In_opt_ const GUID* EventSet,
__in ULONG EventId, _In_ ULONG EventId,
__in ULONG DataSize, _In_ ULONG DataSize,
__in_bcount_opt(DataSize) PVOID Data, _In_reads_bytes_opt_(DataSize) PVOID Data,
__in_opt PFNKSGENERATEEVENTCALLBACK CallBack, _In_opt_ PFNKSGENERATEEVENTCALLBACK CallBack,
__in_opt PVOID CallBackContext _In_opt_ PVOID CallBackContext
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
void _inline void _inline
KsFilterGenerateEvents( KsFilterGenerateEvents(
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in_opt const GUID* EventSet, _In_opt_ const GUID* EventSet,
__in ULONG EventId, _In_ ULONG EventId,
__in ULONG DataSize, _In_ ULONG DataSize,
__in_bcount(DataSize) PVOID Data, _In_reads_bytes_(DataSize) PVOID Data,
__in_opt PFNKSGENERATEEVENTCALLBACK CallBack, _In_opt_ PFNKSGENERATEEVENTCALLBACK CallBack,
__in_opt PVOID CallBackContext _In_opt_ PVOID CallBackContext
) )
{ {
KsGenerateEvents( KsGenerateEvents(
Filter, Filter,
EventSet, EventSet,
EventId, EventId,
DataSize, DataSize,
Data, Data,
CallBack, CallBack,
CallBackContext); CallBackContext);
} }
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
void _inline void _inline
KsPinGenerateEvents( KsPinGenerateEvents(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in_opt const GUID* EventSet, _In_opt_ const GUID* EventSet,
__in ULONG EventId, _In_ ULONG EventId,
__in ULONG DataSize, _In_ ULONG DataSize,
__in_bcount_opt(DataSize) PVOID Data, _In_reads_bytes_opt_(DataSize) PVOID Data,
__in_opt PFNKSGENERATEEVENTCALLBACK CallBack, _In_opt_ PFNKSGENERATEEVENTCALLBACK CallBack,
__in_opt PVOID CallBackContext _In_opt_ PVOID CallBackContext
) )
{ {
KsGenerateEvents( KsGenerateEvents(
Pin, Pin,
EventSet, EventSet,
EventId, EventId,
DataSize, DataSize,
Data, Data,
CallBack, CallBack,
CallBackContext); CallBackContext);
} }
typedef enum { typedef enum {
KSSTREAM_POINTER_STATE_UNLOCKED = 0, KSSTREAM_POINTER_STATE_UNLOCKED = 0,
KSSTREAM_POINTER_STATE_LOCKED KSSTREAM_POINTER_STATE_LOCKED
} KSSTREAM_POINTER_STATE; } KSSTREAM_POINTER_STATE;
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinGetAvailableByteCount( KsPinGetAvailableByteCount(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__out_opt PLONG InputDataBytes, _Out_opt_ PLONG InputDataBytes,
__out_opt PLONG OutputBufferBytes _Out_opt_ PLONG OutputBufferBytes
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PKSSTREAM_POINTER PKSSTREAM_POINTER
NTAPI NTAPI
KsPinGetLeadingEdgeStreamPointer( KsPinGetLeadingEdgeStreamPointer(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in KSSTREAM_POINTER_STATE State _In_ KSSTREAM_POINTER_STATE State
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PKSSTREAM_POINTER PKSSTREAM_POINTER
NTAPI NTAPI
KsPinGetTrailingEdgeStreamPointer( KsPinGetTrailingEdgeStreamPointer(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in KSSTREAM_POINTER_STATE State _In_ KSSTREAM_POINTER_STATE State
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsStreamPointerSetStatusCode( KsStreamPointerSetStatusCode(
__in PKSSTREAM_POINTER StreamPointer, _In_ PKSSTREAM_POINTER StreamPointer,
__in NTSTATUS Status _In_ NTSTATUS Status
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsStreamPointerLock( KsStreamPointerLock(
__in PKSSTREAM_POINTER StreamPointer _In_ PKSSTREAM_POINTER StreamPointer
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsStreamPointerUnlock( KsStreamPointerUnlock(
__in PKSSTREAM_POINTER StreamPointer, _In_ PKSSTREAM_POINTER StreamPointer,
__in BOOLEAN Eject _In_ BOOLEAN Eject
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsStreamPointerAdvanceOffsetsAndUnlock( KsStreamPointerAdvanceOffsetsAndUnlock(
__in PKSSTREAM_POINTER StreamPointer, _In_ PKSSTREAM_POINTER StreamPointer,
__in ULONG InUsed, _In_ ULONG InUsed,
__in ULONG OutUsed, _In_ ULONG OutUsed,
__in BOOLEAN Eject _In_ BOOLEAN Eject
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsStreamPointerDelete( KsStreamPointerDelete(
__in PKSSTREAM_POINTER StreamPointer _In_ PKSSTREAM_POINTER StreamPointer
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsStreamPointerClone( KsStreamPointerClone(
__in PKSSTREAM_POINTER StreamPointer, _In_ PKSSTREAM_POINTER StreamPointer,
__in_opt PFNKSSTREAMPOINTER CancelCallback, _In_opt_ PFNKSSTREAMPOINTER CancelCallback,
__in ULONG ContextSize, _In_ ULONG ContextSize,
__out PKSSTREAM_POINTER* CloneStreamPointer _Out_ PKSSTREAM_POINTER* CloneStreamPointer
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsStreamPointerAdvanceOffsets( KsStreamPointerAdvanceOffsets(
__in PKSSTREAM_POINTER StreamPointer, _In_ PKSSTREAM_POINTER StreamPointer,
__in ULONG InUsed, _In_ ULONG InUsed,
__in ULONG OutUsed, _In_ ULONG OutUsed,
__in BOOLEAN Eject _In_ BOOLEAN Eject
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsStreamPointerAdvance( KsStreamPointerAdvance(
__in PKSSTREAM_POINTER StreamPointer _In_ PKSSTREAM_POINTER StreamPointer
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PMDL PMDL
NTAPI NTAPI
KsStreamPointerGetMdl( KsStreamPointerGetMdl(
__in PKSSTREAM_POINTER StreamPointer _In_ PKSSTREAM_POINTER StreamPointer
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PIRP PIRP
NTAPI NTAPI
KsStreamPointerGetIrp( KsStreamPointerGetIrp(
__in PKSSTREAM_POINTER StreamPointer, _In_ PKSSTREAM_POINTER StreamPointer,
__out_opt PBOOLEAN FirstFrameInIrp, _Out_opt_ PBOOLEAN FirstFrameInIrp,
__out_opt PBOOLEAN LastFrameInIrp _Out_opt_ PBOOLEAN LastFrameInIrp
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsStreamPointerScheduleTimeout( KsStreamPointerScheduleTimeout(
__in PKSSTREAM_POINTER StreamPointer, _In_ PKSSTREAM_POINTER StreamPointer,
__in PFNKSSTREAMPOINTER Callback, _In_ PFNKSSTREAMPOINTER Callback,
__in ULONGLONG Interval _In_ ULONGLONG Interval
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsStreamPointerCancelTimeout( KsStreamPointerCancelTimeout(
__in PKSSTREAM_POINTER StreamPointer _In_ PKSSTREAM_POINTER StreamPointer
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PKSSTREAM_POINTER PKSSTREAM_POINTER
NTAPI NTAPI
KsPinGetFirstCloneStreamPointer( KsPinGetFirstCloneStreamPointer(
__in PKSPIN Pin _In_ PKSPIN Pin
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PKSSTREAM_POINTER PKSSTREAM_POINTER
NTAPI NTAPI
KsStreamPointerGetNextClone( KsStreamPointerGetNextClone(
__in PKSSTREAM_POINTER StreamPointer _In_ PKSSTREAM_POINTER StreamPointer
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinHandshake( KsPinHandshake(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PKSHANDSHAKE In, _In_ PKSHANDSHAKE In,
__out PKSHANDSHAKE Out _Out_ PKSHANDSHAKE Out
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsCompletePendingRequest( KsCompletePendingRequest(
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
KSOBJECTTYPE KSOBJECTTYPE
NTAPI NTAPI
KsGetObjectTypeFromIrp( KsGetObjectTypeFromIrp(
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PVOID PVOID
NTAPI NTAPI
KsGetObjectFromFileObject( KsGetObjectFromFileObject(
__in PFILE_OBJECT FileObject _In_ PFILE_OBJECT FileObject
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
KSOBJECTTYPE KSOBJECTTYPE
NTAPI NTAPI
KsGetObjectTypeFromFileObject( KsGetObjectTypeFromFileObject(
__in PFILE_OBJECT FileObject _In_ PFILE_OBJECT FileObject
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
PKSFILTER __inline PKSFILTER __inline
KsGetFilterFromFileObject( KsGetFilterFromFileObject(
__in PFILE_OBJECT FileObject _In_ PFILE_OBJECT FileObject
) )
{ {
return (PKSFILTER) KsGetObjectFromFileObject(FileObject); return (PKSFILTER) KsGetObjectFromFileObject(FileObject);
} }
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
PKSPIN __inline PKSPIN __inline
KsGetPinFromFileObject( KsGetPinFromFileObject(
__in PFILE_OBJECT FileObject _In_ PFILE_OBJECT FileObject
) )
{ {
return (PKSPIN) KsGetObjectFromFileObject(FileObject); return (PKSPIN) KsGetObjectFromFileObject(FileObject);
} }
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PKSGATE PKSGATE
NTAPI NTAPI
KsFilterGetAndGate( KsFilterGetAndGate(
__in PKSFILTER Filter _In_ PKSFILTER Filter
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsFilterAcquireProcessingMutex( KsFilterAcquireProcessingMutex(
__in PKSFILTER Filter _In_ PKSFILTER Filter
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsFilterReleaseProcessingMutex( KsFilterReleaseProcessingMutex(
__in PKSFILTER Filter _In_ PKSFILTER Filter
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsFilterAttemptProcessing( KsFilterAttemptProcessing(
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in BOOLEAN Asynchronous _In_ BOOLEAN Asynchronous
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PKSGATE PKSGATE
NTAPI NTAPI
KsPinGetAndGate( KsPinGetAndGate(
__in PKSPIN Pin _In_ PKSPIN Pin
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinAttachAndGate( KsPinAttachAndGate(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in_opt PKSGATE AndGate _In_opt_ PKSGATE AndGate
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinAttachOrGate( KsPinAttachOrGate(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in_opt PKSGATE OrGate _In_opt_ PKSGATE OrGate
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinAcquireProcessingMutex( KsPinAcquireProcessingMutex(
__in PKSPIN Pin _In_ PKSPIN Pin
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinReleaseProcessingMutex( KsPinReleaseProcessingMutex(
__in PKSPIN Pin _In_ PKSPIN Pin
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
KsProcessPinUpdate( KsProcessPinUpdate(
__in PKSPROCESSPIN ProcessPin _In_ PKSPROCESSPIN ProcessPin
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinGetCopyRelationships( KsPinGetCopyRelationships(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__out PKSPIN* CopySource, _Out_ PKSPIN* CopySource,
__out PKSPIN* DelegateBranch _Out_ PKSPIN* DelegateBranch
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinAttemptProcessing( KsPinAttemptProcessing(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in BOOLEAN Asynchronous _In_ BOOLEAN Asynchronous
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PVOID PVOID
NTAPI NTAPI
KsGetParent( KsGetParent(
__in PVOID Object _In_ PVOID Object
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PKSDEVICE __inline PKSDEVICE __inline
KsFilterFactoryGetParentDevice( KsFilterFactoryGetParentDevice(
__in PKSFILTERFACTORY FilterFactory _In_ PKSFILTERFACTORY FilterFactory
) )
{ {
return (PKSDEVICE) KsGetParent((PVOID) FilterFactory); return (PKSDEVICE) KsGetParent((PVOID) FilterFactory);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PKSFILTERFACTORY __inline PKSFILTERFACTORY __inline
KsFilterGetParentFilterFactory( KsFilterGetParentFilterFactory(
__in PKSFILTER Filter _In_ PKSFILTER Filter
) )
{ {
return (PKSFILTERFACTORY) KsGetParent((PVOID) Filter); return (PKSFILTERFACTORY) KsGetParent((PVOID) Filter);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PKSFILTER PKSFILTER
NTAPI NTAPI
KsPinGetParentFilter( KsPinGetParentFilter(
__in PKSPIN Pin _In_ PKSPIN Pin
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PVOID PVOID
NTAPI NTAPI
KsGetFirstChild( KsGetFirstChild(
__in PVOID Object _In_ PVOID Object
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PKSFILTERFACTORY __inline PKSFILTERFACTORY __inline
KsDeviceGetFirstChildFilterFactory( KsDeviceGetFirstChildFilterFactory(
__in PKSDEVICE Device _In_ PKSDEVICE Device
) )
{ {
return (PKSFILTERFACTORY) KsGetFirstChild((PVOID) Device); return (PKSFILTERFACTORY) KsGetFirstChild((PVOID) Device);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PKSFILTER __inline PKSFILTER __inline
KsFilterFactoryGetFirstChildFilter( KsFilterFactoryGetFirstChildFilter(
__in PKSFILTERFACTORY FilterFactory _In_ PKSFILTERFACTORY FilterFactory
) )
{ {
return (PKSFILTER) KsGetFirstChild((PVOID) FilterFactory); return (PKSFILTER) KsGetFirstChild((PVOID) FilterFactory);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsFilterGetChildPinCount( KsFilterGetChildPinCount(
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in ULONG PinId _In_ ULONG PinId
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PKSPIN PKSPIN
NTAPI NTAPI
KsFilterGetFirstChildPin( KsFilterGetFirstChildPin(
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in ULONG PinId _In_ ULONG PinId
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PVOID PVOID
NTAPI NTAPI
KsGetNextSibling( KsGetNextSibling(
__in PVOID Object _In_ PVOID Object
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PKSPIN PKSPIN
NTAPI NTAPI
KsPinGetNextSiblingPin( KsPinGetNextSiblingPin(
__in PKSPIN Pin _In_ PKSPIN Pin
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PKSFILTERFACTORY __inline PKSFILTERFACTORY __inline
KsFilterFactoryGetNextSiblingFilterFactory( KsFilterFactoryGetNextSiblingFilterFactory(
__in PKSFILTERFACTORY FilterFactory _In_ PKSFILTERFACTORY FilterFactory
) )
{ {
return (PKSFILTERFACTORY) KsGetNextSibling((PVOID) FilterFactory); return (PKSFILTERFACTORY) KsGetNextSibling((PVOID) FilterFactory);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PKSFILTER __inline PKSFILTER __inline
KsFilterGetNextSiblingFilter( KsFilterGetNextSiblingFilter(
__in PKSFILTER Filter _In_ PKSFILTER Filter
) )
{ {
return (PKSFILTER) KsGetNextSibling((PVOID) Filter); return (PKSFILTER) KsGetNextSibling((PVOID) Filter);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PKSDEVICE PKSDEVICE
NTAPI NTAPI
KsGetDevice( KsGetDevice(
__in PVOID Object _In_ PVOID Object
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PKSDEVICE __inline PKSDEVICE __inline
KsFilterFactoryGetDevice( KsFilterFactoryGetDevice(
__in PKSFILTERFACTORY FilterFactory _In_ PKSFILTERFACTORY FilterFactory
) )
{ {
return KsGetDevice((PVOID) FilterFactory); return KsGetDevice((PVOID) FilterFactory);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PKSDEVICE __inline PKSDEVICE __inline
KsFilterGetDevice( KsFilterGetDevice(
__in PKSFILTER Filter _In_ PKSFILTER Filter
) )
{ {
return KsGetDevice((PVOID) Filter); return KsGetDevice((PVOID) Filter);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PKSDEVICE __inline PKSDEVICE __inline
KsPinGetDevice( KsPinGetDevice(
__in PKSPIN Pin _In_ PKSPIN Pin
) )
{ {
return KsGetDevice((PVOID) Pin); return KsGetDevice((PVOID) Pin);
} }
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PKSFILTER PKSFILTER
NTAPI NTAPI
KsGetFilterFromIrp( KsGetFilterFromIrp(
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PKSPIN PKSPIN
NTAPI NTAPI
KsGetPinFromIrp( KsGetPinFromIrp(
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsGetNodeIdFromIrp( KsGetNodeIdFromIrp(
__in PIRP Irp _In_ PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsAcquireControl( KsAcquireControl(
__in PVOID Object _In_ PVOID Object
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsReleaseControl( KsReleaseControl(
__in PVOID Object _In_ PVOID Object
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
void __inline void __inline
KsFilterAcquireControl( KsFilterAcquireControl(
__in PKSFILTER Filter _In_ PKSFILTER Filter
) )
{ {
KsAcquireControl((PVOID) Filter); KsAcquireControl((PVOID) Filter);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
void __inline void __inline
KsFilterReleaseControl( KsFilterReleaseControl(
__in PKSFILTER Filter _In_ PKSFILTER Filter
) )
{ {
KsReleaseControl((PVOID) Filter); KsReleaseControl((PVOID) Filter);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
void __inline void __inline
KsPinAcquireControl( KsPinAcquireControl(
__in PKSPIN Pin _In_ PKSPIN Pin
) )
{ {
KsAcquireControl((PVOID) Pin); KsAcquireControl((PVOID) Pin);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
void __inline void __inline
KsPinReleaseControl( KsPinReleaseControl(
__in PKSPIN Pin _In_ PKSPIN Pin
) )
{ {
KsReleaseControl((PVOID) Pin); KsReleaseControl((PVOID) Pin);
} }
__checkReturn _Must_inspect_result_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAddItemToObjectBag( KsAddItemToObjectBag(
__in KSOBJECT_BAG ObjectBag, _In_ KSOBJECT_BAG ObjectBag,
__in __drv_aliasesMem PVOID Item, _In_ __drv_aliasesMem PVOID Item,
__in_opt PFNKSFREE Free _In_opt_ PFNKSFREE Free
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsRemoveItemFromObjectBag( KsRemoveItemFromObjectBag(
__in KSOBJECT_BAG ObjectBag, _In_ KSOBJECT_BAG ObjectBag,
__in PVOID Item, _In_ PVOID Item,
__in BOOLEAN Free _In_ BOOLEAN Free
); );
#define KsDiscard(Object,Pointer)\ #define KsDiscard(Object,Pointer)\
KsRemoveItemFromObjectBag(\ KsRemoveItemFromObjectBag(\
(Object)->Bag,\ (Object)->Bag,\
(PVOID)(Pointer),\ (PVOID)(Pointer),\
TRUE) TRUE)
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAllocateObjectBag( KsAllocateObjectBag(
__in PKSDEVICE Device, _In_ PKSDEVICE Device,
__out KSOBJECT_BAG* ObjectBag _Out_ KSOBJECT_BAG* ObjectBag
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsFreeObjectBag( KsFreeObjectBag(
__in KSOBJECT_BAG ObjectBag _In_ KSOBJECT_BAG ObjectBag
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCopyObjectBagItems( KsCopyObjectBagItems(
__in KSOBJECT_BAG ObjectBagDestination, _In_ KSOBJECT_BAG ObjectBagDestination,
__in KSOBJECT_BAG ObjectBagSource _In_ KSOBJECT_BAG ObjectBagSource
); );
__checkReturn _Must_inspect_result_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
_KsEdit( _KsEdit(
__in KSOBJECT_BAG ObjectBag, _In_ KSOBJECT_BAG ObjectBag,
__inout PVOID* PointerToPointerToItem, _Inout_ PVOID* PointerToPointerToItem,
__in ULONG NewSize, _In_ ULONG NewSize,
__in ULONG OldSize, _In_ ULONG OldSize,
__in ULONG Tag _In_ ULONG Tag
); );
#define KsEdit(Object,PointerToPointer,Tag)\ #define KsEdit(Object,PointerToPointer,Tag)\
_KsEdit(\ _KsEdit(\
(Object)->Bag,\ (Object)->Bag,\
(PVOID*)(PointerToPointer),\ (PVOID*)(PointerToPointer),\
sizeof(**(PointerToPointer)),\ sizeof(**(PointerToPointer)),\
sizeof(**(PointerToPointer)),\ sizeof(**(PointerToPointer)),\
(Tag)) (Tag))
#define KsEditSized(Object,PointerToPointer,NewSize,OldSize,Tag)\ #define KsEditSized(Object,PointerToPointer,NewSize,OldSize,Tag)\
_KsEdit((Object)->Bag,(PVOID*)(PointerToPointer),(NewSize),(OldSize),(Tag)) _KsEdit((Object)->Bag,(PVOID*)(PointerToPointer),(NewSize),(OldSize),(Tag))
__checkReturn _Must_inspect_result_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsRegisterFilterWithNoKSPins( KsRegisterFilterWithNoKSPins(
__in PDEVICE_OBJECT DeviceObject, _In_ PDEVICE_OBJECT DeviceObject,
__in const GUID * InterfaceClassGUID, _In_ const GUID * InterfaceClassGUID,
__in ULONG PinCount, _In_ ULONG PinCount,
__in_ecount(PinCount) BOOL * PinDirection, _In_reads_(PinCount) BOOL * PinDirection,
__in_ecount(PinCount) KSPIN_MEDIUM * Mediu _In_reads_(PinCount) KSPIN_MEDIUM * Medium
mList, List,
__in_ecount_opt(PinCount) GUID * CategoryL _In_reads_opt_(PinCount) GUID * CategoryLi
ist st
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsFilterCreatePinFactory ( KsFilterCreatePinFactory (
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in const KSPIN_DESCRIPTOR_EX *const PinDescriptor, _In_ const KSPIN_DESCRIPTOR_EX *const PinDescriptor,
__out PULONG PinID _Out_ PULONG PinID
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsFilterCreateNode ( KsFilterCreateNode (
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in const KSNODE_DESCRIPTOR *const NodeDescriptor, _In_ const KSNODE_DESCRIPTOR *const NodeDescriptor,
__out PULONG NodeID _Out_ PULONG NodeID
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsFilterAddTopologyConnections ( KsFilterAddTopologyConnections (
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in ULONG NewConnectionsCount, _In_ ULONG NewConnectionsCount,
__in_ecount(NewConnectionsCount) const KSTOPOLOGY_CONNECTION *const NewTopol _In_reads_(NewConnectionsCount) const KSTOPOLOGY_CONNECTION *const NewTopolo
ogyConnections gyConnections
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinGetConnectedPinInterface( KsPinGetConnectedPinInterface(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in const GUID* InterfaceId, _In_ const GUID* InterfaceId,
__out PVOID* Interface _Out_ PVOID* Interface
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PFILE_OBJECT PFILE_OBJECT
NTAPI NTAPI
KsPinGetConnectedPinFileObject( KsPinGetConnectedPinFileObject(
__in PKSPIN Pin _In_ PKSPIN Pin
); );
KSDDKAPI KSDDKAPI
PDEVICE_OBJECT PDEVICE_OBJECT
NTAPI NTAPI
KsPinGetConnectedPinDeviceObject( KsPinGetConnectedPinDeviceObject(
__in PKSPIN Pin _In_ PKSPIN Pin
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinGetConnectedFilterInterface( KsPinGetConnectedFilterInterface(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in const GUID* InterfaceId, _In_ const GUID* InterfaceId,
__out PVOID* Interface _Out_ PVOID* Interface
); );
#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) #if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinGetReferenceClockInterface( KsPinGetReferenceClockInterface(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__out PIKSREFERENCECLOCK* Interface _Out_ PIKSREFERENCECLOCK* Interface
); );
#endif //defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) #endif //defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsPinSetPinClockTime( KsPinSetPinClockTime(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in LONGLONG Time _In_ LONGLONG Time
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinSubmitFrame( KsPinSubmitFrame(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in_bcount_opt(Size) PVOID Data, _In_reads_bytes_opt_(Size) PVOID Data,
__in ULONG Size OPTIONAL, _In_ ULONG Size OPTIONAL,
__in_opt PKSSTREAM_HEADER StreamHeader, _In_opt_ PKSSTREAM_HEADER StreamHeader,
__in_opt PVOID Context _In_opt_ PVOID Context
); );
__drv_maxIRQL(DISPATCH_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinSubmitFrameMdl( KsPinSubmitFrameMdl(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in_opt PMDL Mdl, _In_opt_ PMDL Mdl,
__in_opt PKSSTREAM_HEADER StreamHeader, _In_opt_ PKSSTREAM_HEADER StreamHeader,
__in_opt PVOID Context _In_opt_ PVOID Context
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinRegisterFrameReturnCallback( KsPinRegisterFrameReturnCallback(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PFNKSPINFRAMERETURN FrameReturn _In_ PFNKSPINFRAMERETURN FrameReturn
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinRegisterIrpCompletionCallback( KsPinRegisterIrpCompletionCallback(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PFNKSPINIRPCOMPLETION IrpCompletion _In_ PFNKSPINIRPCOMPLETION IrpCompletion
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinRegisterHandshakeCallback( KsPinRegisterHandshakeCallback(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PFNKSPINHANDSHAKE Handshake _In_ PFNKSPINHANDSHAKE Handshake
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsFilterRegisterPowerCallbacks( KsFilterRegisterPowerCallbacks(
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in_opt PFNKSFILTERPOWER Sleep, _In_opt_ PFNKSFILTERPOWER Sleep,
__in_opt PFNKSFILTERPOWER Wake _In_opt_ PFNKSFILTERPOWER Wake
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinRegisterPowerCallbacks( KsPinRegisterPowerCallbacks(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in_opt PFNKSPINPOWER Sleep, _In_opt_ PFNKSPINPOWER Sleep,
__in_opt PFNKSPINPOWER Wake _In_opt_ PFNKSPINPOWER Wake
); );
#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) #if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PUNKNOWN PUNKNOWN
NTAPI NTAPI
KsRegisterAggregatedClientUnknown( KsRegisterAggregatedClientUnknown(
__in PVOID Object, _In_ PVOID Object,
__in PUNKNOWN ClientUnknown _In_ PUNKNOWN ClientUnknown
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PUNKNOWN PUNKNOWN
NTAPI NTAPI
KsGetOuterUnknown( KsGetOuterUnknown(
__in PVOID Object _In_ PVOID Object
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PUNKNOWN __inline PUNKNOWN __inline
KsDeviceRegisterAggregatedClientUnknown( KsDeviceRegisterAggregatedClientUnknown(
__in PKSDEVICE Device, _In_ PKSDEVICE Device,
__in PUNKNOWN ClientUnknown _In_ PUNKNOWN ClientUnknown
) )
{ {
return KsRegisterAggregatedClientUnknown((PVOID) Device,ClientUnknown); return KsRegisterAggregatedClientUnknown((PVOID) Device,ClientUnknown);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PUNKNOWN __inline PUNKNOWN __inline
KsDeviceGetOuterUnknown( KsDeviceGetOuterUnknown(
__in PKSDEVICE Device _In_ PKSDEVICE Device
) )
{ {
return KsGetOuterUnknown((PVOID) Device); return KsGetOuterUnknown((PVOID) Device);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PUNKNOWN __inline PUNKNOWN __inline
KsFilterFactoryRegisterAggregatedClientUnknown( KsFilterFactoryRegisterAggregatedClientUnknown(
__in PKSFILTERFACTORY FilterFactory, _In_ PKSFILTERFACTORY FilterFactory,
__in PUNKNOWN ClientUnknown _In_ PUNKNOWN ClientUnknown
) )
{ {
return KsRegisterAggregatedClientUnknown((PVOID) FilterFactory,ClientUnknown ); return KsRegisterAggregatedClientUnknown((PVOID) FilterFactory,ClientUnknown );
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PUNKNOWN __inline PUNKNOWN __inline
KsFilterFactoryGetOuterUnknown( KsFilterFactoryGetOuterUnknown(
__in PKSFILTERFACTORY FilterFactory _In_ PKSFILTERFACTORY FilterFactory
) )
{ {
return KsGetOuterUnknown((PVOID) FilterFactory); return KsGetOuterUnknown((PVOID) FilterFactory);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PUNKNOWN __inline PUNKNOWN __inline
KsFilterRegisterAggregatedClientUnknown( KsFilterRegisterAggregatedClientUnknown(
__in PKSFILTER Filter, _In_ PKSFILTER Filter,
__in PUNKNOWN ClientUnknown _In_ PUNKNOWN ClientUnknown
) )
{ {
return KsRegisterAggregatedClientUnknown((PVOID) Filter,ClientUnknown); return KsRegisterAggregatedClientUnknown((PVOID) Filter,ClientUnknown);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PUNKNOWN __inline PUNKNOWN __inline
KsFilterGetOuterUnknown( KsFilterGetOuterUnknown(
__in PKSFILTER Filter _In_ PKSFILTER Filter
) )
{ {
return KsGetOuterUnknown((PVOID) Filter); return KsGetOuterUnknown((PVOID) Filter);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PUNKNOWN __inline PUNKNOWN __inline
KsPinRegisterAggregatedClientUnknown( KsPinRegisterAggregatedClientUnknown(
__in PKSPIN Pin, _In_ PKSPIN Pin,
__in PUNKNOWN ClientUnknown _In_ PUNKNOWN ClientUnknown
) )
{ {
return KsRegisterAggregatedClientUnknown((PVOID) Pin,ClientUnknown); return KsRegisterAggregatedClientUnknown((PVOID) Pin,ClientUnknown);
} }
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
PUNKNOWN __inline PUNKNOWN __inline
KsPinGetOuterUnknown( KsPinGetOuterUnknown(
__in PKSPIN Pin _In_ PKSPIN Pin
) )
{ {
return KsGetOuterUnknown((PVOID) Pin); return KsGetOuterUnknown((PVOID) Pin);
} }
#endif // defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) #endif // defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
#endif // (NTDDI_VERSION >= NTDDI_WINXP) #endif // (NTDDI_VERSION >= NTDDI_WINXP)
#else // !defined(_NTDDK_) #else // !defined(_NTDDK_)
#if !defined( KS_NO_CREATE_FUNCTIONS ) #if !defined( KS_NO_CREATE_FUNCTIONS )
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
DWORD DWORD
WINAPI WINAPI
KsCreateAllocator( KsCreateAllocator(
__in HANDLE ConnectionHandle, _In_ HANDLE ConnectionHandle,
__in PKSALLOCATOR_FRAMING AllocatorFraming, _In_ PKSALLOCATOR_FRAMING AllocatorFraming,
__out PHANDLE AllocatorHandle _Out_ PHANDLE AllocatorHandle
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
DWORD DWORD
NTAPI NTAPI
KsCreateClock( KsCreateClock(
__in HANDLE ConnectionHandle, _In_ HANDLE ConnectionHandle,
__in PKSCLOCK_CREATE ClockCreate, _In_ PKSCLOCK_CREATE ClockCreate,
__out PHANDLE ClockHandle _Out_ PHANDLE ClockHandle
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
DWORD DWORD
WINAPI WINAPI
KsCreatePin( KsCreatePin(
__in HANDLE FilterHandle, _In_ HANDLE FilterHandle,
__in PKSPIN_CONNECT Connect, _In_ PKSPIN_CONNECT Connect,
__in ACCESS_MASK DesiredAccess, _In_ ACCESS_MASK DesiredAccess,
__out PHANDLE ConnectionHandle _Out_ PHANDLE ConnectionHandle
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
DWORD DWORD
WINAPI WINAPI
KsCreateTopologyNode( KsCreateTopologyNode(
__in HANDLE ParentHandle, _In_ HANDLE ParentHandle,
__in PKSNODE_CREATE NodeCreate, _In_ PKSNODE_CREATE NodeCreate,
__in ACCESS_MASK DesiredAccess, _In_ ACCESS_MASK DesiredAccess,
__out PHANDLE NodeHandle _Out_ PHANDLE NodeHandle
);
//
// KS create function that needs to be called after initializing COM
//
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
HRESULT
WINAPI
KsCreateAllocator2(
_In_ HANDLE ConnectionHandle,
_In_ PKSALLOCATOR_FRAMING AllocatorFraming,
_Out_ PHANDLE AllocatorHandle
);
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
HRESULT
NTAPI
KsCreateClock2(
_In_ HANDLE ConnectionHandle,
_In_ PKSCLOCK_CREATE ClockCreate,
_Out_ PHANDLE ClockHandle
);
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
HRESULT
WINAPI
KsCreatePin2(
_In_ HANDLE FilterHandle,
_In_ PKSPIN_CONNECT Connect,
_In_ ACCESS_MASK DesiredAccess,
_Out_ PHANDLE ConnectionHandle
);
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
HRESULT
WINAPI
KsCreateTopologyNode2(
_In_ HANDLE ParentHandle,
_In_ PKSNODE_CREATE NodeCreate,
_In_ ACCESS_MASK DesiredAccess,
_Out_ PHANDLE NodeHandle
); );
#endif #endif
#endif // !defined(_NTDDK_) #endif // !defined(_NTDDK_)
#if defined(__cplusplus) #if defined(__cplusplus)
} }
#endif // defined(__cplusplus) #endif // defined(__cplusplus)
#define DENY_USERMODE_ACCESS( pIrp, CompleteRequest ) \ #define DENY_USERMODE_ACCESS( pIrp, CompleteRequest ) \
if ( pIrp->RequestorMode != KernelMode ) { \ if ( pIrp->RequestorMode != KernelMode ) { \
pIrp->IoStatus.Information = 0; \ pIrp->IoStatus.Information = 0; \
pIrp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; \ pIrp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; \
if ( CompleteRequest ) IoCompleteRequest ( pIrp, IO_NO_INCREMENT ); \ if ( CompleteRequest ) IoCompleteRequest ( pIrp, IO_NO_INCREMENT ); \
return STATUS_INVALID_DEVICE_REQUEST; \ return STATUS_INVALID_DEVICE_REQUEST; \
} }
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif // !_KS_ #endif // !_KS_
 End of changes. 611 change blocks. 
1130 lines changed or deleted 1232 lines changed or added

This html diff was produced by rfcdiff 1.41.