ReactOS  0.4.13-dev-464-g6b95727
port_wavecyclic.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_wavecyclic.cpp
5  * PURPOSE: WaveCyclic 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 
18 
19 class CPortWaveCyclic : public IPortWaveCyclic,
20  public IPortEvents,
21  public ISubdevice
22 {
23 public:
25 
27  {
29  return m_Ref;
30  }
32  {
34  if (!m_Ref)
35  {
36  //delete this;
37  return 0;
38  }
39  return m_Ref;
40  }
44  CPortWaveCyclic(IUnknown *OuterUnknown){}
45  virtual ~CPortWaveCyclic(){}
46 
47 protected:
54  IPortFilterWaveCyclic * m_Filter;
55 
57 
58  friend PMINIPORTWAVECYCLIC GetWaveCyclicMiniport(IN IPortWaveCyclic* iface);
60 };
61 
62 GUID KSPROPERTY_SETID_Topology = {0x720D4AC0L, 0x7533, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
63 
64 static GUID InterfaceGuids[4] =
65 {
66  {
67  //KS_CATEGORY_AUDIO
68  0x6994AD04, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
69  },
70  {
72  0x65E8773EL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
73  },
74  {
76  0x65E8773DL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
77  },
78  {
80  0xFBF6F530L, 0x07B9, 0x11D2, {0xA7, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}
81  }
82 
83 };
84 
85 DEFINE_KSPROPERTY_TOPOLOGYSET(PortFilterWaveCyclicTopologySet, TopologyPropertyHandler);
87 
88 KSPROPERTY_SET WaveCyclicPropertySet[] =
89 {
90  {
92  sizeof(PortFilterWaveCyclicTopologySet) / sizeof(KSPROPERTY_ITEM),
93  (const KSPROPERTY_ITEM*)&PortFilterWaveCyclicTopologySet,
94  0,
95  NULL
96  },
97  {
99  sizeof(PortFilterWaveCyclicPinSet) / sizeof(KSPROPERTY_ITEM),
100  (const KSPROPERTY_ITEM*)&PortFilterWaveCyclicPinSet,
101  0,
102  NULL
103  }
104 };
105 
106 //KSEVENTSETID_LoopedStreaming, Type = KSEVENT_LOOPEDSTREAMING_POSITION
107 //KSEVENTSETID_Connection, Type = KSEVENT_CONNECTION_ENDOFSTREAM,
108 
109 
110 //---------------------------------------------------------------
111 // IPortEvents
112 //
113 
114 void
115 NTAPI
116 CPortWaveCyclic::AddEventToEventList(
117  IN PKSEVENT_ENTRY EventEntry)
118 {
120 }
121 
122 
123 void
124 NTAPI
125 CPortWaveCyclic::GenerateEventList(
126  IN GUID* Set OPTIONAL,
127  IN ULONG EventId,
128  IN BOOL PinEvent,
129  IN ULONG PinId,
130  IN BOOL NodeEvent,
131  IN ULONG NodeId)
132 {
134 }
135 
136 //---------------------------------------------------------------
137 // IUnknown interface functions
138 //
139 
140 NTSTATUS
141 NTAPI
143  IN REFIID refiid,
144  OUT PVOID* Output)
145 {
147 
148  if (IsEqualGUIDAligned(refiid, IID_IPortWaveCyclic) ||
149  IsEqualGUIDAligned(refiid, IID_IPort) ||
151  {
152  *Output = PVOID(PPORTWAVECYCLIC(this));
153  PUNKNOWN(*Output)->AddRef();
154  return STATUS_SUCCESS;
155  }
156  else if (IsEqualGUIDAligned(refiid, IID_IPortEvents))
157  {
158  *Output = PVOID(PPORTEVENTS(this));
159  PUNKNOWN(*Output)->AddRef();
160  return STATUS_SUCCESS;
161  }
162  else if (IsEqualGUIDAligned(refiid, IID_ISubdevice))
163  {
164  *Output = PVOID(PSUBDEVICE(this));
165  PUNKNOWN(*Output)->AddRef();
166  return STATUS_SUCCESS;
167  }
168  else if (IsEqualGUIDAligned(refiid, IID_IPortClsVersion))
169  {
171  }
172  else if (IsEqualGUIDAligned(refiid, IID_IDrmPort) ||
173  IsEqualGUIDAligned(refiid, IID_IDrmPort2))
174  {
175  return NewIDrmPort((PDRMPORT2*)Output);
176  }
177  else if (IsEqualGUIDAligned(refiid, IID_IUnregisterSubdevice))
178  {
180  }
181  else if (IsEqualGUIDAligned(refiid, IID_IUnregisterPhysicalConnection))
182  {
184  }
185 
187  {
188  DPRINT1("IPortWaveCyclic_fnQueryInterface no interface!!! iface %S\n", GuidString.Buffer);
190  }
191 
192  return STATUS_UNSUCCESSFUL;
193 }
194 
195 //---------------------------------------------------------------
196 // IPort interface functions
197 //
198 
199 NTSTATUS
200 NTAPI
201 CPortWaveCyclic::GetDeviceProperty(
202  IN DEVICE_REGISTRY_PROPERTY DeviceRegistryProperty,
204  OUT PVOID PropertyBuffer,
206 {
208 
209  return IoGetDeviceProperty(m_pDeviceObject, DeviceRegistryProperty, BufferLength, PropertyBuffer, ReturnLength);
210 }
211 
212 NTSTATUS
213 NTAPI
216  IN PIRP Irp,
217  IN PUNKNOWN UnknownMiniport,
218  IN PUNKNOWN UnknownAdapter OPTIONAL,
220 {
221  IMiniportWaveCyclic * Miniport;
224  PPOWERNOTIFY PowerNotify;
225 
226  DPRINT("IPortWaveCyclic_Init entered %p\n", this);
228 
229  Status = UnknownMiniport->QueryInterface(IID_IMiniportWaveCyclic, (PVOID*)&Miniport);
230  if (!NT_SUCCESS(Status))
231  {
232  DPRINT("IPortWaveCyclic_Init called with invalid IMiniport adapter\n");
234  }
235 
236  // Initialize port object
237  m_pMiniport = Miniport;
239 
240  // initialize miniport
241  Status = Miniport->Init(UnknownAdapter, ResourceList, this);
242  if (!NT_SUCCESS(Status))
243  {
244  DPRINT("IMiniportWaveCyclic_Init failed with %x\n", Status);
245  Miniport->Release();
246  return Status;
247  }
248 
249 
250  // get the miniport device descriptor
251  Status = Miniport->GetDescription(&m_pDescriptor);
252  if (!NT_SUCCESS(Status))
253  {
254  DPRINT("failed to get description\n");
255  Miniport->Release();
256  return Status;
257  }
258 
259  // create the subdevice descriptor
261  4,
263  0,
264  NULL,
265  2,
267  0,
268  0,
269  0,
270  NULL,
271  0,
272  NULL,
273  m_pDescriptor);
274 
275  if (!NT_SUCCESS(Status))
276  {
277  DPRINT("PcCreateSubdeviceDescriptor failed with %x\n", Status);
278  Miniport->Release();
279  return Status;
280  }
281 
282  // store for node property requests
283  m_SubDeviceDescriptor->UnknownMiniport = UnknownMiniport;
284 
285  // check if it supports IPinCount interface
286  Status = UnknownMiniport->QueryInterface(IID_IPinCount, (PVOID*)&PinCount);
287  if (NT_SUCCESS(Status))
288  {
289  // store IPinCount interface
291  }
292 
293  // does the Miniport adapter support IPowerNotify interface*/
294  Status = UnknownMiniport->QueryInterface(IID_IPowerNotify, (PVOID*)&PowerNotify);
295  if (NT_SUCCESS(Status))
296  {
297  // store reference
298  m_pPowerNotify = PowerNotify;
299  }
300 
301  DPRINT("IPortWaveCyclic successfully initialized\n");
302  return STATUS_SUCCESS;
303 }
304 
305 
306 NTSTATUS
307 NTAPI
308 CPortWaveCyclic::NewRegistryKey(
309  OUT PREGISTRYKEY *OutRegistryKey,
310  IN PUNKNOWN OuterUnknown OPTIONAL,
311  IN ULONG RegistryKeyType,
316 {
318 
319  return PcNewRegistryKey(OutRegistryKey, OuterUnknown, RegistryKeyType, DesiredAccess, m_pDeviceObject, (ISubdevice*)this, ObjectAttributes, CreateOptions, Disposition);
320 }
321 
322 
323 //---------------------------------------------------------------
324 // IPortWaveCyclic interface functions
325 //
326 
327 NTSTATUS
328 NTAPI
329 CPortWaveCyclic::NewMasterDmaChannel(
330  OUT PDMACHANNEL* DmaChannel,
331  IN PUNKNOWN OuterUnknown,
334  IN BOOLEAN Dma32BitAddresses,
336  IN DMA_WIDTH DmaWidth,
337  IN DMA_SPEED DmaSpeed)
338 {
341 
343 
344  Status = PcDmaMasterDescription(ResourceList, (Dma32BitAddresses | Dma64BitAddresses), Dma32BitAddresses, 0, Dma64BitAddresses, DmaWidth, DmaSpeed, MaximumLength, 0, &DeviceDescription);
345  if (NT_SUCCESS(Status))
346  {
347  return PcNewDmaChannel(DmaChannel, OuterUnknown, NonPagedPool, &DeviceDescription, m_pDeviceObject);
348  }
349 
350  return Status;
351 }
352 
353 NTSTATUS
354 NTAPI
355 CPortWaveCyclic::NewSlaveDmaChannel(
356  OUT PDMACHANNELSLAVE* OutDmaChannel,
357  IN PUNKNOWN OuterUnknown,
359  IN ULONG DmaIndex,
361  IN BOOLEAN DemandMode,
362  IN DMA_SPEED DmaSpeed)
363 {
365  PDMACHANNEL DmaChannel;
367 
369 
370  // FIXME
371  // Check for F-Type DMA Support
372  //
373 
374  Status = PcDmaSlaveDescription(ResourceList, DmaIndex, DemandMode, TRUE, DmaSpeed, MaximumLength, 0, &DeviceDescription);
375  if (NT_SUCCESS(Status))
376  {
377  Status = PcNewDmaChannel(&DmaChannel, OuterUnknown, NonPagedPool, &DeviceDescription, m_pDeviceObject);
378  if (NT_SUCCESS(Status))
379  {
380  Status = DmaChannel->QueryInterface(IID_IDmaChannelSlave, (PVOID*)OutDmaChannel);
381  DmaChannel->Release();
382  }
383  }
384 
385  return Status;
386 }
387 
388 VOID
389 NTAPI
391  IN PSERVICEGROUP ServiceGroup)
392 {
393  ServiceGroup->RequestService ();
394 }
395 
396 //---------------------------------------------------------------
397 // ISubdevice interface
398 //
399 
400 NTSTATUS
401 NTAPI
402 CPortWaveCyclic::NewIrpTarget(
403  OUT struct IIrpTarget **OutTarget,
404  IN PCWSTR Name,
408  IN PIRP Irp,
409  IN KSOBJECT_CREATE *CreateObject)
410 {
412  IPortFilterWaveCyclic * Filter;
413 
414  DPRINT("ISubDevice_NewIrpTarget this %p\n", this);
415 
416  // is there already an instance of the filter
417  if (m_Filter)
418  {
419  // it is, let's return the result
420  *OutTarget = (IIrpTarget*)m_Filter;
421 
422  // increment reference
423  m_Filter->AddRef();
424  return STATUS_SUCCESS;
425  }
426 
427  // create new instance of filter
429  if (!NT_SUCCESS(Status))
430  {
431  // not enough memory
432  return Status;
433  }
434 
435  // initialize the filter
436  Status = Filter->Init((IPortWaveCyclic*)this);
437  if (!NT_SUCCESS(Status))
438  {
439  // destroy filter
440  Filter->Release();
441  // return status
442  return Status;
443  }
444 
445  // store result
446  *OutTarget = (IIrpTarget*)Filter;
447  // store for later re-use
448  m_Filter = Filter;
449  // return status
450  return Status;
451 }
452 
453 
454 NTSTATUS
455 NTAPI
456 CPortWaveCyclic::ReleaseChildren()
457 {
458  DPRINT("ISubDevice_fnReleaseChildren\n");
459 
460  // release the filter
461  m_Filter->Release();
462 
463  if (m_pPinCount)
464  {
465  // release pincount interface
466  m_pPinCount->Release();
467  }
468 
469  if (m_pPowerNotify)
470  {
471  // release power notify interface
472  m_pPowerNotify->Release();
473  }
474 
475  // now release the miniport
476  m_pMiniport->Release();
477 
478  return STATUS_SUCCESS;
479 }
480 
481 
482 NTSTATUS
483 NTAPI
484 CPortWaveCyclic::GetDescriptor(
486 {
488 
490 
491  DPRINT("ISubDevice_GetDescriptor this %p desc %p\n", this, m_SubDeviceDescriptor);
492  return STATUS_SUCCESS;
493 }
494 
495 
496 NTSTATUS
497 NTAPI
498 CPortWaveCyclic::DataRangeIntersection(
499  IN ULONG PinId,
500  IN PKSDATARANGE DataRange,
501  IN PKSDATARANGE MatchingDataRange,
503  OUT PVOID ResultantFormat OPTIONAL,
504  OUT PULONG ResultantFormatLength)
505 {
506  DPRINT("ISubDevice_DataRangeIntersection this %p\n", this);
507 
508  if (m_pMiniport)
509  {
510  return m_pMiniport->DataRangeIntersection (PinId, DataRange, MatchingDataRange, OutputBufferLength, ResultantFormat, ResultantFormatLength);
511  }
512 
513  return STATUS_UNSUCCESSFUL;
514 }
515 
516 
517 NTSTATUS
518 NTAPI
519 CPortWaveCyclic::PowerChangeNotify(
521 {
522  if (m_pPowerNotify)
523  {
524  m_pPowerNotify->PowerChangeNotify(PowerState);
525  }
526 
527  return STATUS_SUCCESS;
528 }
529 
530 NTSTATUS
531 NTAPI
533  IN ULONG PinId,
534  IN OUT PULONG FilterNecessary,
535  IN OUT PULONG FilterCurrent,
536  IN OUT PULONG FilterPossible,
537  IN OUT PULONG GlobalCurrent,
538  IN OUT PULONG GlobalPossible)
539 {
540  if (m_pPinCount)
541  {
542  m_pPinCount->PinCount(PinId, FilterNecessary, FilterCurrent, FilterPossible, GlobalCurrent, GlobalPossible);
543  return STATUS_SUCCESS;
544  }
545 
546  // FIXME
547  // scan filter descriptor
548 
549  return STATUS_UNSUCCESSFUL;
550 }
551 
552 
556  IN IPortWaveCyclic* iface)
557 {
558  CPortWaveCyclic * This = (CPortWaveCyclic *)iface;
559  return This->m_pMiniport;
560 }
561 
564  PPORTWAVECYCLIC iface)
565 {
566  CPortWaveCyclic * This = (CPortWaveCyclic *)iface;
567  return This->m_pDeviceObject;
568 }
569 
570 //---------------------------------------------------------------
571 // IPortWaveCyclic constructor
572 //
573 
574 NTSTATUS
576  OUT PPORT* OutPort)
577 {
580 
582  if (!Port)
584 
585  Status = Port->QueryInterface(IID_IPort, (PVOID*)OutPort);
586 
587  if (!NT_SUCCESS(Status))
588  {
589  delete Port;
590  }
591 
592  DPRINT("NewPortWaveCyclic %p Status %u\n", Port, Status);
593  return Status;
594 }
595 
GUID IID_IDmaChannelSlave
IServiceGroup * PSERVICEGROUP
Definition: portcls.h:614
DEVICE_REGISTRY_PROPERTY
Definition: iotypes.h:1153
BOOL WINAPI SHIM_OBJ_NAME() Notify(DWORD fdwReason, PVOID ptr)
IPortEvents * PPORTEVENTS
Definition: portcls.h:2065
PDEVICE_OBJECT GetDeviceObject(PPORTWAVECYCLIC iface)
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:91
NTSTATUS NTAPI PinPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
CPPORT Port[4]
Definition: headless.c:34
const uint16_t * PCWSTR
Definition: typedefs.h:55
#define IN
Definition: typedefs.h:38
DEFINE_KSPROPERTY_TOPOLOGYSET(PortFilterWaveCyclicTopologySet, TopologyPropertyHandler)
static GUID InterfaceGuids[4]
IDmaChannel * PDMACHANNEL
Definition: portcls.h:772
#define REFIID
Definition: guiddef.h:113
#define TRUE
Definition: types.h:120
_In_ UCHAR _In_ POWER_STATE PowerState
Definition: pofuncs.h:42
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
#define PC_ASSERT(exp)
Definition: usbehci.h:17
NTSTATUS NTAPI PcDmaSlaveDescription(IN PRESOURCELIST ResourceList OPTIONAL, IN ULONG DmaIndex, IN BOOLEAN DemandMode, IN BOOLEAN AutoInitialize, IN DMA_SPEED DmaSpeed, IN ULONG MaximumLength, IN ULONG DmaPort, OUT PDEVICE_DESCRIPTION DeviceDescription)
Definition: api.cpp:244
_In_ BOOLEAN Release
Definition: classpnp.h:929
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
IPinCount * PPINCOUNT
Definition: portcls.h:2036
PPOWERNOTIFY m_pPowerNotify
_In_ PIRP Irp
Definition: csq.h:116
friend PDEVICE_OBJECT GetDeviceObject(PPORTWAVECYCLIC iface)
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
IUnknown * PUNKNOWN
Definition: com_apitest.h:45
#define TAG_PORTCLASS
Definition: private.hpp:24
LONG NTSTATUS
Definition: precomp.h:26
PMINIPORTWAVECYCLIC GetWaveCyclicMiniport(IN IPortWaveCyclic *iface)
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ ULONG _In_ ULONG OutputBufferLength
Definition: fltkernel.h:1374
enum _DMA_WIDTH DMA_WIDTH
PMINIPORTWAVECYCLIC m_pMiniport
STDMETHODIMP_(ULONG) Release()
IUnregisterSubdevice * PUNREGISTERSUBDEVICE
Definition: portcls.h:633
BOOL Init(PUSERCONNECT UserCon)
Definition: dllmain.c:367
_In_ const GUID _In_ ULONG PinCount
Definition: strmini.h:504
const MUI_LANGUAGE_RESOURCE ResourceList[]
Definition: muilanguages.h:414
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
Definition: cmfuncs.h:50
static BOOL Set
Definition: pageheap.c:10
#define IsEqualGUIDAligned(guid1, guid2)
Definition: wdm.template.h:233
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
NTSTATUS NewPortFilterWaveCyclic(OUT IPortFilterWaveCyclic **OutFilter)
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
_In_ ULONG BufferLength
Definition: usbdlib.h:225
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1802
#define STDMETHODIMP
Definition: basetyps.h:43
_In_ BOOLEAN Dma64BitAddresses
Definition: ndis.h:4652
IPort * PPORT
Definition: portcls.h:1093
virtual ~CPortWaveCyclic()
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
smooth NULL
Definition: ftsmooth.c:416
NTSTATUS NTAPI IoGetDeviceProperty(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_REGISTRY_PROPERTY DeviceProperty, IN ULONG BufferLength, OUT PVOID PropertyBuffer, OUT PULONG ResultLength)
Definition: pnpmgr.c:4210
void DPRINT(...)
Definition: polytest.cpp:61
DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PortFilterWaveCyclicPinSet, PinPropertyHandler, PinPropertyHandler, PinPropertyHandler)
IPortFilterWaveCyclic * m_Filter
void * PVOID
Definition: retypes.h:9
NTSTATUS NewPortWaveCyclic(OUT PPORT *OutPort)
IUnregisterPhysicalConnection * PUNREGISTERPHYSICALCONNECTION
Definition: portcls.h:675
#define KSPROPSETID_Topology
Definition: ks.h:872
_Must_inspect_result_ _In_ PDEVICE_DESCRIPTION DeviceDescription
Definition: iofuncs.h:1015
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
Definition: pci.h:359
STDMETHODIMP_(ULONG) AddRef()
IRegistryKey * PREGISTRYKEY
Definition: portcls.h:999
IDrmPort2 * PDRMPORT2
Definition: portcls.h:2172
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
INT POOL_TYPE
Definition: typedefs.h:76
const GUID IID_IUnknown
GUID KSPROPERTY_SETID_Topology
nsrefcnt Release()
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG CreateOptions
Definition: fltkernel.h:1230
NTSTATUS NTAPI TopologyPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
#define PC_ASSERT_IRQL_EQUAL(x)
Definition: private.hpp:31
ULONG AddRef()
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
KSPROPERTY_SET WaveCyclicPropertySet[]
IDmaChannelSlave * PDMACHANNELSLAVE
Definition: portcls.h:819
static const WCHAR L[]
Definition: oid.c:1250
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:281
#define InterlockedDecrement
Definition: armddk.h:52
Definition: arc.h:85
NTSTATUS NTAPI NewIUnregisterSubdevice(OUT PUNREGISTERSUBDEVICE *OutDevice)
Definition: unregister.cpp:143
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
PPCFILTER_DESCRIPTOR m_pDescriptor
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
Status
Definition: gdiplustypes.h:24
enum _DMA_SPEED DMA_SPEED
IResourceList * PRESOURCELIST
Definition: portcls.h:442
PDEVICE_OBJECT m_pDeviceObject
UnicodeString MaximumLength
Definition: rtlfuncs.h:2982
IN PDEVICE_OBJECT DeviceObject
Definition: fatprocs.h:1560
ISubdevice * PSUBDEVICE
Definition: interfaces.hpp:305
IMiniportWaveCyclic * PMINIPORTWAVECYCLIC
Definition: portcls.h:1524
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:478
#define InterlockedIncrement
Definition: armddk.h:53
NTSTATUS NewPortClsVersion(OUT PPORTCLSVERSION *OutVersion)
Definition: version.cpp:93
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
PSUBDEVICE_DESCRIPTOR m_SubDeviceDescriptor
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK DesiredAccess
Definition: create.c:4157
#define KSPROPSETID_Pin
Definition: ks.h:647
unsigned int * PULONG
Definition: retypes.h:1
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
#define DPRINT1
Definition: precomp.h:8
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
IPowerNotify * PPOWERNOTIFY
Definition: portcls.h:2003
#define OUT
Definition: typedefs.h:39
unsigned int ULONG
Definition: retypes.h:1
#define UNIMPLEMENTED
Definition: debug.h:114
NTSTATUS NTAPI NewIUnregisterPhysicalConnection(OUT PUNREGISTERPHYSICALCONNECTION *OutConnection)
Definition: connection.cpp:148
struct _KSEVENT_ENTRY * PKSEVENT_ENTRY
Definition: ks.h:2131
NTSTATUS NewIDrmPort(OUT PDRMPORT2 *OutPort)
Definition: drm_port.cpp:145
return STATUS_SUCCESS
Definition: btrfs.c:2777
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T _In_ POOL_TYPE PoolType
Definition: fltkernel.h:1444
IPortWaveCyclic * PPORTWAVECYCLIC
Definition: portcls.h:1172
ULONG ACCESS_MASK
Definition: nt_native.h:40
friend PMINIPORTWAVECYCLIC GetWaveCyclicMiniport(IN IPortWaveCyclic *iface)
CPortWaveCyclic(IUnknown *OuterUnknown)
_In_ PSTORAGE_PROPERTY_ID _Outptr_ PSTORAGE_DESCRIPTOR_HEADER * Descriptor
Definition: classpnp.h:966
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
IPortClsVersion * PPORTCLSVERSION
Definition: portcls.h:2209