ReactOS  0.4.15-dev-4853-g3a72a52
port_wavepci.cpp
Go to the documentation of this file.
1 /*
2  * COPYRIGHT: See COPYING in the top level directory
3  * PROJECT: ReactOS Kernel Streaming
4  * FILE: drivers/wdm/audio/backpln/portcls/port_wavepci.cpp
5  * PURPOSE: Wave PCI Port driver
6  * PROGRAMMER: Johannes Anderwald
7  */
8 
9 #include "private.hpp"
10 
11 #ifndef YDEBUG
12 #define NDEBUG
13 #endif
14 
15 #include <debug.h>
16 
17 class CPortWavePci : public CUnknownImpl<IPortWavePci, IPortEvents, ISubdevice, IServiceSink>
18 {
19 public:
21 
26  CPortWavePci(IUnknown *OuterUnknown){}
27  virtual ~CPortWavePci() {}
28 
29 protected:
30 
38  IPortFilterWavePci * m_Filter;
39 
42 
43  friend PDEVICE_OBJECT GetDeviceObjectFromPortWavePci(IPortWavePci* iface);
45 
46 };
47 
48 static GUID InterfaceGuids[3] =
49 {
50  {
52  0x6994AD04, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
53  },
54  {
56  0x65E8773EL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
57  },
58  {
60  0x65E8773DL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
61  }
62 };
63 
64 DEFINE_KSPROPERTY_TOPOLOGYSET(PortFilterWavePciTopologySet, TopologyPropertyHandler);
66 
67 KSPROPERTY_SET WavePciPropertySet[] =
68 {
69  {
71  sizeof(PortFilterWavePciTopologySet) / sizeof(KSPROPERTY_ITEM),
72  (const KSPROPERTY_ITEM*)&PortFilterWavePciTopologySet,
73  0,
74  NULL
75  },
76  {
78  sizeof(PortFilterWavePciPinSet) / sizeof(KSPROPERTY_ITEM),
79  (const KSPROPERTY_ITEM*)&PortFilterWavePciPinSet,
80  0,
81  NULL
82  }
83 };
84 
85 
86 //---------------------------------------------------------------
87 // IPortEvents
88 //
89 
90 void
91 NTAPI
92 CPortWavePci::AddEventToEventList(
93  IN PKSEVENT_ENTRY EventEntry)
94 {
95  KIRQL OldIrql;
96 
98 
100  InsertTailList(&m_EventList, &EventEntry->ListEntry);
102 }
103 
104 
105 
106 void
107 NTAPI
108 CPortWavePci::GenerateEventList(
109  IN GUID* Set OPTIONAL,
110  IN ULONG EventId,
111  IN BOOL PinEvent,
112  IN ULONG PinId,
113  IN BOOL NodeEvent,
114  IN ULONG NodeId)
115 {
117 }
118 //---------------------------------------------------------------
119 // IServiceSink
120 //
121 
122 VOID
123 NTAPI
124 CPortWavePci::RequestService()
125 {
126  //DPRINT("IServiceSink_fnRequestService entered\n");
127  if (m_Miniport)
128  {
129  m_Miniport->Service();
130  }
131 }
132 
133 //---------------------------------------------------------------
134 // IPortWavePci
135 //
136 
137 NTSTATUS
138 NTAPI
140  IN REFIID refiid,
141  OUT PVOID* Output)
142 {
144 
145  DPRINT("IPortWavePci_fnQueryInterface entered\n");
146 
147  if (IsEqualGUIDAligned(refiid, IID_IPortWavePci) ||
148  IsEqualGUIDAligned(refiid, IID_IUnknown) ||
149  IsEqualGUIDAligned(refiid, IID_IPort))
150  {
151  *Output = PVOID(PPORTWAVEPCI(this));
152  PUNKNOWN(*Output)->AddRef();
153  return STATUS_SUCCESS;
154  }
155  else if (IsEqualGUIDAligned(refiid, IID_IServiceSink))
156  {
157  *Output = PVOID(PSERVICESINK(this));
158  PUNKNOWN(*Output)->AddRef();
159  return STATUS_SUCCESS;
160  }
161  else if (IsEqualGUIDAligned(refiid, IID_IPortEvents))
162  {
163  *Output = PVOID(PPORTEVENTS(this));
164  PUNKNOWN(*Output)->AddRef();
165  return STATUS_SUCCESS;
166  }
167  else if (IsEqualGUIDAligned(refiid, IID_ISubdevice))
168  {
169  *Output = PVOID(PSUBDEVICE(this));
170  PUNKNOWN(*Output)->AddRef();
171  return STATUS_SUCCESS;
172  }
173  else if (IsEqualGUIDAligned(refiid, IID_IDrmPort) ||
174  IsEqualGUIDAligned(refiid, IID_IDrmPort2))
175  {
176  return NewIDrmPort((PDRMPORT2*)Output);
177  }
178  else if (IsEqualGUIDAligned(refiid, IID_IPortClsVersion))
179  {
181  }
182  else if (IsEqualGUIDAligned(refiid, IID_IUnregisterSubdevice))
183  {
185  }
186  else if (IsEqualGUIDAligned(refiid, IID_IUnregisterPhysicalConnection))
187  {
189  }
190 
192  {
193  DPRINT("IPortWavePci_fnQueryInterface no interface!!! iface %S\n", GuidString.Buffer);
195  }
196 
197  return STATUS_UNSUCCESSFUL;
198 }
199 
200 NTSTATUS
201 NTAPI
204  IN PIRP Irp,
205  IN PUNKNOWN UnknownMiniport,
206  IN PUNKNOWN UnknownAdapter OPTIONAL,
208 {
209  IMiniportWavePci * Miniport;
210  PSERVICEGROUP ServiceGroup = 0;
213  PPOWERNOTIFY PowerNotify;
214 
215  DPRINT("IPortWavePci_fnInit entered with This %p, DeviceObject %p Irp %p UnknownMiniport %p, UnknownAdapter %p ResourceList %p\n",
216  this, DeviceObject, Irp, UnknownMiniport, UnknownAdapter, ResourceList);
218 
219  Status = UnknownMiniport->QueryInterface(IID_IMiniportWavePci, (PVOID*)&Miniport);
220  if (!NT_SUCCESS(Status))
221  {
222  DPRINT("IPortWavePci_fnInit called with invalid IMiniport adapter\n");
224  }
225 
226  // Initialize port object
227  m_Miniport = Miniport;
229 
232 
233  // increment reference on miniport adapter
234  Miniport->AddRef();
235 
236  Status = Miniport->Init(UnknownAdapter, ResourceList, this, &ServiceGroup);
237  if (!NT_SUCCESS(Status))
238  {
239  DPRINT("IPortWavePci_fnInit failed with %x\n", Status);
240 
241  // release reference on miniport adapter
242  Miniport->Release();
243  return Status;
244  }
245 
246  // check if the miniport adapter provides a valid device descriptor
247  Status = Miniport->GetDescription(&m_pDescriptor);
248  if (!NT_SUCCESS(Status))
249  {
250  DPRINT("failed to get description\n");
251  Miniport->Release();
252  return Status;
253  }
254 
255  // create the subdevice descriptor
257  3,
259  0,
260  NULL,
261  2,
263  0,
264  0,
265  0,
266  NULL,
267  0,
268  NULL,
269  m_pDescriptor);
270 
271 
272  if (!NT_SUCCESS(Status))
273  {
274  DPRINT("PcCreateSubdeviceDescriptor failed with %x\n", Status);
275  Miniport->Release();
276  return Status;
277  }
278 
279  // did we get a service group
280  if (ServiceGroup)
281  {
282  // store service group in context
283  m_ServiceGroup = ServiceGroup;
284 
285  // add ourselves to service group which is called when miniport receives an isr
286  m_ServiceGroup->AddMember(PSERVICESINK(this));
287 
288  // increment reference on service group
289  m_ServiceGroup->AddRef();
290  }
291 
292  // store for node property requests
293  m_SubDeviceDescriptor->UnknownMiniport = UnknownMiniport;
294 
295  // check if it supports IPinCount interface
296  Status = UnknownMiniport->QueryInterface(IID_IPinCount, (PVOID*)&PinCount);
297  if (NT_SUCCESS(Status))
298  {
299  // store IPinCount interface
301  }
302 
303  // does the Miniport adapter support IPowerNotify interface*/
304  Status = UnknownMiniport->QueryInterface(IID_IPowerNotify, (PVOID*)&PowerNotify);
305  if (NT_SUCCESS(Status))
306  {
307  // store reference
308  m_pPowerNotify = PowerNotify;
309  }
310 
311  DPRINT("IPortWavePci_Init successfully initialized\n");
312  return STATUS_SUCCESS;
313 }
314 
315 NTSTATUS
316 NTAPI
317 CPortWavePci::NewRegistryKey(
318  OUT PREGISTRYKEY *OutRegistryKey,
319  IN PUNKNOWN OuterUnknown OPTIONAL,
320  IN ULONG RegistryKeyType,
325 {
326  DPRINT("IPortWavePci_fnNewRegistryKey entered\n");
328 
329  return PcNewRegistryKey(OutRegistryKey,
330  OuterUnknown,
331  RegistryKeyType,
334  (ISubdevice*)this,
337  Disposition);
338 }
339 
340 NTSTATUS
341 NTAPI
342 CPortWavePci::GetDeviceProperty(
343  IN DEVICE_REGISTRY_PROPERTY DeviceRegistryProperty,
347 {
348  DPRINT("IPortWavePci_fnGetDeviceProperty entered\n");
350 
352 }
353 
354 NTSTATUS
355 NTAPI
356 CPortWavePci::NewMasterDmaChannel(
357  OUT PDMACHANNEL *DmaChannel,
358  IN PUNKNOWN OuterUnknown OPTIONAL,
362  IN BOOLEAN Dma32BitAddresses,
364  IN BOOLEAN IgnoreCount,
365  IN DMA_WIDTH DmaWidth,
366  IN DMA_SPEED DmaSpeed,
368  IN ULONG DmaPort)
369 {
372 
373  DPRINT("IPortWavePci_fnNewMasterDmaChannel This %p entered\n", this);
375 
376  Status = PcDmaMasterDescription(ResourceList, ScatterGather, Dma32BitAddresses, IgnoreCount, Dma64BitAddresses, DmaWidth, DmaSpeed, MaximumLength, DmaPort, &DeviceDescription);
377  if (NT_SUCCESS(Status))
378  {
379  return PcNewDmaChannel(DmaChannel, OuterUnknown, PoolType, &DeviceDescription, m_pDeviceObject);
380  }
381 
382  return Status;
383 }
384 
385 VOID
386 NTAPI
388  IN PSERVICEGROUP ServiceGroup)
389 {
390  //DPRINT("IPortWavePci_fnNotify entered %p, ServiceGroup %p\n", This, ServiceGroup);
391 
392  if (ServiceGroup)
393  {
394  ServiceGroup->RequestService ();
395  }
396 }
397 
398 //---------------------------------------------------------------
399 // ISubdevice interface
400 //
401 
402 NTSTATUS
403 NTAPI
404 CPortWavePci::NewIrpTarget(
405  OUT struct IIrpTarget **OutTarget,
406  IN PCWSTR Name,
410  IN PIRP Irp,
411  IN KSOBJECT_CREATE *CreateObject)
412 {
414  IPortFilterWavePci * Filter;
415 
416  DPRINT("ISubDevice_NewIrpTarget this %p\n", this);
417 
418  if (m_Filter)
419  {
420  *OutTarget = (IIrpTarget*)m_Filter;
421  return STATUS_SUCCESS;
422  }
423 
425  if (!NT_SUCCESS(Status))
426  {
427  return Status;
428  }
429 
430  Status = Filter->Init((IPortWavePci*)this);
431  if (!NT_SUCCESS(Status))
432  {
433  Filter->Release();
434  return Status;
435  }
436 
437  *OutTarget = (IIrpTarget*)Filter;
438  m_Filter = Filter;
439  return Status;
440 }
441 
442 NTSTATUS
443 NTAPI
444 CPortWavePci::ReleaseChildren()
445 {
447  return STATUS_UNSUCCESSFUL;
448 }
449 
450 NTSTATUS
451 NTAPI
454 {
455  DPRINT("ISubDevice_GetDescriptor this %p\n", this);
457  return STATUS_SUCCESS;
458 }
459 
460 NTSTATUS
461 NTAPI
462 CPortWavePci::DataRangeIntersection(
463  IN ULONG PinId,
464  IN PKSDATARANGE DataRange,
465  IN PKSDATARANGE MatchingDataRange,
467  OUT PVOID ResultantFormat OPTIONAL,
468  OUT PULONG ResultantFormatLength)
469 {
470  DPRINT("ISubDevice_DataRangeIntersection this %p\n", this);
471 
472  if (m_Miniport)
473  {
474  return m_Miniport->DataRangeIntersection (PinId, DataRange, MatchingDataRange, OutputBufferLength, ResultantFormat, ResultantFormatLength);
475  }
476 
477  return STATUS_UNSUCCESSFUL;
478 }
479 
480 NTSTATUS
481 NTAPI
482 CPortWavePci::PowerChangeNotify(
484 {
485  if (m_pPowerNotify)
486  {
487  m_pPowerNotify->PowerChangeNotify(PowerState);
488  }
489 
490  return STATUS_SUCCESS;
491 }
492 
493 NTSTATUS
494 NTAPI
496  IN ULONG PinId,
497  IN OUT PULONG FilterNecessary,
498  IN OUT PULONG FilterCurrent,
499  IN OUT PULONG FilterPossible,
500  IN OUT PULONG GlobalCurrent,
501  IN OUT PULONG GlobalPossible)
502 {
503  if (m_pPinCount)
504  {
505  m_pPinCount->PinCount(PinId, FilterNecessary, FilterCurrent, FilterPossible, GlobalCurrent, GlobalPossible);
506  return STATUS_SUCCESS;
507  }
508 
509  // FIXME
510  // scan filter descriptor
511 
512  return STATUS_UNSUCCESSFUL;
513 }
514 
515 
516 NTSTATUS
518  OUT PPORT* OutPort)
519 {
520  CPortWavePci * Port;
522 
524  if (!Port)
526 
527  Status = Port->QueryInterface(IID_IPort, (PVOID*)OutPort);
528 
529  if (!NT_SUCCESS(Status))
530  {
531  delete Port;
532  }
533 
534  DPRINT("NewPortWavePci %p Status %u\n", Port, Status);
535  return Status;
536 
537 }
538 
539 
542  IPortWavePci* iface)
543 {
544  CPortWavePci * This = (CPortWavePci*)iface;
545  return This->m_pDeviceObject;
546 }
547 
550  PPORTWAVEPCI iface)
551 {
552  CPortWavePci * This = (CPortWavePci*)iface;
553  return This->m_Miniport;
554 }
IServiceGroup * PSERVICEGROUP
Definition: portcls.h:614
DEVICE_REGISTRY_PROPERTY
Definition: iotypes.h:1194
BOOL WINAPI SHIM_OBJ_NAME() Notify(DWORD fdwReason, PVOID ptr)
IPortEvents * PPORTEVENTS
Definition: portcls.h:2119
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
Definition: dumpinfo.c:39
static PWSTR GuidString
Definition: apphelp.c:93
NTSTATUS NTAPI PinPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
CPPORT Port[4]
Definition: headless.c:35
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define IN
Definition: typedefs.h:39
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3767
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2654
IDmaChannel * PDMACHANNEL
Definition: portcls.h:782
#define REFIID
Definition: guiddef.h:118
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
Definition: wdfresource.h:339
IPinCount * PPINCOUNT
Definition: portcls.h:2090
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
IUnknown * PUNKNOWN
Definition: com_apitest.h:45
#define TAG_PORTCLASS
Definition: private.hpp:24
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
LONG NTSTATUS
Definition: precomp.h:26
VOID NTAPI KeAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL OldIrql)
Definition: spinlock.c:50
enum _DMA_WIDTH DMA_WIDTH
IServiceSink * PSERVICESINK
Definition: portcls.h:569
return pList GetDescriptor(Index)
KSPROPERTY_SET WavePciPropertySet[]
IUnregisterSubdevice * PUNREGISTERSUBDEVICE
Definition: portcls.h:633
BOOL Init(PUSERCONNECT UserCon)
Definition: dllmain.c:385
NTSTATUS NewPortWavePci(OUT PPORT *OutPort)
#define InsertTailList(ListHead, Entry)
_In_ const GUID _In_ ULONG PinCount
Definition: strmini.h:504
DEFINE_KSPROPERTY_TOPOLOGYSET(PortFilterWavePciTopologySet, TopologyPropertyHandler)
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
Definition: wdfresource.h:304
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
Definition: cmfuncs.h:50
PDEVICE_OBJECT m_pDeviceObject
static BOOL Set
Definition: pageheap.c:10
#define IsEqualGUIDAligned(guid1, guid2)
Definition: wdm.template.h:235
_In_ WDFREQUEST _In_ size_t OutputBufferLength
Definition: wdfio.h:318
UCHAR KIRQL
Definition: env_spec_w32.h:591
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
PSUBDEVICE_DESCRIPTOR m_SubDeviceDescriptor
PMINIPORTWAVEPCI GetWavePciMiniport(PPORTWAVEPCI iface)
#define L(x)
Definition: ntvdm.h:50
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING DeviceDescription
Definition: wdfpdo.h:430
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
_In_ PIRP Irp
Definition: csq.h:116
unsigned int BOOL
Definition: ntddk_ex.h:94
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
#define STDMETHODIMP
Definition: basetyps.h:43
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
Definition: kefuncs.h:240
_In_ BOOLEAN Dma64BitAddresses
Definition: ndis.h:4652
IPort * PPORT
Definition: portcls.h:1103
DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PortFilterWavePciPinSet, PinPropertyHandler, PinPropertyHandler, PinPropertyHandler)
unsigned char BOOLEAN
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)
Definition: undoc.cpp:730
NTSTATUS NTAPI IoGetDeviceProperty(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_REGISTRY_PROPERTY DeviceProperty, IN ULONG BufferLength, OUT PVOID PropertyBuffer, OUT PULONG ResultLength)
Definition: pnpmgr.c:1952
IMiniportWavePci * PMINIPORTWAVEPCI
Definition: portcls.h:1695
void * PVOID
Definition: retypes.h:9
LIST_ENTRY m_EventList
IUnregisterPhysicalConnection * PUNREGISTERPHYSICALCONNECTION
Definition: portcls.h:675
#define KSPROPSETID_Topology
Definition: ks.h:842
Status
Definition: gdiplustypes.h:24
IRegistryKey * PREGISTRYKEY
Definition: portcls.h:1009
_In_ WDFDMATRANSACTION _In_ size_t MaximumLength
IDrmPort2 * PDRMPORT2
Definition: portcls.h:2226
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
INT POOL_TYPE
Definition: typedefs.h:78
const GUID IID_IUnknown
nsrefcnt Release()
static GUID InterfaceGuids[3]
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
NTSTATUS NTAPI TopologyPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
friend PMINIPORTWAVEPCI GetWavePciMiniport(PPORTWAVEPCI iface)
#define PC_ASSERT_IRQL_EQUAL(x)
Definition: private.hpp:31
ULONG AddRef()
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
friend PDEVICE_OBJECT GetDeviceObjectFromPortWavePci(IPortWavePci *iface)
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)
Definition: registry.cpp:268
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
Definition: kefuncs.h:792
Definition: arc.h:85
NTSTATUS NTAPI NewIUnregisterSubdevice(OUT PUNREGISTERSUBDEVICE *OutDevice)
Definition: unregister.cpp:122
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID PropertyBuffer
Definition: wdfdevice.h:4431
Definition: typedefs.h:119
NTSTATUS NewPortFilterWavePci(OUT IPortFilterWavePci **OutFilter)
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG CreateOptions
Definition: wdfregistry.h:112
enum _DMA_SPEED DMA_SPEED
IResourceList * PRESOURCELIST
Definition: portcls.h:442
ISubdevice * PSUBDEVICE
Definition: interfaces.hpp:305
NTSTATUS NTAPI PcNewDmaChannel(OUT PDMACHANNEL *OutDmaChannel, IN PUNKNOWN OuterUnknown OPTIONAL, IN POOL_TYPE PoolType, IN PDEVICE_DESCRIPTION DeviceDescription, IN PDEVICE_OBJECT DeviceObject)
Definition: dma_slave.cpp:486
PSERVICEGROUP m_ServiceGroup
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
Definition: pci.h:361
NTSTATUS NewPortClsVersion(OUT PPORTCLSVERSION *OutVersion)
Definition: version.cpp:71
PPCFILTER_DESCRIPTOR m_pDescriptor
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
Definition: wdfdevice.h:3032
NTSTATUS NTAPI PcDmaMasterDescription(IN PRESOURCELIST ResourceList OPTIONAL, IN BOOLEAN ScatterGather, IN BOOLEAN Dma32BitAddresses, IN BOOLEAN IgnoreCount, IN BOOLEAN Dma64BitAddresses, IN DMA_WIDTH DmaWidth, IN DMA_SPEED DmaSpeed, IN ULONG MaximumLength, IN ULONG DmaPort, OUT PDEVICE_DESCRIPTION DeviceDescription)
Definition: api.cpp:213
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
PPINCOUNT m_pPinCount
IPortWavePci * PPORTWAVEPCI
Definition: portcls.h:1246
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
PPOWERNOTIFY m_pPowerNotify
#define KSPROPSETID_Pin
Definition: ks.h:617
unsigned int * PULONG
Definition: retypes.h:1
_In_ struct _IRP _In_ struct _SCATTER_GATHER_LIST * ScatterGather
Definition: iotypes.h:2375
#define NULL
Definition: types.h:112
#define KeReleaseSpinLock(sl, irql)
Definition: env_spec_w32.h:627
virtual ~CPortWavePci()
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
IPowerNotify * PPOWERNOTIFY
Definition: portcls.h:2057
PMINIPORTWAVEPCI m_Miniport
#define OUT
Definition: typedefs.h:40
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3810
unsigned int ULONG
Definition: retypes.h:1
#define UNIMPLEMENTED
Definition: debug.h:115
NTSTATUS NTAPI NewIUnregisterPhysicalConnection(OUT PUNREGISTERPHYSICALCONNECTION *OutConnection)
Definition: connection.cpp:128
struct _KSEVENT_ENTRY * PKSEVENT_ENTRY
Definition: ks.h:2101
#define STATUS_SUCCESS
Definition: shellext.h:65
#define DPRINT
Definition: sndvol32.h:71
NTSTATUS NewIDrmPort(OUT PDRMPORT2 *OutPort)
Definition: drm_port.cpp:125
PDEVICE_OBJECT GetDeviceObjectFromPortWavePci(IPortWavePci *iface)
KSPIN_LOCK m_EventListLock
nsrefcnt AddRef()
ULONG ACCESS_MASK
Definition: nt_native.h:40
CPortWavePci(IUnknown *OuterUnknown)
IPortFilterWavePci * m_Filter
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
IPortClsVersion * PPORTCLSVERSION
Definition: portcls.h:2263