ReactOS  0.4.14-dev-77-gd9e7c48
port_dmus.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_dmus.cpp
5  * PURPOSE: DirectMusic 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 CPortDMus : public IPortDMus,
18  public ISubdevice
19 {
20 public:
22 
24  {
26  return m_Ref;
27  }
29  {
31 
32  if (!m_Ref)
33  {
34  delete this;
35  return 0;
36  }
37  return m_Ref;
38  }
41  CPortDMus(IUnknown *OuterUnknown){}
42  virtual ~CPortDMus(){}
43 
44 protected:
45 
47  IMiniportDMus * m_pMiniport;
48  IMiniportMidi * m_pMiniportMidi;
54 
57 
59 
60  friend VOID GetDMusMiniport(IN IPortDMus * iface, IN PMINIPORTDMUS * Miniport, IN PMINIPORTMIDI * MidiMiniport);
61 
62 };
63 
64 static GUID InterfaceGuids[3] =
65 {
66  {
68  0x6994AD04, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
69  },
70  {
72  0x65E8773E, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
73  },
74  {
76  0x65E8773D, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
77  }
78 };
79 
80 DEFINE_KSPROPERTY_TOPOLOGYSET(PortFilterDMusTopologySet, TopologyPropertyHandler);
82 
83 KSPROPERTY_SET PortDMusPropertySet[] =
84 {
85  {
87  sizeof(PortFilterDMusTopologySet) / sizeof(KSPROPERTY_ITEM),
88  (const KSPROPERTY_ITEM*)&PortFilterDMusTopologySet,
89  0,
90  NULL
91  },
92  {
94  sizeof(PortFilterDMusPinSet) / sizeof(KSPROPERTY_ITEM),
95  (const KSPROPERTY_ITEM*)&PortFilterDMusPinSet,
96  0,
97  NULL
98  }
99 };
100 
101 
102 //---------------------------------------------------------------
103 // IUnknown interface functions
104 //
105 
106 NTSTATUS
107 NTAPI
109  IN REFIID refiid,
110  OUT PVOID* Output)
111 {
113 
114  if (IsEqualGUIDAligned(refiid, IID_IPortDMus) ||
115  IsEqualGUIDAligned(refiid, IID_IPortMidi) ||
116  IsEqualGUIDAligned(refiid, IID_IPort) ||
118  {
119  *Output = PVOID(PUNKNOWN((IPortDMus*)this));
120  PUNKNOWN(*Output)->AddRef();
121  return STATUS_SUCCESS;
122  }
123  else if (IsEqualGUIDAligned(refiid, IID_ISubdevice))
124  {
125  *Output = PVOID(PSUBDEVICE(this));
126  PUNKNOWN(*Output)->AddRef();
127  return STATUS_SUCCESS;
128  }
129  else if (IsEqualGUIDAligned(refiid, IID_IDrmPort) ||
130  IsEqualGUIDAligned(refiid, IID_IDrmPort2))
131  {
132  return NewIDrmPort((PDRMPORT2*)Output);
133  }
134  else if (IsEqualGUIDAligned(refiid, IID_IPortClsVersion))
135  {
137  }
138  else if (IsEqualGUIDAligned(refiid, IID_IUnregisterSubdevice))
139  {
141  }
142  else if (IsEqualGUIDAligned(refiid, IID_IUnregisterPhysicalConnection))
143  {
145  }
146 
148  {
149  DPRINT("IPortMidi_fnQueryInterface no interface!!! iface %S\n", GuidString.Buffer);
151  }
152  return STATUS_UNSUCCESSFUL;
153 }
154 
155 //---------------------------------------------------------------
156 // IPort interface functions
157 //
158 
159 NTSTATUS
160 NTAPI
161 CPortDMus::GetDeviceProperty(
162  IN DEVICE_REGISTRY_PROPERTY DeviceRegistryProperty,
164  OUT PVOID PropertyBuffer,
166 {
168 
169  if (!m_bInitialized)
170  {
171  DPRINT("IPortDMus_fnNewRegistryKey called w/o initialized\n");
172  return STATUS_UNSUCCESSFUL;
173  }
174 
175  return IoGetDeviceProperty(m_pDeviceObject, DeviceRegistryProperty, BufferLength, PropertyBuffer, ReturnLength);
176 }
177 
178 NTSTATUS
179 NTAPI
182  IN PIRP Irp,
183  IN PUNKNOWN UnknownMiniport,
184  IN PUNKNOWN UnknownAdapter OPTIONAL,
186 {
187  IMiniportDMus * Miniport = NULL;
188  IMiniportMidi * MidiMiniport = NULL;
190  PSERVICEGROUP ServiceGroup = NULL;
192  PPOWERNOTIFY PowerNotify;
193 
195 
196  if (m_bInitialized)
197  {
198  DPRINT("IPortDMus_Init called again\n");
199  return STATUS_SUCCESS;
200  }
201 
202  Status = UnknownMiniport->QueryInterface(IID_IMiniportDMus, (PVOID*)&Miniport);
203  if (!NT_SUCCESS(Status))
204  {
205  // check for legacy interface
206  Status = UnknownMiniport->QueryInterface(IID_IMiniportMidi, (PVOID*)&MidiMiniport);
207  if (!NT_SUCCESS(Status))
208  {
209  DPRINT("IPortDMus_Init called with invalid IMiniport adapter\n");
211  }
212  }
213 
214  // Initialize port object
215  m_pMiniport = Miniport;
216  m_pMiniportMidi = MidiMiniport;
219 
220  if (Miniport)
221  {
222  // initialize IMiniportDMus
223  Status = Miniport->Init(UnknownAdapter, ResourceList, this, &ServiceGroup);
224  if (!NT_SUCCESS(Status))
225  {
226  DPRINT("IMiniportDMus_Init failed with %x\n", Status);
228  return Status;
229  }
230 
231  // get the miniport device descriptor
232  Status = Miniport->GetDescription(&m_pDescriptor);
233  if (!NT_SUCCESS(Status))
234  {
235  DPRINT("failed to get description\n");
236  Miniport->Release();
238  return Status;
239  }
240 
241  // increment reference on miniport adapter
242  Miniport->AddRef();
243 
244  }
245  else
246  {
247  // initialize IMiniportMidi
248  Status = MidiMiniport->Init(UnknownAdapter, ResourceList, (IPortMidi*)this, &ServiceGroup);
249  if (!NT_SUCCESS(Status))
250  {
251  DPRINT("IMiniportMidi_Init failed with %x\n", Status);
253  return Status;
254  }
255 
256  // get the miniport device descriptor
257  Status = MidiMiniport->GetDescription(&m_pDescriptor);
258  if (!NT_SUCCESS(Status))
259  {
260  DPRINT("failed to get description\n");
261  MidiMiniport->Release();
263  return Status;
264  }
265 
266  // increment reference on miniport adapter
267  MidiMiniport->AddRef();
268  }
269 
270  // create the subdevice descriptor
272  3,
274  0,
275  NULL,
276  2,
278  0,
279  0,
280  0,
281  NULL,
282  0,
283  NULL,
284  m_pDescriptor);
285 
286  if (!NT_SUCCESS(Status))
287  {
288  DPRINT("Failed to create descriptor\n");
289 
290  if (Miniport)
291  Miniport->Release();
292  else
293  MidiMiniport->Release();
294 
296  return Status;
297  }
298 
299  if (m_ServiceGroup == NULL && ServiceGroup)
300  {
301  // register service group
302  m_ServiceGroup = ServiceGroup;
303  }
304 
305  // check if it supports IPinCount interface
306  Status = UnknownMiniport->QueryInterface(IID_IPinCount, (PVOID*)&PinCount);
307  if (NT_SUCCESS(Status))
308  {
309  // store IPinCount interface
311  }
312 
313  // does the Miniport adapter support IPowerNotify interface*/
314  Status = UnknownMiniport->QueryInterface(IID_IPowerNotify, (PVOID*)&PowerNotify);
315  if (NT_SUCCESS(Status))
316  {
317  // store reference
318  m_pPowerNotify = PowerNotify;
319  }
320 
321  return STATUS_SUCCESS;
322 }
323 
324 
325 NTSTATUS
326 NTAPI
327 CPortDMus::NewRegistryKey(
328  OUT PREGISTRYKEY *OutRegistryKey,
329  IN PUNKNOWN OuterUnknown OPTIONAL,
330  IN ULONG RegistryKeyType,
335 {
337 
338  if (!m_bInitialized)
339  {
340  DPRINT("IPortDMus_fnNewRegistryKey called w/o initialized\n");
341  return STATUS_UNSUCCESSFUL;
342  }
343 
344  return PcNewRegistryKey(OutRegistryKey,
345  OuterUnknown,
346  RegistryKeyType,
349  (ISubdevice*)this,
352  Disposition);
353 }
354 
355 VOID
356 NTAPI
358  IN PSERVICEGROUP ServiceGroup OPTIONAL)
359 {
360  if (ServiceGroup)
361  {
362  ServiceGroup->RequestService ();
363  return;
364  }
365 
367 
368  // notify miniport service group
369  m_ServiceGroup->RequestService();
370 
371  // notify stream miniport service group
372  if (m_Filter)
373  {
374  m_Filter->NotifyPins();
375  }
376 }
377 
378 VOID
379 NTAPI
380 CPortDMus::RegisterServiceGroup(
381  IN PSERVICEGROUP ServiceGroup)
382 {
384 
385  m_ServiceGroup = ServiceGroup;
386 
387  ServiceGroup->AddMember(PSERVICESINK(this));
388 }
389 //---------------------------------------------------------------
390 // ISubdevice interface
391 //
392 
393 NTSTATUS
394 NTAPI
395 CPortDMus::NewIrpTarget(
396  OUT struct IIrpTarget **OutTarget,
397  IN PCWSTR Name,
401  IN PIRP Irp,
402  IN KSOBJECT_CREATE *CreateObject)
403 {
406 
407  DPRINT("ISubDevice_NewIrpTarget this %p\n", this);
408 
409  if (m_Filter)
410  {
411  *OutTarget = (IIrpTarget*)m_Filter;
412  return STATUS_SUCCESS;
413  }
414 
415 
417  if (!NT_SUCCESS(Status))
418  {
419  return Status;
420  }
421 
422  Status = Filter->Init(PPORTDMUS(this));
423  if (!NT_SUCCESS(Status))
424  {
425  Filter->Release();
426  return Status;
427  }
428 
429  *OutTarget = (IIrpTarget*)Filter;
430  return Status;
431 }
432 
433 NTSTATUS
434 NTAPI
435 CPortDMus::ReleaseChildren()
436 {
438  return STATUS_UNSUCCESSFUL;
439 }
440 
441 NTSTATUS
442 NTAPI
443 CPortDMus::GetDescriptor(
445 {
446  DPRINT("ISubDevice_GetDescriptor this %p\n", this);
448  return STATUS_SUCCESS;
449 }
450 
451 NTSTATUS
452 NTAPI
453 CPortDMus::DataRangeIntersection(
454  IN ULONG PinId,
455  IN PKSDATARANGE DataRange,
456  IN PKSDATARANGE MatchingDataRange,
458  OUT PVOID ResultantFormat OPTIONAL,
459  OUT PULONG ResultantFormatLength)
460 {
461  DPRINT("ISubDevice_DataRangeIntersection this %p\n", this);
462 
463  if (m_pMiniport)
464  {
465  return m_pMiniport->DataRangeIntersection (PinId, DataRange, MatchingDataRange, OutputBufferLength, ResultantFormat, ResultantFormatLength);
466  }
467 
468  return STATUS_UNSUCCESSFUL;
469 }
470 
471 NTSTATUS
472 NTAPI
473 CPortDMus::PowerChangeNotify(
475 {
476  if (m_pPowerNotify)
477  {
478  m_pPowerNotify->PowerChangeNotify(PowerState);
479  }
480 
481  return STATUS_SUCCESS;
482 }
483 
484 
485 NTSTATUS
486 NTAPI
488  IN ULONG PinId,
489  IN OUT PULONG FilterNecessary,
490  IN OUT PULONG FilterCurrent,
491  IN OUT PULONG FilterPossible,
492  IN OUT PULONG GlobalCurrent,
493  IN OUT PULONG GlobalPossible)
494 {
495  if (m_pPinCount)
496  {
497  m_pPinCount->PinCount(PinId, FilterNecessary, FilterCurrent, FilterPossible, GlobalCurrent, GlobalPossible);
498  return STATUS_SUCCESS;
499  }
500 
501  // FIXME
502  // scan filter descriptor
503 
504  return STATUS_UNSUCCESSFUL;
505 }
506 
507 
508 
509 NTSTATUS
511  OUT PPORT* OutPort)
512 {
515  if (!Port)
517 
518  Status = Port->QueryInterface(IID_IPort, (PVOID*)OutPort);
519 
520  if (!NT_SUCCESS(Status))
521  {
522  delete Port;
523  }
524 
525  DPRINT("NewPortDMus %p Status %u\n", Port, Status);
526  return Status;
527 
528 }
529 
530 
531 
532 VOID
534  IN IPortDMus * iface,
535  IN PMINIPORTDMUS * Miniport,
536  IN PMINIPORTMIDI * MidiMiniport)
537 {
538  CPortDMus * This = (CPortDMus*)iface;
539 
540  *Miniport = This->m_pMiniport;
541  *MidiMiniport = This->m_pMiniportMidi;
542 }
STDMETHODIMP_(ULONG) AddRef()
Definition: port_dmus.cpp:23
IServiceGroup * PSERVICEGROUP
Definition: portcls.h:614
DEVICE_REGISTRY_PROPERTY
Definition: iotypes.h:1154
BOOL WINAPI SHIM_OBJ_NAME() Notify(DWORD fdwReason, PVOID ptr)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
CPortDMus(IUnknown *OuterUnknown)
Definition: port_dmus.cpp:41
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 REFIID
Definition: guiddef.h:118
#define TRUE
Definition: types.h:120
_In_ UCHAR _In_ POWER_STATE PowerState
Definition: pofuncs.h:42
IPortFilterDMus * PPORTFILTERDMUS
Definition: interfaces.hpp:838
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
#define PC_ASSERT(exp)
Definition: usbehci.h:17
BOOL m_bInitialized
Definition: port_dmus.cpp:46
_In_ BOOLEAN Release
Definition: classpnp.h:929
KSPROPERTY_SET PortDMusPropertySet[]
Definition: port_dmus.cpp:83
IPinCount * PPINCOUNT
Definition: portcls.h:2036
_In_ PIRP Irp
Definition: csq.h:116
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
IUnknown * PUNKNOWN
Definition: com_apitest.h:45
#define TAG_PORTCLASS
Definition: private.hpp:24
STDMETHODIMP_(ULONG) Release()
Definition: port_dmus.cpp:28
virtual ~CPortDMus()
Definition: port_dmus.cpp:42
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NewPortFilterDMus(OUT PPORTFILTERDMUS *OutFilter)
PPCFILTER_DESCRIPTOR m_pDescriptor
Definition: port_dmus.cpp:55
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ ULONG _In_ ULONG OutputBufferLength
Definition: fltkernel.h:1374
static GUID InterfaceGuids[3]
Definition: port_dmus.cpp:64
IServiceSink * PSERVICESINK
Definition: portcls.h:569
IPortDMus * PPORTDMUS
Definition: dmusicks.h:167
IUnregisterSubdevice * PUNREGISTERSUBDEVICE
Definition: portcls.h:633
BOOL Init(PUSERCONNECT UserCon)
Definition: dllmain.c:385
_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
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
Definition: port_dmus.cpp:108
#define IsEqualGUIDAligned(guid1, guid2)
Definition: wdm.template.h:233
friend VOID GetDMusMiniport(IN IPortDMus *iface, IN PMINIPORTDMUS *Miniport, IN PMINIPORTMIDI *MidiMiniport)
Definition: port_dmus.cpp:533
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
DEVICE_OBJECT * m_pDeviceObject
Definition: port_dmus.cpp:49
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
IPort * PPORT
Definition: portcls.h:1093
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:4228
void DPRINT(...)
Definition: polytest.cpp:61
void * PVOID
Definition: retypes.h:9
IUnregisterPhysicalConnection * PUNREGISTERPHYSICALCONNECTION
Definition: portcls.h:675
IMiniportMidi * m_pMiniportMidi
Definition: port_dmus.cpp:48
#define KSPROPSETID_Topology
Definition: ks.h:842
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
Definition: pci.h:359
PPORTFILTERDMUS m_Filter
Definition: port_dmus.cpp:53
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
PPOWERNOTIFY m_pPowerNotify
Definition: port_dmus.cpp:52
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()
PSUBDEVICE_DESCRIPTOR m_SubDeviceDescriptor
Definition: port_dmus.cpp:56
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
NTSTATUS NewPortDMus(OUT PPORT *OutPort)
Definition: port_dmus.cpp:510
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)
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
PPINCOUNT m_pPinCount
Definition: port_dmus.cpp:51
Status
Definition: gdiplustypes.h:24
LONG m_Ref
Definition: port_dmus.cpp:58
IResourceList * PRESOURCELIST
Definition: portcls.h:442
VOID GetDMusMiniport(IN IPortDMus *iface, IN PMINIPORTDMUS *Miniport, IN PMINIPORTMIDI *MidiMiniport)
Definition: port_dmus.cpp:533
IN PDEVICE_OBJECT DeviceObject
Definition: fatprocs.h:1560
ISubdevice * PSUBDEVICE
Definition: interfaces.hpp:305
#define InterlockedIncrement
Definition: armddk.h:53
NTSTATUS NewPortClsVersion(OUT PPORTCLSVERSION *OutVersion)
Definition: version.cpp:93
IMiniportDMus * PMINIPORTDMUS
Definition: dmusicks.h:209
_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:617
IMiniportMidi * PMINIPORTMIDI
Definition: portcls.h:1366
unsigned int * PULONG
Definition: retypes.h:1
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
IPowerNotify * PPOWERNOTIFY
Definition: portcls.h:2003
DEFINE_KSPROPERTY_TOPOLOGYSET(PortFilterDMusTopologySet, TopologyPropertyHandler)
#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
NTSTATUS NewIDrmPort(OUT PDRMPORT2 *OutPort)
Definition: drm_port.cpp:145
return STATUS_SUCCESS
Definition: btrfs.c:2966
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T _In_ POOL_TYPE PoolType
Definition: fltkernel.h:1444
DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PortFilterDMusPinSet, PinPropertyHandler, PinPropertyHandler, PinPropertyHandler)
nsrefcnt AddRef()
ULONG ACCESS_MASK
Definition: nt_native.h:40
IMiniportDMus * m_pMiniport
Definition: port_dmus.cpp:47
PSERVICEGROUP m_ServiceGroup
Definition: port_dmus.cpp:50
_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