ReactOS 0.4.15-dev-6042-g2eb6700
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
17class CPortWavePci : public CUnknownImpl<IPortWavePci, IPortEvents, ISubdevice, IServiceSink>
18{
19public:
21
26 CPortWavePci(IUnknown *OuterUnknown){}
27 virtual ~CPortWavePci() {}
28
29protected:
30
38 IPortFilterWavePci * m_Filter;
39
42
45
46};
47
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
66
67KSPROPERTY_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
90void
92CPortWavePci::AddEventToEventList(
93 IN PKSEVENT_ENTRY EventEntry)
94{
96
98
100 InsertTailList(&m_EventList, &EventEntry->ListEntry);
102}
103
104
105
106void
107NTAPI
108CPortWavePci::GenerateEventList(
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
122VOID
123NTAPI
124CPortWavePci::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
138NTAPI
140 IN REFIID refiid,
142{
144
145 DPRINT("IPortWavePci_fnQueryInterface entered\n");
146
147 if (IsEqualGUIDAligned(refiid, IID_IPortWavePci) ||
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
201NTAPI
202CPortWavePci::Init(
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,
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
316NTAPI
317CPortWavePci::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,
338}
339
341NTAPI
342CPortWavePci::GetDeviceProperty(
343 IN DEVICE_REGISTRY_PROPERTY DeviceRegistryProperty,
347{
348 DPRINT("IPortWavePci_fnGetDeviceProperty entered\n");
350
352}
353
355NTAPI
356CPortWavePci::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
385VOID
386NTAPI
387CPortWavePci::Notify(
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
403NTAPI
404CPortWavePci::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;
439 return Status;
440}
441
443NTAPI
444CPortWavePci::ReleaseChildren()
445{
447 return STATUS_UNSUCCESSFUL;
448}
449
451NTAPI
452CPortWavePci::GetDescriptor(
454{
455 DPRINT("ISubDevice_GetDescriptor this %p\n", this);
457 return STATUS_SUCCESS;
458}
459
461NTAPI
462CPortWavePci::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
481NTAPI
482CPortWavePci::PowerChangeNotify(
484{
485 if (m_pPowerNotify)
486 {
487 m_pPowerNotify->PowerChangeNotify(PowerState);
488 }
489
490 return STATUS_SUCCESS;
491}
492
494NTAPI
495CPortWavePci::PinCount(
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
518 OUT PPORT* OutPort)
519{
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}
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: debug.h:115
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:128
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:32
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
#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:213
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
NTSTATUS NewIDrmPort(OUT PDRMPORT2 *OutPort)
Definition: drm_port.cpp:125
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:122
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
#define PC_ASSERT_IRQL_EQUAL(x)
Definition: private.hpp:31
NTSTATUS NewPortClsVersion(OUT PPORTCLSVERSION *OutVersion)
Definition: version.cpp:71
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:71
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:792