ReactOS 0.4.17-dev-683-g0dafdc5
pdo.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS PCI Bus Driver
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: drivers/bus/pci/pdo.c
5 * PURPOSE: PDO Device Management
6 * PROGRAMMERS: ReactOS Portable Systems Group
7 */
8
9/* INCLUDES *******************************************************************/
10
11#include <pci.h>
12
13#define NDEBUG
14#include <debug.h>
15
16/* GLOBALS ********************************************************************/
17
19
21C_ASSERT(FIELD_OFFSET(PCI_FDO_EXTENSION, TentativeNextState) == FIELD_OFFSET(PCI_PDO_EXTENSION, TentativeNextState));
23
25{
31};
32
34{
61};
62
64{
73};
74
75/* FUNCTIONS ******************************************************************/
76
81 IN PPCI_PDO_EXTENSION DeviceExtension)
82{
85 UNREFERENCED_PARAMETER(DeviceExtension);
86
89}
90
95 IN PPCI_PDO_EXTENSION DeviceExtension)
96{
99 UNREFERENCED_PARAMETER(DeviceExtension);
100
103}
104
106NTAPI
109 IN PPCI_PDO_EXTENSION DeviceExtension)
110{
113 UNREFERENCED_PARAMETER(DeviceExtension);
114
117}
118
120NTAPI
123 IN PPCI_PDO_EXTENSION DeviceExtension)
124{
126 BOOLEAN Changed, DoReset;
128 PAGED_CODE();
129
131
132 DoReset = FALSE;
133
134 /* Begin entering the start phase */
135 Status = PciBeginStateTransition((PVOID)DeviceExtension, PciStarted);
136 if (!NT_SUCCESS(Status)) return Status;
137
138 /* Check if this is a VGA device */
139 if (((DeviceExtension->BaseClass == PCI_CLASS_PRE_20) &&
140 (DeviceExtension->SubClass == PCI_SUBCLASS_PRE_20_VGA)) ||
141 ((DeviceExtension->BaseClass == PCI_CLASS_DISPLAY_CTLR) &&
142 (DeviceExtension->SubClass == PCI_SUBCLASS_VID_VGA_CTLR)))
143 {
144 /* Always force it on */
145 DeviceExtension->CommandEnables |= (PCI_ENABLE_IO_SPACE |
147 }
148
149 /* Check if native IDE is enabled and it owns the I/O ports */
150 if (DeviceExtension->IoSpaceUnderNativeIdeControl)
151 {
152 /* Then don't allow I/O access */
153 DeviceExtension->CommandEnables &= ~PCI_ENABLE_IO_SPACE;
154 }
155
156 /* Always enable bus mastering */
157 DeviceExtension->CommandEnables |= PCI_ENABLE_BUS_MASTER;
158
159 /* Check if the OS assigned resources differ from the PCI configuration */
160 Changed = PciComputeNewCurrentSettings(DeviceExtension,
162 StartDevice.AllocatedResources);
163 if (Changed)
164 {
165 /* Remember this for later */
166 DeviceExtension->MovedDevice = TRUE;
167 }
168 else
169 {
170 /* All good */
171 DPRINT1("PCI - START not changing resource settings.\n");
172 }
173
174 /* Check if the device was sleeping */
175 if (DeviceExtension->PowerState.CurrentDeviceState != PowerDeviceD0)
176 {
177 /* Power it up */
180 FALSE);
181 if (!NT_SUCCESS(Status))
182 {
183 /* Powerup fail, fail the request */
184 PciCancelStateTransition((PVOID)DeviceExtension, PciStarted);
186 }
187
188 /* Tell the power manager that the device is powered up */
189 PowerState.DeviceState = PowerDeviceD0;
190 PoSetPowerState(DeviceExtension->PhysicalDeviceObject,
192 PowerState);
193
194 /* Update internal state */
195 DeviceExtension->PowerState.CurrentDeviceState = PowerDeviceD0;
196
197 /* This device's resources and decodes will need to be reset */
198 DoReset = TRUE;
199 }
200
201 /* Update resource information now that the device is powered up and active */
202 Status = PciSetResources(DeviceExtension, DoReset, TRUE);
203 if (!NT_SUCCESS(Status))
204 {
205 /* That failed, so cancel the transition */
206 PciCancelStateTransition((PVOID)DeviceExtension, PciStarted);
207 }
208 else
209 {
210 /* Fully commit, as the device is now started up and ready to go */
211 PciCommitStateTransition((PVOID)DeviceExtension, PciStarted);
212 }
213
214 /* Return the result of the start request */
215 return Status;
216}
217
219NTAPI
222 IN PPCI_PDO_EXTENSION DeviceExtension)
223{
226 UNREFERENCED_PARAMETER(DeviceExtension);
227
230}
231
233NTAPI
236 IN PPCI_PDO_EXTENSION DeviceExtension)
237{
240 UNREFERENCED_PARAMETER(DeviceExtension);
241
244}
245
247NTAPI
250 IN PPCI_PDO_EXTENSION DeviceExtension)
251{
254 UNREFERENCED_PARAMETER(DeviceExtension);
255
258}
259
261NTAPI
264 IN PPCI_PDO_EXTENSION DeviceExtension)
265{
268 UNREFERENCED_PARAMETER(DeviceExtension);
269
272}
273
275NTAPI
278 IN PPCI_PDO_EXTENSION DeviceExtension)
279{
282 UNREFERENCED_PARAMETER(DeviceExtension);
283
286}
287
289NTAPI
292 IN PPCI_PDO_EXTENSION DeviceExtension)
293{
296 UNREFERENCED_PARAMETER(DeviceExtension);
297
300}
301
303NTAPI
306 IN PPCI_PDO_EXTENSION DeviceExtension)
307{
309 PAGED_CODE();
310
312
313 /* Query the interface from the PCI driver */
315 (PPCI_FDO_EXTENSION)DeviceExtension,
319 IoStackLocation->Parameters.QueryInterface.InterfaceSpecificData,
321 FALSE);
322
323 /* TODO: There's more to this story, but NOT TODAY! */
324
325 return Status;
326}
327
329NTAPI
332 IN PPCI_PDO_EXTENSION DeviceExtension)
333{
335 PAGED_CODE();
336
337 /* Are ejection relations being queried? */
339 {
340 /* Call the worker function */
341 Status = PciQueryEjectionRelations(DeviceExtension,
343 IoStatus.Information);
344 }
346 {
347 /* The only other relation supported is the target device relation */
348 Status = PciQueryTargetDeviceRelations(DeviceExtension,
350 IoStatus.Information);
351 }
352 else
353 {
354 /* All other relations are unsupported */
356 }
357
358 /* Return either the result of the worker function, or unsupported status */
359 return Status;
360}
361
363NTAPI
366 IN PPCI_PDO_EXTENSION DeviceExtension)
367{
368 PAGED_CODE();
369
371
372 /* Call the worker function */
373 return PciQueryCapabilities(DeviceExtension,
375 Parameters.DeviceCapabilities.Capabilities);
376}
377
379NTAPI
382 IN PPCI_PDO_EXTENSION DeviceExtension)
383{
384 PAGED_CODE();
385
387
388 /* Call the worker function */
389 return PciQueryResources(DeviceExtension,
390 (PCM_RESOURCE_LIST*)&Irp->IoStatus.Information);
391}
392
394NTAPI
397 IN PPCI_PDO_EXTENSION DeviceExtension)
398{
399 PAGED_CODE();
400
402
403 /* Call the worker function */
404 return PciQueryRequirements(DeviceExtension,
406 IoStatus.Information);
407}
408
410NTAPI
413 IN PPCI_PDO_EXTENSION DeviceExtension)
414{
415 PAGED_CODE();
416
417 /* Call the worker function */
418 return PciQueryDeviceText(DeviceExtension,
420 Parameters.QueryDeviceText.DeviceTextType,
423 (PWCHAR*)&Irp->IoStatus.Information);
424}
425
427NTAPI
430 IN PPCI_PDO_EXTENSION DeviceExtension)
431{
432 PAGED_CODE();
433
434 /* Call the worker function */
435 return PciQueryId(DeviceExtension,
437 (PWCHAR*)&Irp->IoStatus.Information);
438}
439
441NTAPI
444 IN PPCI_PDO_EXTENSION DeviceExtension)
445{
446 PAGED_CODE();
447
449
450 /* Call the worker function */
451 return PciQueryBusInformation(DeviceExtension,
453 IoStatus.Information);
454}
455
457NTAPI
460 IN PPCI_PDO_EXTENSION DeviceExtension)
461{
464 UNREFERENCED_PARAMETER(DeviceExtension);
465
468}
469
471NTAPI
474 IN PPCI_PDO_EXTENSION DeviceExtension)
475{
478 UNREFERENCED_PARAMETER(DeviceExtension);
479
482}
483
485NTAPI
488 IN PPCI_PDO_EXTENSION DeviceExtension)
489{
492 UNREFERENCED_PARAMETER(DeviceExtension);
493
496}
497
499NTAPI
502 IN PPCI_PDO_EXTENSION DeviceExtension)
503{
506 UNREFERENCED_PARAMETER(DeviceExtension);
507
510}
511
513NTAPI
516 IN PPCI_PDO_EXTENSION DeviceExtension)
517{
520 UNREFERENCED_PARAMETER(DeviceExtension);
521
524}
525
527NTAPI
530 IN PPCI_PDO_EXTENSION DeviceExtension)
531{
534 UNREFERENCED_PARAMETER(DeviceExtension);
535
538}
539
541NTAPI
543 IN PCI_SLOT_NUMBER Slot,
545{
546 WCHAR DeviceName[32];
547 UNICODE_STRING DeviceString;
551 ULONG SequenceNumber;
552 PAGED_CODE();
553
554 /* Pick an atomically unique sequence number for this device */
556
557 /* Create the standard PCI device name for a PDO */
558 _swprintf(DeviceName, L"\\Device\\NTPNP_PCI%04d", SequenceNumber);
559 RtlInitUnicodeString(&DeviceString, DeviceName);
560
561 /* Create the actual device now */
562 Status = IoCreateDevice(DeviceExtension->FunctionalDeviceObject->DriverObject,
563 sizeof(PCI_PDO_EXTENSION),
564 &DeviceString,
566 0,
567 0,
568 &DeviceObject);
570
571 /* Get the extension for it */
572 PdoExtension = (PPCI_PDO_EXTENSION)DeviceObject->DeviceExtension;
573 DPRINT1("PCI: New PDO (b=0x%x, d=0x%x, f=0x%x) @ %p, ext @ %p\n",
574 DeviceExtension->BaseBus,
575 Slot.u.bits.DeviceNumber,
576 Slot.u.bits.FunctionNumber,
578 DeviceObject->DeviceExtension);
579
580 /* Configure the extension */
581 PdoExtension->ExtensionType = PciPdoExtensionType;
582 PdoExtension->IrpDispatchTable = &PciPdoDispatchTable;
583 PdoExtension->PhysicalDeviceObject = DeviceObject;
584 PdoExtension->Slot = Slot;
585 PdoExtension->PowerState.CurrentSystemState = PowerSystemWorking;
586 PdoExtension->PowerState.CurrentDeviceState = PowerDeviceD0;
587 PdoExtension->ParentFdoExtension = DeviceExtension;
588
589 /* Initialize the lock for arbiters and other interfaces */
591
592 /* Initialize the state machine */
594
595 /* Add the PDO to the parent's list */
596 PdoExtension->Next = NULL;
597 PciInsertEntryAtTail((PSINGLE_LIST_ENTRY)&DeviceExtension->ChildPdoList,
599 &DeviceExtension->ChildListLock);
600
601 /* And finally return it to the caller */
603 return STATUS_SUCCESS;
604}
605
606/* EOF */
#define PAGED_CODE()
unsigned char BOOLEAN
Definition: actypes.h:127
#define InterlockedIncrement
Definition: armddk.h:53
LONG NTSTATUS
Definition: precomp.h:26
#define DPRINT1
Definition: precomp.h:8
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
NTSTATUS NTAPI PciPdoCreate(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_SLOT_NUMBER Slot, OUT PDEVICE_OBJECT *PdoDeviceObject)
Definition: pdo.c:542
NTSTATUS NTAPI PciPdoIrpStopDevice(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:262
PCI_MN_DISPATCH_TABLE PciPdoDispatchPowerTable[]
Definition: pdo.c:24
NTSTATUS NTAPI PciPdoSetPowerState(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:93
NTSTATUS NTAPI PciPdoIrpCancelStopDevice(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:290
PCI_MJ_DISPATCH_TABLE PciPdoDispatchTable
Definition: pdo.c:63
NTSTATUS NTAPI PciPdoIrpSurpriseRemoval(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:514
NTSTATUS NTAPI PciPdoIrpQueryInterface(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:304
NTSTATUS NTAPI PciPdoIrpQueryResourceRequirements(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:395
LONG PciPdoSequenceNumber
Definition: pdo.c:18
NTSTATUS NTAPI PciPdoIrpQueryDeviceText(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:411
NTSTATUS NTAPI PciPdoIrpCancelRemoveDevice(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:248
NTSTATUS NTAPI PciPdoIrpQueryDeviceState(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:486
NTSTATUS NTAPI PciPdoIrpReadConfig(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:458
NTSTATUS NTAPI PciPdoIrpQueryLegacyBusInformation(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:528
NTSTATUS NTAPI PciPdoIrpRemoveDevice(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:234
NTSTATUS NTAPI PciPdoIrpQueryId(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:428
NTSTATUS NTAPI PciPdoIrpQueryPower(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:107
NTSTATUS NTAPI PciPdoIrpQueryDeviceRelations(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:330
NTSTATUS NTAPI PciPdoIrpWriteConfig(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:472
PCI_MN_DISPATCH_TABLE PciPdoDispatchPnpTable[]
Definition: pdo.c:33
NTSTATUS NTAPI PciPdoIrpQueryCapabilities(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:364
NTSTATUS NTAPI PciPdoIrpStartDevice(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:121
NTSTATUS NTAPI PciPdoIrpQueryRemoveDevice(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:220
NTSTATUS NTAPI PciPdoIrpDeviceUsageNotification(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:500
NTSTATUS NTAPI PciPdoIrpQueryStopDevice(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:276
NTSTATUS NTAPI PciPdoIrpQueryResources(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:380
NTSTATUS NTAPI PciPdoWaitWake(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:79
NTSTATUS NTAPI PciPdoIrpQueryBusInformation(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_PDO_EXTENSION DeviceExtension)
Definition: pdo.c:442
_In_ PIRP Irp
Definition: csq.h:116
#define STATUS_NOT_SUPPORTED
Definition: d3dkmdt.h:48
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define L(x)
Definition: resources.c:13
NTSTATUS NTAPI PciIrpNotSupported(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_FDO_EXTENSION DeviceExtension)
Definition: dispatch.c:261
NTSTATUS NTAPI PciIrpInvalidDeviceRequest(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PPCI_FDO_EXTENSION DeviceExtension)
Definition: dispatch.c:277
NTSTATUS NTAPI PciSetResources(IN PPCI_PDO_EXTENSION PdoExtension, IN BOOLEAN DoReset, IN BOOLEAN SomethingSomethingDarkSide)
Definition: enum.c:2164
NTSTATUS NTAPI PciQueryEjectionRelations(IN PPCI_PDO_EXTENSION PdoExtension, IN OUT PDEVICE_RELATIONS *pDeviceRelations)
Definition: enum.c:547
NTSTATUS NTAPI PciQueryRequirements(IN PPCI_PDO_EXTENSION PdoExtension, IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *RequirementsList)
Definition: enum.c:592
NTSTATUS NTAPI PciQueryTargetDeviceRelations(IN PPCI_PDO_EXTENSION PdoExtension, IN OUT PDEVICE_RELATIONS *pDeviceRelations)
Definition: enum.c:520
BOOLEAN NTAPI PciComputeNewCurrentSettings(IN PPCI_PDO_EXTENSION PdoExtension, IN PCM_RESOURCE_LIST ResourceList)
Definition: enum.c:55
NTSTATUS NTAPI PciQueryResources(IN PPCI_PDO_EXTENSION PdoExtension, OUT PCM_RESOURCE_LIST *Buffer)
Definition: enum.c:363
VOID NTAPI PciInsertEntryAtTail(IN PSINGLE_LIST_ENTRY ListHead, IN PPCI_FDO_EXTENSION DeviceExtension, IN PKEVENT Lock)
Definition: utils.c:400
NTSTATUS NTAPI PciQueryBusInformation(IN PPCI_PDO_EXTENSION PdoExtension, OUT PPNP_BUS_INFORMATION *Buffer)
Definition: utils.c:1316
@ PciStarted
Definition: pci.h:130
NTSTATUS NTAPI PciQueryId(IN PPCI_PDO_EXTENSION DeviceExtension, IN BUS_QUERY_ID_TYPE QueryType, OUT PWCHAR *Buffer)
Definition: id.c:200
struct _PCI_PDO_EXTENSION * PPCI_PDO_EXTENSION
NTSTATUS NTAPI PciCancelStateTransition(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_STATE NewState)
Definition: state.c:145
NTSTATUS NTAPI PciQueryCapabilities(IN PPCI_PDO_EXTENSION PdoExtension, IN OUT PDEVICE_CAPABILITIES DeviceCapability)
Definition: utils.c:1728
NTSTATUS NTAPI PciBeginStateTransition(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_STATE NewState)
Definition: state.c:97
@ IRP_COMPLETE
Definition: pci.h:143
@ IRP_DISPATCH
Definition: pci.h:146
NTSTATUS NTAPI PciQueryDeviceText(IN PPCI_PDO_EXTENSION PdoExtension, IN DEVICE_TEXT_TYPE QueryType, IN ULONG Locale, OUT PWCHAR *Buffer)
Definition: id.c:394
NTSTATUS(NTAPI * PCI_DISPATCH_FUNCTION)(IN PIRP Irp, IN PIO_STACK_LOCATION IoStackLocation, IN PVOID DeviceExtension)
Definition: pci.h:326
NTSTATUS NTAPI PciSetPowerManagedDevicePowerState(IN PPCI_PDO_EXTENSION DeviceExtension, IN DEVICE_POWER_STATE DeviceState, IN BOOLEAN IrpSet)
Definition: power.c:121
VOID NTAPI PciCommitStateTransition(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_STATE NewState)
Definition: state.c:181
VOID NTAPI PciInitializeState(IN PPCI_FDO_EXTENSION DeviceExtension)
Definition: state.c:88
@ PciPdoExtensionType
Definition: pci.h:94
#define UNIMPLEMENTED_DBGBREAK(...)
Definition: debug.h:57
@ PdoExtension
Definition: precomp.h:49
#define KeInitializeEvent(pEvt, foo, foo2)
Definition: env_spec_w32.h:477
Status
Definition: gdiplustypes.h:24
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE _In_ USHORT _In_ PUSB_PORT_PATH _Out_ PUSB_CD_ERROR_INFORMATION _In_ USHORT _In_ PDEVICE_OBJECT PdoDeviceObject
Definition: hubbusif.h:95
NTSTATUS NTAPI PciQueryInterface(IN PPCI_FDO_EXTENSION DeviceExtension, IN CONST GUID *InterfaceType, IN ULONG Size, IN ULONG Version, IN PVOID InterfaceData, IN PINTERFACE Interface, IN BOOLEAN LastChance)
Definition: intrface.c:45
#define C_ASSERT(e)
Definition: intsafe.h:73
#define ASSERT(a)
Definition: mode.c:44
#define _swprintf(buf, format,...)
Definition: sprintf.c:56
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
Definition: mxum.h:159
static BOOL StartDevice(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DevInfoData OPTIONAL, IN BOOL bEnable, IN DWORD HardwareProfile OPTIONAL, OUT BOOL *bNeedReboot OPTIONAL)
Definition: wizard.c:173
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
@ SynchronizationEvent
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
Definition: device.c:1032
POWER_STATE NTAPI PoSetPowerState(IN PDEVICE_OBJECT DeviceObject, IN POWER_STATE_TYPE Type, IN POWER_STATE State)
Definition: power.c:729
@ PowerSystemWorking
Definition: ntpoapi.h:36
@ DevicePowerState
Definition: ntpoapi.h:63
@ PowerDeviceD0
Definition: ntpoapi.h:49
#define STATUS_DEVICE_POWER_FAILURE
Definition: ntstatus.h:488
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
#define FILE_DEVICE_BUS_EXTENDER
Definition: winioctl.h:87
#define STATUS_SUCCESS
Definition: shellext.h:65
STDMETHOD() Next(THIS_ ULONG celt, IAssociationElement *pElement, ULONG *pceltFetched) PURE
struct _IO_STACK_LOCATION::@4478::@4503 QueryDeviceRelations
struct _IO_STACK_LOCATION::@4478::@4504 QueryInterface
union _IO_STACK_LOCATION::@1708 Parameters
struct _IO_STACK_LOCATION::@4478::@4505 DeviceCapabilities
struct _IO_STACK_LOCATION::@4478::@4510 QueryDeviceText
struct _IO_STACK_LOCATION::@4478::@4509 QueryId
Definition: ntbasedef.h:640
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define NTAPI
Definition: typedefs.h:36
#define IN
Definition: typedefs.h:39
uint16_t * PWCHAR
Definition: typedefs.h:56
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
_In_ PIO_STACK_LOCATION IoStackLocation
Definition: usbdlib.h:265
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2061
_In_ WDFDEVICE _Out_ PWDF_DEVICE_STATE DeviceState
Definition: wdfdevice.h:2005
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
Definition: wdfdevice.h:3040
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
Definition: wdfdevice.h:3281
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfio.h:869
_Must_inspect_result_ _In_ WDFCMRESLIST List
Definition: wdfresource.h:550
@ EjectionRelations
Definition: iotypes.h:2155
@ TargetDeviceRelation
Definition: iotypes.h:2158
#define PCI_ENABLE_BUS_MASTER
Definition: iotypes.h:3620
#define PCI_ENABLE_IO_SPACE
Definition: iotypes.h:3618
#define PCI_ENABLE_MEMORY_SPACE
Definition: iotypes.h:3619
#define PCI_CLASS_PRE_20
Definition: iotypes.h:4105
#define PCI_SUBCLASS_VID_VGA_CTLR
Definition: iotypes.h:4147
#define PCI_SUBCLASS_PRE_20_VGA
Definition: iotypes.h:4127
#define PCI_CLASS_DISPLAY_CTLR
Definition: iotypes.h:4108
#define IRP_MN_QUERY_POWER
#define IRP_MN_QUERY_LEGACY_BUS_INFORMATION
Definition: iotypes.h:4430