-#ifndef KSTYPES_H__
-#define KSTYPES_H__
+#pragma once
+
+#include <ntddk.h>
+#include <ks.h>
+
+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;
-struct KSIDEVICE_HEADER;
typedef struct
{
KSDISPATCH_TABLE DispatchTable;
- LPWSTR ObjectClass;
- ULONG ItemCount;
- PKSOBJECT_CREATE_ITEM CreateItem;
+ 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
{
- BOOL bCreated;
- PKSIOBJECT_HEADER ObjectHeader;
- KSOBJECT_CREATE_ITEM CreateItem;
-}DEVICE_ITEM, *PDEVICE_ITEM;
+ 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
{
- USHORT MaxItems;
- DEVICE_ITEM *ItemList;
+ KSBASIC_HEADER BasicHeader;
+ KSDEVICE KsDevice;
+
+ LONG ref;
+ ERESOURCE SecurityLock;
+
+ LONG ItemListCount;
+ LIST_ENTRY ItemList;
ULONG DeviceIndex;
- KSPIN_LOCK ItemListLock;
+ PDEVICE_OBJECT PnpDeviceObject;
+ PDEVICE_OBJECT BaseDevice;
- PDEVICE_OBJECT NextDeviceObject;
- ERESOURCE SecurityLock;
-}KSIDEVICE_HEADER, *PKSIDEVICE_HEADER;
+ 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
{
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
+{
+ PIRP Irp;
+ KEVENT Event;
+}KSREMOVE_BUS_INTERFACE_CTX, *PKSREMOVE_BUS_INTERFACE_CTX;
+
+typedef struct
+{
+ PLIST_ENTRY List;
+ PFILE_OBJECT FileObject;
+ PKSEVENT_ENTRY EventEntry;
PIRP Irp;
-}QUEUE_ENTRY, *PQUEUE_ENTRY;
+}KSEVENT_CTX, *PKSEVENT_CTX;
+
+typedef BOOLEAN (NTAPI *PKSEVENT_SYNCHRONIZED_ROUTINE)(PKSEVENT_CTX Context);
+
+typedef struct
+{
+ BOOLEAN Enabled;
+ PDEVICE_OBJECT PnpDeviceObject;
+ PDEVICE_OBJECT PhysicalDeviceObject;
+ PDEVICE_OBJECT BusDeviceObject;
+
+ UNICODE_STRING ServicePath;
+ UNICODE_STRING SymbolicLinkName;
+
+ WCHAR BusIdentifier[1];
+}BUS_ENUM_DEVICE_EXTENSION, *PBUS_ENUM_DEVICE_EXTENSION;
+
+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;
-#endif