Headers diff for ksuser.dll between 6.0.6001.18000-Windows 6.0 and 6.1.7601.19091-Windows 7.0 versions



 ks.h (6.0.6001.18000-Windows 6.0)   ks.h (6.1.7601.19091-Windows 7.0) 
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_
#pragma warning(disable:4201) // nameless struct/union
#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
#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
skipping to change at line 707 skipping to change at line 710
// //
// 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 777 skipping to change at line 780
#define STATIC_KSCATEGORY_DATADECOMPRESSOR \ #define STATIC_KSCATEGORY_DATADECOMPRESSOR \
0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATADECOMPR ESSOR); DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATADECOMPR ESSOR);
#define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR ) #define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR )
#define STATIC_KSCATEGORY_DATATRANSFORM \ #define STATIC_KSCATEGORY_DATATRANSFORM \
0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATATRANSFO RM); DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATATRANSFO RM);
#define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM) #define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM)
//
// KSMFT_CATEGORY_XXX are MF Transform category guids redefined in ks.h
// to facilitate KS Mini drivers to register KS Filters under MF Transform categ
ories.
//
#define STATIC_KSMFT_CATEGORY_VIDEO_DECODER \
0xd6c02d4b, 0x6833, 0x45b4, 0x97, 0x1a, 0x05, 0xa4, 0xb0, 0x4b, 0xab, 0x9
1
DEFINE_GUIDSTRUCT("d6c02d4b-6833-45b4-971a-05a4b04bab91", KSMFT_CATEGORY_VIDEO_D
ECODER);
#define KSMFT_CATEGORY_VIDEO_DECODER DEFINE_GUIDNAMED(KSMFT_CATEGORY_VIDEO_DECOD
ER)
#define STATIC_KSMFT_CATEGORY_VIDEO_ENCODER \
0xf79eac7d, 0xe545, 0x4387, 0xbd, 0xee, 0xd6, 0x47, 0xd7, 0xbd, 0xe4, 0x2
a
DEFINE_GUIDSTRUCT("f79eac7d-e545-4387-bdee-d647d7bde42a", KSMFT_CATEGORY_VIDEO_E
NCODER);
#define KSMFT_CATEGORY_VIDEO_ENCODER DEFINE_GUIDNAMED(KSMFT_CATEGORY_VIDEO_ENCOD
ER)
#define STATIC_KSMFT_CATEGORY_VIDEO_EFFECT \
0x12e17c21, 0x532c, 0x4a6e, 0x8a, 0x1c, 0x40, 0x82, 0x5a, 0x73, 0x63, 0x9
7
DEFINE_GUIDSTRUCT("12e17c21-532c-4a6e-8a1c-40825a736397", KSMFT_CATEGORY_VIDEO_E
FFECT);
#define KSMFT_CATEGORY_VIDEO_EFFECT DEFINE_GUIDNAMED(KSMFT_CATEGORY_VIDEO_EFFECT
)
#define STATIC_KSMFT_CATEGORY_MULTIPLEXER \
0x059c561e, 0x05ae, 0x4b61, 0xb6, 0x9d, 0x55, 0xb6, 0x1e, 0xe5, 0x4a, 0x7
b
DEFINE_GUIDSTRUCT("059c561e-05ae-4b61-b69d-55b61ee54a7b", KSMFT_CATEGORY_MULTIPL
EXER);
#define KSMFT_CATEGORY_MULTIPLEXER DEFINE_GUIDNAMED(KSMFT_CATEGORY_MULTIPLEXER)
#define STATIC_KSMFT_CATEGORY_DEMULTIPLEXER \
0xa8700a7a, 0x939b, 0x44c5, 0x99, 0xd7, 0x76, 0x22, 0x6b, 0x23, 0xb3, 0xf
1
DEFINE_GUIDSTRUCT("a8700a7a-939b-44c5-99d7-76226b23b3f1", KSMFT_CATEGORY_DEMULTI
PLEXER);
#define KSMFT_CATEGORY_DEMULTIPLEXER DEFINE_GUIDNAMED(KSMFT_CATEGORY_DEMULTIPLEX
ER)
#define STATIC_KSMFT_CATEGORY_AUDIO_DECODER \
0x9ea73fb4, 0xef7a, 0x4559, 0x8d, 0x5d, 0x71, 0x9d, 0x8f, 0x04, 0x26, 0xc
7
DEFINE_GUIDSTRUCT("9ea73fb4-ef7a-4559-8d5d-719d8f0426c7", KSMFT_CATEGORY_AUDIO_D
ECODER);
#define KSMFT_CATEGORY_AUDIO_DECODER DEFINE_GUIDNAMED(KSMFT_CATEGORY_AUDIO_DECOD
ER)
#define STATIC_KSMFT_CATEGORY_AUDIO_ENCODER \
0x91c64bd0, 0xf91e, 0x4d8c, 0x92, 0x76, 0xdb, 0x24, 0x82, 0x79, 0xd9, 0x7
5
DEFINE_GUIDSTRUCT("91c64bd0-f91e-4d8c-9276-db248279d975", KSMFT_CATEGORY_AUDIO_E
NCODER);
#define KSMFT_CATEGORY_AUDIO_ENCODER DEFINE_GUIDNAMED(KSMFT_CATEGORY_AUDIO_ENCOD
ER)
#define STATIC_KSMFT_CATEGORY_AUDIO_EFFECT \
0x11064c48, 0x3648, 0x4ed0, 0x93, 0x2e, 0x05, 0xce, 0x8a, 0xc8, 0x11, 0xb
7
DEFINE_GUIDSTRUCT("11064c48-3648-4ed0-932e-05ce8ac811b7", KSMFT_CATEGORY_AUDIO_E
FFECT);
#define KSMFT_CATEGORY_AUDIO_EFFECT DEFINE_GUIDNAMED(KSMFT_CATEGORY_AUDIO_EFFECT
)
#define STATIC_KSMFT_CATEGORY_VIDEO_PROCESSOR \
0x302ea3fc, 0xaa5f, 0x47f9, 0x9f, 0x7a, 0xc2, 0x18, 0x8b, 0xb1, 0x63, 0x2
DEFINE_GUIDSTRUCT("302ea3fc-aa5f-47f9-9f7a-c2188bb16302", KSMFT_CATEGORY_VIDEO_P
ROCESSOR);
#define KSMFT_CATEGORY_VIDEO_PROCESSOR DEFINE_GUIDNAMED(KSMFT_CATEGORY_VIDEO_PRO
CESSOR)
#define STATIC_KSMFT_CATEGORY_OTHER \
0x90175d57, 0xb7ea, 0x4901, 0xae, 0xb3, 0x93, 0x3a, 0x87, 0x47, 0x75, 0x6
f
DEFINE_GUIDSTRUCT("90175d57-b7ea-4901-aeb3-933a8747756f", KSMFT_CATEGORY_OTHER);
#define KSMFT_CATEGORY_OTHER DEFINE_GUIDNAMED(KSMFT_CATEGORY_OTHER)
#define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \ #define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \
0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_COMMUNICATI ONSTRANSFORM); DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_COMMUNICATI ONSTRANSFORM);
#define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICA TIONSTRANSFORM) #define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICA TIONSTRANSFORM)
#define STATIC_KSCATEGORY_INTERFACETRANSFORM \ #define STATIC_KSCATEGORY_INTERFACETRANSFORM \
0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_INTERFACETR ANSFORM); DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_INTERFACETR ANSFORM);
#define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANS FORM) #define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANS FORM)
skipping to change at line 822 skipping to change at line 879
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)
const GUID* Categories; const GUID* Categories;
ULONG TopologyNodesCount; ULONG TopologyNodesCount;
__field_ecount(TopologyNodesCount)
const GUID* TopologyNodes; const GUID* TopologyNodes;
ULONG TopologyConnectionsCount; ULONG TopologyConnectionsCount;
__field_ecount(TopologyConnectionsCount)
const KSTOPOLOGY_CONNECTION* TopologyConnections; const KSTOPOLOGY_CONNECTION* TopologyConnections;
__field_ecount(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 887 skipping to change at line 948
typedef KSIDENTIFIER KSPIN_INTERFACE, *PKSPIN_INTERFACE; typedef KSIDENTIFIER KSPIN_INTERFACE, *PKSPIN_INTERFACE;
#define STATIC_KSINTERFACESETID_Standard \ #define STATIC_KSINTERFACESETID_Standard \
0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 0x1A8766A0L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000", KSINTERFACESETID_Stand ard); DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000", KSINTERFACESETID_Stand ard);
#define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard) #define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard)
typedef enum { typedef enum {
KSINTERFACE_STANDARD_STREAMING, KSINTERFACE_STANDARD_STREAMING,
KSINTERFACE_STANDARD_LOOPED_STREAMING, KSINTERFACE_STANDARD_LOOPED_STREAMING,
KSINTERFACE_STANDARD_CONTROL KSINTERFACE_STANDARD_CONTROL //Reserved for system use
} KSINTERFACE_STANDARD; } KSINTERFACE_STANDARD;
#define STATIC_KSINTERFACESETID_FileIo \ #define STATIC_KSINTERFACESETID_FileIo \
0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196", KSINTERFACESETID_FileI o); DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196", KSINTERFACESETID_FileI o);
#define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo) #define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo)
typedef enum { typedef enum {
KSINTERFACE_FILEIO_STREAMING KSINTERFACE_FILEIO_STREAMING
} KSINTERFACE_FILEIO; } KSINTERFACE_FILEIO;
skipping to change at line 942 skipping to change at line 1003
KSPROPERTY_PIN_CONSTRAINEDDATARANGES, KSPROPERTY_PIN_CONSTRAINEDDATARANGES,
KSPROPERTY_PIN_PROPOSEDATAFORMAT KSPROPERTY_PIN_PROPOSEDATAFORMAT
} KSPROPERTY_PIN; } KSPROPERTY_PIN;
typedef struct { typedef struct {
KSPROPERTY Property; KSPROPERTY Property;
ULONG PinId; ULONG PinId;
ULONG Reserved; ULONG Reserved;
} KSP_PIN, *PKSP_PIN; } KSP_PIN, *PKSP_PIN;
typedef struct {
KSEVENT Event;
ULONG PinId;
ULONG Reserved;
} KSE_PIN, *PKSE_PIN;
#define KSINSTANCE_INDETERMINATE ((ULONG)-1) #define KSINSTANCE_INDETERMINATE ((ULONG)-1)
typedef struct { typedef struct {
ULONG PossibleCount; ULONG PossibleCount;
ULONG CurrentCount; ULONG CurrentCount;
} KSPIN_CINSTANCES, *PKSPIN_CINSTANCES; } KSPIN_CINSTANCES, *PKSPIN_CINSTANCES;
typedef enum { typedef enum {
KSPIN_DATAFLOW_IN = 1, KSPIN_DATAFLOW_IN = 1,
KSPIN_DATAFLOW_OUT KSPIN_DATAFLOW_OUT
skipping to change at line 1000 skipping to change at line 1067
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;
PKSATTRIBUTE* Attributes; __field_ecount(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 1029 skipping to change at line 1096
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
__drv_maxIRQL(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 PVOID Data OPTIONAL __out_opt PVOID Data
); );
__checkReturn
__drv_maxIRQL(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 PVOID Data OPTIONAL, __out_bcount_part_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 1218 skipping to change at line 1289
DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\ DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\ DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\ DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\ DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\ DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\ DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\ DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)\ DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)\
} }
#define STATIC_KSEVENTSETID_PinCapsChange \
0xDD4F192E, 0x3B78, 0x49AD, 0xA5, 0x34, 0x2C, 0x31, 0x5b, 0x82, 0x20, 0x00
DEFINE_GUIDSTRUCT("DD4F192E-3B78-49AD-A534-2C315B822000", KSEVENTSETID_PinCapsCh
ange);
#define KSEVENTSETID_PinCapsChange DEFINE_GUIDNAMED(KSEVENTSETID_PinCapsChange)
typedef enum {
KSEVENT_PINCAPS_FORMATCHANGE,
KSEVENT_PINCAPS_JACKINFOCHANGE
} KSEVENT_PINCAPS_CHANGENOTIFICATIONS;
#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 1259 skipping to change at line 1340
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)
const KSPIN_INTERFACE* Interfaces; const KSPIN_INTERFACE* Interfaces;
ULONG MediumsCount; ULONG MediumsCount;
__field_ecount(MediumsCount)
const KSPIN_MEDIUM* Mediums; const KSPIN_MEDIUM* Mediums;
ULONG DataRangesCount; ULONG DataRangesCount;
__field_ecount(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)
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 1540 skipping to change at line 1625
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,
OUT PVOID* Context __deref_out 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 1823 skipping to change at line 1908
#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,
PVOID *Frame __deref_out 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 1878 skipping to change at line 1963
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)
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 2095 skipping to change at line 2181
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)
typedef typedef
LONGLONG LONGLONG
(FASTCALL *PFNKSCLOCK_GETTIME)( (FASTCALL *PFNKSCLOCK_GETTIME)(
IN PFILE_OBJECT FileObject __in PFILE_OBJECT FileObject
); );
__drv_maxIRQL(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)
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)
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 2279 skipping to change at line 2370
#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)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSCONTEXT_DISPATCH)( (*PFNKSCONTEXT_DISPATCH)(
IN PVOID Context, __in PVOID Context,
IN PIRP Irp __in PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSHANDLER)( (*PFNKSHANDLER)(
IN PIRP Irp, __in PIRP Irp,
IN PKSIDENTIFIER Request, __in PKSIDENTIFIER Request,
IN OUT PVOID Data __inout PVOID Data
); );
__drv_maxIRQL(PASSIVE_LEVEL)
typedef typedef
BOOLEAN BOOLEAN
(*PFNKSFASTHANDLER)( (*PFNKSFASTHANDLER)(
IN PFILE_OBJECT FileObject, __in PFILE_OBJECT FileObject,
IN PKSIDENTIFIER Request, __in_bcount(RequestLength) PKSIDENTIFIER Request,
IN ULONG RequestLength, __in ULONG RequestLength,
IN OUT PVOID Data, __inout_bcount(DataLength) PVOID Data,
IN ULONG DataLength, __in ULONG DataLength,
OUT PIO_STATUS_BLOCK IoStatus __out PIO_STATUS_BLOCK IoStatus
); );
__drv_maxIRQL(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)
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 2354 skipping to change at line 2450
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)
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 2396 skipping to change at line 2493
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)
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 2456 skipping to change at line 2554
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)
const KSMETHOD_ITEM* MethodItem; const KSMETHOD_ITEM* MethodItem;
ULONG FastIoCount; ULONG FastIoCount;
const KSFASTMETHOD_ITEM*FastIoTable; __field_ecount(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 2515 skipping to change at line 2614
{\ {\
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;
const KSEVENT_ITEM* EventItem; __field_ecount(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 2573 skipping to change at line 2672
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 2622 skipping to change at line 2721
{\ {\
0,\ 0,\
0,\ 0,\
NULL,\ NULL,\
},\ },\
NULL, 0\ NULL, 0\
} }
typedef struct { typedef struct {
ULONG CreateItemsCount; ULONG CreateItemsCount;
PKSOBJECT_CREATE_ITEM CreateItemsList; __field_ecount(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 2698 skipping to change at line 2797
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)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSIRPLISTCALLBACK)( (*PFNKSIRPLISTCALLBACK)(
IN PIRP Irp, __in PIRP Irp,
IN PVOID Context __in PVOID Context
); );
__drv_maxIRQL(PASSIVE_LEVEL)
typedef typedef
VOID VOID
(*PFNREFERENCEDEVICEOBJECT)( (*PFNREFERENCEDEVICEOBJECT)(
IN PVOID Context __in PVOID Context
); );
__drv_maxIRQL(PASSIVE_LEVEL)
typedef typedef
VOID VOID
(*PFNDEREFERENCEDEVICEOBJECT)( (*PFNDEREFERENCEDEVICEOBJECT)(
IN PVOID Context __in PVOID Context
); );
__drv_maxIRQL(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNQUERYREFERENCESTRING)( (*PFNQUERYREFERENCESTRING)(
IN PVOID Context, __in PVOID Context,
IN OUT 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 2746 skipping to change at line 2849
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)
typedef typedef
NTSTATUS NTSTATUS
(*PFNQUERYMEDIUMSLIST)( (*PFNQUERYMEDIUMSLIST)(
IN PVOID Context, __in PVOID Context,
OUT ULONG* MediumsCount, __out ULONG* MediumsCount,
OUT PKSPIN_MEDIUM* MediumList __out_ecount(MediumsCount) PKSPIN_MEDIUM* MediumList
); );
typedef struct { typedef struct {
// //
// Standard interface header // Standard interface header
// //
INTERFACE Interface; INTERFACE Interface;
// //
skipping to change at line 2817 skipping to change at line 2921
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)
void __inline void __inline
KsGateTurnInputOn( KsGateTurnInputOn(
IN PKSGATE Gate OPTIONAL __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)
void __inline void __inline
KsGateTurnInputOff( KsGateTurnInputOff(
IN PKSGATE Gate OPTIONAL __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)
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)
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 2871 skipping to change at line 2979
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)
void __inline void __inline
KsGateInitialize( KsGateInitialize(
IN PKSGATE Gate, __in PKSGATE Gate,
IN LONG InitialCount, __in LONG InitialCount,
IN PKSGATE NextGate OPTIONAL, __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)
void __inline void __inline
KsGateInitializeAnd( KsGateInitializeAnd(
IN PKSGATE AndGate, __in PKSGATE AndGate,
IN PKSGATE NextOrGate OPTIONAL __in_opt PKSGATE NextOrGate
) )
{ {
KsGateInitialize(AndGate,1,NextOrGate,TRUE); KsGateInitialize(AndGate,1,NextOrGate,TRUE);
} }
__drv_maxIRQL(HIGH_LEVEL)
void __inline void __inline
KsGateInitializeOr( KsGateInitializeOr(
IN PKSGATE OrGate, __in PKSGATE OrGate,
IN PKSGATE NextAndGate OPTIONAL __in_opt PKSGATE NextAndGate
) )
{ {
KsGateInitialize(OrGate,0,NextAndGate,FALSE); KsGateInitialize(OrGate,0,NextAndGate,FALSE);
} }
void __inline KsGateAddOnInputToAnd(IN PKSGATE AndGate) { UNREFERENCED_PARAMETER __drv_maxIRQL(HIGH_LEVEL) void __inline KsGateAddOnInputToAnd(__in PKSGATE AndGa
(AndGate); } te) { UNREFERENCED_PARAMETER (AndGate); }
void __inline KsGateAddOffInputToAnd(IN PKSGATE AndGate) { KsGateTurnInputOff(An __drv_maxIRQL(HIGH_LEVEL) void __inline KsGateAddOffInputToAnd(__in PKSGATE AndG
dGate); } ate) { KsGateTurnInputOff(AndGate); }
void __inline KsGateRemoveOnInputFromAnd(IN PKSGATE AndGate) { UNREFERENCED_PARA __drv_maxIRQL(HIGH_LEVEL) void __inline KsGateRemoveOnInputFromAnd(__in PKSGATE
METER (AndGate); } AndGate) { UNREFERENCED_PARAMETER (AndGate); }
void __inline KsGateRemoveOffInputFromAnd(IN PKSGATE AndGate) { KsGateTurnInputO __drv_maxIRQL(HIGH_LEVEL) void __inline KsGateRemoveOffInputFromAnd(__in PKSGATE
n(AndGate); } AndGate) { KsGateTurnInputOn(AndGate); }
void __inline KsGateAddOnInputToOr(IN PKSGATE OrGate) { KsGateTurnInputOn(OrGate __drv_maxIRQL(HIGH_LEVEL) void __inline KsGateAddOnInputToOr(__in PKSGATE OrGate
); } ) { KsGateTurnInputOn(OrGate); }
void __inline KsGateAddOffInputToOr(IN PKSGATE OrGate) { UNREFERENCED_PARAMETER __drv_maxIRQL(HIGH_LEVEL) void __inline KsGateAddOffInputToOr(__in PKSGATE OrGat
(OrGate); } e) { UNREFERENCED_PARAMETER (OrGate); }
void __inline KsGateRemoveOnInputFromOr(IN PKSGATE OrGate) { KsGateTurnInputOff( __drv_maxIRQL(HIGH_LEVEL) void __inline KsGateRemoveOnInputFromOr(__in PKSGATE O
OrGate); } rGate) { KsGateTurnInputOff(OrGate); }
void __inline KsGateRemoveOffInputFromOr(IN PKSGATE OrGate) { UNREFERENCED_PARAM __drv_maxIRQL(HIGH_LEVEL) void __inline KsGateRemoveOffInputFromOr(__in PKSGATE
ETER (OrGate); } OrGate) { UNREFERENCED_PARAMETER (OrGate); }
__drv_maxIRQL(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)
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)
typedef typedef
BOOLEAN BOOLEAN
(*PFNKSGENERATEEVENTCALLBACK)( (*PFNKSGENERATEEVENTCALLBACK)(
IN PVOID Context, __in PVOID Context,
IN PKSEVENT_ENTRY EventEntry __in PKSEVENT_ENTRY EventEntry
); );
__drv_maxIRQL(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSDEVICECREATE)( (*PFNKSDEVICECREATE)(
IN PKSDEVICE Device __in PKSDEVICE Device
); );
__drv_maxIRQL(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSDEVICEPNPSTART)( (*PFNKSDEVICEPNPSTART)(
IN PKSDEVICE Device, __in PKSDEVICE Device,
IN PIRP Irp, __in PIRP Irp,
IN PCM_RESOURCE_LIST TranslatedResourceList OPTIONAL, __in_opt PCM_RESOURCE_LIST TranslatedResourceList,
IN PCM_RESOURCE_LIST UntranslatedResourceList OPTIONAL __in_opt PCM_RESOURCE_LIST UntranslatedResourceList
); );
__drv_maxIRQL(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSDEVICE)( (*PFNKSDEVICE)(
IN PKSDEVICE Device __in PKSDEVICE Device
); );
__drv_maxIRQL(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSDEVICEIRP)( (*PFNKSDEVICEIRP)(
IN PKSDEVICE Device, __in PKSDEVICE Device,
IN PIRP Irp __in PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL)
typedef typedef
void void
(*PFNKSDEVICEIRPVOID)( (*PFNKSDEVICEIRPVOID)(
IN PKSDEVICE Device, __in PKSDEVICE Device,
IN PIRP Irp __in PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSDEVICEQUERYCAPABILITIES)( (*PFNKSDEVICEQUERYCAPABILITIES)(
IN PKSDEVICE Device, __in PKSDEVICE Device,
IN PIRP Irp, __in PIRP Irp,
IN OUT PDEVICE_CAPABILITIES Capabilities __inout PDEVICE_CAPABILITIES Capabilities
); );
__drv_maxIRQL(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)
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)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSFILTERFACTORYVOID)( (*PFNKSFILTERFACTORYVOID)(
IN PKSFILTERFACTORY FilterFactory __in PKSFILTERFACTORY FilterFactory
); );
__drv_maxIRQL(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)
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)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSFILTERVOID)( (*PFNKSFILTERVOID)(
IN PKSFILTER Filter __in PKSFILTER Filter
); );
__drv_maxIRQL(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)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSPINIRP)( (*PFNKSPINIRP)(
IN PKSPIN Pin, __in PKSPIN Pin,
IN PIRP Irp __in PIRP Irp
); );
__drv_maxIRQL(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)
typedef typedef
NTSTATUS NTSTATUS
(*PFNKSPINSETDATAFORMAT)( (*PFNKSPINSETDATAFORMAT)(
IN PKSPIN Pin, __in PKSPIN Pin,
IN PKSDATAFORMAT OldFormat OPTIONAL, __in_opt PKSDATAFORMAT OldFormat,
IN PKSMULTIPLE_ITEM OldAttributeList OPTIONAL, __in_opt PKSMULTIPLE_ITEM OldAttributeList,
IN const KSDATARANGE* DataRange, __in const KSDATARANGE* DataRange,
IN const KSATTRIBUTE_LIST* AttributeRange OPTIONAL __in_opt const KSATTRIBUTE_LIST* AttributeRange
); );
__drv_maxIRQL(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)
typedef typedef
void void
(*PFNKSPINVOID)( (*PFNKSPINVOID)(
IN PKSPIN Pin __in PKSPIN Pin
); );
__drv_maxIRQL(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)
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)
typedef typedef
BOOLEAN BOOLEAN
(*PFNKSPINCANCELTIMER)( (*PFNKSPINCANCELTIMER)(
IN PKSPIN Pin, __in PKSPIN Pin,
IN PKTIMER Timer __in PKTIMER Timer
); );
__drv_maxIRQL(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)
typedef typedef
void void
(*PFNKSPINRESOLUTION)( (*PFNKSPINRESOLUTION)(
IN PKSPIN Pin, __in PKSPIN Pin,
OUT PKSRESOLUTION Resolution __out PKSRESOLUTION Resolution
); );
__drv_maxIRQL(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)
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;
const KSPROPERTY_SET* PropertySets; __field_bcount(PropertySetsCount * PropertyItemSize) const KSPROPERTY_SET* P ropertySets;
ULONG MethodSetsCount; ULONG MethodSetsCount;
ULONG MethodItemSize; ULONG MethodItemSize;
const KSMETHOD_SET* MethodSets; __field_bcount(MethodSetsCount * MethodItemSize) const KSMETHOD_SET* MethodS ets;
ULONG EventSetsCount; ULONG EventSetsCount;
ULONG EventItemSize; ULONG EventItemSize;
const KSEVENT_SET* EventSets; __field_bcount(EventSetsCount * EventItemSize) const KSEVENT_SET* EventSets;
#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 3245 skipping to change at line 3384
PFNKSDEFAULTFREE Free; PFNKSDEFAULTFREE Free;
}; };
// //
// VERSION indicates support of the following: // VERSION indicates support of the following:
// //
// - QueryInterface dispatch of KSDEVICE_DISPATCH // - QueryInterface dispatch of KSDEVICE_DISPATCH
// //
#define KSDEVICE_DESCRIPTOR_VERSION (0x100) #define KSDEVICE_DESCRIPTOR_VERSION (0x100)
#if (NTDDI_VERSION >= NTDDI_LONGHORN) #if (NTDDI_VERSION >= NTDDI_VISTA)
// //
// VERSION_2 indicates support of the following: // VERSION_2 indicates support of the following:
// //
// - Flags field of KSDEVICE_DESCRIPTOR // - Flags field of KSDEVICE_DESCRIPTOR
// - Loading a VERSION_2 descriptor on earlier versions of AVStream // - Loading a VERSION_2 descriptor on earlier versions of AVStream
// will work; however, all flags will be considered to be zero. // will work; however, all flags will be considered to be zero.
// - Using an earlier version descriptor on later versions of // - Using an earlier version descriptor on later versions of
// AVStream causes no flags to be specificed. // AVStream causes no flags to be specificed.
// //
#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_LONGHORN) #endif // (NTDDI_VERSION >= NTDDI_VISTA)
struct _KSDEVICE_DESCRIPTOR { struct _KSDEVICE_DESCRIPTOR {
const KSDEVICE_DISPATCH* Dispatch; const KSDEVICE_DISPATCH* Dispatch;
ULONG FilterDescriptorsCount; ULONG FilterDescriptorsCount;
const KSFILTER_DESCRIPTOR*const* FilterDescriptors; __field_ecount(FilterDescriptorsCount) const KSFILTER_DESCRIPTOR*const* Filt erDescriptors;
ULONG Version; // this is 0 for pre-version 100 driver ULONG Version; // this is 0 for pre-version 100 driver
#if (NTDDI_VERSION >= NTDDI_LONGHORN) #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;
#endif //!defined(_WIN64) #endif //!defined(_WIN64)
#endif // (NTDDI_VERSION >= NTDDI_LONGHORN) #endif // (NTDDI_VERSION >= NTDDI_VISTA)
}; };
struct _KSFILTER_DESCRIPTOR { struct _KSFILTER_DESCRIPTOR {
const KSFILTER_DISPATCH* Dispatch; const KSFILTER_DISPATCH* Dispatch;
const KSAUTOMATION_TABLE* AutomationTable; const KSAUTOMATION_TABLE* AutomationTable;
ULONG Version; ULONG Version;
#define KSFILTER_DESCRIPTOR_VERSION ((ULONG)-1) #define KSFILTER_DESCRIPTOR_VERSION ((ULONG)-1)
ULONG Flags; ULONG Flags;
#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;
const KSPIN_DESCRIPTOR_EX* PinDescriptors; __field_bcount(PinDescriptorsCount * PinDescriptorSize) const KSPIN_DESCRIPT OR_EX* PinDescriptors;
ULONG CategoriesCount; ULONG CategoriesCount;
__field_ecount(CategoriesCount)
const GUID* Categories; const GUID* Categories;
ULONG NodeDescriptorsCount; ULONG NodeDescriptorsCount;
ULONG NodeDescriptorSize; ULONG NodeDescriptorSize;
const KSNODE_DESCRIPTOR* NodeDescriptors; __field_bcount(NodeDescriptorsCount * NodeDescriptorSize) const KSNODE_DESCR IPTOR* NodeDescriptors;
ULONG ConnectionsCount; ULONG ConnectionsCount;
const KSTOPOLOGY_CONNECTION* Connections; __field_ecount(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 3493 skipping to change at line 3633
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;
PVOID Data; __field_bcount(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 {
PKSPROCESSPIN *Pins; __field_ecount(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 PVOID Data OPTIONAL, __in_bcount_opt(Size) PVOID Data,
IN ULONG Size OPTIONAL, __in ULONG Size OPTIONAL,
IN PMDL Mdl OPTIONAL, __in_opt PMDL Mdl,
IN PVOID Context OPTIONAL, __in_opt PVOID Context,
IN NTSTATUS Status __in NTSTATUS Status
); );
__drv_maxIRQL(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_ \
REFIID InterfaceId, \ __in REFIID InterfaceId, \
PVOID* Interface \ __deref_out 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 PKSPROPERTY Property, __in_bcount(PropertyLength) PKSPROPERTY Property,
IN ULONG PropertyLength, __in ULONG PropertyLength,
IN OUT PVOID PropertyData, __inout_bcount(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 PKSMETHOD Method, __in_bcount(MethodLength) PKSMETHOD Method,
IN ULONG MethodLength, __in ULONG MethodLength,
IN OUT PVOID MethodData, __inout_bcount(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 PKSEVENT Event OPTIONAL, __in_bcount_opt(EventLength) PKSEVENT Event,
IN ULONG EventLength, __in ULONG EventLength,
IN OUT PVOID EventData, __inout_bcount(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 3683 skipping to change at line 3824
// //
#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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsEnableEvent( KsEnableEvent(
IN PIRP Irp, __in PIRP Irp,
IN ULONG EventSetsCount, __in ULONG EventSetsCount,
IN const KSEVENT_SET* EventSet, __in_ecount(EventSetsCount) const KSEVENT_SET* EventSet,
IN OUT PLIST_ENTRY EventsList OPTIONAL, __inout_opt PLIST_ENTRY EventsList,
IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL, __in_opt KSEVENTS_LOCKTYPE EventsFlags,
IN PVOID EventsLock OPTIONAL __in_opt PVOID EventsLock
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsEnableEventWithAllocator( KsEnableEventWithAllocator(
IN PIRP Irp, __in PIRP Irp,
IN ULONG EventSetsCount, __in ULONG EventSetsCount,
IN const KSEVENT_SET* EventSet, __in_ecount(EventSetsCount) const KSEVENT_SET* EventSet,
IN OUT PLIST_ENTRY EventsList OPTIONAL, __inout_opt PLIST_ENTRY EventsList,
IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL, __in KSEVENTS_LOCKTYPE EventsFlags OPTIONAL,
IN PVOID EventsLock OPTIONAL, __in_opt PVOID EventsLock,
IN PFNKSALLOCATOR Allocator OPTIONAL, __in_opt PFNKSALLOCATOR Allocator,
IN ULONG EventItemSize OPTIONAL __in_opt ULONG EventItemSize
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDisableEvent( KsDisableEvent(
IN PIRP Irp, __in PIRP Irp,
IN OUT 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)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsDiscardEvent( KsDiscardEvent(
IN PKSEVENT_ENTRY EventEntry __in PKSEVENT_ENTRY EventEntry
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsFreeEventList( KsFreeEventList(
IN PFILE_OBJECT FileObject, __in PFILE_OBJECT FileObject,
IN OUT 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 PVOID Data __in_bcount(DataSize) PVOID Data
); );
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsGenerateEventList( KsGenerateEventList(
IN GUID* Set OPTIONAL, __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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPropertyHandler( KsPropertyHandler(
IN PIRP Irp, __in PIRP Irp,
IN ULONG PropertySetsCount, __in ULONG PropertySetsCount,
IN const KSPROPERTY_SET* PropertySet __in_ecount(PropertySetsCount) const KSPROPERTY_SET* PropertySet
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPropertyHandlerWithAllocator( KsPropertyHandlerWithAllocator(
IN PIRP Irp, __in PIRP Irp,
IN ULONG PropertySetsCount, __in ULONG PropertySetsCount,
IN const KSPROPERTY_SET* PropertySet, __in_ecount(PropertySetsCount) const KSPROPERTY_SET* PropertySet,
IN PFNKSALLOCATOR Allocator OPTIONAL, __in_opt PFNKSALLOCATOR Allocator,
IN ULONG PropertyItemSize OPTIONAL __in ULONG PropertyItemSize OPTIONAL
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
KsFastPropertyHandler( KsFastPropertyHandler(
IN PFILE_OBJECT FileObject, __in PFILE_OBJECT FileObject,
IN PKSPROPERTY Property, __in_bcount(PropertyLength) PKSPROPERTY Property,
IN ULONG PropertyLength, __in ULONG PropertyLength,
IN OUT PVOID Data, __in_bcount(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 const KSPROPERTY_SET* PropertySet __in_ecount(PropertySetsCount) const KSPROPERTY_SET* PropertySet
); );
// method.c: // method.c:
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsMethodHandler( KsMethodHandler(
IN PIRP Irp, __in PIRP Irp,
IN ULONG MethodSetsCount, __in ULONG MethodSetsCount,
IN const KSMETHOD_SET* MethodSet __in_ecount(MethodSetsCount) const KSMETHOD_SET* MethodSet
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsMethodHandlerWithAllocator( KsMethodHandlerWithAllocator(
IN PIRP Irp, __in PIRP Irp,
IN ULONG MethodSetsCount, __in ULONG MethodSetsCount,
IN const KSMETHOD_SET* MethodSet, __in_ecount(MethodSetsCount) const KSMETHOD_SET* MethodSet,
IN PFNKSALLOCATOR Allocator OPTIONAL, __in_opt PFNKSALLOCATOR Allocator,
IN ULONG MethodItemSize OPTIONAL __in ULONG MethodItemSize OPTIONAL
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
KsFastMethodHandler( KsFastMethodHandler(
IN PFILE_OBJECT FileObject, __in PFILE_OBJECT FileObject,
IN PKSMETHOD Method, __in_bcount(MethodLength) PKSMETHOD Method,
IN ULONG MethodLength, __in ULONG MethodLength,
IN OUT PVOID Data, __inout_bcount(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 const KSMETHOD_SET* MethodSet __in_ecount(MethodSetsCount) const KSMETHOD_SET* MethodSet
); );
// alloc.c: // alloc.c:
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateDefaultAllocator( KsCreateDefaultAllocator(
IN PIRP Irp __in PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateDefaultAllocatorEx( KsCreateDefaultAllocatorEx(
IN PIRP Irp, __in PIRP Irp,
IN PVOID InitializeContext OPTIONAL, __in_opt PVOID InitializeContext,
IN PFNKSDEFAULTALLOCATE DefaultAllocate OPTIONAL, __in_opt PFNKSDEFAULTALLOCATE DefaultAllocate,
IN PFNKSDEFAULTFREE DefaultFree OPTIONAL, __in_opt PFNKSDEFAULTFREE DefaultFree,
IN PFNKSINITIALIZEALLOCATOR InitializeAllocator OPTIONAL, __in_opt PFNKSINITIALIZEALLOCATOR InitializeAllocator,
IN PFNKSDELETEALLOCATOR DeleteAllocator OPTIONAL __in_opt PFNKSDELETEALLOCATOR DeleteAllocator
); );
__drv_maxIRQL(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)
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)
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)
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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAllocateDefaultClockEx( KsAllocateDefaultClockEx(
OUT PKSDEFAULTCLOCK* DefaultClock, __out PKSDEFAULTCLOCK* DefaultClock,
IN PVOID Context OPTIONAL, __in_opt PVOID Context,
IN PFNKSSETTIMER SetTimer OPTIONAL, __in_opt PFNKSSETTIMER SetTimer,
IN PFNKSCANCELTIMER CancelTimer OPTIONAL, __in_opt PFNKSCANCELTIMER CancelTimer,
IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL, __in_opt PFNKSCORRELATEDTIME CorrelatedTime,
IN const KSRESOLUTION* Resolution OPTIONAL, __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)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsFreeDefaultClock( KsFreeDefaultClock(
IN PKSDEFAULTCLOCK DefaultClock __in PKSDEFAULTCLOCK DefaultClock
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsValidateClockCreateRequest( KsValidateClockCreateRequest(
IN PIRP Irp, __in PIRP Irp,
OUT PKSCLOCK_CREATE* ClockCreate __deref_out PKSCLOCK_CREATE* ClockCreate
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
KSSTATE KSSTATE
NTAPI NTAPI
KsGetDefaultClockState( KsGetDefaultClockState(
IN PKSDEFAULTCLOCK DefaultClock __in PKSDEFAULTCLOCK DefaultClock
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
LONGLONG LONGLONG
NTAPI NTAPI
KsGetDefaultClockTime( KsGetDefaultClockTime(
IN PKSDEFAULTCLOCK DefaultClock __in PKSDEFAULTCLOCK DefaultClock
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsValidateConnectRequest( KsValidateConnectRequest(
IN PIRP Irp, __in PIRP Irp,
IN ULONG DescriptorsCount, __in ULONG DescriptorsCount,
IN const KSPIN_DESCRIPTOR* Descriptor, __in_ecount(DescriptorsCount) const KSPIN_DESCRIPTOR* Descriptor,
OUT PKSPIN_CONNECT* Connect __out PKSPIN_CONNECT* Connect
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinPropertyHandler( KsPinPropertyHandler(
IN PIRP Irp, __in PIRP Irp,
IN PKSPROPERTY Property, __in PKSPROPERTY Property,
IN OUT PVOID Data, __inout PVOID Data,
IN ULONG DescriptorsCount, __in ULONG DescriptorsCount,
IN const KSPIN_DESCRIPTOR* Descriptor __in_ecount(DescriptorsCount) const KSPIN_DESCRIPTOR* Descriptor
); );
__checkReturn
__drv_maxIRQL(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 PVOID Data OPTIONAL, __out_opt PVOID Data,
IN ULONG DescriptorsCount, __in ULONG DescriptorsCount,
IN const KSPIN_DESCRIPTOR* Descriptor, __in_ecount(DescriptorsCount) const KSPIN_DESCRIPTOR* Descriptor,
IN PFNKSINTERSECTHANDLER IntersectHandler __in PFNKSINTERSECTHANDLER IntersectHandler
); );
__checkReturn
__drv_maxIRQL(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 const KSPIN_DESCRIPTOR* Descriptor, __in_bcount(DescriptorsCount * DescriptorSize) const KSPIN_DESCRIPTOR* Descr
IN ULONG DescriptorSize, iptor,
IN PFNKSINTERSECTHANDLEREX IntersectHandler OPTIONAL, __in ULONG DescriptorSize,
IN PVOID HandlerContext OPTIONAL __in_opt PFNKSINTERSECTHANDLEREX IntersectHandler,
__in_opt PVOID HandlerContext
); );
__drv_maxIRQL(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 const VOID* DataItems __in_bcount(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)
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,
OUT PVOID *Resource, __deref_out_bcount(ResourceSize) PVOID *Resource,
OUT PULONG ResourceSize __out_opt PULONG ResourceSize
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsReferenceBusObject( KsReferenceBusObject(
IN KSDEVICE_HEADER Header __in KSDEVICE_HEADER Header
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsDereferenceBusObject( KsDereferenceBusObject(
IN KSDEVICE_HEADER Header __in KSDEVICE_HEADER Header
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDispatchSpecificProperty( KsDispatchSpecificProperty(
IN PIRP Irp, __in PIRP Irp,
IN PFNKSHANDLER Handler __in PFNKSHANDLER Handler
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsReadFile( KsReadFile(
IN PFILE_OBJECT FileObject, __in PFILE_OBJECT FileObject,
IN PKEVENT Event OPTIONAL, __in_opt PKEVENT Event,
IN PVOID PortContext OPTIONAL, __in_opt PVOID PortContext,
OUT PIO_STATUS_BLOCK IoStatusBlock, __out PIO_STATUS_BLOCK IoStatusBlock,
OUT PVOID Buffer, __out_bcount(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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsWriteFile( KsWriteFile(
IN PFILE_OBJECT FileObject, __in PFILE_OBJECT FileObject,
IN PKEVENT Event OPTIONAL, __in_opt PKEVENT Event,
IN PVOID PortContext OPTIONAL, __in_opt PVOID PortContext,
OUT PIO_STATUS_BLOCK IoStatusBlock, __out PIO_STATUS_BLOCK IoStatusBlock,
IN PVOID Buffer, __in_bcount(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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsQueryInformationFile( KsQueryInformationFile(
IN PFILE_OBJECT FileObject, __in PFILE_OBJECT FileObject,
OUT PVOID FileInformation, __out_bcount(Length) PVOID FileInformation,
IN ULONG Length, __in ULONG Length,
IN FILE_INFORMATION_CLASS FileInformationClass __in FILE_INFORMATION_CLASS FileInformationClass
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsSetInformationFile( KsSetInformationFile(
IN PFILE_OBJECT FileObject, __in PFILE_OBJECT FileObject,
IN PVOID FileInformation, __in_bcount(Length) PVOID FileInformation,
IN ULONG Length, __in ULONG Length,
IN FILE_INFORMATION_CLASS FileInformationClass __in FILE_INFORMATION_CLASS FileInformationClass
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsStreamIo( KsStreamIo(
IN PFILE_OBJECT FileObject, __in PFILE_OBJECT FileObject,
IN PKEVENT Event OPTIONAL, __in_opt PKEVENT Event,
IN PVOID PortContext OPTIONAL, __in_opt PVOID PortContext,
IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL, __in_opt PIO_COMPLETION_ROUTINE CompletionRoutine,
IN PVOID CompletionContext OPTIONAL, __in_opt PVOID CompletionContext,
IN KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL, __in KSCOMPLETION_INVOCATION CompletionInvocationFlags OPTIONAL,
OUT PIO_STATUS_BLOCK IoStatusBlock, __out PIO_STATUS_BLOCK IoStatusBlock,
IN OUT PVOID StreamHeaders, __inout_bcount(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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsProbeStreamIrp( KsProbeStreamIrp(
IN OUT PIRP Irp, __inout PIRP Irp,
IN ULONG ProbeFlags, __in ULONG ProbeFlags,
IN ULONG HeaderSize OPTIONAL __in ULONG HeaderSize OPTIONAL
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAllocateExtraData( KsAllocateExtraData(
IN OUT PIRP Irp, __inout PIRP Irp,
IN ULONG ExtraSize, __in ULONG ExtraSize,
OUT PVOID* ExtraBuffer __out PVOID* ExtraBuffer
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsNullDriverUnload( KsNullDriverUnload(
IN PDRIVER_OBJECT DriverObject __in PDRIVER_OBJECT DriverObject
); );
__drv_maxIRQL(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)
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)
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)
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)
KSDDKAPI KSDDKAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
KsDispatchFastIoDeviceControlFailure( KsDispatchFastIoDeviceControlFailure(
IN PFILE_OBJECT FileObject, __in PFILE_OBJECT FileObject,
IN BOOLEAN Wait, __in BOOLEAN Wait,
IN PVOID InputBuffer OPTIONAL, __in_bcount_opt(InputBufferLength) PVOID InputBuffer,
IN ULONG InputBufferLength, __in ULONG InputBufferLength,
OUT PVOID OutputBuffer OPTIONAL, __out_bcount_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)
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)
KSDDKAPI KSDDKAPI
DRIVER_CANCEL KsCancelRoutine; DRIVER_CANCEL KsCancelRoutine;
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsCancelIo( KsCancelIo(
IN OUT PLIST_ENTRY QueueHead, __inout PLIST_ENTRY QueueHead,
IN PKSPIN_LOCK SpinLock __in PKSPIN_LOCK SpinLock
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsReleaseIrpOnCancelableQueue( KsReleaseIrpOnCancelableQueue(
IN PIRP Irp, __in PIRP Irp,
IN PDRIVER_CANCEL DriverCancel OPTIONAL __in_opt PDRIVER_CANCEL DriverCancel
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PIRP PIRP
NTAPI NTAPI
KsRemoveIrpFromCancelableQueue( KsRemoveIrpFromCancelableQueue(
IN OUT 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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsMoveIrpsOnCancelableQueue( KsMoveIrpsOnCancelableQueue(
IN OUT PLIST_ENTRY SourceList, __inout PLIST_ENTRY SourceList,
IN PKSPIN_LOCK SourceLock, __in PKSPIN_LOCK SourceLock,
IN OUT PLIST_ENTRY DestinationList, __inout PLIST_ENTRY DestinationList,
IN PKSPIN_LOCK DestinationLock OPTIONAL, __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)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsRemoveSpecificIrpFromCancelableQueue( KsRemoveSpecificIrpFromCancelableQueue(
IN PIRP Irp __in PIRP Irp
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsAddIrpToCancelableQueue( KsAddIrpToCancelableQueue(
IN OUT 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 PDRIVER_CANCEL DriverCancel OPTIONAL __in_opt PDRIVER_CANCEL DriverCancel
); );
// api.c: // api.c:
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsTopologyPropertyHandler( KsTopologyPropertyHandler(
IN PIRP Irp, __in PIRP Irp,
IN PKSPROPERTY Property, __in PKSPROPERTY Property,
IN OUT PVOID Data, __inout PVOID Data,
IN const KSTOPOLOGY* Topology __in const KSTOPOLOGY* Topology
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsReleaseDeviceSecurityLock( KsReleaseDeviceSecurityLock(
IN KSDEVICE_HEADER Header __in KSDEVICE_HEADER Header
); );
KSDDKAPI KSDDKAPI
NTSTATUS __drv_dispatchType(IRP_MJ_PNP) DRIVER_DISPATCH KsDefaultDispatchPnp;
NTAPI
KsDefaultDispatchPnp(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
KSDDKAPI KSDDKAPI
NTSTATUS __drv_dispatchType(IRP_MJ_POWER) DRIVER_DISPATCH KsDefaultDispatchPower;
NTAPI
KsDefaultDispatchPower(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
KSDDKAPI KSDDKAPI
NTSTATUS __drv_dispatchType(IRP_MJ_SYSTEM_CONTROL)
NTAPI __drv_dispatchType(IRP_MJ_DEVICE_CONTROL)
KsDefaultForwardIrp( DRIVER_DISPATCH KsDefaultForwardIrp;
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
PDEVICE_OBJECT PDEVICE_OBJECT
NTAPI NTAPI
KsQueryDevicePnpObject( KsQueryDevicePnpObject(
IN KSDEVICE_HEADER Header __in KSDEVICE_HEADER Header
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
ACCESS_MASK ACCESS_MASK
NTAPI NTAPI
KsQueryObjectAccessMask( KsQueryObjectAccessMask(
IN KSOBJECT_HEADER Header __in KSOBJECT_HEADER Header
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsSetTargetDeviceObject( KsSetTargetDeviceObject(
IN KSOBJECT_HEADER Header, __in KSOBJECT_HEADER Header,
IN PDEVICE_OBJECT TargetDevice OPTIONAL __in_opt PDEVICE_OBJECT TargetDevice
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsSetPowerDispatch( KsSetPowerDispatch(
IN KSOBJECT_HEADER Header, __in KSOBJECT_HEADER Header,
IN PFNKSCONTEXT_DISPATCH PowerDispatch OPTIONAL, __in_opt PFNKSCONTEXT_DISPATCH PowerDispatch,
IN PVOID PowerContext OPTIONAL __in_opt PVOID PowerContext
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAllocateDeviceHeader( KsAllocateDeviceHeader(
OUT KSDEVICE_HEADER* Header, __out KSDEVICE_HEADER* Header,
IN ULONG ItemsCount, __in ULONG ItemsCount,
IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL __in_ecount_opt(ItemsCount) PKSOBJECT_CREATE_ITEM ItemsList
); );
__drv_maxIRQL(APC_LEVEL)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsFreeDeviceHeader( KsFreeDeviceHeader(
IN KSDEVICE_HEADER Header __in KSDEVICE_HEADER Header
); );
__drv_maxIRQL(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 PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL, __in_ecount_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)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsFreeObjectHeader( KsFreeObjectHeader(
IN KSOBJECT_HEADER Header __in KSOBJECT_HEADER Header
); );
__drv_maxIRQL(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)
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)
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 PFNKSITEMFREECALLBACK ItemFreeCallback OPTIONAL __in_opt PFNKSITEMFREECALLBACK ItemFreeCallback
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsCreateDefaultSecurity( KsCreateDefaultSecurity(
IN PSECURITY_DESCRIPTOR ParentSecurity OPTIONAL, __in_opt PSECURITY_DESCRIPTOR ParentSecurity,
OUT PSECURITY_DESCRIPTOR* DefaultSecurity __out PSECURITY_DESCRIPTOR* DefaultSecurity
); );
__drv_maxIRQL(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)
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
__drv_maxIRQL(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 PVOID InBuffer, __in_bcount(InSize) PVOID InBuffer,
IN ULONG InSize, __in ULONG InSize,
OUT PVOID OutBuffer, __out_bcount_part(OutSize, *BytesReturned) PVOID OutBuffer,
IN ULONG OutSize, __in ULONG OutSize,
OUT PULONG BytesReturned __out PULONG BytesReturned
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsUnserializeObjectPropertiesFromRegistry( KsUnserializeObjectPropertiesFromRegistry(
IN PFILE_OBJECT FileObject, __in PFILE_OBJECT FileObject,
IN HANDLE ParentKey OPTIONAL, __in_opt HANDLE ParentKey,
IN PUNICODE_STRING RegistryPath OPTIONAL __in_opt PUNICODE_STRING RegistryPath
); );
#if (NTDDI_VERSION >= NTDDI_WINXP) #if (NTDDI_VERSION >= NTDDI_WINXP)
__drv_maxIRQL(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)
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)
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)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsUnregisterWorker( KsUnregisterWorker(
IN PKSWORKER Worker __in PKSWORKER Worker
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsIncrementCountedWorker( KsIncrementCountedWorker(
IN PKSWORKER Worker __in PKSWORKER Worker
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsDecrementCountedWorker( KsDecrementCountedWorker(
IN PKSWORKER Worker __in PKSWORKER Worker
); );
// topology.c: // topology.c:
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsMergeAutomationTables( KsMergeAutomationTables(
OUT PKSAUTOMATION_TABLE* AutomationTableAB, __out PKSAUTOMATION_TABLE* AutomationTableAB,
IN PKSAUTOMATION_TABLE AutomationTableA OPTIONAL, __in_opt PKSAUTOMATION_TABLE AutomationTableA,
IN PKSAUTOMATION_TABLE AutomationTableB OPTIONAL, __in_opt PKSAUTOMATION_TABLE AutomationTableB,
IN KSOBJECT_BAG Bag OPTIONAL __in_opt KSOBJECT_BAG Bag
); );
__checkReturn
__drv_maxIRQL(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 const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL __in_opt const KSDEVICE_DESCRIPTOR* Descriptor
); );
__drv_maxIRQL(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)
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 const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL, __in_opt const KSDEVICE_DESCRIPTOR* Descriptor,
IN ULONG ExtensionSize OPTIONAL, __in ULONG ExtensionSize,
OUT PKSDEVICE* Device OPTIONAL __out_opt PKSDEVICE* Device
); );
__drv_maxIRQL(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 const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL __in_opt const KSDEVICE_DESCRIPTOR* Descriptor
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsTerminateDevice( KsTerminateDevice(
IN PDEVICE_OBJECT DeviceObject __in PDEVICE_OBJECT DeviceObject
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PKSDEVICE PKSDEVICE
NTAPI NTAPI
KsGetDeviceForDeviceObject( KsGetDeviceForDeviceObject(
IN PDEVICE_OBJECT FunctionalDeviceObject __in PDEVICE_OBJECT FunctionalDeviceObject
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsAcquireDevice( KsAcquireDevice(
IN PKSDEVICE Device __in PKSDEVICE Device
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsReleaseDevice( KsReleaseDevice(
IN PKSDEVICE Device __in PKSDEVICE Device
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsDeviceGetBusData( KsDeviceGetBusData(
IN PKSDEVICE Device, __in PKSDEVICE Device,
IN ULONG DataType, __in ULONG DataType,
IN PVOID Buffer, __in_bcount(Length) PVOID Buffer,
IN ULONG Offset, __in ULONG Offset,
IN ULONG Length __in ULONG Length
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsDeviceSetBusData( KsDeviceSetBusData(
IN PKSDEVICE Device, __in PKSDEVICE Device,
IN ULONG DataType, __in ULONG DataType,
IN PVOID Buffer, __in_bcount(Length) PVOID Buffer,
IN ULONG Offset, __in ULONG Offset,
IN ULONG Length __in ULONG Length
); );
__checkReturn
__drv_maxIRQL(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 OPTIONAL, __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
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsFilterFactoryUpdateCacheData( KsFilterFactoryUpdateCacheData(
IN PKSFILTERFACTORY FilterFactory, __in PKSFILTERFACTORY FilterFactory,
IN const KSFILTER_DESCRIPTOR *FilterDescriptor OPTIONAL __in_opt const KSFILTER_DESCRIPTOR *FilterDescriptor
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsFilterFactorySetDeviceClassesState( KsFilterFactorySetDeviceClassesState(
IN PKSFILTERFACTORY FilterFactory, __in PKSFILTERFACTORY FilterFactory,
IN BOOLEAN NewState __in BOOLEAN NewState
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PUNICODE_STRING PUNICODE_STRING
NTAPI NTAPI
KsFilterFactoryGetSymbolicLink( KsFilterFactoryGetSymbolicLink(
IN PKSFILTERFACTORY FilterFactory __in PKSFILTERFACTORY FilterFactory
); );
__drv_maxIRQL(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)
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)
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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsDefaultAddEventHandler( KsDefaultAddEventHandler(
IN PIRP Irp, __in PIRP Irp,
IN PKSEVENTDATA EventData, __in PKSEVENTDATA EventData,
IN OUT PKSEVENT_ENTRY EventEntry __inout PKSEVENT_ENTRY EventEntry
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsGenerateEvents( KsGenerateEvents(
IN PVOID Object, __in PVOID Object,
IN const GUID* EventSet OPTIONAL, __in_opt const GUID* EventSet,
IN ULONG EventId, __in ULONG EventId,
IN ULONG DataSize, __in ULONG DataSize,
IN PVOID Data OPTIONAL, __in_bcount_opt(DataSize) PVOID Data,
IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL, __in_opt PFNKSGENERATEEVENTCALLBACK CallBack,
IN PVOID CallBackContext OPTIONAL __in_opt PVOID CallBackContext
); );
__drv_maxIRQL(DISPATCH_LEVEL)
void _inline void _inline
KsFilterGenerateEvents( KsFilterGenerateEvents(
IN PKSFILTER Filter, __in PKSFILTER Filter,
IN const GUID* EventSet OPTIONAL, __in_opt const GUID* EventSet,
IN ULONG EventId, __in ULONG EventId,
IN ULONG DataSize, __in ULONG DataSize,
IN PVOID Data OPTIONAL, __in_bcount(DataSize) PVOID Data,
IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL, __in_opt PFNKSGENERATEEVENTCALLBACK CallBack,
IN PVOID CallBackContext OPTIONAL __in_opt PVOID CallBackContext
) )
{ {
KsGenerateEvents( KsGenerateEvents(
Filter, Filter,
EventSet, EventSet,
EventId, EventId,
DataSize, DataSize,
Data, Data,
CallBack, CallBack,
CallBackContext); CallBackContext);
} }
__drv_maxIRQL(DISPATCH_LEVEL)
void _inline void _inline
KsPinGenerateEvents( KsPinGenerateEvents(
IN PKSPIN Pin, __in PKSPIN Pin,
IN const GUID* EventSet OPTIONAL, __in_opt const GUID* EventSet,
IN ULONG EventId, __in ULONG EventId,
IN ULONG DataSize, __in ULONG DataSize,
IN PVOID Data OPTIONAL, __in_bcount_opt(DataSize) PVOID Data,
IN PFNKSGENERATEEVENTCALLBACK CallBack OPTIONAL, __in_opt PFNKSGENERATEEVENTCALLBACK CallBack,
IN PVOID CallBackContext OPTIONAL __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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinGetAvailableByteCount( KsPinGetAvailableByteCount(
IN PKSPIN Pin, __in PKSPIN Pin,
OUT PLONG InputDataBytes OPTIONAL, __out_opt PLONG InputDataBytes,
OUT PLONG OutputBufferBytes OPTIONAL __out_opt PLONG OutputBufferBytes
); );
__checkReturn
__drv_maxIRQL(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
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsStreamPointerLock( KsStreamPointerLock(
IN PKSSTREAM_POINTER StreamPointer __in PKSSTREAM_POINTER StreamPointer
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsStreamPointerDelete( KsStreamPointerDelete(
IN PKSSTREAM_POINTER StreamPointer __in PKSSTREAM_POINTER StreamPointer
); );
__checkReturn
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsStreamPointerClone( KsStreamPointerClone(
IN PKSSTREAM_POINTER StreamPointer, __in PKSSTREAM_POINTER StreamPointer,
IN PFNKSSTREAMPOINTER CancelCallback OPTIONAL, __in_opt PFNKSSTREAMPOINTER CancelCallback,
IN ULONG ContextSize, __in ULONG ContextSize,
OUT PKSSTREAM_POINTER* CloneStreamPointer __out PKSSTREAM_POINTER* CloneStreamPointer
); );
__checkReturn
__drv_maxIRQL(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
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsStreamPointerAdvance( KsStreamPointerAdvance(
IN PKSSTREAM_POINTER StreamPointer __in PKSSTREAM_POINTER StreamPointer
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PMDL PMDL
NTAPI NTAPI
KsStreamPointerGetMdl( KsStreamPointerGetMdl(
IN PKSSTREAM_POINTER StreamPointer __in PKSSTREAM_POINTER StreamPointer
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PIRP PIRP
NTAPI NTAPI
KsStreamPointerGetIrp( KsStreamPointerGetIrp(
IN PKSSTREAM_POINTER StreamPointer, __in PKSSTREAM_POINTER StreamPointer,
OUT PBOOLEAN FirstFrameInIrp OPTIONAL, __out_opt PBOOLEAN FirstFrameInIrp,
OUT PBOOLEAN LastFrameInIrp OPTIONAL __out_opt PBOOLEAN LastFrameInIrp
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsStreamPointerCancelTimeout( KsStreamPointerCancelTimeout(
IN PKSSTREAM_POINTER StreamPointer __in PKSSTREAM_POINTER StreamPointer
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PKSSTREAM_POINTER PKSSTREAM_POINTER
NTAPI NTAPI
KsPinGetFirstCloneStreamPointer( KsPinGetFirstCloneStreamPointer(
IN PKSPIN Pin __in PKSPIN Pin
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PKSSTREAM_POINTER PKSSTREAM_POINTER
NTAPI NTAPI
KsStreamPointerGetNextClone( KsStreamPointerGetNextClone(
IN PKSSTREAM_POINTER StreamPointer __in PKSSTREAM_POINTER StreamPointer
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsCompletePendingRequest( KsCompletePendingRequest(
IN PIRP Irp __in PIRP Irp
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
KSOBJECTTYPE KSOBJECTTYPE
NTAPI NTAPI
KsGetObjectTypeFromIrp( KsGetObjectTypeFromIrp(
IN PIRP Irp __in PIRP Irp
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PVOID PVOID
NTAPI NTAPI
KsGetObjectFromFileObject( KsGetObjectFromFileObject(
IN PFILE_OBJECT FileObject __in PFILE_OBJECT FileObject
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
KSOBJECTTYPE KSOBJECTTYPE
NTAPI NTAPI
KsGetObjectTypeFromFileObject( KsGetObjectTypeFromFileObject(
IN PFILE_OBJECT FileObject __in PFILE_OBJECT FileObject
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
PKSGATE PKSGATE
NTAPI NTAPI
KsFilterGetAndGate( KsFilterGetAndGate(
IN PKSFILTER Filter __in PKSFILTER Filter
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsFilterAcquireProcessingMutex( KsFilterAcquireProcessingMutex(
IN PKSFILTER Filter __in PKSFILTER Filter
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsFilterReleaseProcessingMutex( KsFilterReleaseProcessingMutex(
IN PKSFILTER Filter __in PKSFILTER Filter
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
PKSGATE PKSGATE
NTAPI NTAPI
KsPinGetAndGate( KsPinGetAndGate(
IN PKSPIN Pin __in PKSPIN Pin
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinAttachAndGate( KsPinAttachAndGate(
IN PKSPIN Pin, __in PKSPIN Pin,
IN PKSGATE AndGate OPTIONAL __in_opt PKSGATE AndGate
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinAttachOrGate( KsPinAttachOrGate(
IN PKSPIN Pin, __in PKSPIN Pin,
IN PKSGATE OrGate OPTIONAL __in_opt PKSGATE OrGate
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinAcquireProcessingMutex( KsPinAcquireProcessingMutex(
IN PKSPIN Pin __in PKSPIN Pin
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinReleaseProcessingMutex( KsPinReleaseProcessingMutex(
IN PKSPIN Pin __in PKSPIN Pin
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
KsProcessPinUpdate( KsProcessPinUpdate(
IN PKSPROCESSPIN ProcessPin __in PKSPROCESSPIN ProcessPin
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinAttemptProcessing( KsPinAttemptProcessing(
IN PKSPIN Pin, __in PKSPIN Pin,
IN BOOLEAN Asynchronous __in BOOLEAN Asynchronous
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PVOID PVOID
NTAPI NTAPI
KsGetParent( KsGetParent(
IN PVOID Object __in PVOID Object
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
PKSFILTER PKSFILTER
NTAPI NTAPI
KsPinGetParentFilter( KsPinGetParentFilter(
IN PKSPIN Pin __in PKSPIN Pin
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PVOID PVOID
NTAPI NTAPI
KsGetFirstChild( KsGetFirstChild(
IN PVOID Object __in PVOID Object
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsFilterGetChildPinCount( KsFilterGetChildPinCount(
IN PKSFILTER Filter, __in PKSFILTER Filter,
IN ULONG PinId __in ULONG PinId
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
PVOID PVOID
NTAPI NTAPI
KsGetNextSibling( KsGetNextSibling(
IN PVOID Object __in PVOID Object
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
PKSPIN PKSPIN
NTAPI NTAPI
KsPinGetNextSiblingPin( KsPinGetNextSiblingPin(
IN PKSPIN Pin __in PKSPIN Pin
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
PKSDEVICE PKSDEVICE
NTAPI NTAPI
KsGetDevice( KsGetDevice(
IN PVOID Object __in PVOID Object
); );
__drv_maxIRQL(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)
PKSDEVICE __inline PKSDEVICE __inline
KsFilterGetDevice( KsFilterGetDevice(
IN PKSFILTER Filter __in PKSFILTER Filter
) )
{ {
return KsGetDevice((PVOID) Filter); return KsGetDevice((PVOID) Filter);
} }
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
PKSFILTER PKSFILTER
NTAPI NTAPI
KsGetFilterFromIrp( KsGetFilterFromIrp(
IN PIRP Irp __in PIRP Irp
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
PKSPIN PKSPIN
NTAPI NTAPI
KsGetPinFromIrp( KsGetPinFromIrp(
IN PIRP Irp __in PIRP Irp
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
ULONG ULONG
NTAPI NTAPI
KsGetNodeIdFromIrp( KsGetNodeIdFromIrp(
IN PIRP Irp __in PIRP Irp
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsAcquireControl( KsAcquireControl(
IN PVOID Object __in PVOID Object
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsReleaseControl( KsReleaseControl(
IN PVOID Object __in PVOID Object
); );
__drv_maxIRQL(PASSIVE_LEVEL)
void __inline void __inline
KsFilterAcquireControl( KsFilterAcquireControl(
IN PKSFILTER Filter __in PKSFILTER Filter
) )
{ {
KsAcquireControl((PVOID) Filter); KsAcquireControl((PVOID) Filter);
} }
__drv_maxIRQL(PASSIVE_LEVEL)
void __inline void __inline
KsFilterReleaseControl( KsFilterReleaseControl(
IN PKSFILTER Filter __in PKSFILTER Filter
) )
{ {
KsReleaseControl((PVOID) Filter); KsReleaseControl((PVOID) Filter);
} }
__drv_maxIRQL(PASSIVE_LEVEL)
void __inline void __inline
KsPinAcquireControl( KsPinAcquireControl(
IN PKSPIN Pin __in PKSPIN Pin
) )
{ {
KsAcquireControl((PVOID) Pin); KsAcquireControl((PVOID) Pin);
} }
__drv_maxIRQL(PASSIVE_LEVEL)
void __inline void __inline
KsPinReleaseControl( KsPinReleaseControl(
IN PKSPIN Pin __in PKSPIN Pin
) )
{ {
KsReleaseControl((PVOID) Pin); KsReleaseControl((PVOID) Pin);
} }
__checkReturn
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsAddItemToObjectBag( KsAddItemToObjectBag(
IN KSOBJECT_BAG ObjectBag, __in KSOBJECT_BAG ObjectBag,
IN PVOID Item, __in __drv_aliasesMem PVOID Item,
IN PFNKSFREE Free OPTIONAL __in_opt PFNKSFREE Free
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsFreeObjectBag( KsFreeObjectBag(
IN KSOBJECT_BAG ObjectBag __in KSOBJECT_BAG ObjectBag
); );
__drv_maxIRQL(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
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
_KsEdit( _KsEdit(
IN KSOBJECT_BAG ObjectBag, __in KSOBJECT_BAG ObjectBag,
IN OUT 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
__drv_maxIRQL(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 BOOL * PinDirection, __in_ecount(PinCount) BOOL * PinDirection,
IN KSPIN_MEDIUM * MediumList, __in_ecount(PinCount) KSPIN_MEDIUM * Mediu
IN OPTIONAL GUID * CategoryList mList,
__in_ecount_opt(PinCount) GUID * CategoryL
ist
); );
__drv_maxIRQL(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)
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)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsFilterAddTopologyConnections ( KsFilterAddTopologyConnections (
IN PKSFILTER Filter, __in PKSFILTER Filter,
IN ULONG NewConnectionsCount, __in ULONG NewConnectionsCount,
IN const KSTOPOLOGY_CONNECTION *const NewTopologyConnections __in_ecount(NewConnectionsCount) const KSTOPOLOGY_CONNECTION *const NewTopol
ogyConnections
); );
__drv_maxIRQL(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)
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)
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)
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)
KSDDKAPI KSDDKAPI
VOID VOID
NTAPI NTAPI
KsPinSetPinClockTime( KsPinSetPinClockTime(
IN PKSPIN Pin, __in PKSPIN Pin,
IN LONGLONG Time __in LONGLONG Time
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinSubmitFrame( KsPinSubmitFrame(
IN PKSPIN Pin, __in PKSPIN Pin,
IN PVOID Data OPTIONAL, __in_bcount_opt(Size) PVOID Data,
IN ULONG Size OPTIONAL, __in ULONG Size OPTIONAL,
IN PKSSTREAM_HEADER StreamHeader OPTIONAL, __in_opt PKSSTREAM_HEADER StreamHeader,
IN PVOID Context OPTIONAL __in_opt PVOID Context
); );
__drv_maxIRQL(DISPATCH_LEVEL)
KSDDKAPI KSDDKAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
KsPinSubmitFrameMdl( KsPinSubmitFrameMdl(
IN PKSPIN Pin, __in PKSPIN Pin,
IN PMDL Mdl OPTIONAL, __in_opt PMDL Mdl,
IN PKSSTREAM_HEADER StreamHeader OPTIONAL, __in_opt PKSSTREAM_HEADER StreamHeader,
IN PVOID Context OPTIONAL __in_opt PVOID Context
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinRegisterIrpCompletionCallback( KsPinRegisterIrpCompletionCallback(
IN PKSPIN Pin, __in PKSPIN Pin,
IN PFNKSPINIRPCOMPLETION IrpCompletion __in PFNKSPINIRPCOMPLETION IrpCompletion
); );
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsFilterRegisterPowerCallbacks( KsFilterRegisterPowerCallbacks(
IN PKSFILTER Filter, __in PKSFILTER Filter,
IN PFNKSFILTERPOWER Sleep OPTIONAL, __in_opt PFNKSFILTERPOWER Sleep,
IN PFNKSFILTERPOWER Wake OPTIONAL __in_opt PFNKSFILTERPOWER Wake
); );
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI KSDDKAPI
void void
NTAPI NTAPI
KsPinRegisterPowerCallbacks( KsPinRegisterPowerCallbacks(
IN PKSPIN Pin, __in PKSPIN Pin,
IN PFNKSPINPOWER Sleep OPTIONAL, __in_opt PFNKSPINPOWER Sleep,
IN PFNKSPINPOWER Wake OPTIONAL __in_opt PFNKSPINPOWER Wake
); );
#if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) #if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
__drv_maxIRQL(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)
KSDDKAPI KSDDKAPI
PUNKNOWN PUNKNOWN
NTAPI NTAPI
KsGetOuterUnknown( KsGetOuterUnknown(
IN PVOID Object __in PVOID Object
); );
__drv_maxIRQL(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)
PUNKNOWN __inline PUNKNOWN __inline
KsDeviceGetOuterUnknown( KsDeviceGetOuterUnknown(
IN PKSDEVICE Device __in PKSDEVICE Device
) )
{ {
return KsGetOuterUnknown((PVOID) Device); return KsGetOuterUnknown((PVOID) Device);
} }
__drv_maxIRQL(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)
PUNKNOWN __inline PUNKNOWN __inline
KsFilterFactoryGetOuterUnknown( KsFilterFactoryGetOuterUnknown(
IN PKSFILTERFACTORY FilterFactory __in PKSFILTERFACTORY FilterFactory
) )
{ {
return KsGetOuterUnknown((PVOID) FilterFactory); return KsGetOuterUnknown((PVOID) FilterFactory);
} }
__drv_maxIRQL(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)
PUNKNOWN __inline PUNKNOWN __inline
KsFilterGetOuterUnknown( KsFilterGetOuterUnknown(
IN PKSFILTER Filter __in PKSFILTER Filter
) )
{ {
return KsGetOuterUnknown((PVOID) Filter); return KsGetOuterUnknown((PVOID) Filter);
} }
__drv_maxIRQL(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)
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)
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)
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)
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)
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
); );
#endif #endif
#endif // !defined(_NTDDK_) #endif // !defined(_NTDDK_)
#if defined(__cplusplus) #if defined(__cplusplus)
} }
#endif // defined(__cplusplus) #endif // defined(__cplusplus)
 End of changes. 605 change blocks. 
820 lines changed or deleted 1213 lines changed or added

This html diff was produced by rfcdiff 1.41.