7 #include <acpi_drivers.h>
15 AcpiInterfaceReference(PVOID Context
)
22 AcpiInterfaceDereference(PVOID Context
)
28 AcpiInterfaceConnectVector(PDEVICE_OBJECT Context
,
32 PGPE_SERVICE_ROUTINE ServiceRoutine
,
38 return STATUS_NOT_IMPLEMENTED
;
42 AcpiInterfaceDisconnectVector(PDEVICE_OBJECT Context
,
47 return STATUS_NOT_IMPLEMENTED
;
51 AcpiInterfaceEnableEvent(PDEVICE_OBJECT Context
,
56 return STATUS_NOT_IMPLEMENTED
;
60 AcpiInterfaceDisableEvent(PDEVICE_OBJECT Context
,
65 return STATUS_NOT_IMPLEMENTED
;
69 AcpiInterfaceClearStatus(PDEVICE_OBJECT Context
,
74 return STATUS_NOT_IMPLEMENTED
;
78 AcpiInterfaceNotificationsRegister(PDEVICE_OBJECT Context
,
79 PDEVICE_NOTIFY_CALLBACK NotificationHandler
,
80 PVOID NotificationContext
)
84 return STATUS_NOT_IMPLEMENTED
;
88 AcpiInterfaceNotificationsUnregister(PDEVICE_OBJECT Context
,
89 PDEVICE_NOTIFY_CALLBACK NotificationHandler
)
95 Bus_PDO_QueryInterface(PPDO_DEVICE_DATA DeviceData
,
98 PIO_STACK_LOCATION IrpSp
= IoGetCurrentIrpStackLocation(Irp
);
99 PACPI_INTERFACE_STANDARD AcpiInterface
;
101 if (IrpSp
->Parameters
.QueryInterface
.Version
!= 1)
103 DPRINT1("Invalid version number: %d\n",
104 IrpSp
->Parameters
.QueryInterface
.Version
);
105 return STATUS_INVALID_PARAMETER
;
108 if (RtlCompareMemory(IrpSp
->Parameters
.QueryInterface
.InterfaceType
,
109 &GUID_ACPI_INTERFACE_STANDARD
, sizeof(GUID
)) == sizeof(GUID
))
111 DPRINT("GUID_ACPI_INTERFACE_STANDARD\n");
113 if (IrpSp
->Parameters
.QueryInterface
.Size
< sizeof(ACPI_INTERFACE_STANDARD
))
115 DPRINT1("Buffer too small! (%d)\n", IrpSp
->Parameters
.QueryInterface
.Size
);
116 return STATUS_BUFFER_TOO_SMALL
;
119 AcpiInterface
= (PACPI_INTERFACE_STANDARD
)IrpSp
->Parameters
.QueryInterface
.Interface
;
121 AcpiInterface
->InterfaceReference
= AcpiInterfaceReference
;
122 AcpiInterface
->InterfaceDereference
= AcpiInterfaceDereference
;
123 AcpiInterface
->GpeConnectVector
= AcpiInterfaceConnectVector
;
124 AcpiInterface
->GpeDisconnectVector
= AcpiInterfaceDisconnectVector
;
125 AcpiInterface
->GpeEnableEvent
= AcpiInterfaceEnableEvent
;
126 AcpiInterface
->GpeDisableEvent
= AcpiInterfaceDisableEvent
;
127 AcpiInterface
->GpeClearStatus
= AcpiInterfaceClearStatus
;
128 AcpiInterface
->RegisterForDeviceNotifications
= AcpiInterfaceNotificationsRegister
;
129 AcpiInterface
->UnregisterForDeviceNotifications
= AcpiInterfaceNotificationsUnregister
;
131 return STATUS_SUCCESS
;
135 DPRINT1("Invalid GUID\n");
136 return STATUS_INVALID_PARAMETER
;