From a51869e510d24a6af367cf57530f53c85fe94b62 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Sat, 31 Jan 2009 12:59:56 +0000 Subject: [PATCH] - Fix a few definitions svn path=/trunk/; revision=39226 --- reactos/include/psdk/ks.h | 91 +++++++++++++++++++++++++++++++-------- 1 file changed, 73 insertions(+), 18 deletions(-) diff --git a/reactos/include/psdk/ks.h b/reactos/include/psdk/ks.h index 4b173b9cff7..e8f9329506a 100644 --- a/reactos/include/psdk/ks.h +++ b/reactos/include/psdk/ks.h @@ -1120,6 +1120,20 @@ typedef struct PFAST_IO_READ FastRead; PFAST_IO_WRITE FastWrite; } KSDISPATCH_TABLE, *PKSDISPATCH_TABLE; + + +#define KSCREATE_ITEM_IRP_STORAGE(Irp) (*(PKSOBJECT_CREATE_ITEM*)&(Irp)->Tail.Overlay.DriverContext[0]) +#define KSEVENT_SET_IRP_STORAGE(Irp) (*(const KSEVENT_SET**)&(Irp)->Tail.Overlay.DriverContext[0]) +#define KSEVENT_ITEM_IRP_STORAGE(Irp) (*(const KSEVENT_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3]) +#define KSEVENT_ENTRY_IRP_STORAGE(Irp) (*(PKSEVENT_ENTRY*)&(Irp)->Tail.Overlay.DriverContext[0]) +#define KSMETHOD_SET_IRP_STORAGE(Irp) (*(const KSMETHOD_SET**)&(Irp)->Tail.Overlay.DriverContext[0]) +#define KSMETHOD_ITEM_IRP_STORAGE(Irp) (*(const KSMETHOD_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3]) +#define KSMETHOD_TYPE_IRP_STORAGE(Irp) (*(ULONG_PTR*)(&(Irp)->Tail.Overlay.DriverContext[2])) +#define KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) (*(PKSPIN_LOCK*)&(Irp)->Tail.Overlay.DriverContext[1]) +#define KSPROPERTY_SET_IRP_STORAGE(Irp) (*(const KSPROPERTY_SET**)&(Irp)->Tail.Overlay.DriverContext[0]) +#define KSPROPERTY_ITEM_IRP_STORAGE(Irp) (*(const KSPROPERTY_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3]) +#define KSPROPERTY_ATTRIBUTES_IRP_STORAGE(Irp) (*(PKSATTRIBUTE_LIST*)&(Irp)->Tail.Overlay.DriverContext[2]) + #endif typedef struct @@ -1432,6 +1446,18 @@ typedef struct typedef struct { + ULONG PropertySetsCount; + ULONG PropertyItemSize; + const KSPROPERTY_SET* PropertySets; + ULONG MethodSetsCount; + ULONG MethodItemSize; + const KSMETHOD_SET* MethodSets; + ULONG EventSetsCount; + ULONG EventItemSize; + const KSEVENT_SET* EventSets; +#if !defined(_WIN64) + PVOID Alignment; +#endif } KSAUTOMATION_TABLE, *PKSAUTOMATION_TABLE; typedef struct @@ -1648,11 +1674,17 @@ typedef struct /* =============================================================== Device Dispatch */ + + + #if defined(_NTDDK_) -typedef struct -{ - /* TODO */ -} KSDEVICE, *PKSDEVICE; + +typedef struct _KSFILTER_DISPATCH KSFILTER_DISPATCH, *PKSFILTER_DISPATCH; +typedef struct _KSDEVICE KSDEVICE, *PKSDEVICE; +typedef struct _KSFILTER KSFILTER, *PKSFILTER; +typedef struct _KSNODE_DESCRIPTOR KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR; +typedef struct _KSFILTER_DESCRIPTOR KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR; +typedef struct _KSDEVICE_DESCRIPTOR KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR; typedef NTSTATUS (*PFNKSDEVICECREATE)( IN PKSDEVICE Device); @@ -1694,8 +1726,7 @@ typedef VOID (*PFNKSDEVICESETPOWER)( IN DEVICE_POWER_STATE To, IN DEVICE_POWER_STATE From); -typedef struct _KSDEVICE_DISPATCH -{ +typedef struct _KSDEVICE_DISPATCH { PFNKSDEVICECREATE Add; PFNKSDEVICEPNPSTART Start; PFNKSDEVICE PostStart; @@ -1707,18 +1738,40 @@ typedef struct _KSDEVICE_DISPATCH PFNKSDEVICEIRPVOID Remove; PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities; PFNKSDEVICEIRPVOID SurpriseRemoval; - PFNKSDEVICEQUERYPOWER Querypower; + PFNKSDEVICEQUERYPOWER QueryPower; PFNKSDEVICESETPOWER SetPower; -} KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH; + PFNKSDEVICEIRP QueryInterface; +}KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH; + +#if (NTDDI_VERSION >= NTDDI_LONGHORN) +#define KSDEVICE_DESCRIPTOR_VERSION_2 (0x110) +#define MIN_DEV_VER_FOR_FLAGS (0x110) +#endif + +struct _KSDEVICE +{ + const KSDEVICE_DESCRIPTOR* Descriptor; + KSOBJECT_BAG Bag; + PVOID Context; + PDEVICE_OBJECT FunctionalDeviceObject; + PDEVICE_OBJECT PhysicalDeviceObject; + PDEVICE_OBJECT NextDeviceObject; + BOOLEAN Started; + SYSTEM_POWER_STATE SystemPowerState; + DEVICE_POWER_STATE DevicePowerState; +}; #endif /* =============================================================== Filter Dispatch */ #if defined(_NTDDK_) -typedef struct +struct _KSFILTER { -} KSFILTER, *PKSFILTER; + const KSFILTER_DESCRIPTOR* Descriptor; + KSOBJECT_BAG Bag; + PVOID Context; +}; typedef NTSTATUS (*PFNKSFILTERIRP)( IN PKSFILTER Filter, @@ -1731,21 +1784,23 @@ typedef NTSTATUS (*PFNKSFILTERPROCESS)( typedef NTSTATUS (*PFNKSFILTERVOID)( IN PKSFILTER Filter); -typedef struct _KSFILTER_DISPATCH +struct _KSFILTER_DISPATCH { PFNKSFILTERIRP Create; PFNKSFILTERIRP Close; PFNKSFILTERPROCESS Process; PFNKSFILTERVOID Reset; -} KSFILTER_DISPATCH, *PKSFILTER_DISPATCH; +}; -typedef struct { +struct _KSNODE_DESCRIPTOR +{ const KSAUTOMATION_TABLE* AutomationTable; const GUID* Type; const GUID* Name; -} KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR; +}; -typedef struct { +struct _KSFILTER_DESCRIPTOR +{ const KSFILTER_DISPATCH* Dispatch; const KSAUTOMATION_TABLE* AutomationTable; ULONG Version; @@ -1762,14 +1817,14 @@ typedef struct { ULONG ConnectionsCount; const KSTOPOLOGY_CONNECTION* Connections; const KSCOMPONENTID* ComponentId; -} KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR; +}; -typedef struct +struct _KSDEVICE_DESCRIPTOR { const KSDEVICE_DISPATCH* Dispatch; ULONG FilterDescriptorsCount; const KSFILTER_DESCRIPTOR*const* FilterDescriptors; -} KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR; +}; #endif /* =============================================================== Minidriver Callbacks