Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / drivers / ksfilter / ks / kstypes.h
diff --git a/drivers/ksfilter/ks/kstypes.h b/drivers/ksfilter/ks/kstypes.h
new file mode 100644 (file)
index 0000000..cd4aaca
--- /dev/null
@@ -0,0 +1,281 @@
+#pragma once
+
+typedef struct
+{
+    KoCreateObjectHandler CreateObjectHandler;
+}KO_DRIVER_EXTENSION, *PKO_DRIVER_EXTENSION;
+
+typedef struct
+{
+    const KSDEVICE_DESCRIPTOR  *Descriptor;
+}KS_DRIVER_EXTENSION, *PKS_DRIVER_EXTENSION;
+
+typedef struct
+{
+    KSOBJECT_HEADER ObjectHeader;
+    KSOBJECT_CREATE_ITEM CreateItem;
+}KO_OBJECT_HEADER, *PKO_OBJECT_HEADER;
+
+
+typedef struct
+{
+    KSDISPATCH_TABLE DispatchTable;
+    KSOBJECTTYPE Type;
+
+    LONG ItemListCount;
+    LIST_ENTRY ItemList;
+
+    UNICODE_STRING ObjectClass;
+    PUNKNOWN Unknown;
+    PVOID ObjectType;
+
+    PDEVICE_OBJECT TargetDevice;
+    LIST_ENTRY TargetDeviceListEntry;
+
+    PDEVICE_OBJECT ParentDeviceObject;
+
+    PFNKSCONTEXT_DISPATCH PowerDispatch;
+    PVOID PowerContext;
+    LIST_ENTRY PowerDispatchEntry;
+    PKSOBJECT_CREATE_ITEM OriginalCreateItem;
+    ACCESS_MASK AccessMask;
+
+}KSIOBJECT_HEADER, *PKSIOBJECT_HEADER;
+
+typedef struct
+{
+    LIST_ENTRY Entry;
+    PKSOBJECT_CREATE_ITEM CreateItem;
+    PFNKSITEMFREECALLBACK ItemFreeCallback;
+    LONG ReferenceCount;
+    LIST_ENTRY ObjectItemList;
+}CREATE_ITEM_ENTRY, *PCREATE_ITEM_ENTRY;
+
+typedef struct
+{
+    KSOBJECTTYPE Type;
+    PKSDEVICE KsDevice;
+    PRKMUTEX ControlMutex;
+    LIST_ENTRY EventList;
+    KSPIN_LOCK EventListLock;
+    PUNKNOWN ClientAggregate;
+    PUNKNOWN OuterUnknown;
+    union
+    {
+        PKSDEVICE KsDevice;
+        PKSFILTERFACTORY KsFilterFactory;
+        PKSFILTER KsFilter;
+    }Parent;
+
+    union
+    {
+        PKSFILTERFACTORY FilterFactory;
+        PKSFILTER Filter;
+        PKSPIN Pin;
+    }Next;
+
+    union
+    {
+        PKSFILTERFACTORY FilterFactory;
+        PKSFILTER Filter;
+    }FirstChild;
+
+}KSBASIC_HEADER, *PKSBASIC_HEADER;
+
+typedef struct
+{
+    KSBASIC_HEADER BasicHeader;
+    KSDEVICE KsDevice;
+
+    LONG ref;
+    ERESOURCE SecurityLock;
+
+    LONG ItemListCount;
+    LIST_ENTRY ItemList;
+
+    ULONG DeviceIndex;
+    PDEVICE_OBJECT PnpDeviceObject;
+    PDEVICE_OBJECT BaseDevice;
+
+    KSTARGET_STATE TargetState;
+    LIST_ENTRY TargetDeviceList;
+
+    KMUTEX DeviceMutex;
+    KMUTEX BagMutex;
+
+    LIST_ENTRY PowerDispatchList;
+    LIST_ENTRY ObjectBags;
+
+    PADAPTER_OBJECT AdapterObject;
+    ULONG MaxMappingsByteCount;
+    ULONG MappingTableStride;
+
+}KSIDEVICE_HEADER, *PKSIDEVICE_HEADER;
+
+typedef struct
+{
+    PKSIDEVICE_HEADER DeviceHeader;
+
+}DEVICE_EXTENSION, *PDEVICE_EXTENSION;
+
+typedef struct
+{
+    LIST_ENTRY Entry;
+    UNICODE_STRING SymbolicLink;
+    CLSID DeviceInterfaceClass;
+}SYMBOLIC_LINK_ENTRY, *PSYMBOLIC_LINK_ENTRY;
+
+typedef struct
+{
+    PKSIDEVICE_HEADER DeviceHeader;
+    PIO_WORKITEM WorkItem;
+}PNP_POSTSTART_CONTEXT, *PPNP_POSTSTART_CONTEXT;
+
+typedef struct
+{
+    PLIST_ENTRY List;
+    PFILE_OBJECT FileObject;
+    PKSEVENT_ENTRY EventEntry;
+    PIRP Irp;
+}KSEVENT_CTX, *PKSEVENT_CTX;
+
+typedef BOOLEAN (NTAPI *PKSEVENT_SYNCHRONIZED_ROUTINE)(PKSEVENT_CTX Context);
+
+struct __BUS_ENUM_DEVICE_EXTENSION__;
+struct __BUS_DEVICE_ENTRY__;
+
+typedef struct
+{
+    LIST_ENTRY Entry;
+    ULONG IsBus;
+    union
+    {
+        PDEVICE_OBJECT DeviceObject;
+        ULONG DeviceReferenceCount;
+    };
+    union
+    {
+        struct __BUS_DEVICE_ENTRY__* DeviceEntry;
+        ULONG Dummy1;
+    };
+    struct __BUS_ENUM_DEVICE_EXTENSION__ *BusDeviceExtension;
+    ULONG DeviceObjectReferenceCount;
+}COMMON_DEVICE_EXTENSION, *PCOMMON_DEVICE_EXTENSION;
+
+typedef struct
+{
+    PCOMMON_DEVICE_EXTENSION Ext;
+}DEV_EXTENSION, *PDEV_EXTENSION;
+
+typedef struct
+{
+    LIST_ENTRY Entry;
+    GUID InterfaceGuid;
+    UNICODE_STRING SymbolicLink;
+}BUS_INSTANCE_ENTRY, *PBUS_INSTANCE_ENTRY;
+
+
+
+typedef enum
+{
+    NotStarted = 0,         // Not started yet
+    Started,                // Device has received the START_DEVICE IRP
+    StopPending,            // Device has received the QUERY_STOP IRP
+    Stopped,                // Device has received the STOP_DEVICE IRP
+    RemovePending,          // Device has received the QUERY_REMOVE IRP
+    SurpriseRemovePending,  // Device has received the SURPRISE_REMOVE IRP
+    Deleted 
+}DEVICE_STATE;
+
+
+typedef struct __BUS_DEVICE_ENTRY__
+{
+    LIST_ENTRY Entry;
+    LIST_ENTRY DeviceInterfaceList;
+    LIST_ENTRY IrpPendingList;
+    PDEVICE_OBJECT PDO;
+    DEVICE_STATE DeviceState;
+    GUID DeviceGuid;
+    LPWSTR PDODeviceName;
+    LPWSTR DeviceName;
+    LPWSTR BusId;
+    LARGE_INTEGER TimeCreated;
+    LARGE_INTEGER TimeExpired;
+    LPWSTR Instance;
+}BUS_DEVICE_ENTRY, *PBUS_DEVICE_ENTRY;
+
+typedef struct __BUS_ENUM_DEVICE_EXTENSION__
+{
+    COMMON_DEVICE_EXTENSION Common;
+    KSPIN_LOCK Lock;
+    KEVENT Event;
+    UNICODE_STRING DeviceInterfaceLink;
+    PDEVICE_OBJECT PhysicalDeviceObject;
+    PDEVICE_OBJECT PnpDeviceObject;
+    PDEVICE_OBJECT BusDeviceObject;
+    ULONG PdoCreated;
+    KTIMER Timer;
+    KDPC Dpc;
+    WORK_QUEUE_ITEM WorkItem;
+    ULONG DeviceAttached;
+    UNICODE_STRING ServicePath;
+
+    WCHAR BusIdentifier[1];
+}BUS_ENUM_DEVICE_EXTENSION, *PBUS_ENUM_DEVICE_EXTENSION;
+
+typedef struct
+{
+    PIRP Irp;
+    PBUS_ENUM_DEVICE_EXTENSION BusDeviceExtension;
+    KEVENT Event;
+    NTSTATUS Status;
+    WORK_QUEUE_ITEM WorkItem;
+}BUS_INSTALL_ENUM_CONTEXT, *PBUS_INSTALL_ENUM_CONTEXT;
+
+typedef struct
+{
+    PUCHAR FilterData;
+    ULONG FilterLength;
+    ULONG FilterOffset;
+
+    PUCHAR DataCache;
+    ULONG DataLength;
+    ULONG DataOffset;
+
+}KSPCACHE_DESCRIPTOR, *PKSPCACHE_DESCRIPTOR;
+
+typedef struct
+{
+    DWORD dwVersion;
+    DWORD dwMerit;
+    DWORD dwPins;
+    DWORD dwUnused;
+}KSPCACHE_FILTER_HEADER, *PKSPCACHE_FILTER_HEADER;
+
+typedef struct
+{
+    ULONG Signature;
+    ULONG Flags;
+    ULONG Instances;
+    ULONG MediaTypes;
+    ULONG Mediums;
+    DWORD Category;
+}KSPCACHE_PIN_HEADER, *PKSPCACHE_PIN_HEADER;
+
+
+typedef struct
+{
+    ULONG Signature;
+    ULONG dwUnused;
+    ULONG OffsetMajor;
+    ULONG OffsetMinor;
+}KSPCACHE_DATARANGE, *PKSPCACHE_DATARANGE;
+
+
+typedef struct
+{
+    CLSID Medium;
+    ULONG dw1;
+    ULONG dw2;
+}KSPCACHE_MEDIUM;
+