7 #include <acpi_drivers.h>
15 AcpiInterfaceReference(PVOID Context
)
22 AcpiInterfaceDereference(PVOID Context
)
29 AcpiInterfaceConnectVector(PDEVICE_OBJECT Context
,
33 PGPE_SERVICE_ROUTINE ServiceRoutine
,
39 return STATUS_NOT_IMPLEMENTED
;
44 AcpiInterfaceDisconnectVector(PVOID ObjectContext
)
48 return STATUS_NOT_IMPLEMENTED
;
53 AcpiInterfaceEnableEvent(PDEVICE_OBJECT Context
,
58 return STATUS_NOT_IMPLEMENTED
;
63 AcpiInterfaceDisableEvent(PDEVICE_OBJECT Context
,
68 return STATUS_NOT_IMPLEMENTED
;
73 AcpiInterfaceClearStatus(PDEVICE_OBJECT Context
,
78 return STATUS_NOT_IMPLEMENTED
;
83 AcpiInterfaceNotificationsRegister(PDEVICE_OBJECT Context
,
84 PDEVICE_NOTIFY_CALLBACK NotificationHandler
,
85 PVOID NotificationContext
)
89 return STATUS_NOT_IMPLEMENTED
;
94 AcpiInterfaceNotificationsUnregister(PDEVICE_OBJECT Context
,
95 PDEVICE_NOTIFY_CALLBACK NotificationHandler
)
101 Bus_PDO_QueryInterface(PPDO_DEVICE_DATA DeviceData
,
104 PIO_STACK_LOCATION IrpSp
= IoGetCurrentIrpStackLocation(Irp
);
105 PACPI_INTERFACE_STANDARD AcpiInterface
;
107 if (IrpSp
->Parameters
.QueryInterface
.Version
!= 1)
109 DPRINT1("Invalid version number: %d\n",
110 IrpSp
->Parameters
.QueryInterface
.Version
);
111 return STATUS_INVALID_PARAMETER
;
114 if (RtlCompareMemory(IrpSp
->Parameters
.QueryInterface
.InterfaceType
,
115 &GUID_ACPI_INTERFACE_STANDARD
, sizeof(GUID
)) == sizeof(GUID
))
117 DPRINT("GUID_ACPI_INTERFACE_STANDARD\n");
119 if (IrpSp
->Parameters
.QueryInterface
.Size
< sizeof(ACPI_INTERFACE_STANDARD
))
121 DPRINT1("Buffer too small! (%d)\n", IrpSp
->Parameters
.QueryInterface
.Size
);
122 return STATUS_BUFFER_TOO_SMALL
;
125 AcpiInterface
= (PACPI_INTERFACE_STANDARD
)IrpSp
->Parameters
.QueryInterface
.Interface
;
127 AcpiInterface
->InterfaceReference
= AcpiInterfaceReference
;
128 AcpiInterface
->InterfaceDereference
= AcpiInterfaceDereference
;
129 AcpiInterface
->GpeConnectVector
= AcpiInterfaceConnectVector
;
130 AcpiInterface
->GpeDisconnectVector
= AcpiInterfaceDisconnectVector
;
131 AcpiInterface
->GpeEnableEvent
= AcpiInterfaceEnableEvent
;
132 AcpiInterface
->GpeDisableEvent
= AcpiInterfaceDisableEvent
;
133 AcpiInterface
->GpeClearStatus
= AcpiInterfaceClearStatus
;
134 AcpiInterface
->RegisterForDeviceNotifications
= AcpiInterfaceNotificationsRegister
;
135 AcpiInterface
->UnregisterForDeviceNotifications
= AcpiInterfaceNotificationsUnregister
;
137 return STATUS_SUCCESS
;
141 DPRINT1("Invalid GUID\n");
142 return STATUS_INVALID_PARAMETER
;