48 0x6994AD04, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
52 0xDDA54A40, 0x1E4C, 0x11D1, {0xA0, 0x50, 0x40, 0x57, 0x05, 0xC1, 0x00, 0x00}
63 sizeof(PortFilterTopologyTopologySet) /
sizeof(KSPROPERTY_ITEM),
64 (
const KSPROPERTY_ITEM*)&PortFilterTopologyTopologySet,
70 sizeof(PortFilterTopologyPinSet) /
sizeof(KSPROPERTY_ITEM),
71 (
const KSPROPERTY_ITEM*)&PortFilterTopologyPinSet,
84CPortTopology::AddEventToEventList(
92CPortTopology::GenerateEventList(
116 DPRINT(
"IPortTopology_fnQueryInterface\n");
158 DPRINT1(
"IPortTopology_fnQueryInterface no interface!!! iface %S\n",
GuidString.Buffer);
170CPortTopology::GetDeviceProperty(
180 DPRINT(
"IPortTopology_fnNewRegistryKey called w/o initialized\n");
196 IMiniportTopology * Miniport;
199 DPRINT(
"IPortTopology_fnInit entered This %p DeviceObject %p Irp %p UnknownMiniport %p UnknownAdapter %p ResourceList %p\n",
206 DPRINT(
"IPortTopology_Init called again\n");
210 Status = UnknownMiniport->QueryInterface(IID_IMiniportTopology, (
PVOID*)&Miniport);
213 DPRINT(
"IPortTopology_Init called with invalid IMiniport adapter\n");
236 DPRINT(
"failed to get description\n");
259 DPRINT(
"IPortTopology_fnInit success\n");
272CPortTopology::NewRegistryKey(
285 DPRINT(
"IPortTopology_fnNewRegistryKey called w/o initialized\n");
305CPortTopology::NewIrpTarget(
306 OUT struct IIrpTarget **OutTarget,
312 IN KSOBJECT_CREATE *CreateObject)
315 IPortFilterTopology *
Filter;
347 *OutTarget = (IIrpTarget*)
Filter;
356CPortTopology::ReleaseChildren()
358 DPRINT(
"ISubDevice_fnReleaseChildren\n");
371CPortTopology::GetDescriptor(
381CPortTopology::DataRangeIntersection(
389 DPRINT(
"ISubDevice_DataRangeIntersection this %p\n",
this);
401CPortTopology::PowerChangeNotify(
414CPortTopology::PinCount(
424 m_pPinCount->PinCount(PinId, FilterNecessary, FilterCurrent, FilterPossible, GlobalCurrent, GlobalPossible);
444 PKSOBJECT_CREATE_ITEM CreateItem;
447 CreateItem = KSCREATE_ITEM_IRP_STORAGE(
Irp);
451 DPRINT(
"PcCreatePinDispatch called DeviceObject %p %S Name\n",
DeviceObject, CreateItem->ObjectClass.Buffer);
453 Filter = (IIrpTarget*)CreateItem->Context;
464 DPRINT(
"PcCreatePinDispatch failed to reference device header\n");
489 DPRINT(
"CreatePinWorkerRoutine completing irp %p\n",
Irp);
492 Irp->IoStatus.Information = 0;
505 ISubdevice * SubDevice;
507 PKSOBJECT_CREATE_ITEM CreateItem, PinCreateItem;
510 CreateItem = KSCREATE_ITEM_IRP_STORAGE(
Irp);
512 DPRINT(
"PcCreateItemDispatch called DeviceObject %p %S Name\n",
DeviceObject, CreateItem->ObjectClass.Buffer);
515 SubDevice = (ISubdevice*)CreateItem->Context;
525 DPRINT(
"PcCreateItemDispatch failed to reference device header\n");
542 DPRINT(
"Failed to get filter object\n");
593 DPRINT(
"NewPortTopology %p Status %x\n", *OutPort,
Status);
603 return This->m_pMiniport;
PMINIPORTTOPOLOGY m_pMiniport
IPortFilterTopology * m_Filter
CPortTopology(IUnknown *OuterUnknown)
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
friend PMINIPORTTOPOLOGY GetTopologyMiniport(PPORTTOPOLOGY Port)
PDEVICE_OBJECT m_pDeviceObject
PPCFILTER_DESCRIPTOR m_pDescriptor
PSUBDEVICE_DESCRIPTOR m_SubDeviceDescriptor
PPOWERNOTIFY m_pPowerNotify
NTSTATUS NTAPI NewIUnregisterPhysicalConnection(OUT PUNREGISTERPHYSICALCONNECTION *OutConnection)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
NTSTATUS NTAPI NewDispatchObject(IN PIRP Irp, IN IIrpTarget *Target, IN ULONG CreateItemCount, IN PKSOBJECT_CREATE_ITEM CreateItem)
#define NT_SUCCESS(StatCode)
static void cleanup(void)
KSDDKAPI NTSTATUS NTAPI KsReferenceSoftwareBusObject(IN KSDEVICE_HEADER Header)
#define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet, PropGeneral, PropInstances, PropIntersection)
NTSTATUS NTAPI PcNewRegistryKey(OUT PREGISTRYKEY *OutRegistryKey, IN PUNKNOWN OuterUnknown OPTIONAL, IN ULONG RegistryKeyType, IN ACCESS_MASK DesiredAccess, IN PVOID DeviceObject OPTIONAL, IN PVOID SubDevice OPTIONAL, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN ULONG CreateOptions OPTIONAL, OUT PULONG Disposition OPTIONAL)
NTSTATUS NewIDrmPort(OUT PDRMPORT2 *OutPort)
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
NTSTATUS NewPortFilterTopology(OUT IPortFilterTopology **OutFilter)
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
#define DEFINE_KSPROPERTY_TOPOLOGYSET(TopologySet, Handler)
struct _KSEVENT_ENTRY * PKSEVENT_ENTRY
#define KSPROPSETID_Topology
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
VOID FreeItem(IN PVOID Item)
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define IoCompleteRequest
#define STATUS_NOT_IMPLEMENTED
NTSTATUS NTAPI IoGetDeviceProperty(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_REGISTRY_PROPERTY DeviceProperty, IN ULONG BufferLength, OUT PVOID PropertyBuffer, OUT PULONG ResultLength)
KSPROPERTY_SET TopologyPropertySet[]
NTSTATUS NTAPI PcCreatePinDispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PMINIPORTTOPOLOGY GetTopologyMiniport(PPORTTOPOLOGY Port)
NTSTATUS NTAPI PcCreateItemDispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NewPortTopology(OUT PPORT *OutPort)
static GUID InterfaceGuids[2]
IRegistryKey * PREGISTRYKEY
IMiniportTopology * PMINIPORTTOPOLOGY
IResourceList * PRESOURCELIST
IPortEvents * PPORTEVENTS
IUnregisterSubdevice * PUNREGISTERSUBDEVICE
IPortClsVersion * PPORTCLSVERSION
IUnregisterPhysicalConnection * PUNREGISTERPHYSICALCONNECTION
IPortTopology * PPORTTOPOLOGY
IPowerNotify * PPOWERNOTIFY
NTSTATUS NTAPI PinPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
NTSTATUS NTAPI NewIUnregisterSubdevice(OUT PUNREGISTERSUBDEVICE *OutDevice)
NTSTATUS NTAPI PcCreateSubdeviceDescriptor(OUT SUBDEVICE_DESCRIPTOR **OutSubdeviceDescriptor, IN ULONG InterfaceCount, IN GUID *InterfaceGuids, IN ULONG IdentifierCount, IN KSIDENTIFIER *Identifier, IN ULONG FilterPropertiesCount, IN KSPROPERTY_SET *FilterProperties, IN ULONG Unknown1, IN ULONG Unknown2, IN ULONG PinPropertiesCount, IN KSPROPERTY_SET *PinProperties, IN ULONG EventSetCount, IN KSEVENT_SET *EventSet, IN PPCFILTER_DESCRIPTOR FilterDescription)
#define PC_ASSERT_IRQL_EQUAL(x)
NTSTATUS NewPortClsVersion(OUT PPORTCLSVERSION *OutVersion)
#define PC_ASSERT_IRQL(x)
NTSTATUS NTAPI TopologyPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
PULONG MinorVersion OPTIONAL
base of all file and directory entries
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID PropertyBuffer
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG CreateOptions
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
#define IsEqualGUIDAligned(guid1, guid2)