mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 08:55:19 +00:00
- Add a few structs which are required of ks property handling
svn path=/trunk/; revision=39631
This commit is contained in:
parent
bcde36bae7
commit
6e2d8b3b74
1 changed files with 307 additions and 32 deletions
|
@ -570,8 +570,10 @@ typedef enum
|
|||
Properties/Methods/Events
|
||||
*/
|
||||
|
||||
#define KSPROPSETID_Topology \
|
||||
#define STATIC_KSPROPSETID_Topology\
|
||||
0x720D4AC0L, 0x7533, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
|
||||
DEFINE_GUIDSTRUCT("720D4AC0-7533-11D0-A5D6-28DB04C10000", KSPROPSETID_Topology);
|
||||
#define KSPROPSETID_Topology DEFINE_GUIDNAMED(KSPROPSETID_Topology)
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -963,6 +965,39 @@ typedef PVOID KSDEVICE_HEADER,
|
|||
(values have been checked)
|
||||
*/
|
||||
|
||||
#ifndef _MSC_VER
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\
|
||||
MinProperty,\
|
||||
MinData,\
|
||||
SetHandler,\
|
||||
Values, RelationsCount, Relations, SupportHandler,\
|
||||
SerializedSize)\
|
||||
{\
|
||||
PropertyId, {(PFNKSHANDLER)GetHandler}, MinProperty, MinData,\
|
||||
{(PFNKSHANDLER)SetHandler},\
|
||||
(PKSPROPERTY_VALUES)Values, RelationsCount, (PKSPROPERTY)Relations,\
|
||||
(PFNKSHANDLER)SupportHandler, (ULONG)SerializedSize\
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler,\
|
||||
MinProperty,\
|
||||
MinData,\
|
||||
SetHandler,\
|
||||
Values, RelationsCount, Relations, SupportHandler,\
|
||||
SerializedSize)\
|
||||
{\
|
||||
PropertyId, (PFNKSHANDLER)GetHandler, MinProperty, MinData,\
|
||||
(PFNKSHANDLER)SetHandler,\
|
||||
(PKSPROPERTY_VALUES)Values, RelationsCount, (PKSPROPERTY)Relations,\
|
||||
(PFNKSHANDLER)SupportHandler, (ULONG)SerializedSize\
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
KsObjectTypeDevice,
|
||||
|
@ -1173,21 +1208,57 @@ typedef struct
|
|||
{
|
||||
} KSPROPERTY_DESCRIPTION, *PKSPROPERTY_DESCRIPTION;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG MembersFlags;
|
||||
ULONG MembersSize;
|
||||
ULONG MembersCount;
|
||||
ULONG Flags;
|
||||
} KSPROPERTY_MEMBERSHEADER, *PKSPROPERTY_MEMBERSHEADER;
|
||||
|
||||
typedef struct {
|
||||
KSPROPERTY_MEMBERSHEADER MembersHeader;
|
||||
const VOID* Members;
|
||||
} KSPROPERTY_MEMBERSLIST, *PKSPROPERTY_MEMBERSLIST;
|
||||
|
||||
typedef struct {
|
||||
KSIDENTIFIER PropTypeSet;
|
||||
ULONG MembersListCount;
|
||||
const KSPROPERTY_MEMBERSLIST* MembersList;
|
||||
} KSPROPERTY_VALUES, *PKSPROPERTY_VALUES;
|
||||
|
||||
typedef NTSTATUS (*PFNKSHANDLER)(
|
||||
IN PIRP Irp,
|
||||
IN PKSIDENTIFIER Request,
|
||||
IN OUT PVOID Data);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG PropertyId;
|
||||
union
|
||||
{
|
||||
PFNKSHANDLER GetPropertyHandler;
|
||||
BOOLEAN GetSupported;
|
||||
};
|
||||
ULONG MinProperty;
|
||||
ULONG MinData;
|
||||
union {
|
||||
PFNKSHANDLER SetPropertyHandler;
|
||||
BOOLEAN SetSupported;
|
||||
};
|
||||
const KSPROPERTY_VALUES * Values;
|
||||
ULONG RelationsCount;
|
||||
const KSPROPERTY * Relations;
|
||||
PFNKSHANDLER SupportHandler;
|
||||
ULONG SerializedSize;
|
||||
} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
} KSPROPERTY_MEDIAAVAILABLE, *PKSPROPERTY_MEDIAAVAILABLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
} KSPROPERTY_MEMBERSHEADER, *PKSPROPERTY_MEMBERSHEADER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
} KSPROPERTY_MEMBERSLIST, *PKSPROPERTY_MEMBERSLIST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -1201,8 +1272,37 @@ typedef struct
|
|||
{
|
||||
} KSPROPERTY_SERIALHDR, *PKSPROPERTY_SERIALHDR;
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(*PFNKSFASTHANDLER)(
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PKSIDENTIFIER Request,
|
||||
IN ULONG RequestLength,
|
||||
IN OUT PVOID Data,
|
||||
IN ULONG DataLength,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
ULONG PropertyId;
|
||||
union {
|
||||
PFNKSFASTHANDLER GetPropertyHandler;
|
||||
BOOLEAN GetSupported;
|
||||
};
|
||||
union {
|
||||
PFNKSFASTHANDLER SetPropertyHandler;
|
||||
BOOLEAN SetSupported;
|
||||
};
|
||||
ULONG Reserved;
|
||||
} KSFASTPROPERTY_ITEM, *PKSFASTPROPERTY_ITEM;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const GUID* Set;
|
||||
ULONG PropertiesCount;
|
||||
const KSPROPERTY_ITEM * PropertyItem;
|
||||
ULONG FastIoCount;
|
||||
const KSFASTPROPERTY_ITEM* FastIoTable;
|
||||
} KSPROPERTY_SET, *PKSPROPERTY_SET;
|
||||
|
||||
typedef struct
|
||||
|
@ -1213,9 +1313,7 @@ typedef struct
|
|||
{
|
||||
} KSPROPERTY_STEPPING_LONGLONG, *PKSPROPERTY_STEPPING_LONGLONG;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
} KSPROPERTY_VALUES, *PKSPROPERTY_VALUES;
|
||||
|
||||
|
||||
|
||||
/* ===============================================================
|
||||
|
@ -1396,15 +1494,6 @@ typedef struct
|
|||
} KSNODE_CREATE, *PKSNODE_CREATE;
|
||||
|
||||
|
||||
/* ===============================================================
|
||||
Properties?
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
} KSFASTPROPERTY_ITEM, *PKSFASTPROPERTY_ITEM;
|
||||
|
||||
|
||||
/* ===============================================================
|
||||
Events
|
||||
*/
|
||||
|
@ -1531,12 +1620,171 @@ typedef struct
|
|||
KSPRIORITY Priority;
|
||||
} KSPIN_CONNECT, *PKSPIN_CONNECT;
|
||||
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_CINSTANCES,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
sizeof(KSPIN_CINSTANCES),\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_CTYPES,\
|
||||
(Handler),\
|
||||
sizeof(KSPROPERTY),\
|
||||
sizeof(ULONG),\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_DATAFLOW,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
sizeof(KSPIN_DATAFLOW),\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_DATARANGES,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
0,\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_DATAINTERSECTION,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN) + sizeof(KSMULTIPLE_ITEM),\
|
||||
0,\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_INTERFACES,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
0,\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_MEDIUMS,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
0,\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_COMMUNICATION,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
sizeof(KSPIN_COMMUNICATION),\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_GLOBALCINSTANCES,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
sizeof(KSPIN_CINSTANCES),\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_NECESSARYINSTANCES,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
sizeof(ULONG),\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_PHYSICALCONNECTION,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
0,\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_CATEGORY,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
sizeof(GUID),\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_NAME(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_NAME,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
0,\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_CONSTRAINEDDATARANGES,\
|
||||
(Handler),\
|
||||
sizeof(KSP_PIN),\
|
||||
0,\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_PIN_PROPOSEDATAFORMAT,\
|
||||
NULL,\
|
||||
sizeof(KSP_PIN),\
|
||||
sizeof(KSDATAFORMAT),\
|
||||
(Handler), NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_PINSET(PinSet,\
|
||||
PropGeneral, PropInstances, PropIntersection)\
|
||||
DEFINE_KSPROPERTY_TABLE(PinSet) {\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral)\
|
||||
}
|
||||
|
||||
#define DEFINE_KSPROPERTY_PINSETCONSTRAINED(PinSet,\
|
||||
PropGeneral, PropInstances, PropIntersection)\
|
||||
DEFINE_KSPROPERTY_TABLE(PinSet) {\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
|
||||
DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)\
|
||||
}
|
||||
|
||||
|
||||
|
||||
typedef
|
||||
void
|
||||
(*PFNKSFREE)(
|
||||
IN PVOID Data
|
||||
);
|
||||
|
||||
|
||||
|
||||
#define DEFINE_KSPROPERTY_TABLE(tablename)\
|
||||
const KSPROPERTY_ITEM tablename[] =
|
||||
|
||||
/* ===============================================================
|
||||
Topology
|
||||
*/
|
||||
|
@ -1562,6 +1810,46 @@ typedef struct
|
|||
} KSTOPOLOGY, *PKSTOPOLOGY;
|
||||
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_TOPOLOGY_CATEGORIES,\
|
||||
(Handler),\
|
||||
sizeof(KSPROPERTY),\
|
||||
0,\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_TOPOLOGY_NODES,\
|
||||
(Handler),\
|
||||
sizeof(KSPROPERTY),\
|
||||
0,\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_TOPOLOGY_CONNECTIONS,\
|
||||
(Handler),\
|
||||
sizeof(KSPROPERTY),\
|
||||
0,\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\
|
||||
DEFINE_KSPROPERTY_ITEM(\
|
||||
KSPROPERTY_TOPOLOGY_NAME,\
|
||||
(Handler),\
|
||||
sizeof(KSP_NODE),\
|
||||
0,\
|
||||
NULL, NULL, 0, NULL, NULL, 0)
|
||||
|
||||
#define DEFINE_KSPROPERTY_TOPOLOGYSET(TopologySet, Handler)\
|
||||
DEFINE_KSPROPERTY_TABLE(TopologySet) {\
|
||||
DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler),\
|
||||
DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler),\
|
||||
DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler),\
|
||||
DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)\
|
||||
}
|
||||
|
||||
/* ===============================================================
|
||||
??? SORT ME
|
||||
*/
|
||||
|
@ -1590,19 +1878,6 @@ typedef NTSTATUS (*PFNKSALLOCATOR)(
|
|||
IN ULONG BufferSize,
|
||||
IN BOOLEAN InputOperation);
|
||||
|
||||
typedef NTSTATUS (*PFNKSHANDLER)(
|
||||
IN PIRP Irp,
|
||||
IN PKSIDENTIFIER Request,
|
||||
IN OUT PVOID Data);
|
||||
|
||||
typedef BOOLEAN (*PFNKSFASTHANDLER)(
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PKSIDENTIFIER UNALIGNED Request,
|
||||
IN ULONG RequestLength,
|
||||
IN OUT PVOID UNALIGNED Data,
|
||||
IN ULONG DataLength,
|
||||
OUT PIO_STATUS_BLOCK IoStatus);
|
||||
|
||||
typedef NTSTATUS (*PFNKSADDEVENT)(
|
||||
IN PIRP Irp,
|
||||
IN PKSEVENTDATA EventData,
|
||||
|
|
Loading…
Reference in a new issue