PMINIPORTWAVEPCI m_Miniport;
PDEVICE_OBJECT m_pDeviceObject;
- BOOL m_bInitialized;
- PRESOURCELIST m_pResourceList;
PSERVICEGROUP m_ServiceGroup;
PPINCOUNT m_pPinCount;
PPOWERNOTIFY m_pPowerNotify;
static GUID InterfaceGuids[3] =
{
+ {
+ /// KS_CATEGORY_AUDIO
+ 0x6994AD04, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
+ },
{
/// KSCATEGORY_RENDER
0x65E8773EL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
{
/// KSCATEGORY_CAPTURE
0x65E8773DL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
- },
- {
- /// KS_CATEGORY_AUDIO
- 0x6994AD04, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
}
};
DPRINT("IPortWavePci_fnQueryInterface entered\n");
- if (IsEqualGUIDAligned(refiid, IID_IPortWavePci) ||
- IsEqualGUIDAligned(refiid, IID_IUnknown))
+ if (IsEqualGUIDAligned(refiid, IID_IPortWavePci) ||
+ IsEqualGUIDAligned(refiid, IID_IUnknown) ||
+ IsEqualGUIDAligned(refiid, IID_IPort))
{
*Output = PVOID(PPORTWAVEPCI(this));
PUNKNOWN(*Output)->AddRef();
else if (IsEqualGUIDAligned(refiid, IID_IServiceSink))
{
*Output = PVOID(PSERVICESINK(this));
- PUNKNOWN(*Output)->AddRef();
+ PUNKNOWN(*Output)->AddRef();
return STATUS_SUCCESS;
}
else if (IsEqualGUIDAligned(refiid, IID_IPortEvents))
else if (IsEqualGUIDAligned(refiid, IID_ISubdevice))
{
*Output = PVOID(PSUBDEVICE(this));
- PUNKNOWN(*Output)->AddRef();
+ PUNKNOWN(*Output)->AddRef();
return STATUS_SUCCESS;
}
+ else if (IsEqualGUIDAligned(refiid, IID_IDrmPort) ||
+ IsEqualGUIDAligned(refiid, IID_IDrmPort2))
+ {
+ return NewIDrmPort((PDRMPORT2*)Output);
+ }
else if (IsEqualGUIDAligned(refiid, IID_IPortClsVersion))
{
return NewPortClsVersion((PPORTCLSVERSION*)Output);
if (RtlStringFromGUID(refiid, &GuidString) == STATUS_SUCCESS)
{
- DPRINT1("IPortWavePci_fnQueryInterface no interface!!! iface %S\n", GuidString.Buffer);
+ DPRINT("IPortWavePci_fnQueryInterface no interface!!! iface %S\n", GuidString.Buffer);
RtlFreeUnicodeString(&GuidString);
}
this, DeviceObject, Irp, UnknownMiniport, UnknownAdapter, ResourceList);
PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
- if (m_bInitialized)
- {
- DPRINT("IPortWavePci_fnInit called again\n");
- return STATUS_SUCCESS;
- }
-
Status = UnknownMiniport->QueryInterface(IID_IMiniportWavePci, (PVOID*)&Miniport);
if (!NT_SUCCESS(Status))
{
// Initialize port object
m_Miniport = Miniport;
m_pDeviceObject = DeviceObject;
- m_bInitialized = TRUE;
- m_pResourceList = ResourceList;
+
InitializeListHead(&m_EventList);
KeInitializeSpinLock(&m_EventListLock);
// increment reference on miniport adapter
Miniport->AddRef();
- // increment reference on resource list
- ResourceList->AddRef();
Status = Miniport->Init(UnknownAdapter, ResourceList, this, &ServiceGroup);
if (!NT_SUCCESS(Status))
{
DPRINT("IPortWavePci_fnInit failed with %x\n", Status);
- m_bInitialized = FALSE;
+
// release reference on miniport adapter
Miniport->Release();
- // increment reference on resource list
- ResourceList->Release();
return Status;
}
Status = Miniport->GetDescription(&m_pDescriptor);
if (!NT_SUCCESS(Status))
{
- DPRINT1("failed to get description\n");
+ DPRINT("failed to get description\n");
Miniport->Release();
- m_bInitialized = FALSE;
return Status;
}
if (!NT_SUCCESS(Status))
{
- DPRINT1("PcCreateSubdeviceDescriptor failed with %x\n", Status);
+ DPRINT("PcCreateSubdeviceDescriptor failed with %x\n", Status);
Miniport->Release();
- m_bInitialized = FALSE;
return Status;
}
m_ServiceGroup->AddRef();
}
+ // store for node property requests
+ m_SubDeviceDescriptor->UnknownMiniport = UnknownMiniport;
+
// check if it supports IPinCount interface
Status = UnknownMiniport->QueryInterface(IID_IPinCount, (PVOID*)&PinCount);
if (NT_SUCCESS(Status))
DPRINT("IPortWavePci_fnNewRegistryKey entered\n");
PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
- if (!m_bInitialized)
- {
- DPRINT("IPortWavePci_fnNewRegistryKey called w/o initiazed\n");
- return STATUS_UNSUCCESSFUL;
- }
-
return PcNewRegistryKey(OutRegistryKey,
OuterUnknown,
RegistryKeyType,
DesiredAccess,
m_pDeviceObject,
- NULL,//FIXME
+ (ISubdevice*)this,
ObjectAttributes,
CreateOptions,
Disposition);
DPRINT("IPortWavePci_fnGetDeviceProperty entered\n");
PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
- if (!m_bInitialized)
- {
- DPRINT("IPortWavePci_fnNewRegistryKey called w/o initiazed\n");
- return STATUS_UNSUCCESSFUL;
- }
-
return IoGetDeviceProperty(m_pDeviceObject, DeviceRegistryProperty, BufferLength, PropertyBuffer, ReturnLength);
}
CPortWavePci::Notify(
IN PSERVICEGROUP ServiceGroup)
{
- //IPortWavePciImpl * This = (IPortWavePciImpl*)iface;
-
//DPRINT("IPortWavePci_fnNotify entered %p, ServiceGroup %p\n", This, ServiceGroup);
if (ServiceGroup)
NTAPI
CPortWavePci::NewIrpTarget(
OUT struct IIrpTarget **OutTarget,
- IN WCHAR * Name,
+ IN PCWSTR Name,
IN PUNKNOWN Unknown,
IN POOL_TYPE PoolType,
IN PDEVICE_OBJECT DeviceObject,
NTAPI
CPortWavePci::ReleaseChildren()
{
- //IPortWavePciImpl * This = (IPortWavePciImpl*)CONTAINING_RECORD(iface, IPortWavePciImpl, lpVtblSubDevice);
-
UNIMPLEMENTED
return STATUS_UNSUCCESSFUL;
}
CPortWavePci::GetDescriptor(
IN SUBDEVICE_DESCRIPTOR ** Descriptor)
{
- DPRINT1("ISubDevice_GetDescriptor this %p\n", this);
+ DPRINT("ISubDevice_GetDescriptor this %p\n", this);
*Descriptor = m_SubDeviceDescriptor;
return STATUS_SUCCESS;
}