8 AcpiInterfaceReference(PVOID Context
)
15 AcpiInterfaceDereference(PVOID Context
)
22 AcpiInterfaceConnectVector(PDEVICE_OBJECT Context
,
26 PGPE_SERVICE_ROUTINE ServiceRoutine
,
32 return STATUS_NOT_IMPLEMENTED
;
37 AcpiInterfaceDisconnectVector(PVOID ObjectContext
)
41 return STATUS_NOT_IMPLEMENTED
;
46 AcpiInterfaceEnableEvent(PDEVICE_OBJECT Context
,
51 return STATUS_NOT_IMPLEMENTED
;
56 AcpiInterfaceDisableEvent(PDEVICE_OBJECT Context
,
61 return STATUS_NOT_IMPLEMENTED
;
66 AcpiInterfaceClearStatus(PDEVICE_OBJECT Context
,
71 return STATUS_NOT_IMPLEMENTED
;
76 AcpiInterfaceNotificationsRegister(PDEVICE_OBJECT Context
,
77 PDEVICE_NOTIFY_CALLBACK NotificationHandler
,
78 PVOID NotificationContext
)
82 return STATUS_NOT_IMPLEMENTED
;
87 AcpiInterfaceNotificationsUnregister(PDEVICE_OBJECT Context
,
88 PDEVICE_NOTIFY_CALLBACK NotificationHandler
)
94 Bus_PDO_QueryInterface(PPDO_DEVICE_DATA DeviceData
,
97 PIO_STACK_LOCATION IrpSp
= IoGetCurrentIrpStackLocation(Irp
);
98 PACPI_INTERFACE_STANDARD AcpiInterface
;
100 if (IrpSp
->Parameters
.QueryInterface
.Version
!= 1)
102 DPRINT1("Invalid version number: %d\n",
103 IrpSp
->Parameters
.QueryInterface
.Version
);
104 return STATUS_INVALID_PARAMETER
;
107 if (RtlCompareMemory(IrpSp
->Parameters
.QueryInterface
.InterfaceType
,
108 &GUID_ACPI_INTERFACE_STANDARD
, sizeof(GUID
)) == sizeof(GUID
))
110 DPRINT("GUID_ACPI_INTERFACE_STANDARD\n");
112 if (IrpSp
->Parameters
.QueryInterface
.Size
< sizeof(ACPI_INTERFACE_STANDARD
))
114 DPRINT1("Buffer too small! (%d)\n", IrpSp
->Parameters
.QueryInterface
.Size
);
115 return STATUS_BUFFER_TOO_SMALL
;
118 AcpiInterface
= (PACPI_INTERFACE_STANDARD
)IrpSp
->Parameters
.QueryInterface
.Interface
;
120 AcpiInterface
->InterfaceReference
= AcpiInterfaceReference
;
121 AcpiInterface
->InterfaceDereference
= AcpiInterfaceDereference
;
122 AcpiInterface
->GpeConnectVector
= AcpiInterfaceConnectVector
;
123 AcpiInterface
->GpeDisconnectVector
= AcpiInterfaceDisconnectVector
;
124 AcpiInterface
->GpeEnableEvent
= AcpiInterfaceEnableEvent
;
125 AcpiInterface
->GpeDisableEvent
= AcpiInterfaceDisableEvent
;
126 AcpiInterface
->GpeClearStatus
= AcpiInterfaceClearStatus
;
127 AcpiInterface
->RegisterForDeviceNotifications
= AcpiInterfaceNotificationsRegister
;
128 AcpiInterface
->UnregisterForDeviceNotifications
= AcpiInterfaceNotificationsUnregister
;
130 return STATUS_SUCCESS
;
134 DPRINT1("Invalid GUID\n");
135 return STATUS_NOT_SUPPORTED
;