ReactOS 0.4.16-dev-334-g4d9f67c
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#define NDEBUG
12#include <debug.h>
13
14class CPortWavePci : public CUnknownImpl<IPortWavePci, IPortEvents, ISubdevice, IServiceSink>
15{
16public:
18
23 CPortWavePci(IUnknown *OuterUnknown){}
24 virtual ~CPortWavePci() {}
25
26protected:
27
35 IPortFilterWavePci * m_Filter;
36
39
42
43};
44
46{
47 {
49 0x6994AD04, 0x93EF, 0x11D0, {0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
50 },
51 {
53 0x65E8773EL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
54 },
55 {
57 0x65E8773DL, 0x8F56, 0x11D0, {0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
58 }
59};
60
63
64KSPROPERTY_SET WavePciPropertySet[] =
65{
66 {
68 sizeof(PortFilterWavePciTopologySet) / sizeof(KSPROPERTY_ITEM),
69 (const KSPROPERTY_ITEM*)&PortFilterWavePciTopologySet,
70 0,
71 NULL
72 },
73 {
75 sizeof(PortFilterWavePciPinSet) / sizeof(KSPROPERTY_ITEM),
76 (const KSPROPERTY_ITEM*)&PortFilterWavePciPinSet,
77 0,
78 NULL
79 }
80};
81
82//---------------------------------------------------------------
83// IPortEvents
84//
85
86void
88CPortWavePci::AddEventToEventList(
89 IN PKSEVENT_ENTRY EventEntry)
90{
92
94
96 InsertTailList(&m_EventList, &EventEntry->ListEntry);
98}
99
100void
101NTAPI
102CPortWavePci::GenerateEventList(
104 IN ULONG EventId,
105 IN BOOL PinEvent,
106 IN ULONG PinId,
107 IN BOOL NodeEvent,
108 IN ULONG NodeId)
109{
111}
112//---------------------------------------------------------------
113// IServiceSink
114//
115
116VOID
117NTAPI
118CPortWavePci::RequestService()
119{
120 //DPRINT("IServiceSink_fnRequestService entered\n");
121 if (m_Miniport)
122 {
123 m_Miniport->Service();
124 }
125}
126
127//---------------------------------------------------------------
128// IPortWavePci
129//
130
132NTAPI
134 IN REFIID refiid,
136{
138
139 DPRINT("IPortWavePci_fnQueryInterface entered\n");
140
141 if (IsEqualGUIDAligned(refiid, IID_IPortWavePci) ||
143 IsEqualGUIDAligned(refiid, IID_IPort))
144 {
145 *Output = PVOID(PPORTWAVEPCI(this));
146 PUNKNOWN(*Output)->AddRef();
147 return STATUS_SUCCESS;
148 }
149 else if (IsEqualGUIDAligned(refiid, IID_IServiceSink))
150 {
151 *Output = PVOID(PSERVICESINK(this));
152 PUNKNOWN(*Output)->AddRef();
153 return STATUS_SUCCESS;
154 }
155 else if (IsEqualGUIDAligned(refiid, IID_IPortEvents))
156 {
157 *Output = PVOID(PPORTEVENTS(this));
158 PUNKNOWN(*Output)->AddRef();
159 return STATUS_SUCCESS;
160 }
161 else if (IsEqualGUIDAligned(refiid, IID_ISubdevice))
162 {
163 *Output = PVOID(PSUBDEVICE(this));
164 PUNKNOWN(*Output)->AddRef();
165 return STATUS_SUCCESS;
166 }
167 else if (IsEqualGUIDAligned(refiid, IID_IDrmPort) ||
168 IsEqualGUIDAligned(refiid, IID_IDrmPort2))
169 {
170 return NewIDrmPort((PDRMPORT2*)Output);
171 }
172 else if (IsEqualGUIDAligned(refiid, IID_IPortClsVersion))
173 {
175 }
176 else if (IsEqualGUIDAligned(refiid, IID_IUnregisterSubdevice))
177 {
179 }
180 else if (IsEqualGUIDAligned(refiid, IID_IUnregisterPhysicalConnection))
181 {
183 }
184
186 {
187 DPRINT("IPortWavePci_fnQueryInterface no interface!!! iface %S\n", GuidString.Buffer);
189 }
190
191 return STATUS_UNSUCCESSFUL;
192}
193
195NTAPI
196CPortWavePci::Init(
198 IN PIRP Irp,
199 IN PUNKNOWN UnknownMiniport,
200 IN PUNKNOWN UnknownAdapter OPTIONAL,
202{
203 IMiniportWavePci * Miniport;
204 PSERVICEGROUP ServiceGroup = 0;
207 PPOWERNOTIFY PowerNotify;
208
209 DPRINT("IPortWavePci_fnInit entered with This %p, DeviceObject %p Irp %p UnknownMiniport %p, UnknownAdapter %p ResourceList %p\n",
210 this, DeviceObject, Irp, UnknownMiniport, UnknownAdapter, ResourceList);
212
213 Status = UnknownMiniport->QueryInterface(IID_IMiniportWavePci, (PVOID*)&Miniport);
214 if (!NT_SUCCESS(Status))
215 {
216 DPRINT("IPortWavePci_fnInit called with invalid IMiniport adapter\n");
218 }
219
220 // Initialize port object
221 m_Miniport = Miniport;
223
226
227 // increment reference on miniport adapter
228 Miniport->AddRef();
229
230 Status = Miniport->Init(UnknownAdapter, ResourceList, this, &ServiceGroup);
231 if (!NT_SUCCESS(Status))
232 {
233 DPRINT("IPortWavePci_fnInit failed with %x\n", Status);
234
235 // release reference on miniport adapter
236 Miniport->Release();
237 return Status;
238 }
239
240 // check if the miniport adapter provides a valid device descriptor
241 Status = Miniport->GetDescription(&m_pDescriptor);
242 if (!NT_SUCCESS(Status))
243 {
244 DPRINT("failed to get description\n");
245 Miniport->Release();
246 return Status;
247 }
248
249 // create the subdevice descriptor
251 3,
253 0,
254 NULL,
255 2,
257 0,
258 0,
259 0,
260 NULL,
261 0,
262 NULL,
264
265 if (!NT_SUCCESS(Status))
266 {
267 DPRINT("PcCreateSubdeviceDescriptor failed with %x\n", Status);
268 Miniport->Release();
269 return Status;
270 }
271
272 // did we get a service group
273 if (ServiceGroup)
274 {
275 // store service group in context
276 m_ServiceGroup = ServiceGroup;
277
278 // add ourselves to service group which is called when miniport receives an isr
279 m_ServiceGroup->AddMember(PSERVICESINK(this));
280
281 // increment reference on service group
282 m_ServiceGroup->AddRef();
283 }
284
285 // store for node property requests
286 m_SubDeviceDescriptor->UnknownMiniport = UnknownMiniport;
287
288 // check if it supports IPinCount interface
289 Status = UnknownMiniport->QueryInterface(IID_IPinCount, (PVOID*)&PinCount);
290 if (NT_SUCCESS(Status))
291 {
292 // store IPinCount interface
294 }
295
296 // does the Miniport adapter support IPowerNotify interface*/
297 Status = UnknownMiniport->QueryInterface(IID_IPowerNotify, (PVOID*)&PowerNotify);
298 if (NT_SUCCESS(Status))
299 {
300 // store reference
301 m_pPowerNotify = PowerNotify;
302 }
303
304 DPRINT("IPortWavePci_Init successfully initialized\n");
305 return STATUS_SUCCESS;
306}
307
309NTAPI
310CPortWavePci::NewRegistryKey(
311 OUT PREGISTRYKEY *OutRegistryKey,
312 IN PUNKNOWN OuterUnknown OPTIONAL,
313 IN ULONG RegistryKeyType,
318{
319 DPRINT("IPortWavePci_fnNewRegistryKey entered\n");
321
322 return PcNewRegistryKey(OutRegistryKey,
323 OuterUnknown,
324 RegistryKeyType,
327 (ISubdevice*)this,
331}
332
334NTAPI
335CPortWavePci::GetDeviceProperty(
336 IN DEVICE_REGISTRY_PROPERTY DeviceRegistryProperty,
340{
341 DPRINT("IPortWavePci_fnGetDeviceProperty entered\n");
343
345}
346
348NTAPI
349CPortWavePci::NewMasterDmaChannel(
350 OUT PDMACHANNEL *DmaChannel,
351 IN PUNKNOWN OuterUnknown OPTIONAL,
355 IN BOOLEAN Dma32BitAddresses,
357 IN BOOLEAN IgnoreCount,
358 IN DMA_WIDTH DmaWidth,
359 IN DMA_SPEED DmaSpeed,
361 IN ULONG DmaPort)
362{
365
366 DPRINT("IPortWavePci_fnNewMasterDmaChannel This %p entered\n", this);
368
369 Status = PcDmaMasterDescription(ResourceList, ScatterGather, Dma32BitAddresses, IgnoreCount, Dma64BitAddresses, DmaWidth, DmaSpeed, MaximumLength, DmaPort, &DeviceDescription);
370 if (NT_SUCCESS(Status))
371 {
372 return PcNewDmaChannel(DmaChannel, OuterUnknown, PoolType, &DeviceDescription, m_pDeviceObject);
373 }
374
375 return Status;
376}
377
378VOID
379NTAPI
380CPortWavePci::Notify(
381 IN PSERVICEGROUP ServiceGroup)
382{
383 //DPRINT("IPortWavePci_fnNotify entered %p, ServiceGroup %p\n", This, ServiceGroup);
384
385 if (ServiceGroup)
386 {
387 ServiceGroup->RequestService ();
388 }
389}
390
391//---------------------------------------------------------------
392// ISubdevice interface
393//
394
396NTAPI
397CPortWavePci::NewIrpTarget(
398 OUT struct IIrpTarget **OutTarget,
399 IN PCWSTR Name,
403 IN PIRP Irp,
404 IN KSOBJECT_CREATE *CreateObject)
405{
407 IPortFilterWavePci * Filter;
408
409 DPRINT("ISubDevice_NewIrpTarget this %p\n", this);
410
411 if (m_Filter)
412 {
413 *OutTarget = (IIrpTarget*)m_Filter;
414 return STATUS_SUCCESS;
415 }
416
418 if (!NT_SUCCESS(Status))
419 {
420 return Status;
421 }
422
423 Status = Filter->Init((IPortWavePci*)this);
424 if (!NT_SUCCESS(Status))
425 {
426 Filter->Release();
427 return Status;
428 }
429
430 *OutTarget = (IIrpTarget*)Filter;
432 return Status;
433}
434
436NTAPI
437CPortWavePci::ReleaseChildren()
438{
440 return STATUS_UNSUCCESSFUL;
441}
442
444NTAPI
445CPortWavePci::GetDescriptor(
447{
448 DPRINT("ISubDevice_GetDescriptor this %p\n", this);
450 return STATUS_SUCCESS;
451}
452
454NTAPI
455CPortWavePci::DataRangeIntersection(
456 IN ULONG PinId,
457 IN PKSDATARANGE DataRange,
458 IN PKSDATARANGE MatchingDataRange,
460 OUT PVOID ResultantFormat OPTIONAL,
461 OUT PULONG ResultantFormatLength)
462{
463 DPRINT("ISubDevice_DataRangeIntersection this %p\n", this);
464
465 if (m_Miniport)
466 {
467 return m_Miniport->DataRangeIntersection (PinId, DataRange, MatchingDataRange, OutputBufferLength, ResultantFormat, ResultantFormatLength);
468 }
469
470 return STATUS_UNSUCCESSFUL;
471}
472
474NTAPI
475CPortWavePci::PowerChangeNotify(
477{
478 if (m_pPowerNotify)
479 {
480 m_pPowerNotify->PowerChangeNotify(PowerState);
481 }
482
483 return STATUS_SUCCESS;
484}
485
487NTAPI
488CPortWavePci::PinCount(
489 IN ULONG PinId,
490 IN OUT PULONG FilterNecessary,
491 IN OUT PULONG FilterCurrent,
492 IN OUT PULONG FilterPossible,
493 IN OUT PULONG GlobalCurrent,
494 IN OUT PULONG GlobalPossible)
495{
496 if (m_pPinCount)
497 {
498 m_pPinCount->PinCount(PinId, FilterNecessary, FilterCurrent, FilterPossible, GlobalCurrent, GlobalPossible);
499 return STATUS_SUCCESS;
500 }
501
502 // FIXME
503 // scan filter descriptor
504
505 return STATUS_UNSUCCESSFUL;
506}
507
510 OUT PPORT* OutPort)
511{
514
516 if (!Port)
518
519 Status = Port->QueryInterface(IID_IPort, (PVOID*)OutPort);
520
521 if (!NT_SUCCESS(Status))
522 {
523 delete Port;
524 }
525
526 DPRINT("NewPortWavePci %p Status %u\n", Port, Status);
527 return Status;
528
529}
530
533 IPortWavePci* iface)
534{
535 CPortWavePci * This = (CPortWavePci*)iface;
536 return This->m_pDeviceObject;
537}
538
541 PPORTWAVEPCI iface)
542{
543 CPortWavePci * This = (CPortWavePci*)iface;
544 return This->m_Miniport;
545}
unsigned char BOOLEAN
ISubdevice * PSUBDEVICE
Definition: interfaces.hpp:307
LONG NTSTATUS
Definition: precomp.h:26
#define STDMETHODIMP
Definition: basetyps.h:43
const GUID IID_IUnknown
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
PSERVICEGROUP m_ServiceGroup
PMINIPORTWAVEPCI m_Miniport
PPOWERNOTIFY m_pPowerNotify
LIST_ENTRY m_EventList
friend PDEVICE_OBJECT GetDeviceObjectFromPortWavePci(IPortWavePci *iface)
CPortWavePci(IUnknown *OuterUnknown)
virtual ~CPortWavePci()
PSUBDEVICE_DESCRIPTOR m_SubDeviceDescriptor
IPortFilterWavePci * m_Filter
PPCFILTER_DESCRIPTOR m_pDescriptor
PDEVICE_OBJECT m_pDeviceObject
KSPIN_LOCK m_EventListLock
PPINCOUNT m_pPinCount
friend PMINIPORTWAVEPCI GetWavePciMiniport(PPORTWAVEPCI iface)
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
IUnknown * PUNKNOWN
Definition: com_apitest.h:45
NTSTATUS NTAPI NewIUnregisterPhysicalConnection(OUT PUNREGISTERPHYSICALCONNECTION *OutConnection)
Definition: connection.cpp:124
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
_In_ PIRP Irp
Definition: csq.h:116
#define NULL
Definition: types.h:112
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
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:479
#define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet, PropGeneral, PropInstances, PropIntersection)
Definition: precomp.h:20
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:206
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:264
NTSTATUS NewIDrmPort(OUT PDRMPORT2 *OutPort)
Definition: drm_port.cpp:122
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
Definition: dumpinfo.c:43
#define InsertTailList(ListHead, Entry)
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
UCHAR KIRQL
Definition: env_spec_w32.h:591
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
#define KeReleaseSpinLock(sl, irql)
Definition: env_spec_w32.h:627
#define KeAcquireSpinLock(sl, irql)
Definition: env_spec_w32.h:609
#define NonPagedPool
Definition: env_spec_w32.h:307
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
#define KeInitializeSpinLock(sl)
Definition: env_spec_w32.h:604
unsigned int BOOL
Definition: ntddk_ex.h:94
NTSTATUS NewPortFilterWavePci(OUT IPortFilterWavePci **OutFilter)
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
Status
Definition: gdiplustypes.h:25
CPPORT Port[4]
Definition: headless.c:35
@ Unknown
Definition: i8042prt.h:114
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
ULONG AddRef()
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
nsrefcnt AddRef()
nsrefcnt Release()
#define KSPROPSETID_Pin
Definition: ks.h:617
#define DEFINE_KSPROPERTY_TOPOLOGYSET(TopologySet, Handler)
Definition: ks.h:2663
struct _KSEVENT_ENTRY * PKSEVENT_ENTRY
Definition: ks.h:2101
#define KSPROPSETID_Topology
Definition: ks.h:842
static PWSTR GuidString
Definition: apphelp.c:93
_In_ BOOLEAN Dma64BitAddresses
Definition: ndis.h:4652
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
Definition: cmfuncs.h:56
ULONG ACCESS_MASK
Definition: nt_native.h:40
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
static BOOL Set
Definition: pageheap.c:10
NTSTATUS NTAPI IoGetDeviceProperty(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_REGISTRY_PROPERTY DeviceProperty, IN ULONG BufferLength, OUT PVOID PropertyBuffer, OUT PULONG ResultLength)
Definition: pnpmgr.c:1382
NTSTATUS NewPortWavePci(OUT PPORT *OutPort)
KSPROPERTY_SET WavePciPropertySet[]
PDEVICE_OBJECT GetDeviceObjectFromPortWavePci(IPortWavePci *iface)
static GUID InterfaceGuids[3]
PMINIPORTWAVEPCI GetWavePciMiniport(PPORTWAVEPCI iface)
IRegistryKey * PREGISTRYKEY
Definition: portcls.h:1009
IDmaChannel * PDMACHANNEL
Definition: portcls.h:784
IPinCount * PPINCOUNT
Definition: portcls.h:2091
IServiceSink * PSERVICESINK
Definition: portcls.h:569
IResourceList * PRESOURCELIST
Definition: portcls.h:442
IPortEvents * PPORTEVENTS
Definition: portcls.h:2121
IUnregisterSubdevice * PUNREGISTERSUBDEVICE
Definition: portcls.h:635
IPortClsVersion * PPORTCLSVERSION
Definition: portcls.h:2263
IUnregisterPhysicalConnection * PUNREGISTERPHYSICALCONNECTION
Definition: portcls.h:677
IDrmPort2 * PDRMPORT2
Definition: portcls.h:2228
IMiniportWavePci * PMINIPORTWAVEPCI
Definition: portcls.h:1697
IServiceGroup * PSERVICEGROUP
Definition: portcls.h:614
IPowerNotify * PPOWERNOTIFY
Definition: portcls.h:2059
IPort * PPORT
Definition: portcls.h:1105
IPortWavePci * PPORTWAVEPCI
Definition: portcls.h:1248
NTSTATUS NTAPI PinPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
NTSTATUS NTAPI NewIUnregisterSubdevice(OUT PUNREGISTERSUBDEVICE *OutDevice)
Definition: unregister.cpp:119
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:717
#define PC_ASSERT_IRQL_EQUAL(x)
Definition: private.hpp:31
NTSTATUS NewPortClsVersion(OUT PPORTCLSVERSION *OutVersion)
Definition: version.cpp:66
NTSTATUS NTAPI TopologyPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
#define TAG_PORTCLASS
Definition: private.hpp:24
#define REFIID
Definition: guiddef.h:118
enum _DMA_SPEED DMA_SPEED
enum _DMA_WIDTH DMA_WIDTH
@ Output
Definition: arc.h:85
#define STATUS_SUCCESS
Definition: shellext.h:65
#define DPRINT
Definition: sndvol32.h:73
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
_In_ const GUID _In_ ULONG PinCount
Definition: strmini.h:505
Definition: typedefs.h:120
uint32_t * PULONG
Definition: typedefs.h:59
const uint16_t * PCWSTR
Definition: typedefs.h:57
INT POOL_TYPE
Definition: typedefs.h:78
#define NTAPI
Definition: typedefs.h:36
void * PVOID
Definition: typedefs.h:50
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2658
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3815
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID PropertyBuffer
Definition: wdfdevice.h:4437
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3771
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
Definition: wdfdevice.h:3034
_In_ WDFDMATRANSACTION _In_ size_t MaximumLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
Definition: wdffdo.h:465
_In_ WDFREQUEST _In_ size_t OutputBufferLength
Definition: wdfio.h:320
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING DeviceDescription
Definition: wdfpdo.h:432
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG CreateOptions
Definition: wdfregistry.h:118
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
Definition: wdfresource.h:309
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
Definition: wdfresource.h:342
#define IsEqualGUIDAligned(guid1, guid2)
Definition: wdm.template.h:235
DEVICE_REGISTRY_PROPERTY
Definition: iotypes.h:1194
_In_ struct _IRP _In_ struct _SCATTER_GATHER_LIST * ScatterGather
Definition: iotypes.h:2375
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
Definition: kefuncs.h:778