13#pragma alloc_text (PAGE, Bus_PnP)
14#pragma alloc_text (PAGE, Bus_PlugInDevice)
15#pragma alloc_text (PAGE, Bus_InitializePdo)
16#pragma alloc_text (PAGE, Bus_DestroyPdo)
17#pragma alloc_text (PAGE, Bus_FDO_PnP)
18#pragma alloc_text (PAGE, Bus_StartFdo)
19#pragma alloc_text (PAGE, Bus_SendIrpSynchronously)
43 DPRINT(
"FDO %s IRP:0x%p\n",
55 DPRINT(
"PDO %s IRP: 0x%p\n",
142 DPRINT(
"\tQueryDeviceRelation Type: %s\n",
158 prevcount = oldRelations->
Count;
193 if (
NULL == relations) {
212 relations->
Count = prevcount + numPdosPresent;
231 DPRINT(
"\t#PDOs present = %d\n\t#PDOs reported = %d\n",
285 DPRINT1(
"Unable to AcpiInitializeSubsystem\n");
291 DPRINT1(
"Unable to AcpiInitializeTables\n");
297 DPRINT1(
"Unable to AcpiLoadTables\n");
305 DPRINT1(
"Unable to create ACPI tables in registry\n");
308 DPRINT(
"Acpi subsystem init\n");
312 DPRINT1(
"acpi_init() failed with status 0x%X\n", AcpiStatus);
382 if (
Irp->PendingReturned !=
FALSE) {
430 DPRINT(
"pdo 0x%p, extension 0x%p\n",
Pdo, pdoData);
452 DPRINT1(
"Unknown power state (%d) returned by acpi\n",acpistate);
477 Pdo->Flags &= ~DO_DEVICE_INITIALIZING;
491 return "IRP_MN_START_DEVICE";
493 return "IRP_MN_QUERY_REMOVE_DEVICE";
495 return "IRP_MN_REMOVE_DEVICE";
497 return "IRP_MN_CANCEL_REMOVE_DEVICE";
499 return "IRP_MN_STOP_DEVICE";
501 return "IRP_MN_QUERY_STOP_DEVICE";
503 return "IRP_MN_CANCEL_STOP_DEVICE";
505 return "IRP_MN_QUERY_DEVICE_RELATIONS";
507 return "IRP_MN_QUERY_INTERFACE";
509 return "IRP_MN_QUERY_CAPABILITIES";
511 return "IRP_MN_QUERY_RESOURCES";
513 return "IRP_MN_QUERY_RESOURCE_REQUIREMENTS";
515 return "IRP_MN_QUERY_DEVICE_TEXT";
517 return "IRP_MN_FILTER_RESOURCE_REQUIREMENTS";
519 return "IRP_MN_READ_CONFIG";
521 return "IRP_MN_WRITE_CONFIG";
523 return "IRP_MN_EJECT";
525 return "IRP_MN_SET_LOCK";
527 return "IRP_MN_QUERY_ID";
529 return "IRP_MN_QUERY_PNP_DEVICE_STATE";
531 return "IRP_MN_QUERY_BUS_INFORMATION";
533 return "IRP_MN_DEVICE_USAGE_NOTIFICATION";
535 return "IRP_MN_SURPRISE_REMOVAL";
537 return "IRP_MN_QUERY_LEGACY_BUS_INFORMATION";
539 return "unknown_pnp_irp";
551 return "BusRelations";
553 return "EjectionRelations";
555 return "RemovalRelations";
557 return "TargetDeviceRelation";
559 return "UnKnown Relation";
571 return "BusQueryDeviceID";
573 return "BusQueryHardwareIDs";
575 return "BusQueryCompatibleIDs";
577 return "BusQueryInstanceID";
579 return "BusQueryDeviceSerialNumber";
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
NTSTATUS ACPIEnumerateDevices(PFDO_DEVICE_DATA DeviceExtension)
struct _COMMON_DEVICE_DATA * PCOMMON_DEVICE_DATA
PCHAR DbgDeviceRelationString(DEVICE_RELATION_TYPE Type)
PCHAR DbgDeviceIDString(BUS_QUERY_ID_TYPE Type)
struct _PDO_DEVICE_DATA * PPDO_DEVICE_DATA
NTSTATUS Bus_PDO_PnP(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpStack, PPDO_DEVICE_DATA DeviceData)
#define NT_SUCCESS(StatCode)
int acpi_bus_get_power(ACPI_HANDLE handle, int *state)
NTSTATUS acpi_create_volatile_registry_tables(void)
NTSTATUS Bus_DestroyPdo(PDEVICE_OBJECT Device, PPDO_DEVICE_DATA PdoData)
NTSTATUS Bus_PlugInDevice(struct acpi_device *Device, PFDO_DEVICE_DATA FdoData)
VOID Bus_InitializePdo(PDEVICE_OBJECT Pdo, PFDO_DEVICE_DATA FdoData)
NTSTATUS Bus_FDO_PnP(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpStack, PFDO_DEVICE_DATA DeviceData)
NTSTATUS Bus_SendIrpSynchronously(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS NTAPI Bus_PnP(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS NTAPI Bus_CompletionRoutine(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
NTSTATUS Bus_StartFdo(PFDO_DEVICE_DATA FdoData, PIRP Irp)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
struct _DEVICE_OBJECT * PDEVICE_OBJECT
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeSetEvent(pEvt, foo, foo2)
PCHAR NTAPI PnPMinorFunctionString(UCHAR MinorFunction)
#define SET_NEW_PNP_STATE(_Data_, _state_)
#define INITIALIZE_PNP_STATE(_Data_)
#define RESTORE_PREVIOUS_PNP_STATE(_Data_)
GLuint GLsizei GLsizei * length
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
#define ExFreePoolWithTag(_P, _T)
#define UNREFERENCED_PARAMETER(P)
#define IRP_MN_SURPRISE_REMOVAL
#define IoSkipCurrentIrpStackLocation(Irp)
#define IoCopyCurrentIrpStackLocationToNext(Irp)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
#define IoCompleteRequest
POWER_STATE NTAPI PoSetPowerState(IN PDEVICE_OBJECT DeviceObject, IN POWER_STATE_TYPE Type, IN POWER_STATE State)
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
#define STATUS_MORE_PROCESSING_REQUIRED
SYSTEM_POWER_STATE SystemPowerState
DEVICE_POWER_STATE DevicePowerState
PDEVICE_OBJECT Objects[1]
COMMON_DEVICE_DATA Common
struct _IO_STACK_LOCATION::@4024::@4049 QueryDeviceRelations
union _IO_STACK_LOCATION::@1584 Parameters
COMMON_DEVICE_DATA Common
ACPI_STATUS ACPI_INIT_FUNCTION AcpiInitializeTables(ACPI_TABLE_DESC *InitialTableArray, UINT32 InitialTableCount, BOOLEAN AllowResize)
ACPI_STATUS ACPI_INIT_FUNCTION AcpiLoadTables(void)
#define RtlCopyMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
DEVICE_POWER_STATE DeviceState
ACPI_STATUS ACPI_INIT_FUNCTION AcpiTerminate(void)
ACPI_STATUS ACPI_INIT_FUNCTION AcpiInitializeSubsystem(void)
static int Link(const char **args)
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ PDEVICE_OBJECT DeviceObject
_In_ UCHAR _In_ UCHAR MinorFunction
WDF_EXTERN_C_START typedef _Must_inspect_result_ _In_ WDFDRIVER _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ PDEVICE_OBJECT _In_opt_ PDEVICE_OBJECT _In_opt_ PDEVICE_OBJECT Pdo
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define IRP_MN_CANCEL_STOP_DEVICE
#define IRP_MN_QUERY_PNP_DEVICE_STATE
enum _BUS_QUERY_ID_TYPE BUS_QUERY_ID_TYPE
#define IRP_MN_QUERY_INTERFACE
#define IRP_MN_START_DEVICE
#define IRP_MN_DEVICE_USAGE_NOTIFICATION
#define IRP_MN_READ_CONFIG
#define IRP_MN_WRITE_CONFIG
#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS
#define IRP_MN_REMOVE_DEVICE
#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS
struct _DEVICE_RELATIONS * PDEVICE_RELATIONS
#define IRP_MN_QUERY_DEVICE_RELATIONS
#define IRP_MN_QUERY_STOP_DEVICE
#define IRP_MN_QUERY_DEVICE_TEXT
#define IRP_MN_QUERY_CAPABILITIES
#define IRP_MN_QUERY_RESOURCES
struct _DEVICE_RELATIONS DEVICE_RELATIONS
#define IRP_MN_CANCEL_REMOVE_DEVICE
#define IRP_MN_STOP_DEVICE
@ BusQueryDeviceSerialNumber
enum _DEVICE_RELATION_TYPE DEVICE_RELATION_TYPE
#define IRP_MN_QUERY_LEGACY_BUS_INFORMATION
#define IRP_MN_QUERY_BUS_INFORMATION
#define IRP_MN_QUERY_REMOVE_DEVICE
#define ObReferenceObject